instant-cli 1.0.21-branch-cli-codex.25190871505.1 → 1.0.21-branch-cli-codex-update.25190875900.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/auth/client/update.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from 'effect';\nimport { FileSystem } from '@effect/platform';\nimport type { authClientUpdateDef, OptsFromCommand } from '../../../index.ts';\nimport { BadArgsError } from '../../../errors.ts';\nimport { GlobalOpts } from '../../../context/globalOpts.ts';\nimport { optOrPrompt, runUIEffect, validateRequired } from '../../../lib/ui.ts';\nimport {\n findClientByIdOrName,\n getAppsAuth,\n updateOAuthClient,\n type OAuthClient,\n} from '../../../lib/oauth.ts';\nimport { UI } from '../../../ui/index.ts';\nimport { DEFAULT_OAUTH_CALLBACK_URL } from '@instantdb/platform';\nimport chalk from 'chalk';\nimport boxen from 'boxen';\nimport { link } from '../../../logging.ts';\n\ntype OAuthClientRow = OAuthClient;\n\ntype ProviderRow = {\n id: string;\n provider_name: string;\n};\n\nconst camelize = (flag: string) =>\n flag.replace(/-([a-z])/g, (_, c: string) => c.toUpperCase());\n\nconst getFlag = (opts: Record<string, unknown>, flag: string) =>\n opts[flag] ?? opts[camelize(flag)];\n\nconst hasFlag = (opts: Record<string, unknown>, flag: string) =>\n getFlag(opts, flag) !== undefined;\n\nconst hasAnyFlag = (opts: Record<string, unknown>, flags: string[]) =>\n flags.some((flag) => hasFlag(opts, flag));\n\nconst isTrueFlag = (value: unknown) => value === true || value === 'true';\n\nconst metaString = (client: OAuthClientRow, key: string) => {\n if (!client.meta || typeof client.meta !== 'object') return undefined;\n const value = (client.meta as Record<string, unknown>)[key];\n return typeof value === 'string' ? value : undefined;\n};\n\nconst promptFlag = (\n opts: Record<string, unknown>,\n flag: string,\n params: {\n promptIf: boolean;\n required?: boolean;\n prompt: UI.TextInputProps;\n },\n) =>\n Effect.gen(function* () {\n const value = getFlag(opts, flag);\n if (value === undefined && !params.promptIf) return undefined;\n return yield* optOrPrompt(value, {\n simpleName: `--${flag}`,\n required: params.required ?? params.promptIf,\n skipIf: false,\n prompt: params.prompt,\n });\n });\n\nconst clientIdPrompt = (provider: string) => ({\n prompt: `Client ID: ${chalk.dim(`(from ${provider})`)}`,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n});\n\nconst clientSecretPrompt = (provider: string) => ({\n prompt: `Client Secret: ${chalk.dim(`(from ${provider})`)}`,\n validate: validateRequired,\n sensitive: true,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n});\n\nconst makeRedirectPrompt = (heading: string) => ({\n prompt: '',\n placeholder: 'https://yoursite.com/oauth/callback',\n modifyOutput: UI.modifiers.piped([\n (output, status) => {\n if (status === 'idle') {\n return (\n `\\n${heading}\n${chalk.dim('With a custom redirect URI, users will see \"Redirecting to yoursite.com...\" for a more branded experience.')}\n${chalk.dim(`Your URI must forward to ${DEFAULT_OAUTH_CALLBACK_URL} with all query parameters preserved.`)}\\n\\n` +\n output.replace(/^\\n/, '')\n );\n }\n return `\\n${heading}\\n${output.replace(/^\\n/, '')}`;\n },\n UI.modifiers.dimOnComplete,\n ]),\n});\n\nconst redirectPrompt = makeRedirectPrompt('Custom redirect URI (optional):');\nconst newRedirectPrompt = makeRedirectPrompt('New redirect URI:');\n\nconst readPrivateKeyFile = Effect.fn('readPrivateKeyFile')(function* (\n path: string,\n) {\n const fs = yield* FileSystem.FileSystem;\n const normalizedPath =\n process.platform === 'win32' ? path : path.replace(/\\\\(.)/g, '$1');\n const contents = yield* fs.readFileString(normalizedPath, 'utf8').pipe(\n Effect.mapError(\n (e) =>\n new BadArgsError({\n message: `Could not read private key file at ${normalizedPath}: ${e.message}`,\n }),\n ),\n );\n\n const trimmed = contents.trim();\n if (!trimmed) {\n return yield* BadArgsError.make({\n message: `Private key file at ${normalizedPath} is empty.`,\n });\n }\n return trimmed;\n});\n\nconst resolveClient = Effect.fn(function* (params: {\n id?: string;\n name?: string;\n yes: boolean;\n clients: OAuthClientRow[];\n}) {\n if (params.id && params.name) {\n return yield* BadArgsError.make({\n message: 'Cannot specify both --id and --name',\n });\n }\n\n if (params.id) {\n const match = params.clients.find((client) => client.id === params.id);\n if (!match) {\n return yield* BadArgsError.make({\n message: `OAuth client not found: ${params.id}`,\n });\n }\n return match;\n }\n\n if (params.name) {\n const match = params.clients.find(\n (client) => client.client_name === params.name,\n );\n if (!match) {\n return yield* BadArgsError.make({\n message: `OAuth client not found: ${params.name}`,\n });\n }\n return match;\n }\n\n if (params.yes) {\n return yield* BadArgsError.make({ message: 'Must specify --id or --name' });\n }\n\n if (params.clients.length === 0) {\n return yield* BadArgsError.make({\n message: 'No OAuth clients found for this app.',\n });\n }\n\n return yield* runUIEffect(\n new UI.Select({\n options: params.clients.map((client) => ({\n label:\n client.client_name +\n (client.use_shared_credentials\n ? chalk.dim(' (dev credentials)')\n : '') +\n chalk.dim(` (${client.id})`),\n value: client,\n })),\n promptText: 'Select a client to update:',\n modifyOutput: UI.modifiers.piped([UI.modifiers.dimOnComplete]),\n }),\n ).pipe(\n Effect.catchTag('UIError', (e) =>\n BadArgsError.make({ message: `UI error: ${e.message}` }),\n ),\n );\n});\n\nconst selectUpdateAction = Effect.fn(function* <T extends string>(\n options: { label: string; value: T }[],\n) {\n return yield* runUIEffect(\n new UI.Select({\n options,\n promptText: 'What do you want to update?',\n modifyOutput: UI.modifiers.piped([UI.modifiers.dimOnComplete]),\n }),\n ).pipe(\n Effect.catchTag('UIError', (e) =>\n BadArgsError.make({ message: `UI error: ${e.message}` }),\n ),\n );\n});\n\nconst updateGoogleToDevCredentials = Effect.fn(function* (\n client: OAuthClientRow,\n) {\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n useSharedCredentials: true,\n redirectTo: null,\n });\n\n yield* Effect.log(\n boxen(\n [\n `Google OAuth client updated: ${response.client.client_name}`,\n 'Credentials: Instant dev credentials',\n `ID: ${response.client.id}`,\n '',\n 'No Google Console setup required.',\n 'Works on localhost and Expo during development.',\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n});\n\nconst handleGoogleUpdate = Effect.fn(function* (\n opts: Record<string, unknown>,\n client: OAuthClientRow,\n) {\n const { yes } = yield* GlobalOpts;\n const consoleUrl = link(\n 'https://console.developers.google.com/apis/credentials',\n );\n const appType = metaString(client, 'appType');\n const isWeb = appType === 'web' || appType === undefined;\n const devCredentialsFlag = isTrueFlag(getFlag(opts, 'dev-credentials'));\n const hasCustomCredentialFlag = hasAnyFlag(opts, [\n 'client-id',\n 'client-secret',\n 'custom-redirect-uri',\n ]);\n\n if (!isWeb) {\n if (devCredentialsFlag) {\n return yield* BadArgsError.make({\n message: '--dev-credentials is only supported for Google web clients.',\n });\n }\n if (\n hasFlag(opts, 'client-secret') ||\n hasFlag(opts, 'custom-redirect-uri')\n ) {\n return yield* BadArgsError.make({\n message:\n '--client-secret and --custom-redirect-uri are only supported for Google web clients.',\n });\n }\n }\n\n if (devCredentialsFlag && hasCustomCredentialFlag) {\n return yield* BadArgsError.make({\n message:\n '--dev-credentials cannot be combined with --client-id, --client-secret, or --custom-redirect-uri.',\n });\n }\n\n if (isWeb && devCredentialsFlag) {\n return yield* updateGoogleToDevCredentials(client);\n }\n\n const hasAnyUpdateFlag = hasAnyFlag(opts, [\n 'client-id',\n 'client-secret',\n 'custom-redirect-uri',\n 'dev-credentials',\n ]);\n\n if (yes && !hasAnyUpdateFlag) {\n return yield* BadArgsError.make({\n message:\n 'Must specify at least one of --client-id, --client-secret, --custom-redirect-uri, or --dev-credentials.',\n });\n }\n\n const switchingFromShared = Boolean(client.use_shared_credentials);\n\n if (!hasAnyUpdateFlag && !yes) {\n yield* Effect.log(\n `\\nCurrent mode: ${\n switchingFromShared\n ? chalk.bold('Instant dev credentials')\n : 'custom credentials'\n }`,\n );\n\n if (!switchingFromShared) {\n const action = yield* selectUpdateAction([\n { label: 'Rotate credentials', value: 'rotate' },\n {\n label:\n 'Switch to Instant dev credentials' +\n chalk.dim(' (localhost and Expo, no Google setup)'),\n value: 'dev-credentials',\n },\n { label: 'Update redirect URI', value: 'redirect' },\n ]);\n\n if (action === 'dev-credentials') {\n return yield* updateGoogleToDevCredentials(client);\n }\n\n if (action === 'redirect') {\n const redirectTo = yield* promptFlag(opts, 'custom-redirect-uri', {\n promptIf: true,\n required: true,\n prompt: newRedirectPrompt,\n });\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n redirectTo,\n });\n yield* Effect.log(\n boxen(\n [\n `Google OAuth client updated: ${response.client.client_name}`,\n `ID: ${response.client.id}`,\n `Redirect URI: ${redirectTo}`,\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n return;\n }\n }\n }\n\n const promptCredentials = !hasAnyUpdateFlag && !yes;\n const clientId = yield* promptFlag(opts, 'client-id', {\n promptIf:\n promptCredentials || (switchingFromShared && !hasFlag(opts, 'client-id')),\n required: promptCredentials || switchingFromShared,\n prompt: clientIdPrompt(consoleUrl),\n });\n const clientSecret = yield* promptFlag(opts, 'client-secret', {\n promptIf:\n isWeb &&\n (promptCredentials ||\n (switchingFromShared && !hasFlag(opts, 'client-secret'))),\n required: isWeb && (promptCredentials || switchingFromShared),\n prompt: clientSecretPrompt(consoleUrl),\n });\n const customRedirectUri = isWeb\n ? yield* promptFlag(opts, 'custom-redirect-uri', {\n promptIf: switchingFromShared && promptCredentials,\n required: false,\n prompt: redirectPrompt,\n })\n : undefined;\n\n const redirectTo = switchingFromShared\n ? customRedirectUri || client.redirect_to || DEFAULT_OAUTH_CALLBACK_URL\n : customRedirectUri;\n\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n clientId,\n clientSecret,\n redirectTo,\n useSharedCredentials: switchingFromShared ? false : undefined,\n });\n\n const lines = [\n `Google OAuth client updated: ${response.client.client_name}`,\n 'Credentials: custom',\n `ID: ${response.client.id}`,\n ];\n\n if (switchingFromShared) {\n lines.push('', 'This client no longer uses Instant dev credentials.');\n }\n if (isWeb && redirectTo) {\n lines.push(\n '',\n chalk.bold(`Add this redirect URI in Google Console:\\n${redirectTo}`),\n );\n }\n\n yield* Effect.log(\n boxen(lines.join('\\n'), {\n dimBorder: true,\n padding: { right: 1, left: 1 },\n }),\n );\n});\n\nconst handleClientIdSecretUpdate = Effect.fn(function* (params: {\n opts: Record<string, unknown>;\n client: OAuthClientRow;\n providerLabel: string;\n providerUrl: string;\n}) {\n const { yes } = yield* GlobalOpts;\n const hasAnyUpdateFlag = hasAnyFlag(params.opts, [\n 'client-id',\n 'client-secret',\n 'custom-redirect-uri',\n ]);\n if (yes && !hasAnyUpdateFlag) {\n return yield* BadArgsError.make({\n message:\n 'Must specify at least one of --client-id, --client-secret, or --custom-redirect-uri.',\n });\n }\n\n let promptCredentials = false;\n let promptRedirect = false;\n\n if (!hasAnyUpdateFlag && !yes) {\n const action = yield* selectUpdateAction([\n { label: 'Rotate credentials', value: 'rotate' },\n { label: 'Update redirect URI', value: 'redirect' },\n ]);\n promptCredentials = action === 'rotate';\n promptRedirect = action === 'redirect';\n }\n\n const clientId = yield* promptFlag(params.opts, 'client-id', {\n promptIf: promptCredentials,\n required: promptCredentials,\n prompt: clientIdPrompt(link(params.providerUrl)),\n });\n const clientSecret = yield* promptFlag(params.opts, 'client-secret', {\n promptIf: promptCredentials,\n required: promptCredentials,\n prompt: clientSecretPrompt(link(params.providerUrl)),\n });\n const customRedirectUri = yield* promptFlag(\n params.opts,\n 'custom-redirect-uri',\n {\n promptIf: promptRedirect,\n required: promptRedirect,\n prompt: promptRedirect ? newRedirectPrompt : redirectPrompt,\n },\n );\n\n const response = yield* updateOAuthClient({\n oauthClientId: params.client.id,\n clientId,\n clientSecret,\n redirectTo: customRedirectUri,\n });\n\n yield* Effect.log(\n boxen(\n [\n `${params.providerLabel} OAuth client updated: ${response.client.client_name}`,\n `ID: ${response.client.id}`,\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n});\n\nconst handleAppleUpdate = Effect.fn(function* (\n opts: Record<string, unknown>,\n client: OAuthClientRow,\n) {\n const { yes } = yield* GlobalOpts;\n const webFlags = [\n 'team-id',\n 'key-id',\n 'private-key-file',\n 'custom-redirect-uri',\n ];\n const updateFlags = ['services-id', ...webFlags];\n const hasAnyUpdateFlag = hasAnyFlag(opts, updateFlags);\n if (yes && !hasAnyUpdateFlag) {\n return yield* BadArgsError.make({\n message:\n 'Must specify at least one of --services-id, --team-id, --key-id, --private-key-file, or --custom-redirect-uri.',\n });\n }\n\n const existingWeb = Boolean(\n metaString(client, 'teamId') ||\n metaString(client, 'keyId') ||\n client.redirect_to,\n );\n const promptAll = !hasAnyUpdateFlag && !yes;\n const configureWeb = promptAll\n ? yield* runUIEffect(\n new UI.Confirmation({\n promptText:\n 'Configure web redirect flow? ' +\n chalk.dim(\n '(requires Team ID, Key ID, and a .p8 private key from Apple)',\n ),\n defaultValue: existingWeb,\n }),\n ).pipe(\n Effect.catchTag('UIError', (e) =>\n BadArgsError.make({ message: `UI error: ${e.message}` }),\n ),\n )\n : hasAnyFlag(opts, webFlags);\n\n const servicesId = yield* promptFlag(opts, 'services-id', {\n promptIf: promptAll,\n required: promptAll,\n prompt: {\n prompt: `Services ID ${chalk.dim(`(from ${link('https://developer.apple.com/account/resources/identifiers/list/serviceId')})`)}`,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n });\n\n const teamId = configureWeb\n ? yield* promptFlag(opts, 'team-id', {\n promptIf: promptAll,\n required: promptAll,\n prompt: {\n prompt: `Team ID ${chalk.dim(`(from ${link('https://developer.apple.com/account#MembershipDetailsCard')})`)}`,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n })\n : undefined;\n const keyId = configureWeb\n ? yield* promptFlag(opts, 'key-id', {\n promptIf: promptAll,\n required: promptAll,\n prompt: {\n prompt: `Key ID ${chalk.dim(`(from ${link('https://developer.apple.com/account/resources/authkeys/list')})`)}`,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n })\n : undefined;\n const privateKeyPath = configureWeb\n ? yield* promptFlag(opts, 'private-key-file', {\n promptIf: promptAll,\n required: promptAll,\n prompt: {\n prompt: `Path to .p8 private key file ${chalk.dim('(downloaded from Apple)')}`,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n })\n : undefined;\n const privateKey = privateKeyPath\n ? yield* readPrivateKeyFile(privateKeyPath)\n : undefined;\n const customRedirectUri = configureWeb\n ? yield* promptFlag(opts, 'custom-redirect-uri', {\n promptIf: promptAll,\n required: false,\n prompt: redirectPrompt,\n })\n : undefined;\n\n const meta: Record<string, string> = {};\n if (teamId) meta.teamId = teamId;\n if (keyId) meta.keyId = keyId;\n\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n clientId: servicesId,\n clientSecret: privateKey,\n redirectTo:\n configureWeb && privateKey\n ? customRedirectUri || client.redirect_to || DEFAULT_OAUTH_CALLBACK_URL\n : customRedirectUri,\n meta: Object.keys(meta).length ? meta : undefined,\n });\n\n yield* Effect.log(\n boxen(\n [\n `Apple OAuth client updated: ${response.client.client_name}`,\n `ID: ${response.client.id}`,\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n});\n\nconst handleClerkUpdate = Effect.fn(function* (\n opts: Record<string, unknown>,\n client: OAuthClientRow,\n) {\n const { yes } = yield* GlobalOpts;\n const publishableKey = yield* promptFlag(opts, 'publishable-key', {\n promptIf: !yes && !hasFlag(opts, 'publishable-key'),\n required: true,\n prompt: {\n prompt: `Clerk publishable key ${chalk.dim(`(from ${link('https://dashboard.clerk.com/last-active?path=api-keys')})`)}`,\n placeholder:\n 'pk_********************************************************',\n validate: (val) => {\n if (!val) return 'Publishable key is required';\n if (!val.startsWith('pk_')) {\n return 'Invalid publishable key. It should start with \"pk_\".';\n }\n },\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n });\n\n if (!publishableKey) {\n return yield* BadArgsError.make({\n message: 'Missing required value for --publishable-key',\n });\n }\n\n const domain = domainFromClerkKey(publishableKey);\n if (!domain) {\n return yield* BadArgsError.make({\n message: 'Invalid publishable key. Could not extract domain.',\n });\n }\n\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n discoveryEndpoint: `https://${domain}/.well-known/openid-configuration`,\n meta: { clerkPublishableKey: publishableKey },\n });\n\n yield* Effect.log(\n boxen(\n [\n `Clerk OAuth client updated: ${response.client.client_name}`,\n `ID: ${response.client.id}`,\n `Clerk Domain: https://${domain}`,\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n});\n\nconst handleFirebaseUpdate = Effect.fn(function* (\n opts: Record<string, unknown>,\n client: OAuthClientRow,\n) {\n const { yes } = yield* GlobalOpts;\n const projectId = yield* promptFlag(opts, 'project-id', {\n promptIf: !yes && !hasFlag(opts, 'project-id'),\n required: true,\n prompt: {\n prompt: `Firebase project ID: (From Project Settings page on ${link('https://console.firebase.google.com/')})`,\n validate: validateFirebaseProjectId,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n });\n\n const validationError = validateFirebaseProjectId(projectId ?? '');\n if (validationError) {\n return yield* BadArgsError.make({ message: validationError });\n }\n\n const response = yield* updateOAuthClient({\n oauthClientId: client.id,\n discoveryEndpoint: firebaseDiscoveryEndpoint(projectId!),\n });\n\n yield* Effect.log(\n boxen(\n [\n `Firebase OAuth client updated: ${response.client.client_name}`,\n `ID: ${response.client.id}`,\n `Firebase Project ID: ${projectId}`,\n ].join('\\n'),\n { dimBorder: true, padding: { right: 1, left: 1 } },\n ),\n );\n});\n\nexport const authClientUpdateCmd = Effect.fn(\n function* (\n opts: OptsFromCommand<typeof authClientUpdateDef> & Record<string, unknown>,\n ) {\n const { yes } = yield* GlobalOpts;\n const id = getFlag(opts, 'id') as string | undefined;\n const name = getFlag(opts, 'name') as string | undefined;\n const { auth, client } =\n id || name\n ? yield* findClientByIdOrName({ id, name })\n : {\n auth: yield* getAppsAuth(),\n client: undefined as OAuthClientRow | undefined,\n };\n const resolvedClient =\n client ??\n (yield* resolveClient({\n yes,\n clients: (auth.oauth_clients ?? []) as OAuthClientRow[],\n }));\n const provider = (auth.oauth_service_providers ?? []).find(\n (entry: ProviderRow) => entry.id === resolvedClient.provider_id,\n );\n\n if (!provider) {\n return yield* BadArgsError.make({\n message: `OAuth provider not found for client: ${resolvedClient.client_name}`,\n });\n }\n\n switch (provider.provider_name) {\n case 'google':\n return yield* handleGoogleUpdate(opts, resolvedClient);\n case 'github':\n return yield* handleClientIdSecretUpdate({\n opts,\n client: resolvedClient,\n providerLabel: 'GitHub',\n providerUrl: 'https://github.com/settings/developers',\n });\n case 'linkedin':\n return yield* handleClientIdSecretUpdate({\n opts,\n client: resolvedClient,\n providerLabel: 'LinkedIn',\n providerUrl: 'https://www.linkedin.com/developers/apps',\n });\n case 'apple':\n return yield* handleAppleUpdate(opts, resolvedClient);\n case 'clerk':\n return yield* handleClerkUpdate(opts, resolvedClient);\n case 'firebase':\n return yield* handleFirebaseUpdate(opts, resolvedClient);\n default:\n return yield* BadArgsError.make({\n message: `Updating ${provider.provider_name} OAuth clients is not supported.`,\n });\n }\n },\n Effect.catchTag('BadArgsError', (e) =>\n Effect.gen(function* () {\n yield* Effect.logError(e.message);\n yield* Effect.log(\n chalk.dim(\n 'hint: run `instant-cli auth client update --help` for available arguments',\n ),\n );\n }),\n ),\n);\n\nfunction domainFromClerkKey(key: string): string | null {\n try {\n const parts = key.split('_');\n const domainPartB64 = parts[parts.length - 1];\n const domainPart = base64Decode(domainPartB64);\n return domainPart.replace('$', '');\n } catch {\n return null;\n }\n}\n\nfunction base64Decode(s: string) {\n try {\n return Buffer.from(s, 'base64').toString('utf-8');\n } catch {\n return Buffer.from(s, 'base64url').toString('utf-8');\n }\n}\n\nfunction validateFirebaseProjectId(value: string) {\n const projectIdRegex = /^[a-z][a-z0-9-]{4,28}[a-z0-9]$/;\n if (!value) return 'Project ID is required';\n if (!projectIdRegex.test(value)) {\n return 'Invalid Firebase project ID. It must be 6-30 characters, start with a lowercase letter, contain only lowercase letters, digits, and hyphens, and not end with a hyphen.';\n }\n}\n\nfunction firebaseDiscoveryEndpoint(projectId: string) {\n return `https://securetoken.google.com/${encodeURIComponent(projectId)}/.well-known/openid-configuration`;\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,12 @@ export declare const authClientDeleteDef: Command<[], {
20
20
  name?: string | undefined;
21
21
  app?: string | undefined;
22
22
  }, {}>;
23
+ export declare const authClientUpdateDef: Command<[], {
24
+ id?: string | undefined;
25
+ name?: string | undefined;
26
+ app?: string | undefined;
27
+ devCredentials?: true | undefined;
28
+ }, {}>;
23
29
  export declare const authOriginListDef: Command<[], {
24
30
  app?: string | undefined;
25
31
  json?: true | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAU,MAAM,6BAA6B,CAAC;AA+B9D,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAiBnD,eAAO,MAAM,OAAO;;;;;MAgChB,CAAC;AAIL,eAAO,MAAM,gBAAgB;;;;MA+DzB,CAAC;AACL,eAAO,MAAM,iBAAiB;;;MAsB1B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;MAoB5B,CAAC;AAGL,eAAO,MAAM,iBAAiB;;;MAoB1B,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;MA2CzB,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;MAmB5B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;MAgB5B,CAAC;AAEL,eAAO,MAAM,QAAQ;;;MAYjB,CAAC;AAWL,eAAO,MAAM,OAAO,qBAchB,CAAC;AAEL,eAAO,MAAM,WAAW;;MAmBpB,CAAC;AAEL,eAAO,MAAM,QAAQ;;;;;;MAiBjB,CAAC;AAEL,eAAO,MAAM,OAAO;;;;MA4ChB,CAAC;AAEL,eAAO,MAAM,OAAO;;;;;MAgDhB,CAAC;AAEL,eAAO,MAAM,QAAQ;;MAoBjB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAU,MAAM,6BAA6B,CAAC;AAgC9D,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAiBnD,eAAO,MAAM,OAAO;;;;;MAgChB,CAAC;AAIL,eAAO,MAAM,gBAAgB;;;;MA+DzB,CAAC;AACL,eAAO,MAAM,iBAAiB;;;MAsB1B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;MAoB5B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;MA4D5B,CAAC;AAGL,eAAO,MAAM,iBAAiB;;;MAoB1B,CAAC;AAEL,eAAO,MAAM,gBAAgB;;;;;;;MA2CzB,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;MAmB5B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;MAgB5B,CAAC;AAEL,eAAO,MAAM,QAAQ;;;MAYjB,CAAC;AAWL,eAAO,MAAM,OAAO,qBAchB,CAAC;AAEL,eAAO,MAAM,WAAW;;MAmBpB,CAAC;AAEL,eAAO,MAAM,QAAQ;;;;;;MAiBjB,CAAC;AAEL,eAAO,MAAM,OAAO;;;;MA4ChB,CAAC;AAEL,eAAO,MAAM,OAAO;;;;;MAgDhB,CAAC;AAEL,eAAO,MAAM,QAAQ;;MAoBjB,CAAC"}
package/dist/index.js CHANGED
@@ -21,6 +21,7 @@ import { PACKAGE_ALIAS_AND_FULL_NAMES } from "./context/projectInfo.js";
21
21
  import { authClientAddCmd } from "./commands/auth/client/add.js";
22
22
  import { authClientListCmd } from "./commands/auth/client/list.js";
23
23
  import { authClientDeleteCmd } from "./commands/auth/client/delete.js";
24
+ import { authClientUpdateCmd } from "./commands/auth/client/update.js";
24
25
  import { authOriginListCmd } from "./commands/auth/origin/list.js";
25
26
  import { authOriginDeleteCmd } from "./commands/auth/origin/delete.js";
26
27
  import { authOriginAddCmd } from "./commands/auth/origin/add.js";
@@ -129,6 +130,52 @@ export const authClientDeleteDef = authClient
129
130
  allowAdminToken: true,
130
131
  }))));
131
132
  });
133
+ export const authClientUpdateDef = authClient
134
+ .command('update')
135
+ .description('Update an OAuth client')
136
+ .allowExcessArguments(true)
137
+ .allowUnknownOption(true)
138
+ .option('--id <client-id>', 'Client ID to update')
139
+ .option('--name <client-name>', 'Client name to update')
140
+ .option('-a --app <app-id>', 'App ID to update a client in. Defaults to *_INSTANT_APP_ID in .env')
141
+ .option('--dev-credentials', 'Switch a Google web client to Instant dev credentials.')
142
+ .addHelpText('after', `
143
+ Provider Specific Options:
144
+ Google:
145
+ --dev-credentials (web only)
146
+ --client-id
147
+ --client-secret (web only)
148
+ --custom-redirect-uri (optional, web only)
149
+ GitHub:
150
+ --client-id
151
+ --client-secret
152
+ --custom-redirect-uri (optional)
153
+ Apple:
154
+ --services-id
155
+ --team-id (web redirect flow)
156
+ --key-id (web redirect flow)
157
+ --private-key-file (web redirect flow)
158
+ --custom-redirect-uri (optional, web redirect flow only)
159
+ LinkedIn:
160
+ --client-id
161
+ --client-secret
162
+ --custom-redirect-uri (optional)
163
+ Clerk:
164
+ --publishable-key
165
+ Firebase:
166
+ --project-id
167
+ `)
168
+ .action((opts) => {
169
+ opts = {
170
+ ...opts,
171
+ ...minimist(process.argv),
172
+ };
173
+ return runCommandEffect(authClientUpdateCmd(opts).pipe(Effect.provide(WithAppLayer({
174
+ coerce: false,
175
+ appId: opts.app,
176
+ allowAdminToken: true,
177
+ }))));
178
+ });
132
179
  const authOrigin = auth.command('origin');
133
180
  export const authOriginListDef = authOrigin
134
181
  .command('list')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadEnv } from './util/loadEnv.ts';\n\nloadEnv();\n\nimport minimist from 'minimist';\nimport { Command, Option } from '@commander-js/extra-typings';\nimport chalk from 'chalk';\nimport { Effect, Layer } from 'effect';\nimport version from './version.js';\nimport { initCommand } from './commands/init.ts';\nimport { initWithoutFilesCommand } from './commands/initWithoutFiles.ts';\nimport { loginCommand } from './commands/login.ts';\nimport { logoutCommand } from './commands/logout.ts';\nimport {\n AuthLayerLive,\n BaseLayerLive,\n runCommandEffect,\n WithAppLayer,\n} from './layer.ts';\nimport { infoCommand } from './commands/info.ts';\nimport { pullCommand } from './commands/pull.ts';\nimport type { SchemaPermsOrBoth } from './commands/pull.ts';\nimport { claimCommand } from './commands/claim.ts';\nimport { pushCommand } from './commands/push.ts';\nimport { explorerCmd } from './commands/explorer.ts';\nimport { queryCmd } from './commands/query.ts';\nimport { program } from './program.ts';\nimport { PACKAGE_ALIAS_AND_FULL_NAMES } from './context/projectInfo.ts';\nimport { authClientAddCmd } from './commands/auth/client/add.ts';\nimport { authClientListCmd } from './commands/auth/client/list.ts';\nimport { authClientDeleteCmd } from './commands/auth/client/delete.ts';\nimport { authOriginListCmd } from './commands/auth/origin/list.ts';\nimport { authOriginDeleteCmd } from './commands/auth/origin/delete.ts';\nimport { authOriginAddCmd } from './commands/auth/origin/add.ts';\nimport { link } from './logging.ts';\n\nexport type OptsFromCommand<C> =\n C extends Command<any, infer R, any> ? R : never;\n\nprogram\n .name('instant-cli')\n .addOption(globalOption('-t --token <token>', 'Auth token override'))\n .addOption(globalOption('-y --yes', \"Answer 'yes' to all prompts\"))\n .addOption(globalOption('--env <file>', 'Use a specific .env file'))\n .addOption(\n globalOption('-v --version', 'Print the version number', () => {\n console.log(version);\n process.exit(0);\n }),\n )\n .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))\n .usage(`<command> ${chalk.dim('[options] [args]')}`);\n\n// Command List\nexport const initDef = program\n .command('init')\n .description('Set up a new project.')\n .option(\n '-a --app <app-id>',\n 'If you have an existing app ID, we can pull schema and perms from there.',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option('--title <title>', 'Title for the created app')\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action((options) => {\n return runCommandEffect(\n initCommand(options).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n coerceAuth: true,\n title: options.title,\n appId: options.app,\n packageName: options.package as any,\n applyEnv: true,\n temp: options.temp,\n }),\n ),\n ),\n );\n });\n\nconst auth = program.command('auth');\nconst authClient = auth.command('client');\nexport const authClientAddDef = authClient\n .command('add')\n .allowExcessArguments(true)\n .allowUnknownOption(true)\n .option(\n '--type <google|github|apple|linkedin>',\n 'Type of oauth client to add',\n )\n .option(\n '--name <client name>',\n 'Custom name to identify the OAuth client (ex: google-web)',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to modify. Defaults to *_INSTANT_APP_ID in .env',\n )\n .addHelpText(\n 'after',\n `\nProvider Specific Options:\n Google:\n --app-type web|ios|android|button-for-web\n --dev-credentials (optional, web only)\n --client-id (required unless using dev credentials)\n --client-secret (web only, unless using dev credentials)\n --custom-redirect-uri (optional, web only)\n GitHub:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Apple:\n --services-id (Services ID from ${link('https://developer.apple.com', 'developer.apple.com')})\n --team-id (optional, required for web redirect flow)\n --key-id (optional, required for web redirect flow)\n --private-key-file (optional, path to .p8 PEM; required for web redirect flow)\n --custom-redirect-uri (optional, web redirect flow only)\n LinkedIn:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Clerk:\n --publishable-key (Publishable Key from ${link('https://dashboard.clerk.com', 'dashboard.clerk.com')})\n Firebase:\n --project-id (Project ID from ${link('https://console.firebase.google.com', 'console.firebase.google.com')})\n`,\n )\n .action((opts) => {\n opts = {\n ...opts,\n ...minimist(process.argv),\n };\n return runCommandEffect(\n authClientAddCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\nexport const authClientListDef = authClient\n .command('list')\n .option(\n '-a --app <app-id>',\n 'App ID to list clients for. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--json', 'Enable JSON output')\n .allowUnknownOption(true)\n .action((opts) => {\n return runCommandEffect(\n authClientListCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n // Silence \"searching for instant sdk.. logs for json output\"\n }).pipe(Layer.annotateLogs('silent', !!opts.json)),\n ),\n ),\n );\n });\n\nexport const authClientDeleteDef = authClient\n .command('delete')\n .option('--id <client-id>', 'Client ID to delete')\n .option('--name <client-name>', 'Client name to delete')\n .option(\n '-a --app <app-id>',\n 'App ID to delete a client from. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action((opts) => {\n return runCommandEffect(\n authClientDeleteCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nconst authOrigin = auth.command('origin');\nexport const authOriginListDef = authOrigin\n .command('list')\n .option(\n '-a --app <app-id>',\n 'App ID to list origins for. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--json', 'Enable JSON output')\n .action((opts) => {\n return runCommandEffect(\n authOriginListCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }).pipe(Layer.annotateLogs('silent', !!opts.json)),\n ),\n ),\n );\n });\n\nexport const authOriginAddDef = authOrigin\n .command('add')\n .option(\n '--type <website|vercel|netlify|custom-scheme>',\n 'Type of origin to add.',\n )\n .option('--url <url>', 'Website URL (for website type, e.g. example.com)')\n .option(\n '--project <name>',\n 'Vercel project name (for vercel type, e.g. my-project)',\n )\n .option('--site <name>', 'Netlify site name (for netlify type, e.g. my-site)')\n .option(\n '--scheme <scheme>',\n 'App scheme (for custom-scheme type, e.g. myapp://)',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to add an origin to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .addHelpText(\n 'after',\n `\nOrigin Types:\n website A standard website origin (e.g. example.com)\n vercel Vercel preview deployments (project name)\n netlify Netlify preview deployments (site name)\n custom-scheme Native app scheme (e.g. your-app-scheme://)\n`,\n )\n .action((opts) => {\n return runCommandEffect(\n authOriginAddCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nexport const authOriginDeleteDef = authOrigin\n .command('delete')\n .option('--id <origin-id>', 'Origin ID to delete')\n .option(\n '-a --app <app-id>',\n 'App ID to delete an origin from. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action((opts) => {\n return runCommandEffect(\n authOriginDeleteCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nexport const initWithoutFilesDef = program\n .command('init-without-files')\n .description('Generate a new app id and admin token pair without any files.')\n .option('--title <title>', 'Title for the created app.')\n .option(\n '--org-id <org-id>',\n 'Organization id for app. Cannot be used with --temp flag.',\n )\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action((opts) => {\n return runCommandEffect(\n initWithoutFilesCommand(opts).pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nexport const loginDef = program\n .command('login')\n .description('Log into your account')\n .option('-p --print', 'Prints the auth token into the console.')\n .option(\n '--headless',\n 'Print the login URL instead of trying to open the browser',\n )\n .action(async (opts) => {\n await runCommandEffect(\n loginCommand(opts).pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nprogram\n .command('logout')\n .description('Log out of your Instant account')\n .action(async () => {\n return runCommandEffect(\n logoutCommand().pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nexport const infoDef = program\n .command('info')\n .description('Display CLI version and login status')\n .action(async () => {\n return runCommandEffect(\n infoCommand().pipe(\n Effect.provide(\n AuthLayerLive({\n coerce: false,\n allowAdminToken: false,\n }).pipe(Layer.catchAll(() => Layer.empty)), // make the auth layer optional\n ),\n ),\n );\n });\n\nexport const explorerDef = program\n .command('explorer')\n .description('Opens the Explorer in your browser')\n .option(\n '-a --app <app-id>',\n 'App ID to open the explorer to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action(async (opts) => {\n return runCommandEffect(\n explorerCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n coerceAuth: true,\n appId: opts.app,\n }),\n ),\n ),\n );\n });\n\nexport const queryDef = program\n .command('query')\n .argument('<query>', 'InstaQL query as JSON/JSON5')\n .option(\n '-a --app <app-id>',\n 'App ID to query. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--admin', 'Run the query as admin (bypasses permissions)')\n .option('--as-email <email>', 'Run the query as a specific user by email')\n .option('--as-guest', 'Run the query as an unauthenticated guest')\n .option(\n '--as-token <refresh-token>',\n 'Run the query as a user identified by refresh token',\n )\n .description('Run an InstaQL query against your app.')\n .action(async function (queryArg, opts) {\n return runCommandEffect(queryCmd(queryArg, opts));\n });\n\nexport const pullDef = program\n .command('pull')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to pull. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to pull to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option(\n '--experimental-type-preservation',\n \"[Experimental] Preserve manual type changes like `status: i.json<'online' | 'offline'>()` when doing `instant-cli pull schema`\",\n )\n .description('Pull schema and perm files from production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n return runCommandEffect(\n pullCommand(arg as SchemaPermsOrBoth, inputOpts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n packageName: inputOpts.package as\n | 'react'\n | 'react-native'\n | 'core'\n | 'admin'\n | undefined,\n appId: inputOpts.app,\n }),\n ),\n ),\n );\n });\n\nexport const pushDef = program\n .command('push')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .option(\n '--rename [renames...]',\n 'List of full attribute names separated by a \":\"\\n Example:`push --rename posts.author:posts.creator stores.owner:stores.manager`',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .description('Push schema and perm files to production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n return runCommandEffect(\n pushCommand(arg, inputOpts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: inputOpts.app,\n coerceLibraryInstall: true,\n coerceAuth: false,\n allowAdminToken: true,\n applyEnv: true,\n packageName:\n inputOpts.package as keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES,\n }),\n ),\n ),\n );\n });\n\nexport const claimDef = program\n .command('claim')\n .description('Transfer a temporary app into your Instant account')\n .option(\n '-a --app <app-id>',\n 'App to claim. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action(async function (opts) {\n return runCommandEffect(\n claimCommand.pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n allowAdminToken: false,\n appId: opts.app,\n applyEnv: false,\n }),\n ),\n ),\n );\n });\n//// Program setup /////\n\nfunction globalOption(\n flags: string,\n description?: string,\n argParser?: (value: string, prev?: unknown) => unknown,\n) {\n const opt = new Option(flags, description);\n if (argParser) {\n opt.argParser(argParser);\n }\n // @ts-ignore\n // __global does not exist on `Option`,\n // but we use it in `getLocalAndGlobalOptions`, to produce\n // our own custom list of local and global options.\n // For more info, see the original PR:\n // https://github.com/instantdb/instant/pull/505\n opt.__global = true;\n return opt;\n}\n\nfunction getLocalAndGlobalOptions(cmd: any, helper: any) {\n const mixOfLocalAndGlobal = helper.visibleOptions(cmd);\n const localOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option: any) => !option.__global,\n );\n const globalOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option: any) => option.__global,\n );\n const globalOptions = helper.visibleGlobalOptions(cmd);\n\n return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];\n}\n\nfunction formatHelp(\n this: { showGlobalOptions: boolean },\n cmd: any,\n helper: any,\n) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term: string, description: string | undefined) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.boxWrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray: string[]) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.boxWrap(commandDescription, helpWidth, 0),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument: any) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Arguments'),\n formatList(argumentList),\n '',\n ]);\n }\n const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(\n cmd,\n helper,\n );\n\n // Options\n const optionList = visibleOptions.map((option: any) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Options'),\n formatList(optionList),\n '',\n ]);\n }\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd: any) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Commands'),\n formatList(commandList),\n '',\n ]);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = visibleGlobalOptions.map((option: any) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Global Options'),\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n return output.join('\\n');\n}\n\nprogram.configureHelp({\n showGlobalOptions: true,\n formatHelp,\n});\n\nprogram.parse(process.argv);\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { loadEnv } from './util/loadEnv.ts';\n\nloadEnv();\n\nimport minimist from 'minimist';\nimport { Command, Option } from '@commander-js/extra-typings';\nimport chalk from 'chalk';\nimport { Effect, Layer } from 'effect';\nimport version from './version.js';\nimport { initCommand } from './commands/init.ts';\nimport { initWithoutFilesCommand } from './commands/initWithoutFiles.ts';\nimport { loginCommand } from './commands/login.ts';\nimport { logoutCommand } from './commands/logout.ts';\nimport {\n AuthLayerLive,\n BaseLayerLive,\n runCommandEffect,\n WithAppLayer,\n} from './layer.ts';\nimport { infoCommand } from './commands/info.ts';\nimport { pullCommand } from './commands/pull.ts';\nimport type { SchemaPermsOrBoth } from './commands/pull.ts';\nimport { claimCommand } from './commands/claim.ts';\nimport { pushCommand } from './commands/push.ts';\nimport { explorerCmd } from './commands/explorer.ts';\nimport { queryCmd } from './commands/query.ts';\nimport { program } from './program.ts';\nimport { PACKAGE_ALIAS_AND_FULL_NAMES } from './context/projectInfo.ts';\nimport { authClientAddCmd } from './commands/auth/client/add.ts';\nimport { authClientListCmd } from './commands/auth/client/list.ts';\nimport { authClientDeleteCmd } from './commands/auth/client/delete.ts';\nimport { authClientUpdateCmd } from './commands/auth/client/update.ts';\nimport { authOriginListCmd } from './commands/auth/origin/list.ts';\nimport { authOriginDeleteCmd } from './commands/auth/origin/delete.ts';\nimport { authOriginAddCmd } from './commands/auth/origin/add.ts';\nimport { link } from './logging.ts';\n\nexport type OptsFromCommand<C> =\n C extends Command<any, infer R, any> ? R : never;\n\nprogram\n .name('instant-cli')\n .addOption(globalOption('-t --token <token>', 'Auth token override'))\n .addOption(globalOption('-y --yes', \"Answer 'yes' to all prompts\"))\n .addOption(globalOption('--env <file>', 'Use a specific .env file'))\n .addOption(\n globalOption('-v --version', 'Print the version number', () => {\n console.log(version);\n process.exit(0);\n }),\n )\n .addHelpOption(globalOption('-h --help', 'Print the help text for a command'))\n .usage(`<command> ${chalk.dim('[options] [args]')}`);\n\n// Command List\nexport const initDef = program\n .command('init')\n .description('Set up a new project.')\n .option(\n '-a --app <app-id>',\n 'If you have an existing app ID, we can pull schema and perms from there.',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option('--title <title>', 'Title for the created app')\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action((options) => {\n return runCommandEffect(\n initCommand(options).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n coerceAuth: true,\n title: options.title,\n appId: options.app,\n packageName: options.package as any,\n applyEnv: true,\n temp: options.temp,\n }),\n ),\n ),\n );\n });\n\nconst auth = program.command('auth');\nconst authClient = auth.command('client');\nexport const authClientAddDef = authClient\n .command('add')\n .allowExcessArguments(true)\n .allowUnknownOption(true)\n .option(\n '--type <google|github|apple|linkedin>',\n 'Type of oauth client to add',\n )\n .option(\n '--name <client name>',\n 'Custom name to identify the OAuth client (ex: google-web)',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to modify. Defaults to *_INSTANT_APP_ID in .env',\n )\n .addHelpText(\n 'after',\n `\nProvider Specific Options:\n Google:\n --app-type web|ios|android|button-for-web\n --dev-credentials (optional, web only)\n --client-id (required unless using dev credentials)\n --client-secret (web only, unless using dev credentials)\n --custom-redirect-uri (optional, web only)\n GitHub:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Apple:\n --services-id (Services ID from ${link('https://developer.apple.com', 'developer.apple.com')})\n --team-id (optional, required for web redirect flow)\n --key-id (optional, required for web redirect flow)\n --private-key-file (optional, path to .p8 PEM; required for web redirect flow)\n --custom-redirect-uri (optional, web redirect flow only)\n LinkedIn:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Clerk:\n --publishable-key (Publishable Key from ${link('https://dashboard.clerk.com', 'dashboard.clerk.com')})\n Firebase:\n --project-id (Project ID from ${link('https://console.firebase.google.com', 'console.firebase.google.com')})\n`,\n )\n .action((opts) => {\n opts = {\n ...opts,\n ...minimist(process.argv),\n };\n return runCommandEffect(\n authClientAddCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\nexport const authClientListDef = authClient\n .command('list')\n .option(\n '-a --app <app-id>',\n 'App ID to list clients for. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--json', 'Enable JSON output')\n .allowUnknownOption(true)\n .action((opts) => {\n return runCommandEffect(\n authClientListCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n // Silence \"searching for instant sdk.. logs for json output\"\n }).pipe(Layer.annotateLogs('silent', !!opts.json)),\n ),\n ),\n );\n });\n\nexport const authClientDeleteDef = authClient\n .command('delete')\n .option('--id <client-id>', 'Client ID to delete')\n .option('--name <client-name>', 'Client name to delete')\n .option(\n '-a --app <app-id>',\n 'App ID to delete a client from. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action((opts) => {\n return runCommandEffect(\n authClientDeleteCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nexport const authClientUpdateDef = authClient\n .command('update')\n .description('Update an OAuth client')\n .allowExcessArguments(true)\n .allowUnknownOption(true)\n .option('--id <client-id>', 'Client ID to update')\n .option('--name <client-name>', 'Client name to update')\n .option(\n '-a --app <app-id>',\n 'App ID to update a client in. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '--dev-credentials',\n 'Switch a Google web client to Instant dev credentials.',\n )\n .addHelpText(\n 'after',\n `\nProvider Specific Options:\n Google:\n --dev-credentials (web only)\n --client-id\n --client-secret (web only)\n --custom-redirect-uri (optional, web only)\n GitHub:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Apple:\n --services-id\n --team-id (web redirect flow)\n --key-id (web redirect flow)\n --private-key-file (web redirect flow)\n --custom-redirect-uri (optional, web redirect flow only)\n LinkedIn:\n --client-id\n --client-secret\n --custom-redirect-uri (optional)\n Clerk:\n --publishable-key\n Firebase:\n --project-id\n`,\n )\n .action((opts) => {\n opts = {\n ...opts,\n ...minimist(process.argv),\n };\n return runCommandEffect(\n authClientUpdateCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nconst authOrigin = auth.command('origin');\nexport const authOriginListDef = authOrigin\n .command('list')\n .option(\n '-a --app <app-id>',\n 'App ID to list origins for. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--json', 'Enable JSON output')\n .action((opts) => {\n return runCommandEffect(\n authOriginListCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }).pipe(Layer.annotateLogs('silent', !!opts.json)),\n ),\n ),\n );\n });\n\nexport const authOriginAddDef = authOrigin\n .command('add')\n .option(\n '--type <website|vercel|netlify|custom-scheme>',\n 'Type of origin to add.',\n )\n .option('--url <url>', 'Website URL (for website type, e.g. example.com)')\n .option(\n '--project <name>',\n 'Vercel project name (for vercel type, e.g. my-project)',\n )\n .option('--site <name>', 'Netlify site name (for netlify type, e.g. my-site)')\n .option(\n '--scheme <scheme>',\n 'App scheme (for custom-scheme type, e.g. myapp://)',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to add an origin to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .addHelpText(\n 'after',\n `\nOrigin Types:\n website A standard website origin (e.g. example.com)\n vercel Vercel preview deployments (project name)\n netlify Netlify preview deployments (site name)\n custom-scheme Native app scheme (e.g. your-app-scheme://)\n`,\n )\n .action((opts) => {\n return runCommandEffect(\n authOriginAddCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n coerceAuth: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nexport const authOriginDeleteDef = authOrigin\n .command('delete')\n .option('--id <origin-id>', 'Origin ID to delete')\n .option(\n '-a --app <app-id>',\n 'App ID to delete an origin from. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action((opts) => {\n return runCommandEffect(\n authOriginDeleteCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: opts.app,\n allowAdminToken: true,\n }),\n ),\n ),\n );\n });\n\nexport const initWithoutFilesDef = program\n .command('init-without-files')\n .description('Generate a new app id and admin token pair without any files.')\n .option('--title <title>', 'Title for the created app.')\n .option(\n '--org-id <org-id>',\n 'Organization id for app. Cannot be used with --temp flag.',\n )\n .option(\n '--temp',\n 'Create a temporary app which will automatically delete itself after >24 hours.',\n )\n .action((opts) => {\n return runCommandEffect(\n initWithoutFilesCommand(opts).pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nexport const loginDef = program\n .command('login')\n .description('Log into your account')\n .option('-p --print', 'Prints the auth token into the console.')\n .option(\n '--headless',\n 'Print the login URL instead of trying to open the browser',\n )\n .action(async (opts) => {\n await runCommandEffect(\n loginCommand(opts).pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nprogram\n .command('logout')\n .description('Log out of your Instant account')\n .action(async () => {\n return runCommandEffect(\n logoutCommand().pipe(Effect.provide(BaseLayerLive)),\n );\n });\n\nexport const infoDef = program\n .command('info')\n .description('Display CLI version and login status')\n .action(async () => {\n return runCommandEffect(\n infoCommand().pipe(\n Effect.provide(\n AuthLayerLive({\n coerce: false,\n allowAdminToken: false,\n }).pipe(Layer.catchAll(() => Layer.empty)), // make the auth layer optional\n ),\n ),\n );\n });\n\nexport const explorerDef = program\n .command('explorer')\n .description('Opens the Explorer in your browser')\n .option(\n '-a --app <app-id>',\n 'App ID to open the explorer to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action(async (opts) => {\n return runCommandEffect(\n explorerCmd(opts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n coerceAuth: true,\n appId: opts.app,\n }),\n ),\n ),\n );\n });\n\nexport const queryDef = program\n .command('query')\n .argument('<query>', 'InstaQL query as JSON/JSON5')\n .option(\n '-a --app <app-id>',\n 'App ID to query. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option('--admin', 'Run the query as admin (bypasses permissions)')\n .option('--as-email <email>', 'Run the query as a specific user by email')\n .option('--as-guest', 'Run the query as an unauthenticated guest')\n .option(\n '--as-token <refresh-token>',\n 'Run the query as a user identified by refresh token',\n )\n .description('Run an InstaQL query against your app.')\n .action(async function (queryArg, opts) {\n return runCommandEffect(queryCmd(queryArg, opts));\n });\n\nexport const pullDef = program\n .command('pull')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to pull. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to pull to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .option(\n '--experimental-type-preservation',\n \"[Experimental] Preserve manual type changes like `status: i.json<'online' | 'offline'>()` when doing `instant-cli pull schema`\",\n )\n .description('Pull schema and perm files from production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n return runCommandEffect(\n pullCommand(arg as SchemaPermsOrBoth, inputOpts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: true,\n packageName: inputOpts.package as\n | 'react'\n | 'react-native'\n | 'core'\n | 'admin'\n | undefined,\n appId: inputOpts.app,\n }),\n ),\n ),\n );\n });\n\nexport const pushDef = program\n .command('push')\n .argument(\n '[schema|perms|all]',\n 'Which configuration to push. Defaults to `all`',\n )\n .option(\n '-a --app <app-id>',\n 'App ID to push to. Defaults to *_INSTANT_APP_ID in .env',\n )\n .option(\n '--skip-check-types',\n \"Don't check types on the server when pushing schema\",\n )\n .option(\n '--rename [renames...]',\n 'List of full attribute names separated by a \":\"\\n Example:`push --rename posts.author:posts.creator stores.owner:stores.manager`',\n )\n .option(\n '-p --package <react|react-native|core|admin|solid|svelte>',\n 'Which package to automatically install if there is not one installed already.',\n )\n .description('Push schema and perm files to production.')\n .addHelpText(\n 'after',\n `\nEnvironment Variables:\n INSTANT_SCHEMA_FILE_PATH Override schema file location (default: instant.schema.ts)\n INSTANT_PERMS_FILE_PATH Override perms file location (default: instant.perms.ts)\n`,\n )\n .action(async function (arg, inputOpts) {\n return runCommandEffect(\n pushCommand(arg, inputOpts).pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n appId: inputOpts.app,\n coerceLibraryInstall: true,\n coerceAuth: false,\n allowAdminToken: true,\n applyEnv: true,\n packageName:\n inputOpts.package as keyof typeof PACKAGE_ALIAS_AND_FULL_NAMES,\n }),\n ),\n ),\n );\n });\n\nexport const claimDef = program\n .command('claim')\n .description('Transfer a temporary app into your Instant account')\n .option(\n '-a --app <app-id>',\n 'App to claim. Defaults to *_INSTANT_APP_ID in .env',\n )\n .action(async function (opts) {\n return runCommandEffect(\n claimCommand.pipe(\n Effect.provide(\n WithAppLayer({\n coerce: false,\n allowAdminToken: false,\n appId: opts.app,\n applyEnv: false,\n }),\n ),\n ),\n );\n });\n//// Program setup /////\n\nfunction globalOption(\n flags: string,\n description?: string,\n argParser?: (value: string, prev?: unknown) => unknown,\n) {\n const opt = new Option(flags, description);\n if (argParser) {\n opt.argParser(argParser);\n }\n // @ts-ignore\n // __global does not exist on `Option`,\n // but we use it in `getLocalAndGlobalOptions`, to produce\n // our own custom list of local and global options.\n // For more info, see the original PR:\n // https://github.com/instantdb/instant/pull/505\n opt.__global = true;\n return opt;\n}\n\nfunction getLocalAndGlobalOptions(cmd: any, helper: any) {\n const mixOfLocalAndGlobal = helper.visibleOptions(cmd);\n const localOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option: any) => !option.__global,\n );\n const globalOptionsFromMix = mixOfLocalAndGlobal.filter(\n (option: any) => option.__global,\n );\n const globalOptions = helper.visibleGlobalOptions(cmd);\n\n return [localOptionsFromMix, globalOptionsFromMix.concat(globalOptions)];\n}\n\nfunction formatHelp(\n this: { showGlobalOptions: boolean },\n cmd: any,\n helper: any,\n) {\n const termWidth = helper.padWidth(cmd, helper);\n const helpWidth = helper.helpWidth || 80;\n const itemIndentWidth = 2;\n const itemSeparatorWidth = 2; // between term and description\n function formatItem(term: string, description: string | undefined) {\n if (description) {\n const fullText = `${term.padEnd(termWidth + itemSeparatorWidth)}${description}`;\n return helper.boxWrap(\n fullText,\n helpWidth - itemIndentWidth,\n termWidth + itemSeparatorWidth,\n );\n }\n return term;\n }\n function formatList(textArray: string[]) {\n return textArray.join('\\n').replace(/^/gm, ' '.repeat(itemIndentWidth));\n }\n\n // Usage\n let output = [`${helper.commandUsage(cmd)}`, ''];\n\n // Description\n const commandDescription = helper.commandDescription(cmd);\n if (commandDescription.length > 0) {\n output = output.concat([\n helper.boxWrap(commandDescription, helpWidth, 0),\n '',\n ]);\n }\n\n // Arguments\n const argumentList = helper.visibleArguments(cmd).map((argument: any) => {\n return formatItem(\n helper.argumentTerm(argument),\n helper.argumentDescription(argument),\n );\n });\n if (argumentList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Arguments'),\n formatList(argumentList),\n '',\n ]);\n }\n const [visibleOptions, visibleGlobalOptions] = getLocalAndGlobalOptions(\n cmd,\n helper,\n );\n\n // Options\n const optionList = visibleOptions.map((option: any) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (optionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Options'),\n formatList(optionList),\n '',\n ]);\n }\n // Commands\n const commandList = helper.visibleCommands(cmd).map((cmd: any) => {\n return formatItem(\n helper.subcommandTerm(cmd),\n helper.subcommandDescription(cmd),\n );\n });\n if (commandList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Commands'),\n formatList(commandList),\n '',\n ]);\n }\n\n if (this.showGlobalOptions) {\n const globalOptionList = visibleGlobalOptions.map((option: any) => {\n return formatItem(\n helper.optionTerm(option),\n helper.optionDescription(option),\n );\n });\n if (globalOptionList.length > 0) {\n output = output.concat([\n chalk.dim.bold('Global Options'),\n formatList(globalOptionList),\n '',\n ]);\n }\n }\n\n return output.join('\\n');\n}\n\nprogram.configureHelp({\n showGlobalOptions: true,\n formatHelp,\n});\n\nprogram.parse(process.argv);\n"]}
@@ -151,6 +151,29 @@ export declare const addOAuthClient: (params: {
151
151
  readonly use_shared_credentials?: boolean | null | undefined;
152
152
  };
153
153
  }, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
154
+ export declare const updateOAuthClient: (params: {
155
+ appId?: string;
156
+ oauthClientId: string;
157
+ clientId?: string;
158
+ clientSecret?: string;
159
+ discoveryEndpoint?: string;
160
+ redirectTo?: string | null;
161
+ meta?: unknown;
162
+ useSharedCredentials?: boolean;
163
+ }) => Effect.Effect<{
164
+ readonly client: {
165
+ readonly id: string;
166
+ readonly client_name: string;
167
+ readonly client_id?: string | null | undefined;
168
+ readonly provider_id: string;
169
+ readonly authorization_endpoint?: string | null | undefined;
170
+ readonly token_endpoint?: string | null | undefined;
171
+ readonly discovery_endpoint?: string | null | undefined;
172
+ readonly redirect_to?: string | null | undefined;
173
+ readonly meta?: any;
174
+ readonly use_shared_credentials?: boolean | null | undefined;
175
+ };
176
+ }, import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
154
177
  export declare const promptForRedirectURI: (existingValue?: string | undefined) => Effect.Effect<string | undefined, BadArgsError, never>;
155
178
  export declare const getOrCreateProvider: (type: "google" | "github" | "apple" | "linkedin" | "clerk" | "firebase") => Effect.Effect<{
156
179
  auth: {
@@ -189,6 +212,46 @@ export declare const getClientNameAndProvider: (providerType: "google" | "github
189
212
  };
190
213
  clientName: string | undefined;
191
214
  }, BadArgsError | import("./ui.ts").UIError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, import("../context/globalOpts.ts").GlobalOpts | InstantHttpAuthed | CurrentApp>;
215
+ export declare const findClientByIdOrName: (params: {
216
+ id?: string;
217
+ name?: string;
218
+ }) => Effect.Effect<{
219
+ auth: {
220
+ readonly authorized_redirect_origins?: {
221
+ readonly id: string;
222
+ readonly service: "generic" | "vercel" | "netlify" | "custom-scheme";
223
+ readonly params: string[];
224
+ }[] | null | undefined;
225
+ readonly oauth_service_providers?: {
226
+ readonly id: string;
227
+ readonly provider_name: string;
228
+ }[] | null | undefined;
229
+ readonly oauth_clients?: {
230
+ readonly id: string;
231
+ readonly client_name: string;
232
+ readonly client_id?: string | null | undefined;
233
+ readonly provider_id: string;
234
+ readonly authorization_endpoint?: string | null | undefined;
235
+ readonly token_endpoint?: string | null | undefined;
236
+ readonly discovery_endpoint?: string | null | undefined;
237
+ readonly redirect_to?: string | null | undefined;
238
+ readonly meta?: any;
239
+ readonly use_shared_credentials?: boolean | null | undefined;
240
+ }[] | null | undefined;
241
+ };
242
+ client: {
243
+ readonly id: string;
244
+ readonly client_name: string;
245
+ readonly client_id?: string | null | undefined;
246
+ readonly provider_id: string;
247
+ readonly authorization_endpoint?: string | null | undefined;
248
+ readonly token_endpoint?: string | null | undefined;
249
+ readonly discovery_endpoint?: string | null | undefined;
250
+ readonly redirect_to?: string | null | undefined;
251
+ readonly meta?: any;
252
+ readonly use_shared_credentials?: boolean | null | undefined;
253
+ };
254
+ }, BadArgsError | import("./http.ts").InstantHttpError | import("effect/Cause").TimeoutException | import("@effect/platform/HttpClientError").RequestError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").ResponseError, InstantHttpAuthed | CurrentApp>;
192
255
  export declare const removeAuthorizedOrigin: (originId: string) => Effect.Effect<{
193
256
  readonly origin: {
194
257
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAe,MAAM,WAAW,CAAC;AAS3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,eAAO,MAAM,uBAAuB,mEAKnC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;EAG/B,CAAC;AAUH,eAAO,MAAM,WAAW;;;;;;;;;;;EAWtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjE,eAAO,MAAM,wBAAwB;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;EAEjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAOH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;iRAOtB,CAAC;AAEH,eAAO,MAAM,gBAAgB;YACnB,MAAM;kBACA,MAAM;;;;;;iRAgBpB,CAAC;AAEH,eAAO,MAAM,cAAc;YACjB,MAAM;gBACF,MAAM;gBACN,MAAM;eACP,MAAM;mBACF,MAAM;4BACG,MAAM;oBACd,MAAM;wBACF,MAAM;iBACb,MAAM;WACZ,OAAO;2BACS,OAAO;;;;;;;;;;;;;;iRAuB9B,CAAC;AAIH,eAAO,MAAM,oBAAoB,gGAiC/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iRAc9B,CAAC;AAIH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,WAWzD,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;4WAgCnC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;iRAajC,CAAC;AAEH,eAAO,MAAM,mBAAmB;aACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,uBAAuB,CAAC;YACnD,MAAM,EAAE;;;;;;;iRAiBhB,CAAC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAe,MAAM,WAAW,CAAC;AAS3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,eAAO,MAAM,uBAAuB,mEAKnC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;EAG/B,CAAC;AAUH,eAAO,MAAM,WAAW;;;;;;;;;;;EAWtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;AAEjE,eAAO,MAAM,wBAAwB;;;;;EAEnC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;EAEjC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;EAEnC,CAAC;AAOH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAI3B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;iRAOtB,CAAC;AAEH,eAAO,MAAM,gBAAgB;YACnB,MAAM;kBACA,MAAM;;;;;;iRAgBpB,CAAC;AAEH,eAAO,MAAM,cAAc;YACjB,MAAM;gBACF,MAAM;gBACN,MAAM;eACP,MAAM;mBACF,MAAM;4BACG,MAAM;oBACd,MAAM;wBACF,MAAM;iBACb,MAAM;WACZ,OAAO;2BACS,OAAO;;;;;;;;;;;;;;iRAuB9B,CAAC;AAEH,eAAO,MAAM,iBAAiB;YACpB,MAAM;mBACC,MAAM;eACV,MAAM;mBACF,MAAM;wBACD,MAAM;iBACb,MAAM,GAAG,IAAI;WACnB,OAAO;2BACS,OAAO;;;;;;;;;;;;;;iRAmB9B,CAAC;AAIH,eAAO,MAAM,oBAAoB,gGAiC/B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;iRAc9B,CAAC;AAIH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,WAWzD,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;4WAgCnC,CAAC;AAEH,eAAO,MAAM,oBAAoB;SAC1B,MAAM;WACJ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gSA2Bb,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;iRAajC,CAAC;AAEH,eAAO,MAAM,mBAAmB;aACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,uBAAuB,CAAC;YACnD,MAAM,EAAE;;;;;;;iRAiBhB,CAAC"}
package/dist/lib/oauth.js CHANGED
@@ -84,6 +84,22 @@ export const addOAuthClient = Effect.fn(function* (params) {
84
84
  })
85
85
  .pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(AddOAuthClientResponse)));
86
86
  });
87
+ export const updateOAuthClient = Effect.fn(function* (params) {
88
+ const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));
89
+ const targetAppId = params.appId ?? (yield* CurrentApp).appId;
90
+ return yield* http
91
+ .post(`/dash/apps/${targetAppId}/oauth_clients/${params.oauthClientId}`, {
92
+ body: HttpBody.unsafeJson({
93
+ client_id: params.clientId,
94
+ client_secret: params.clientSecret,
95
+ discovery_endpoint: params.discoveryEndpoint,
96
+ redirect_to: params.redirectTo,
97
+ meta: params.meta,
98
+ use_shared_credentials: params.useSharedCredentials,
99
+ }),
100
+ })
101
+ .pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(AddOAuthClientResponse)));
102
+ });
87
103
  // Due to the long prompt text, we use modifiers to manually create the prompt so we can
88
104
  // change it after submission.
89
105
  export const promptForRedirectURI = Effect.fn(function* (existingValue) {
@@ -157,6 +173,30 @@ export const getClientNameAndProvider = Effect.fn(function* (providerType, opts)
157
173
  }
158
174
  return { provider, clientName };
159
175
  });
176
+ export const findClientByIdOrName = Effect.fn(function* (params) {
177
+ if (params.id && params.name) {
178
+ return yield* BadArgsError.make({
179
+ message: 'Cannot specify both --id and --name',
180
+ });
181
+ }
182
+ if (!params.id && !params.name) {
183
+ return yield* BadArgsError.make({
184
+ message: 'Must specify --id or --name',
185
+ });
186
+ }
187
+ const auth = yield* getAppsAuth();
188
+ const clients = auth.oauth_clients ?? [];
189
+ const client = params.id
190
+ ? clients.find((entry) => entry.id === params.id)
191
+ : clients.find((entry) => entry.client_name === params.name);
192
+ if (!client) {
193
+ const lookup = params.id ? `id ${params.id}` : `name ${params.name}`;
194
+ return yield* BadArgsError.make({
195
+ message: `OAuth client not found: ${lookup}`,
196
+ });
197
+ }
198
+ return { auth, client };
199
+ });
160
200
  export const removeAuthorizedOrigin = Effect.fn(function* (originId) {
161
201
  const http = (yield* InstantHttpAuthed).pipe(withCommand('auth origin delete'));
162
202
  const { appId } = yield* CurrentApp;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpBody, HttpClientResponse } from '@effect/platform';\nimport { Effect, Schema } from 'effect';\nimport { CurrentApp } from '../context/currentApp.ts';\nimport { InstantHttpAuthed, withCommand } from './http.ts';\nimport chalk from 'chalk';\nimport {\n optOrPrompt,\n runUIEffect,\n stripFirstBlankLine,\n validateRequired,\n} from './ui.ts';\nimport { UI } from '../ui/index.ts';\nimport { BadArgsError } from '../errors.ts';\nimport { link } from '../logging.ts';\nimport type { ClientTypeSchema } from '../commands/auth/client/add.ts';\n\nexport const AuthorizedOriginService = Schema.Literal(\n 'generic',\n 'vercel',\n 'netlify',\n 'custom-scheme',\n);\n\nexport const AuthorizedOrigin = Schema.Struct({\n id: Schema.String,\n service: AuthorizedOriginService,\n params: Schema.Array(Schema.String).pipe(Schema.mutable),\n});\n\nexport const OAuthServiceProvider = Schema.Struct({\n id: Schema.String,\n provider_name: Schema.String,\n});\n\nconst NullableString = Schema.Union(Schema.String, Schema.Null).pipe(\n Schema.optional,\n);\n\nconst NullableBoolean = Schema.Union(Schema.Boolean, Schema.Null).pipe(\n Schema.optional,\n);\n\nexport const OAuthClient = Schema.Struct({\n id: Schema.String,\n client_name: Schema.String,\n client_id: NullableString,\n provider_id: Schema.String,\n authorization_endpoint: NullableString,\n token_endpoint: NullableString,\n discovery_endpoint: NullableString,\n redirect_to: NullableString,\n meta: Schema.Any.pipe(Schema.optional),\n use_shared_credentials: NullableBoolean,\n});\n\nexport type OAuthClient = Schema.Schema.Type<typeof OAuthClient>;\n\nexport const AddOAuthProviderResponse = Schema.Struct({\n provider: OAuthServiceProvider,\n});\n\nexport const AddOAuthClientResponse = Schema.Struct({\n client: OAuthClient,\n});\n\nexport const AuthorizedOriginResponse = Schema.Struct({\n origin: AuthorizedOrigin,\n});\n\nconst NullableArray = <A, I, R>(schema: Schema.Schema<A, I, R>) =>\n Schema.Union(Schema.Array(schema).pipe(Schema.mutable), Schema.Null).pipe(\n Schema.optional,\n );\n\nexport const AppsAuthResponse = Schema.Struct({\n authorized_redirect_origins: NullableArray(AuthorizedOrigin),\n oauth_service_providers: NullableArray(OAuthServiceProvider),\n oauth_clients: NullableArray(OAuthClient),\n});\n\nexport const getAppsAuth = Effect.fn(function* () {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = (yield* CurrentApp).appId;\n\n return yield* http\n .get(`/dash/apps/${targetAppId}/auth`)\n .pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(AppsAuthResponse)));\n});\n\nexport const addOAuthProvider = Effect.fn(function* (params: {\n appId?: string;\n providerName: string;\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = params.appId ?? (yield* CurrentApp).appId;\n\n return yield* http\n .post(`/dash/apps/${targetAppId}/oauth_service_providers`, {\n body: HttpBody.unsafeJson({\n provider_name: params.providerName,\n }),\n })\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AddOAuthProviderResponse),\n ),\n );\n});\n\nexport const addOAuthClient = Effect.fn(function* (params: {\n appId?: string;\n providerId: string;\n clientName: string;\n clientId?: string;\n clientSecret?: string;\n authorizationEndpoint?: string;\n tokenEndpoint?: string;\n discoveryEndpoint?: string;\n redirectTo?: string;\n meta?: unknown;\n useSharedCredentials?: boolean;\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = params.appId ?? (yield* CurrentApp).appId;\n\n return yield* http\n .post(`/dash/apps/${targetAppId}/oauth_clients`, {\n body: HttpBody.unsafeJson({\n provider_id: params.providerId,\n client_name: params.clientName,\n client_id: params.clientId,\n client_secret: params.clientSecret,\n authorization_endpoint: params.authorizationEndpoint,\n token_endpoint: params.tokenEndpoint,\n discovery_endpoint: params.discoveryEndpoint,\n redirect_to: params.redirectTo,\n meta: params.meta,\n use_shared_credentials: params.useSharedCredentials,\n }),\n })\n .pipe(\n Effect.flatMap(HttpClientResponse.schemaBodyJson(AddOAuthClientResponse)),\n );\n});\n\n// Due to the long prompt text, we use modifiers to manually create the prompt so we can\n// change it after submission.\nexport const promptForRedirectURI = Effect.fn(function* (\n existingValue?: string,\n) {\n if (existingValue) return existingValue;\n\n const result = yield* runUIEffect(\n new UI.TextInput({\n prompt: '',\n placeholder: 'https://yoursite.com/oauth/callback',\n modifyOutput: UI.modifiers.piped([\n (output, status) => {\n if (status === 'idle') {\n return (\n `\\nCustom redirect URL (optional):\n${chalk.dim('With a custom redirect URL, users will see \"Redirecting to yoursite.com...\" for a more branded experience.')}\n${chalk.dim(`Your URL must forward to ${link('https://api.instantdb.com/runtime/oauth/callback')} with all query parameters preserved.`)}\\n\\n` +\n stripFirstBlankLine(output)\n );\n }\n return `\\nCustom redirect URL (optional):\\n${stripFirstBlankLine(output)}`;\n },\n UI.modifiers.dimOnComplete,\n ]),\n }),\n ).pipe(\n Effect.catchTag('UIError', (e) =>\n BadArgsError.make({\n message: `UI error for redirect URI: ${e.message}`,\n }),\n ),\n );\n\n return result === '' ? undefined : result;\n});\n\nexport const getOrCreateProvider = Effect.fn(function* (\n type: typeof ClientTypeSchema.Type,\n) {\n const auth = yield* getAppsAuth();\n const provider = auth.oauth_service_providers?.find(\n (entry) => entry.provider_name === type,\n );\n\n if (provider) {\n return { auth, provider };\n }\n\n const created = yield* addOAuthProvider({ providerName: type });\n return { auth, provider: created.provider };\n});\n\n// Returns prefix if unused; otherwise appends integers starting at 2.\n// e.g. findName('google', new Set(['google', 'google2'])) returns 'google3'.\nexport const findName = (prefix: string, used: Set<string>) => {\n if (!used.has(prefix)) {\n return prefix;\n }\n\n for (let i = 2; ; i++) {\n const candidate = `${prefix}${i}`;\n if (!used.has(candidate)) {\n return candidate;\n }\n }\n};\n\nexport const getClientNameAndProvider = Effect.fn(function* (\n providerType: typeof ClientTypeSchema.Type,\n opts: Record<string, unknown>,\n) {\n const { auth, provider } = yield* getOrCreateProvider(providerType);\n const usedClientNames = new Set(\n (auth.oauth_clients ?? []).map((client) => client.client_name),\n );\n const suggestedClientName = findName(providerType, usedClientNames);\n\n const clientName = yield* optOrPrompt(opts.name, {\n simpleName: '--name',\n required: true,\n skipIf: false,\n prompt: {\n prompt: 'Client Name:',\n defaultValue: suggestedClientName,\n placeholder: suggestedClientName,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n });\n\n if (usedClientNames.has(clientName || '')) {\n return yield* BadArgsError.make({\n message: `The unique name '${clientName}' is already in use.`,\n });\n }\n return { provider, clientName };\n});\n\nexport const removeAuthorizedOrigin = Effect.fn(function* (originId: string) {\n const http = (yield* InstantHttpAuthed).pipe(\n withCommand('auth origin delete'),\n );\n const { appId } = yield* CurrentApp;\n\n return yield* http\n .del(`/dash/apps/${appId}/authorized_redirect_origins/${originId}`)\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AuthorizedOriginResponse),\n ),\n );\n});\n\nexport const addAuthorizedOrigin = Effect.fn(function* (params: {\n service: Schema.Schema.Type<typeof AuthorizedOriginService>;\n params: string[];\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth origin add'));\n const { appId } = yield* CurrentApp;\n\n return yield* http\n .post(`/dash/apps/${appId}/authorized_redirect_origins`, {\n body: HttpBody.unsafeJson({\n service: params.service,\n params: params.params,\n }),\n })\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AuthorizedOriginResponse),\n ),\n );\n});\n"]}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/lib/oauth.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpBody, HttpClientResponse } from '@effect/platform';\nimport { Effect, Schema } from 'effect';\nimport { CurrentApp } from '../context/currentApp.ts';\nimport { InstantHttpAuthed, withCommand } from './http.ts';\nimport chalk from 'chalk';\nimport {\n optOrPrompt,\n runUIEffect,\n stripFirstBlankLine,\n validateRequired,\n} from './ui.ts';\nimport { UI } from '../ui/index.ts';\nimport { BadArgsError } from '../errors.ts';\nimport { link } from '../logging.ts';\nimport type { ClientTypeSchema } from '../commands/auth/client/add.ts';\n\nexport const AuthorizedOriginService = Schema.Literal(\n 'generic',\n 'vercel',\n 'netlify',\n 'custom-scheme',\n);\n\nexport const AuthorizedOrigin = Schema.Struct({\n id: Schema.String,\n service: AuthorizedOriginService,\n params: Schema.Array(Schema.String).pipe(Schema.mutable),\n});\n\nexport const OAuthServiceProvider = Schema.Struct({\n id: Schema.String,\n provider_name: Schema.String,\n});\n\nconst NullableString = Schema.Union(Schema.String, Schema.Null).pipe(\n Schema.optional,\n);\n\nconst NullableBoolean = Schema.Union(Schema.Boolean, Schema.Null).pipe(\n Schema.optional,\n);\n\nexport const OAuthClient = Schema.Struct({\n id: Schema.String,\n client_name: Schema.String,\n client_id: NullableString,\n provider_id: Schema.String,\n authorization_endpoint: NullableString,\n token_endpoint: NullableString,\n discovery_endpoint: NullableString,\n redirect_to: NullableString,\n meta: Schema.Any.pipe(Schema.optional),\n use_shared_credentials: NullableBoolean,\n});\n\nexport type OAuthClient = Schema.Schema.Type<typeof OAuthClient>;\n\nexport const AddOAuthProviderResponse = Schema.Struct({\n provider: OAuthServiceProvider,\n});\n\nexport const AddOAuthClientResponse = Schema.Struct({\n client: OAuthClient,\n});\n\nexport const AuthorizedOriginResponse = Schema.Struct({\n origin: AuthorizedOrigin,\n});\n\nconst NullableArray = <A, I, R>(schema: Schema.Schema<A, I, R>) =>\n Schema.Union(Schema.Array(schema).pipe(Schema.mutable), Schema.Null).pipe(\n Schema.optional,\n );\n\nexport const AppsAuthResponse = Schema.Struct({\n authorized_redirect_origins: NullableArray(AuthorizedOrigin),\n oauth_service_providers: NullableArray(OAuthServiceProvider),\n oauth_clients: NullableArray(OAuthClient),\n});\n\nexport const getAppsAuth = Effect.fn(function* () {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = (yield* CurrentApp).appId;\n\n return yield* http\n .get(`/dash/apps/${targetAppId}/auth`)\n .pipe(Effect.flatMap(HttpClientResponse.schemaBodyJson(AppsAuthResponse)));\n});\n\nexport const addOAuthProvider = Effect.fn(function* (params: {\n appId?: string;\n providerName: string;\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = params.appId ?? (yield* CurrentApp).appId;\n\n return yield* http\n .post(`/dash/apps/${targetAppId}/oauth_service_providers`, {\n body: HttpBody.unsafeJson({\n provider_name: params.providerName,\n }),\n })\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AddOAuthProviderResponse),\n ),\n );\n});\n\nexport const addOAuthClient = Effect.fn(function* (params: {\n appId?: string;\n providerId: string;\n clientName: string;\n clientId?: string;\n clientSecret?: string;\n authorizationEndpoint?: string;\n tokenEndpoint?: string;\n discoveryEndpoint?: string;\n redirectTo?: string;\n meta?: unknown;\n useSharedCredentials?: boolean;\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = params.appId ?? (yield* CurrentApp).appId;\n\n return yield* http\n .post(`/dash/apps/${targetAppId}/oauth_clients`, {\n body: HttpBody.unsafeJson({\n provider_id: params.providerId,\n client_name: params.clientName,\n client_id: params.clientId,\n client_secret: params.clientSecret,\n authorization_endpoint: params.authorizationEndpoint,\n token_endpoint: params.tokenEndpoint,\n discovery_endpoint: params.discoveryEndpoint,\n redirect_to: params.redirectTo,\n meta: params.meta,\n use_shared_credentials: params.useSharedCredentials,\n }),\n })\n .pipe(\n Effect.flatMap(HttpClientResponse.schemaBodyJson(AddOAuthClientResponse)),\n );\n});\n\nexport const updateOAuthClient = Effect.fn(function* (params: {\n appId?: string;\n oauthClientId: string;\n clientId?: string;\n clientSecret?: string;\n discoveryEndpoint?: string;\n redirectTo?: string | null;\n meta?: unknown;\n useSharedCredentials?: boolean;\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth'));\n const targetAppId = params.appId ?? (yield* CurrentApp).appId;\n\n return yield* http\n .post(`/dash/apps/${targetAppId}/oauth_clients/${params.oauthClientId}`, {\n body: HttpBody.unsafeJson({\n client_id: params.clientId,\n client_secret: params.clientSecret,\n discovery_endpoint: params.discoveryEndpoint,\n redirect_to: params.redirectTo,\n meta: params.meta,\n use_shared_credentials: params.useSharedCredentials,\n }),\n })\n .pipe(\n Effect.flatMap(HttpClientResponse.schemaBodyJson(AddOAuthClientResponse)),\n );\n});\n\n// Due to the long prompt text, we use modifiers to manually create the prompt so we can\n// change it after submission.\nexport const promptForRedirectURI = Effect.fn(function* (\n existingValue?: string,\n) {\n if (existingValue) return existingValue;\n\n const result = yield* runUIEffect(\n new UI.TextInput({\n prompt: '',\n placeholder: 'https://yoursite.com/oauth/callback',\n modifyOutput: UI.modifiers.piped([\n (output, status) => {\n if (status === 'idle') {\n return (\n `\\nCustom redirect URL (optional):\n${chalk.dim('With a custom redirect URL, users will see \"Redirecting to yoursite.com...\" for a more branded experience.')}\n${chalk.dim(`Your URL must forward to ${link('https://api.instantdb.com/runtime/oauth/callback')} with all query parameters preserved.`)}\\n\\n` +\n stripFirstBlankLine(output)\n );\n }\n return `\\nCustom redirect URL (optional):\\n${stripFirstBlankLine(output)}`;\n },\n UI.modifiers.dimOnComplete,\n ]),\n }),\n ).pipe(\n Effect.catchTag('UIError', (e) =>\n BadArgsError.make({\n message: `UI error for redirect URI: ${e.message}`,\n }),\n ),\n );\n\n return result === '' ? undefined : result;\n});\n\nexport const getOrCreateProvider = Effect.fn(function* (\n type: typeof ClientTypeSchema.Type,\n) {\n const auth = yield* getAppsAuth();\n const provider = auth.oauth_service_providers?.find(\n (entry) => entry.provider_name === type,\n );\n\n if (provider) {\n return { auth, provider };\n }\n\n const created = yield* addOAuthProvider({ providerName: type });\n return { auth, provider: created.provider };\n});\n\n// Returns prefix if unused; otherwise appends integers starting at 2.\n// e.g. findName('google', new Set(['google', 'google2'])) returns 'google3'.\nexport const findName = (prefix: string, used: Set<string>) => {\n if (!used.has(prefix)) {\n return prefix;\n }\n\n for (let i = 2; ; i++) {\n const candidate = `${prefix}${i}`;\n if (!used.has(candidate)) {\n return candidate;\n }\n }\n};\n\nexport const getClientNameAndProvider = Effect.fn(function* (\n providerType: typeof ClientTypeSchema.Type,\n opts: Record<string, unknown>,\n) {\n const { auth, provider } = yield* getOrCreateProvider(providerType);\n const usedClientNames = new Set(\n (auth.oauth_clients ?? []).map((client) => client.client_name),\n );\n const suggestedClientName = findName(providerType, usedClientNames);\n\n const clientName = yield* optOrPrompt(opts.name, {\n simpleName: '--name',\n required: true,\n skipIf: false,\n prompt: {\n prompt: 'Client Name:',\n defaultValue: suggestedClientName,\n placeholder: suggestedClientName,\n validate: validateRequired,\n modifyOutput: UI.modifiers.piped([\n UI.modifiers.topPadding,\n UI.modifiers.dimOnComplete,\n ]),\n },\n });\n\n if (usedClientNames.has(clientName || '')) {\n return yield* BadArgsError.make({\n message: `The unique name '${clientName}' is already in use.`,\n });\n }\n return { provider, clientName };\n});\n\nexport const findClientByIdOrName = Effect.fn(function* (params: {\n id?: string;\n name?: string;\n}) {\n if (params.id && params.name) {\n return yield* BadArgsError.make({\n message: 'Cannot specify both --id and --name',\n });\n }\n if (!params.id && !params.name) {\n return yield* BadArgsError.make({\n message: 'Must specify --id or --name',\n });\n }\n\n const auth = yield* getAppsAuth();\n const clients = auth.oauth_clients ?? [];\n const client = params.id\n ? clients.find((entry) => entry.id === params.id)\n : clients.find((entry) => entry.client_name === params.name);\n\n if (!client) {\n const lookup = params.id ? `id ${params.id}` : `name ${params.name}`;\n return yield* BadArgsError.make({\n message: `OAuth client not found: ${lookup}`,\n });\n }\n\n return { auth, client };\n});\n\nexport const removeAuthorizedOrigin = Effect.fn(function* (originId: string) {\n const http = (yield* InstantHttpAuthed).pipe(\n withCommand('auth origin delete'),\n );\n const { appId } = yield* CurrentApp;\n\n return yield* http\n .del(`/dash/apps/${appId}/authorized_redirect_origins/${originId}`)\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AuthorizedOriginResponse),\n ),\n );\n});\n\nexport const addAuthorizedOrigin = Effect.fn(function* (params: {\n service: Schema.Schema.Type<typeof AuthorizedOriginService>;\n params: string[];\n}) {\n const http = (yield* InstantHttpAuthed).pipe(withCommand('auth origin add'));\n const { appId } = yield* CurrentApp;\n\n return yield* http\n .post(`/dash/apps/${appId}/authorized_redirect_origins`, {\n body: HttpBody.unsafeJson({\n service: params.service,\n params: params.params,\n }),\n })\n .pipe(\n Effect.flatMap(\n HttpClientResponse.schemaBodyJson(AuthorizedOriginResponse),\n ),\n );\n});\n"]}