@getbrevo/cli 0.0.1-alpha.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.
- package/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/README.md +182 -0
- package/dist/api/client.d.ts +23 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +186 -0
- package/dist/api/client.js.map +1 -0
- package/dist/bin/index.d.ts +3 -0
- package/dist/bin/index.d.ts.map +1 -0
- package/dist/bin/index.js +179 -0
- package/dist/bin/index.js.map +1 -0
- package/dist/commands/app/create.d.ts +7 -0
- package/dist/commands/app/create.d.ts.map +1 -0
- package/dist/commands/app/create.js +261 -0
- package/dist/commands/app/create.js.map +1 -0
- package/dist/commands/app/credentials.d.ts +6 -0
- package/dist/commands/app/credentials.d.ts.map +1 -0
- package/dist/commands/app/credentials.js +106 -0
- package/dist/commands/app/credentials.js.map +1 -0
- package/dist/commands/app/delete.d.ts +6 -0
- package/dist/commands/app/delete.d.ts.map +1 -0
- package/dist/commands/app/delete.js +146 -0
- package/dist/commands/app/delete.js.map +1 -0
- package/dist/commands/app/list.d.ts +4 -0
- package/dist/commands/app/list.d.ts.map +1 -0
- package/dist/commands/app/list.js +46 -0
- package/dist/commands/app/list.js.map +1 -0
- package/dist/commands/app/scaffold.d.ts +5 -0
- package/dist/commands/app/scaffold.d.ts.map +1 -0
- package/dist/commands/app/scaffold.js +199 -0
- package/dist/commands/app/scaffold.js.map +1 -0
- package/dist/commands/app/start.d.ts +5 -0
- package/dist/commands/app/start.d.ts.map +1 -0
- package/dist/commands/app/start.js +138 -0
- package/dist/commands/app/start.js.map +1 -0
- package/dist/commands/app/test.d.ts +6 -0
- package/dist/commands/app/test.d.ts.map +1 -0
- package/dist/commands/app/test.js +495 -0
- package/dist/commands/app/test.js.map +1 -0
- package/dist/commands/app/update.d.ts +2 -0
- package/dist/commands/app/update.d.ts.map +1 -0
- package/dist/commands/app/update.js +324 -0
- package/dist/commands/app/update.js.map +1 -0
- package/dist/commands/definitions.d.ts +4 -0
- package/dist/commands/definitions.d.ts.map +1 -0
- package/dist/commands/definitions.js +197 -0
- package/dist/commands/definitions.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +90 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +6 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +219 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +5 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +54 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/whoami.d.ts +4 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +74 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/container.d.ts +7 -0
- package/dist/container.d.ts.map +1 -0
- package/dist/container.js +28 -0
- package/dist/container.js.map +1 -0
- package/dist/lang/en.d.ts +110 -0
- package/dist/lang/en.d.ts.map +1 -0
- package/dist/lang/en.js +133 -0
- package/dist/lang/en.js.map +1 -0
- package/dist/lib/abort.d.ts +3 -0
- package/dist/lib/abort.d.ts.map +1 -0
- package/dist/lib/abort.js +30 -0
- package/dist/lib/abort.js.map +1 -0
- package/dist/lib/auth-guard.d.ts +3 -0
- package/dist/lib/auth-guard.d.ts.map +1 -0
- package/dist/lib/auth-guard.js +25 -0
- package/dist/lib/auth-guard.js.map +1 -0
- package/dist/lib/browser.d.ts +2 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/browser.js +16 -0
- package/dist/lib/browser.js.map +1 -0
- package/dist/lib/command-handler.d.ts +10 -0
- package/dist/lib/command-handler.d.ts.map +1 -0
- package/dist/lib/command-handler.js +16 -0
- package/dist/lib/command-handler.js.map +1 -0
- package/dist/lib/command-registry.d.ts +28 -0
- package/dist/lib/command-registry.d.ts.map +1 -0
- package/dist/lib/command-registry.js +54 -0
- package/dist/lib/command-registry.js.map +1 -0
- package/dist/lib/config.d.ts +76 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +314 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/constants.d.ts +35 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/constants.js +97 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/errors.d.ts +30 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +66 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/exit-codes.d.ts +9 -0
- package/dist/lib/exit-codes.d.ts.map +1 -0
- package/dist/lib/exit-codes.js +12 -0
- package/dist/lib/exit-codes.js.map +1 -0
- package/dist/lib/hidden-input.d.ts +2 -0
- package/dist/lib/hidden-input.d.ts.map +1 -0
- package/dist/lib/hidden-input.js +78 -0
- package/dist/lib/hidden-input.js.map +1 -0
- package/dist/lib/json-output.d.ts +6 -0
- package/dist/lib/json-output.d.ts.map +1 -0
- package/dist/lib/json-output.js +11 -0
- package/dist/lib/json-output.js.map +1 -0
- package/dist/lib/logger.d.ts +11 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +87 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/port.d.ts +12 -0
- package/dist/lib/port.d.ts.map +1 -0
- package/dist/lib/port.js +79 -0
- package/dist/lib/port.js.map +1 -0
- package/dist/lib/ui.d.ts +14 -0
- package/dist/lib/ui.d.ts.map +1 -0
- package/dist/lib/ui.js +75 -0
- package/dist/lib/ui.js.map +1 -0
- package/dist/lib/validators.d.ts +32 -0
- package/dist/lib/validators.d.ts.map +1 -0
- package/dist/lib/validators.js +96 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/services/account.d.ts +8 -0
- package/dist/services/account.d.ts.map +1 -0
- package/dist/services/account.js +15 -0
- package/dist/services/account.js.map +1 -0
- package/dist/services/app.d.ts +35 -0
- package/dist/services/app.d.ts.map +1 -0
- package/dist/services/app.js +117 -0
- package/dist/services/app.js.map +1 -0
- package/dist/services/browser-auth.d.ts +15 -0
- package/dist/services/browser-auth.d.ts.map +1 -0
- package/dist/services/browser-auth.js +187 -0
- package/dist/services/browser-auth.js.map +1 -0
- package/dist/services/normalize-app-id.d.ts +12 -0
- package/dist/services/normalize-app-id.d.ts.map +1 -0
- package/dist/services/normalize-app-id.js +38 -0
- package/dist/services/normalize-app-id.js.map +1 -0
- package/dist/services/oauth-refresh.d.ts +14 -0
- package/dist/services/oauth-refresh.d.ts.map +1 -0
- package/dist/services/oauth-refresh.js +70 -0
- package/dist/services/oauth-refresh.js.map +1 -0
- package/dist/templates/files/AGENTS.md.tmpl +41 -0
- package/dist/templates/files/CLAUDE.md.tmpl +50 -0
- package/dist/templates/files/README.md.tmpl +77 -0
- package/dist/templates/files/app-config.json.tmpl +23 -0
- package/dist/templates/files/gitignore.tmpl +9 -0
- package/dist/templates/files/src/oauth/.env.example.tmpl +13 -0
- package/dist/templates/files/src/oauth/.env.local.tmpl +10 -0
- package/dist/templates/files/src/oauth/handler.js.tmpl +203 -0
- package/dist/templates/files/src/oauth/package.json.tmpl +15 -0
- package/dist/templates/files/src/oauth/server.js.tmpl +226 -0
- package/dist/templates/files/src/oauth/token-store.js.tmpl +39 -0
- package/dist/templates/index.d.ts +36 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +105 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -0
package/dist/lang/en.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.messages = void 0;
|
|
4
|
+
const constants_1 = require("../lib/constants");
|
|
5
|
+
exports.messages = {
|
|
6
|
+
// Auth
|
|
7
|
+
AUTH_WELCOME: 'Welcome to Brevo CLI',
|
|
8
|
+
AUTH_PROMPT_METHOD: 'How would you like to authenticate?',
|
|
9
|
+
AUTH_PROMPT_API_KEY: 'Paste your API key:',
|
|
10
|
+
AUTH_SUCCESS: (email) => `Authenticated as ${email}`,
|
|
11
|
+
AUTH_INVALID_KEY: 'Invalid API key. Please check and try again.',
|
|
12
|
+
AUTH_HINT: (keysUrl, docsUrl) => `\n To authenticate, you need a Brevo API key.\n Create one at: ${keysUrl}\n Docs: ${docsUrl}\n`,
|
|
13
|
+
AUTH_SAVED: (path) => `Credentials saved to ${path}`,
|
|
14
|
+
AUTH_NEXT: `Next: ${constants_1.CLI.APP_CREATE}`,
|
|
15
|
+
AUTH_CREATE_APP_PROMPT: 'Would you like to create an app?',
|
|
16
|
+
AUTH_NOT_LOGGED_IN: 'Not currently authenticated.',
|
|
17
|
+
AUTH_LOGGED_OUT: 'Credentials cleared.',
|
|
18
|
+
AUTH_LOGGED_OUT_WITH_APPS: (count) => `Credentials cleared, including cached credentials for ${count} app${count === 1 ? '' : 's'}.`,
|
|
19
|
+
AUTH_LOGOUT_APP_WARNING: 'You have cached app credentials (clientId/clientSecret) that cannot be recovered after logout.\n Run `brevo app credentials --reveal-secret` to view them before proceeding.',
|
|
20
|
+
AUTH_LOGOUT_CONFIRM: 'Proceed with logout?',
|
|
21
|
+
AUTH_EXPIRED: 'Your API key is invalid or expired.',
|
|
22
|
+
AUTH_EXPIRED_PROMPT: 'Enter a new API key:',
|
|
23
|
+
AUTH_GET_KEY_URL: 'Create an API key at: https://app.brevo.com/settings/keys/api',
|
|
24
|
+
AUTH_BROWSER_OPENING: 'Opening your browser to log you in...',
|
|
25
|
+
AUTH_BROWSER_FALLBACK_URL: (url) => `If your browser didn't open automatically, open this URL to log in:\n ${url}`,
|
|
26
|
+
AUTH_BROWSER_WAITING: 'Waiting for login to complete (Ctrl+C to cancel)...',
|
|
27
|
+
AUTH_BROWSER_TOKENS_RECEIVED: (path) => `Login complete. Credentials saved to ${path}. Verifying account...`,
|
|
28
|
+
AUTH_BROWSER_TIMEOUT: 'Login timed out before we received a response from the browser.\n If you were completing 2FA, close the browser tab and run `brevo login` again.\n For non-interactive use, set BREVO_API_KEY instead.',
|
|
29
|
+
AUTH_BROWSER_CANCELLED: 'Login cancelled.',
|
|
30
|
+
AUTH_BROWSER_BAD_PAYLOAD: 'Unexpected response from the login service. Please try again.',
|
|
31
|
+
AUTH_BROWSER_NON_INTERACTIVE: 'Browser login needs an interactive terminal. Set BREVO_API_KEY to authenticate non-interactively.',
|
|
32
|
+
// Whoami
|
|
33
|
+
WHOAMI_AUTHENTICATED: (email, company) => `Authenticated as ${email} (${company})`,
|
|
34
|
+
WHOAMI_NOT_AUTHENTICATED: `Not authenticated. Run: ${constants_1.CLI.LOGIN}`,
|
|
35
|
+
WHOAMI_CREDENTIAL_MISMATCH: (fields) => `Local credentials mismatch with API for: ${fields.join(', ')}. Run \`${constants_1.CLI.LOGIN}\` to re-authenticate.`,
|
|
36
|
+
// App create
|
|
37
|
+
APP_CREATE_NAME_PROMPT: 'App name:',
|
|
38
|
+
APP_CREATE_TYPE_PROMPT: 'Distribution type?',
|
|
39
|
+
APP_CREATE_SUCCESS: 'App created.',
|
|
40
|
+
APP_CREATE_SCAFFOLD_PROMPT: 'Generate starter code now?',
|
|
41
|
+
APP_CREATE_NAME_TAKEN: 'That name is already taken. Try a different name.',
|
|
42
|
+
APP_CREATE_REDIRECT_PROMPT: 'OAuth callback URL — where users are sent after authorizing your app:',
|
|
43
|
+
APP_CREATE_REDIRECT_ANOTHER: 'Add another redirect URL?',
|
|
44
|
+
APP_CREATE_REDIRECT_EMPTY: 'Redirect URL cannot be empty',
|
|
45
|
+
APP_CREATE_REDIRECT_INVALID: 'Invalid format. Must start with http:// or https://',
|
|
46
|
+
APP_CREATE_PORT_IN_USE: (port, available) => `Port ${port} is in use. Defaulting to port ${available}.`,
|
|
47
|
+
APP_CREATE_PORT_SCAN_FAILED: (port) => `Warning: Could not find a free port near ${port}. Defaulting to ${port} — it may conflict with a running process.`,
|
|
48
|
+
APP_CREATE_LIMIT_REACHED: 'You have reached the maximum number of OAuth apps allowed for your account. To make room, delete an existing app: brevo app delete',
|
|
49
|
+
APP_CREATE_PUBLIC_UNAVAILABLE: 'Public distribution is not yet available (coming soon). Use `--distribution private` for now.',
|
|
50
|
+
// App list
|
|
51
|
+
APP_LIST_EMPTY: `No apps found. Create one with: ${constants_1.CLI.APP_CREATE}`,
|
|
52
|
+
APP_LIST_HEADER: 'Your OAuth apps:',
|
|
53
|
+
// App credentials
|
|
54
|
+
APP_CREDENTIALS_REVEAL_CONFIRM: 'Are you sure you want to reveal the client secret?',
|
|
55
|
+
APP_CREDENTIALS_SELECT: 'Select an app:',
|
|
56
|
+
// App update
|
|
57
|
+
APP_UPDATE_INVALID_JSON: 'app-config.json contains invalid JSON. Please check the file and try again.',
|
|
58
|
+
APP_UPDATE_MISSING_APP_ID: 'app-config.json is missing "appId".',
|
|
59
|
+
APP_UPDATE_NO_REDIRECT_URLS: 'app-config.json has no redirect URLs configured.',
|
|
60
|
+
APP_UPDATE_INVALID_APP_ID: 'app-config.json has an invalid "appId". Expected a non-empty string.',
|
|
61
|
+
APP_UPDATE_INVALID_REDIRECT_URL: (url) => `Invalid redirect URL "${url}". Must be a valid http:// or https:// URL.`,
|
|
62
|
+
APP_UPDATE_INVALID_REDIRECT_PROTOCOL: (url) => `Invalid redirect URL "${url}". Must use http:// or https://.`,
|
|
63
|
+
APP_UPDATE_SUMMARY: 'Update summary:',
|
|
64
|
+
APP_UPDATE_CONFIRM: 'Proceed with update?',
|
|
65
|
+
APP_UPDATE_CANCELLED: 'Update cancelled.',
|
|
66
|
+
APP_UPDATE_SUCCESS: 'App updated.',
|
|
67
|
+
APP_UPDATE_NOTHING_TO_UPDATE: 'Nothing to update. Provide --app-id with --name or --redirect-url, or run from a scaffolded project directory.',
|
|
68
|
+
APP_UPDATE_NO_APP_RESOLVED: 'Cannot determine which app to update. Provide --app-id or run from a directory with app-config.json.',
|
|
69
|
+
APP_UPDATE_APP_ID_MISMATCH: (flagId, configId) => `--app-id ${flagId} does not match app-config.json (${configId}). Pass --name or --redirect-url to update app ${flagId}, or remove --app-id to update app ${configId}.`,
|
|
70
|
+
// App delete
|
|
71
|
+
APP_DELETE_CONFIRM: (name, id) => `Delete app "${name}" (${id})? This cannot be undone.`,
|
|
72
|
+
APP_DELETE_SUCCESS: (id) => `App ${id} deleted.`,
|
|
73
|
+
APP_DELETE_CANCELLED: 'Delete cancelled.',
|
|
74
|
+
APP_DELETE_FOLDER_CONFIRM: (dir) => `Delete the local project folder at ${dir}?`,
|
|
75
|
+
APP_DELETE_FOLDER_SUCCESS: (dir) => `Project folder deleted: ${dir}`,
|
|
76
|
+
APP_DELETE_FOLDER_FAILED: (dir) => `Could not delete folder ${dir}. Remove it manually.`,
|
|
77
|
+
// App scaffold
|
|
78
|
+
APP_SCAFFOLD_DIR_PROMPT: 'Output directory:',
|
|
79
|
+
APP_SCAFFOLD_DIR_EXISTS: 'Directory already exists. What would you like to do?',
|
|
80
|
+
APP_SCAFFOLD_ALREADY_IN_PROJECT: `Project already scaffolded in this directory (app-config.json found). Run from a different directory, or use \`${constants_1.CLI.APP_UPDATE}\` to push config changes.`,
|
|
81
|
+
APP_SCAFFOLD_SUCCESS: (count) => `Test app scaffolded (${count} files)`,
|
|
82
|
+
APP_SCAFFOLD_NEXT_STEPS_TITLE: 'Next steps',
|
|
83
|
+
APP_SCAFFOLD_NEXT_STEPS_LINES: (dir) => [
|
|
84
|
+
`1. cd ${dir}`,
|
|
85
|
+
`2. yarn --cwd src/oauth`,
|
|
86
|
+
` (or: npm --prefix src/oauth install)`,
|
|
87
|
+
`3. ${constants_1.CLI.APP_START('oauth')}`,
|
|
88
|
+
],
|
|
89
|
+
// App test
|
|
90
|
+
APP_TEST_MISSING_CREDENTIALS: 'Run `brevo app scaffold` to set up a project with credentials.',
|
|
91
|
+
APP_TEST_CODE_RECEIVED: 'Authorization code received. Exchanging for tokens...',
|
|
92
|
+
APP_TEST_COMPLETE: 'OAuth flow complete. Tokens are live above. Press Ctrl+C to stop.',
|
|
93
|
+
APP_TEST_PORT_IN_USE: (port) => `Port ${port} is in use.`,
|
|
94
|
+
APP_TEST_STARTING: (port) => `OAuth test server running on http://localhost:${port}`,
|
|
95
|
+
APP_TEST_REDIRECT_URI: (uri) => `Redirect URI: ${uri}`,
|
|
96
|
+
APP_TEST_BROWSER_OPEN: 'Opening browser for authorization...',
|
|
97
|
+
APP_TEST_WAITING: 'Waiting for OAuth callback...',
|
|
98
|
+
APP_TEST_ACCESS_TOKEN: (expiresIn) => `Access token received (expires in ${expiresIn}s)`,
|
|
99
|
+
APP_TEST_REFRESH_TOKEN_RECEIVED: 'Refresh token received',
|
|
100
|
+
APP_TEST_TOKENS_IN_BROWSER: (port) => `View tokens in your browser at http://localhost:${port}`,
|
|
101
|
+
APP_TEST_TOKEN_REFRESH_URL: (port) => `Token refresh: http://localhost:${port}/refresh`,
|
|
102
|
+
APP_TEST_TOKEN_REFRESHED: (expiresIn) => `Access token refreshed (expires in ${expiresIn}s)`,
|
|
103
|
+
// App start
|
|
104
|
+
APP_START_FEATURE_NOT_FOUND: (entryFile) => `Feature entry file not found.\n\n Expected: ${entryFile}\n Current directory: ${process.cwd()}\n\n Make sure you are inside your scaffolded project directory.\n Run \`cd <your-project-folder>\` and try again.`,
|
|
105
|
+
APP_START_NO_DEPS: (featureDir) => `Dependencies not installed. Run \`yarn --cwd ${featureDir}\` (or \`npm --prefix ${featureDir} install\`) first.`,
|
|
106
|
+
APP_START_STOPPED: 'Process stopped.',
|
|
107
|
+
APP_START_MISSING_FEATURE: (available) => `Missing feature name.\n\nAvailable features:\n${available}\n\nUsage: ${constants_1.CLI.APP_START()}`,
|
|
108
|
+
APP_START_UNKNOWN_FEATURE: (feature, available) => `Unknown feature "${feature}". Available features: ${available}`,
|
|
109
|
+
APP_START_PORT_IN_USE: (port) => `Port ${port} is already in use.\n\n Either stop the process using port ${port}, use a different port with \`--port <port>\`,\n or update your redirect URL with \`${constants_1.CLI.APP_UPDATE} --redirect-url http://localhost:<port>/auth/callback\`.`,
|
|
110
|
+
APP_START_CUSTOM_PORT_IN_USE: (port) => `Port ${port} is already in use.\n\n Stop the process using port ${port}, or pick another port with \`--port <port>\`\n and update your redirect URL with \`${constants_1.CLI.APP_UPDATE} --redirect-url http://localhost:<port>/auth/callback\`.`,
|
|
111
|
+
APP_START_EXITED: (feature, code) => `${feature} exited with code ${code}`,
|
|
112
|
+
APP_START_FAILED: (feature, error) => `Failed to start ${feature}: ${error}`,
|
|
113
|
+
AUTH_LOGOUT_NON_INTERACTIVE: 'Cannot prompt for confirmation in non-interactive mode. Use --force to skip.',
|
|
114
|
+
// Errors
|
|
115
|
+
ERR_NETWORK: 'Cannot reach Brevo API.',
|
|
116
|
+
ERR_RATE_LIMITED: (retryAfter) => `Rate limited. Retrying in ${retryAfter} seconds...`,
|
|
117
|
+
ERR_REGISTRY: 'Operation failed due to a registry error. Please try again.',
|
|
118
|
+
ERR_AUTH_GATEWAY: 'API is behind an authentication gateway (e.g. Cloudflare Access). Sign in via your browser first, or check your API base URL.',
|
|
119
|
+
// Security warnings
|
|
120
|
+
TLS_VERIFICATION_DISABLED: 'TLS certificate verification is disabled (NODE_TLS_REJECT_UNAUTHORIZED=0). This is insecure — API keys and tokens can be intercepted on the network.',
|
|
121
|
+
// Init
|
|
122
|
+
INIT_WELCOME: 'Brevo CLI — Quick Setup',
|
|
123
|
+
INIT_ALREADY_LOGGED_IN: 'Already authenticated.',
|
|
124
|
+
INIT_STEP_LOGIN: ' Step 1: Authenticate with your Brevo account',
|
|
125
|
+
INIT_STEP_CREATE: ' Step 2: Create your first OAuth app',
|
|
126
|
+
INIT_APPS_EXIST: (count) => `You have ${count} app${count === 1 ? '' : 's'} already.`,
|
|
127
|
+
INIT_APP_LINKED: (name) => `App "${name}" is linked to this project (app-config.json).`,
|
|
128
|
+
INIT_APP_ACTION: 'What would you like to do?',
|
|
129
|
+
INIT_DONE: `All set! Run \`${constants_1.CLI.APP_START('oauth')}\` to test your OAuth flow, or \`${constants_1.CLI.HELP}\` to see all commands.`,
|
|
130
|
+
// General
|
|
131
|
+
ABORTED: 'Aborted.',
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=en.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/lang/en.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../src/lib/abort.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAclD;AAED,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAS1E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAbortError = isAbortError;
|
|
4
|
+
exports.withAbortHandler = withAbortHandler;
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
function isAbortError(err) {
|
|
7
|
+
if (!(err instanceof Error))
|
|
8
|
+
return false;
|
|
9
|
+
// Check error name/constructor first (more reliable than message strings)
|
|
10
|
+
const name = err.name?.toLowerCase() ?? '';
|
|
11
|
+
if (name === 'exitprompterror')
|
|
12
|
+
return true;
|
|
13
|
+
const msg = err.message.toLowerCase();
|
|
14
|
+
return (msg.includes('readline was closed') ||
|
|
15
|
+
msg.includes('user force closed') ||
|
|
16
|
+
msg.includes('exitprompterror') ||
|
|
17
|
+
msg.includes('prompt was closed'));
|
|
18
|
+
}
|
|
19
|
+
async function withAbortHandler(fn) {
|
|
20
|
+
try {
|
|
21
|
+
return await fn();
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
if (isAbortError(err)) {
|
|
25
|
+
throw new errors_1.AbortError();
|
|
26
|
+
}
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=abort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../src/lib/abort.ts"],"names":[],"mappings":";;AAEA,oCAcC;AAED,4CASC;AA3BD,qCAAsC;AAEtC,SAAgB,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,0EAA0E;IAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAE5C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IACtC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACnC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC/B,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAClC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,gBAAgB,CAAI,EAAoB;IAC5D,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAU,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-guard.d.ts","sourceRoot":"","sources":["../../src/lib/auth-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBvD"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.installAuthGuard = installAuthGuard;
|
|
4
|
+
const config_1 = require("./config");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
const UNAUTHENTICATED_COMMANDS = ['login', 'help', 'init', 'whoami', 'logout'];
|
|
8
|
+
function installAuthGuard(program) {
|
|
9
|
+
program.hook('preAction', (thisCommand, actionCommand) => {
|
|
10
|
+
const commandName = actionCommand.name();
|
|
11
|
+
// Allow login, help, and version through without auth
|
|
12
|
+
if (UNAUTHENTICATED_COMMANDS.includes(commandName) ||
|
|
13
|
+
process.argv.includes('--help') ||
|
|
14
|
+
process.argv.includes('-h') ||
|
|
15
|
+
process.argv.includes('--version') ||
|
|
16
|
+
process.argv.includes('-V') ||
|
|
17
|
+
process.argv.length <= 2) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (!(0, config_1.isAuthenticated)()) {
|
|
21
|
+
throw new errors_1.CliError(`Not authenticated. Run: ${constants_1.CLI.LOGIN}`);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=auth-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-guard.js","sourceRoot":"","sources":["../../src/lib/auth-guard.ts"],"names":[],"mappings":";;AAOA,4CAoBC;AA1BD,qCAA2C;AAC3C,2CAAkC;AAClC,qCAAoC;AAEpC,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/E,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAEzC,sDAAsD;QACtD,IACE,wBAAwB,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EACxB,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAA,wBAAe,GAAE,EAAE,CAAC;YACvB,MAAM,IAAI,iBAAQ,CAAC,2BAA2B,eAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.openBrowser = openBrowser;
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
function openBrowser(url) {
|
|
6
|
+
if (process.platform === 'darwin') {
|
|
7
|
+
(0, child_process_1.execFile)('open', [url]);
|
|
8
|
+
}
|
|
9
|
+
else if (process.platform === 'win32') {
|
|
10
|
+
(0, child_process_1.execFile)('cmd', ['/c', 'start', '', url]);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
(0, child_process_1.execFile)('xdg-open', [url]);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/lib/browser.ts"],"names":[],"mappings":";;AAEA,kCAQC;AAVD,iDAAyC;AAEzC,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAA,wBAAQ,EAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,IAAA,wBAAQ,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;SAAM,CAAC;QACN,IAAA,wBAAQ,EAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wraps a command handler with abort handling (Ctrl+C during inquirer prompts).
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* export const myCommand = withCommandHandler(async (opts) => {
|
|
6
|
+
* // command logic
|
|
7
|
+
* });
|
|
8
|
+
*/
|
|
9
|
+
export declare function withCommandHandler<T extends Record<string, unknown>>(fn: (opts: T) => Promise<void>): (opts: T) => Promise<void>;
|
|
10
|
+
//# sourceMappingURL=command-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAC7B,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAE5B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.withCommandHandler = withCommandHandler;
|
|
4
|
+
const abort_1 = require("./abort");
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a command handler with abort handling (Ctrl+C during inquirer prompts).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* export const myCommand = withCommandHandler(async (opts) => {
|
|
10
|
+
* // command logic
|
|
11
|
+
* });
|
|
12
|
+
*/
|
|
13
|
+
function withCommandHandler(fn) {
|
|
14
|
+
return (opts) => (0, abort_1.withAbortHandler)(() => fn(opts));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=command-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handler.js","sourceRoot":"","sources":["../../src/lib/command-handler.ts"],"names":[],"mappings":";;AAUA,gDAIC;AAdD,mCAA2C;AAE3C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,EAA8B;IAE9B,OAAO,CAAC,IAAO,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface CommandOption {
|
|
3
|
+
flags: string;
|
|
4
|
+
description: string;
|
|
5
|
+
parser?: (value: string) => unknown;
|
|
6
|
+
}
|
|
7
|
+
export interface CommandArgument {
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CommandDefinition {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
arguments?: CommandArgument[];
|
|
15
|
+
options?: CommandOption[];
|
|
16
|
+
examples?: string[];
|
|
17
|
+
handler: (opts: Record<string, unknown>, ...args: unknown[]) => void | Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export interface SubcommandGroupDefinition {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
commands: CommandDefinition[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Register all commands and subcommand groups onto the program.
|
|
26
|
+
*/
|
|
27
|
+
export declare function registerAll(program: Command, commands: CommandDefinition[], groups: SubcommandGroupDefinition[]): void;
|
|
28
|
+
//# sourceMappingURL=command-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAiDD;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,EAAE,yBAAyB,EAAE,GAClC,IAAI,CAON"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerAll = registerAll;
|
|
4
|
+
/**
|
|
5
|
+
* Register a flat command on the program.
|
|
6
|
+
*/
|
|
7
|
+
function registerCommand(parent, def) {
|
|
8
|
+
const cmd = parent.command(def.name).description(def.description);
|
|
9
|
+
if (def.arguments) {
|
|
10
|
+
for (const arg of def.arguments) {
|
|
11
|
+
cmd.argument(arg.name, arg.description);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (def.options) {
|
|
15
|
+
for (const opt of def.options) {
|
|
16
|
+
if (opt.parser) {
|
|
17
|
+
cmd.option(opt.flags, opt.description, opt.parser);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
cmd.option(opt.flags, opt.description);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (def.examples?.length) {
|
|
25
|
+
cmd.addHelpText('after', '\nExamples:\n' + def.examples.map((e) => ` $ ${e}`).join('\n') + '\n');
|
|
26
|
+
}
|
|
27
|
+
cmd.action((...actionArgs) => {
|
|
28
|
+
// Commander passes positional args first, then options object, then Command
|
|
29
|
+
const opts = actionArgs[actionArgs.length - 2];
|
|
30
|
+
const positionalArgs = actionArgs.slice(0, -2);
|
|
31
|
+
return def.handler(opts, ...positionalArgs);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Register a group of subcommands (e.g. `app create`, `app list`).
|
|
36
|
+
*/
|
|
37
|
+
function registerSubcommandGroup(parent, group) {
|
|
38
|
+
const groupCmd = parent.command(group.name).description(group.description);
|
|
39
|
+
for (const def of group.commands) {
|
|
40
|
+
registerCommand(groupCmd, def);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register all commands and subcommand groups onto the program.
|
|
45
|
+
*/
|
|
46
|
+
function registerAll(program, commands, groups) {
|
|
47
|
+
for (const cmd of commands) {
|
|
48
|
+
registerCommand(program, cmd);
|
|
49
|
+
}
|
|
50
|
+
for (const group of groups) {
|
|
51
|
+
registerSubcommandGroup(program, group);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":";;AA8EA,kCAWC;AA7DD;;GAEG;AACH,SAAS,eAAe,CAAC,MAAe,EAAE,GAAsB;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAElE,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAChC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,CAAC,WAAW,CACb,OAAO,EACP,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACxE,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,EAAE,EAAE;QAC3B,4EAA4E;QAC5E,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAA4B,CAAC;QAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAe,EAAE,KAAgC;IAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3E,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjC,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,OAAgB,EAChB,QAA6B,EAC7B,MAAmC;IAEnC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare function getCredentialsPath(): string;
|
|
2
|
+
export interface AppCredential {
|
|
3
|
+
clientId: string;
|
|
4
|
+
clientSecret: string;
|
|
5
|
+
}
|
|
6
|
+
export type AuthCred = {
|
|
7
|
+
kind: 'api-key';
|
|
8
|
+
apiKey: string;
|
|
9
|
+
} | {
|
|
10
|
+
kind: 'oauth';
|
|
11
|
+
accessToken: string;
|
|
12
|
+
refreshToken: string;
|
|
13
|
+
expiresAt: number;
|
|
14
|
+
tokenType: string;
|
|
15
|
+
scope?: string;
|
|
16
|
+
};
|
|
17
|
+
export declare function getApiKey(): string | undefined;
|
|
18
|
+
export declare function getAccessToken(): string | undefined;
|
|
19
|
+
export declare function getAuthCred(): AuthCred | undefined;
|
|
20
|
+
export declare function getEmail(): string | undefined;
|
|
21
|
+
export declare function getOrganizationId(): string | undefined;
|
|
22
|
+
export declare function getUserId(): number | undefined;
|
|
23
|
+
export declare function saveCredentials(apiKey: string, account: {
|
|
24
|
+
email: string;
|
|
25
|
+
organizationId: string;
|
|
26
|
+
userId: number;
|
|
27
|
+
}): void;
|
|
28
|
+
export interface OauthTokensToStore {
|
|
29
|
+
accessToken: string;
|
|
30
|
+
refreshToken: string;
|
|
31
|
+
expiresIn: number;
|
|
32
|
+
tokenType: string;
|
|
33
|
+
scope?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function saveOauthCredentials(tokens: OauthTokensToStore, account?: {
|
|
36
|
+
email: string;
|
|
37
|
+
organizationId: string;
|
|
38
|
+
userId: number;
|
|
39
|
+
}): void;
|
|
40
|
+
export declare function updateOauthTokens(tokens: OauthTokensToStore): void;
|
|
41
|
+
export declare function clearCredentials(): void;
|
|
42
|
+
export declare function deleteCredentialsFile(): void;
|
|
43
|
+
export declare function hasAppCredentials(): boolean;
|
|
44
|
+
export declare function countAppCredentials(): number;
|
|
45
|
+
export declare function isAuthenticated(): boolean;
|
|
46
|
+
export declare function saveAppCredentials(appId: string, cred: AppCredential): void;
|
|
47
|
+
export declare function getAppCredentials(appId: string): AppCredential | undefined;
|
|
48
|
+
export interface ProjectConfig {
|
|
49
|
+
appId: string;
|
|
50
|
+
appName: string;
|
|
51
|
+
createdAt?: string;
|
|
52
|
+
updatedAt?: string;
|
|
53
|
+
auth: {
|
|
54
|
+
type: string;
|
|
55
|
+
scopes: string[];
|
|
56
|
+
redirectUrls?: string[];
|
|
57
|
+
};
|
|
58
|
+
distribution: string;
|
|
59
|
+
permittedUrls: {
|
|
60
|
+
fetch: string[];
|
|
61
|
+
img: string[];
|
|
62
|
+
iframe: string[];
|
|
63
|
+
js: string[];
|
|
64
|
+
css: string[];
|
|
65
|
+
};
|
|
66
|
+
support: {
|
|
67
|
+
supportEmail: string;
|
|
68
|
+
documentationUrl: string;
|
|
69
|
+
supportUrl: string;
|
|
70
|
+
supportPhone: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export declare function readProjectConfig(): ProjectConfig | null;
|
|
74
|
+
export declare function hasLocalApp(): boolean;
|
|
75
|
+
export declare function writeProjectConfig(config: ProjectConfig): void;
|
|
76
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|