workos 0.7.3 → 0.8.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/README.md +353 -8
- package/dist/bin.js +938 -128
- package/dist/bin.js.map +1 -1
- package/dist/commands/api-key-mgmt.d.ts +16 -0
- package/dist/commands/api-key-mgmt.js +96 -0
- package/dist/commands/api-key-mgmt.js.map +1 -0
- package/dist/commands/audit-log.d.ts +26 -0
- package/dist/commands/audit-log.js +155 -0
- package/dist/commands/audit-log.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.js +54 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/connection.d.ts +13 -0
- package/dist/commands/connection.js +94 -0
- package/dist/commands/connection.js.map +1 -0
- package/dist/commands/debug-sso.d.ts +1 -0
- package/dist/commands/debug-sso.js +78 -0
- package/dist/commands/debug-sso.js.map +1 -0
- package/dist/commands/debug-sync.d.ts +1 -0
- package/dist/commands/debug-sync.js +102 -0
- package/dist/commands/debug-sync.js.map +1 -0
- package/dist/commands/directory.d.ts +27 -0
- package/dist/commands/directory.js +174 -0
- package/dist/commands/directory.js.map +1 -0
- package/dist/commands/env.js +41 -28
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/event.d.ts +9 -0
- package/dist/commands/event.js +43 -0
- package/dist/commands/event.js.map +1 -0
- package/dist/commands/feature-flag.d.ts +12 -0
- package/dist/commands/feature-flag.js +96 -0
- package/dist/commands/feature-flag.js.map +1 -0
- package/dist/commands/install-skill.js +3 -5
- package/dist/commands/install-skill.js.map +1 -1
- package/dist/commands/install.js +13 -20
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/invitation.d.ts +19 -0
- package/dist/commands/invitation.js +94 -0
- package/dist/commands/invitation.js.map +1 -0
- package/dist/commands/membership.d.ts +20 -0
- package/dist/commands/membership.js +129 -0
- package/dist/commands/membership.js.map +1 -0
- package/dist/commands/onboard-user.d.ts +7 -0
- package/dist/commands/onboard-user.js +61 -0
- package/dist/commands/onboard-user.js.map +1 -0
- package/dist/commands/org-domain.d.ts +4 -0
- package/dist/commands/org-domain.js +45 -0
- package/dist/commands/org-domain.js.map +1 -0
- package/dist/commands/organization.d.ts +1 -5
- package/dist/commands/organization.js +34 -73
- package/dist/commands/organization.js.map +1 -1
- package/dist/commands/permission.d.ts +20 -0
- package/dist/commands/permission.js +93 -0
- package/dist/commands/permission.js.map +1 -0
- package/dist/commands/portal.d.ts +7 -0
- package/dist/commands/portal.js +26 -0
- package/dist/commands/portal.js.map +1 -0
- package/dist/commands/role.d.ts +17 -0
- package/dist/commands/role.js +122 -0
- package/dist/commands/role.js.map +1 -0
- package/dist/commands/seed.d.ts +4 -0
- package/dist/commands/seed.js +238 -0
- package/dist/commands/seed.js.map +1 -0
- package/dist/commands/session.d.ts +8 -0
- package/dist/commands/session.js +63 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup-org.d.ts +6 -0
- package/dist/commands/setup-org.js +99 -0
- package/dist/commands/setup-org.js.map +1 -0
- package/dist/commands/user.js +35 -71
- package/dist/commands/user.js.map +1 -1
- package/dist/commands/vault.d.ts +24 -0
- package/dist/commands/vault.js +120 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/webhook.d.ts +3 -0
- package/dist/commands/webhook.js +73 -0
- package/dist/commands/webhook.js.map +1 -0
- package/dist/dashboard/components/DiffPanel.js.map +1 -1
- package/dist/dashboard/lib/logo-frames.js +1 -1
- package/dist/dashboard/lib/logo-frames.js.map +1 -1
- package/dist/doctor/checks/dashboard.js.map +1 -1
- package/dist/doctor/checks/environment.js.map +1 -1
- package/dist/integrations/go/index.js +1 -3
- package/dist/integrations/go/index.js.map +1 -1
- package/dist/lib/adapters/headless-adapter.d.ts +67 -0
- package/dist/lib/adapters/headless-adapter.js +263 -0
- package/dist/lib/adapters/headless-adapter.js.map +1 -0
- package/dist/lib/adapters/index.d.ts +1 -0
- package/dist/lib/adapters/index.js +1 -0
- package/dist/lib/adapters/index.js.map +1 -1
- package/dist/lib/agent-interface.d.ts +3 -11
- package/dist/lib/agent-interface.js +3 -19
- package/dist/lib/agent-interface.js.map +1 -1
- package/dist/lib/api-error-handler.d.ts +6 -0
- package/dist/lib/api-error-handler.js +58 -0
- package/dist/lib/api-error-handler.js.map +1 -0
- package/dist/lib/api-key.js +5 -1
- package/dist/lib/api-key.js.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/credential-proxy.js +0 -6
- package/dist/lib/credential-proxy.js.map +1 -1
- package/dist/lib/device-auth.js +1 -1
- package/dist/lib/device-auth.js.map +1 -1
- package/dist/lib/ensure-auth.js +25 -4
- package/dist/lib/ensure-auth.js.map +1 -1
- package/dist/lib/installer-core.d.ts +12 -12
- package/dist/lib/run-with-core.js +25 -4
- package/dist/lib/run-with-core.js.map +1 -1
- package/dist/lib/validation/validator.js +0 -1
- package/dist/lib/validation/validator.js.map +1 -1
- package/dist/lib/workos-client.d.ts +58 -0
- package/dist/lib/workos-client.js +137 -0
- package/dist/lib/workos-client.js.map +1 -0
- package/dist/run.d.ts +7 -0
- package/dist/run.js +5 -2
- package/dist/run.js.map +1 -1
- package/dist/smoke-test.ts +881 -0
- package/dist/steps/run-prettier.js +1 -1
- package/dist/steps/run-prettier.js.map +1 -1
- package/dist/utils/analytics.d.ts +1 -1
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/clack-utils.js +1 -1
- package/dist/utils/clack-utils.js.map +1 -1
- package/dist/utils/environment.js +8 -0
- package/dist/utils/environment.js.map +1 -1
- package/dist/utils/exit-codes.d.ts +22 -0
- package/dist/utils/exit-codes.js +30 -0
- package/dist/utils/exit-codes.js.map +1 -0
- package/dist/utils/help-json.d.ts +45 -0
- package/dist/utils/help-json.js +1161 -0
- package/dist/utils/help-json.js.map +1 -0
- package/dist/utils/ndjson.d.ts +16 -0
- package/dist/utils/ndjson.js +18 -0
- package/dist/utils/ndjson.js.map +1 -0
- package/dist/utils/output.d.ts +40 -0
- package/dist/utils/output.js +95 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/package-manager.js +2 -3
- package/dist/utils/package-manager.js.map +1 -1
- package/dist/utils/paths.d.ts +5 -0
- package/dist/utils/paths.js +18 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/register-subcommand.d.ts +7 -0
- package/dist/utils/register-subcommand.js +36 -0
- package/dist/utils/register-subcommand.js.map +1 -0
- package/dist/utils/telemetry-types.d.ts +1 -1
- package/dist/utils/telemetry-types.js.map +1 -1
- package/dist/utils/types.d.ts +12 -0
- package/dist/utils/types.js.map +1 -1
- package/package.json +20 -16
- package/skills/workos-management/SKILL.md +250 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified WorkOS client for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @workos-inc/node SDK for documented endpoints and extends with
|
|
5
|
+
* raw-fetch methods for undocumented/write-only endpoints (webhooks, redirect URIs, etc.).
|
|
6
|
+
* Commands import one client; they don't care whether a method is SDK-backed or raw fetch.
|
|
7
|
+
*/
|
|
8
|
+
import { WorkOS } from '@workos-inc/node';
|
|
9
|
+
import { type WorkOSListResponse } from './workos-api.js';
|
|
10
|
+
export interface WebhookEndpoint {
|
|
11
|
+
id: string;
|
|
12
|
+
url: string;
|
|
13
|
+
events: string[];
|
|
14
|
+
secret?: string;
|
|
15
|
+
created_at: string;
|
|
16
|
+
updated_at: string;
|
|
17
|
+
}
|
|
18
|
+
export interface AuditLogAction {
|
|
19
|
+
action: string;
|
|
20
|
+
}
|
|
21
|
+
export interface AuditLogRetention {
|
|
22
|
+
retention_period_in_days: number;
|
|
23
|
+
}
|
|
24
|
+
export interface WorkOSCLIClient {
|
|
25
|
+
sdk: WorkOS;
|
|
26
|
+
webhooks: {
|
|
27
|
+
list(): Promise<WorkOSListResponse<WebhookEndpoint>>;
|
|
28
|
+
create(endpointUrl: string, events: string[]): Promise<WebhookEndpoint>;
|
|
29
|
+
delete(id: string): Promise<void>;
|
|
30
|
+
};
|
|
31
|
+
redirectUris: {
|
|
32
|
+
add(uri: string): Promise<{
|
|
33
|
+
success: boolean;
|
|
34
|
+
alreadyExists: boolean;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
corsOrigins: {
|
|
38
|
+
add(origin: string): Promise<{
|
|
39
|
+
success: boolean;
|
|
40
|
+
alreadyExists: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
};
|
|
43
|
+
homepageUrl: {
|
|
44
|
+
set(url: string): Promise<void>;
|
|
45
|
+
};
|
|
46
|
+
auditLogs: {
|
|
47
|
+
listActions(): Promise<WorkOSListResponse<AuditLogAction>>;
|
|
48
|
+
getSchema(action: string): Promise<unknown>;
|
|
49
|
+
getRetention(orgId: string): Promise<AuditLogRetention>;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a unified WorkOS client.
|
|
54
|
+
*
|
|
55
|
+
* @param apiKey - Explicit API key; falls back to resolveApiKey()
|
|
56
|
+
* @param baseUrl - Explicit base URL; falls back to resolveApiBaseUrl()
|
|
57
|
+
*/
|
|
58
|
+
export declare function createWorkOSClient(apiKey?: string, baseUrl?: string): WorkOSCLIClient;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified WorkOS client for CLI commands.
|
|
3
|
+
*
|
|
4
|
+
* Wraps @workos-inc/node SDK for documented endpoints and extends with
|
|
5
|
+
* raw-fetch methods for undocumented/write-only endpoints (webhooks, redirect URIs, etc.).
|
|
6
|
+
* Commands import one client; they don't care whether a method is SDK-backed or raw fetch.
|
|
7
|
+
*/
|
|
8
|
+
import { WorkOS } from '@workos-inc/node';
|
|
9
|
+
import { workosRequest } from './workos-api.js';
|
|
10
|
+
import { resolveApiKey, resolveApiBaseUrl } from './api-key.js';
|
|
11
|
+
/**
|
|
12
|
+
* Create a unified WorkOS client.
|
|
13
|
+
*
|
|
14
|
+
* @param apiKey - Explicit API key; falls back to resolveApiKey()
|
|
15
|
+
* @param baseUrl - Explicit base URL; falls back to resolveApiBaseUrl()
|
|
16
|
+
*/
|
|
17
|
+
export function createWorkOSClient(apiKey, baseUrl) {
|
|
18
|
+
const key = apiKey ?? resolveApiKey();
|
|
19
|
+
const base = baseUrl ?? resolveApiBaseUrl();
|
|
20
|
+
// Parse hostname from base URL for SDK init
|
|
21
|
+
const hostname = new URL(base).hostname;
|
|
22
|
+
const sdk = new WorkOS(key, { apiHostname: hostname });
|
|
23
|
+
return {
|
|
24
|
+
sdk,
|
|
25
|
+
webhooks: {
|
|
26
|
+
async list() {
|
|
27
|
+
return workosRequest({
|
|
28
|
+
method: 'GET',
|
|
29
|
+
path: '/webhook_endpoints',
|
|
30
|
+
apiKey: key,
|
|
31
|
+
baseUrl: base,
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
async create(endpointUrl, events) {
|
|
35
|
+
return workosRequest({
|
|
36
|
+
method: 'POST',
|
|
37
|
+
path: '/webhook_endpoints',
|
|
38
|
+
apiKey: key,
|
|
39
|
+
baseUrl: base,
|
|
40
|
+
body: { endpoint_url: endpointUrl, events },
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
async delete(id) {
|
|
44
|
+
await workosRequest({
|
|
45
|
+
method: 'DELETE',
|
|
46
|
+
path: `/webhook_endpoints/${id}`,
|
|
47
|
+
apiKey: key,
|
|
48
|
+
baseUrl: base,
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
redirectUris: {
|
|
53
|
+
async add(uri) {
|
|
54
|
+
try {
|
|
55
|
+
await workosRequest({
|
|
56
|
+
method: 'POST',
|
|
57
|
+
path: '/user_management/redirect_uris',
|
|
58
|
+
apiKey: key,
|
|
59
|
+
baseUrl: base,
|
|
60
|
+
body: { uri },
|
|
61
|
+
});
|
|
62
|
+
return { success: true, alreadyExists: false };
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
const { WorkOSApiError } = await import('./workos-api.js');
|
|
66
|
+
if (error instanceof WorkOSApiError) {
|
|
67
|
+
if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {
|
|
68
|
+
return { success: true, alreadyExists: true };
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
corsOrigins: {
|
|
76
|
+
async add(origin) {
|
|
77
|
+
try {
|
|
78
|
+
await workosRequest({
|
|
79
|
+
method: 'POST',
|
|
80
|
+
path: '/user_management/cors_origins',
|
|
81
|
+
apiKey: key,
|
|
82
|
+
baseUrl: base,
|
|
83
|
+
body: { origin },
|
|
84
|
+
});
|
|
85
|
+
return { success: true, alreadyExists: false };
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
const { WorkOSApiError } = await import('./workos-api.js');
|
|
89
|
+
if (error instanceof WorkOSApiError) {
|
|
90
|
+
if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {
|
|
91
|
+
return { success: true, alreadyExists: true };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
homepageUrl: {
|
|
99
|
+
async set(url) {
|
|
100
|
+
await workosRequest({
|
|
101
|
+
method: 'PUT',
|
|
102
|
+
path: '/user_management/app_homepage_url',
|
|
103
|
+
apiKey: key,
|
|
104
|
+
baseUrl: base,
|
|
105
|
+
body: { url },
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
auditLogs: {
|
|
110
|
+
async listActions() {
|
|
111
|
+
return workosRequest({
|
|
112
|
+
method: 'GET',
|
|
113
|
+
path: '/audit_logs/actions',
|
|
114
|
+
apiKey: key,
|
|
115
|
+
baseUrl: base,
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
async getSchema(action) {
|
|
119
|
+
return workosRequest({
|
|
120
|
+
method: 'GET',
|
|
121
|
+
path: `/audit_logs/actions/${encodeURIComponent(action)}/schemas`,
|
|
122
|
+
apiKey: key,
|
|
123
|
+
baseUrl: base,
|
|
124
|
+
});
|
|
125
|
+
},
|
|
126
|
+
async getRetention(orgId) {
|
|
127
|
+
return workosRequest({
|
|
128
|
+
method: 'GET',
|
|
129
|
+
path: `/organizations/${encodeURIComponent(orgId)}/audit_logs_retention`,
|
|
130
|
+
apiKey: key,
|
|
131
|
+
baseUrl: base,
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=workos-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workos-client.js","sourceRoot":"","sources":["../../src/lib/workos-client.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Unified WorkOS client for CLI commands.\n *\n * Wraps @workos-inc/node SDK for documented endpoints and extends with\n * raw-fetch methods for undocumented/write-only endpoints (webhooks, redirect URIs, etc.).\n * Commands import one client; they don't care whether a method is SDK-backed or raw fetch.\n */\n\nimport { WorkOS } from '@workos-inc/node';\nimport { workosRequest, type WorkOSListResponse } from './workos-api.js';\nimport { resolveApiKey, resolveApiBaseUrl } from './api-key.js';\n\nexport interface WebhookEndpoint {\n id: string;\n url: string;\n events: string[];\n secret?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface AuditLogAction {\n action: string;\n}\n\nexport interface AuditLogRetention {\n retention_period_in_days: number;\n}\n\nexport interface WorkOSCLIClient {\n sdk: WorkOS;\n webhooks: {\n list(): Promise<WorkOSListResponse<WebhookEndpoint>>;\n create(endpointUrl: string, events: string[]): Promise<WebhookEndpoint>;\n delete(id: string): Promise<void>;\n };\n redirectUris: {\n add(uri: string): Promise<{ success: boolean; alreadyExists: boolean }>;\n };\n corsOrigins: {\n add(origin: string): Promise<{ success: boolean; alreadyExists: boolean }>;\n };\n homepageUrl: {\n set(url: string): Promise<void>;\n };\n auditLogs: {\n listActions(): Promise<WorkOSListResponse<AuditLogAction>>;\n getSchema(action: string): Promise<unknown>;\n getRetention(orgId: string): Promise<AuditLogRetention>;\n };\n}\n\n/**\n * Create a unified WorkOS client.\n *\n * @param apiKey - Explicit API key; falls back to resolveApiKey()\n * @param baseUrl - Explicit base URL; falls back to resolveApiBaseUrl()\n */\nexport function createWorkOSClient(apiKey?: string, baseUrl?: string): WorkOSCLIClient {\n const key = apiKey ?? resolveApiKey();\n const base = baseUrl ?? resolveApiBaseUrl();\n\n // Parse hostname from base URL for SDK init\n const hostname = new URL(base).hostname;\n const sdk = new WorkOS(key, { apiHostname: hostname });\n\n return {\n sdk,\n\n webhooks: {\n async list() {\n return workosRequest<WorkOSListResponse<WebhookEndpoint>>({\n method: 'GET',\n path: '/webhook_endpoints',\n apiKey: key,\n baseUrl: base,\n });\n },\n async create(endpointUrl: string, events: string[]) {\n return workosRequest<WebhookEndpoint>({\n method: 'POST',\n path: '/webhook_endpoints',\n apiKey: key,\n baseUrl: base,\n body: { endpoint_url: endpointUrl, events },\n });\n },\n async delete(id: string) {\n await workosRequest<null>({\n method: 'DELETE',\n path: `/webhook_endpoints/${id}`,\n apiKey: key,\n baseUrl: base,\n });\n },\n },\n\n redirectUris: {\n async add(uri: string) {\n try {\n await workosRequest({\n method: 'POST',\n path: '/user_management/redirect_uris',\n apiKey: key,\n baseUrl: base,\n body: { uri },\n });\n return { success: true, alreadyExists: false };\n } catch (error: unknown) {\n const { WorkOSApiError } = await import('./workos-api.js');\n if (error instanceof WorkOSApiError) {\n if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {\n return { success: true, alreadyExists: true };\n }\n }\n throw error;\n }\n },\n },\n\n corsOrigins: {\n async add(origin: string) {\n try {\n await workosRequest({\n method: 'POST',\n path: '/user_management/cors_origins',\n apiKey: key,\n baseUrl: base,\n body: { origin },\n });\n return { success: true, alreadyExists: false };\n } catch (error: unknown) {\n const { WorkOSApiError } = await import('./workos-api.js');\n if (error instanceof WorkOSApiError) {\n if (error.statusCode === 409 || (error.statusCode === 422 && error.message.includes('already exists'))) {\n return { success: true, alreadyExists: true };\n }\n }\n throw error;\n }\n },\n },\n\n homepageUrl: {\n async set(url: string) {\n await workosRequest({\n method: 'PUT',\n path: '/user_management/app_homepage_url',\n apiKey: key,\n baseUrl: base,\n body: { url },\n });\n },\n },\n\n auditLogs: {\n async listActions() {\n return workosRequest<WorkOSListResponse<AuditLogAction>>({\n method: 'GET',\n path: '/audit_logs/actions',\n apiKey: key,\n baseUrl: base,\n });\n },\n async getSchema(action: string) {\n return workosRequest<unknown>({\n method: 'GET',\n path: `/audit_logs/actions/${encodeURIComponent(action)}/schemas`,\n apiKey: key,\n baseUrl: base,\n });\n },\n async getRetention(orgId: string) {\n return workosRequest<AuditLogRetention>({\n method: 'GET',\n path: `/organizations/${encodeURIComponent(orgId)}/audit_logs_retention`,\n apiKey: key,\n baseUrl: base,\n });\n },\n },\n };\n}\n"]}
|
package/dist/run.d.ts
CHANGED
|
@@ -15,7 +15,14 @@ export type InstallerArgs = {
|
|
|
15
15
|
dashboard?: boolean;
|
|
16
16
|
inspect?: boolean;
|
|
17
17
|
noValidate?: boolean;
|
|
18
|
+
validate?: boolean;
|
|
18
19
|
noCommit?: boolean;
|
|
20
|
+
commit?: boolean;
|
|
21
|
+
noBranch?: boolean;
|
|
22
|
+
branch?: boolean;
|
|
23
|
+
createPr?: boolean;
|
|
24
|
+
noGitCheck?: boolean;
|
|
25
|
+
gitCheck?: boolean;
|
|
19
26
|
direct?: boolean;
|
|
20
27
|
};
|
|
21
28
|
/**
|
package/dist/run.js
CHANGED
|
@@ -33,8 +33,11 @@ function buildOptions(argv) {
|
|
|
33
33
|
dashboard: merged.dashboard ?? false,
|
|
34
34
|
integration: merged.integration,
|
|
35
35
|
inspect: merged.inspect ?? false,
|
|
36
|
-
noValidate: merged.noValidate ?? false,
|
|
37
|
-
noCommit: merged.noCommit ?? false,
|
|
36
|
+
noValidate: merged.noValidate ?? merged.validate === false,
|
|
37
|
+
noCommit: merged.noCommit ?? merged.commit === false,
|
|
38
|
+
noBranch: merged.noBranch ?? merged.branch === false,
|
|
39
|
+
createPr: merged.createPr ?? false,
|
|
40
|
+
noGitCheck: merged.noGitCheck ?? merged.gitCheck === false,
|
|
38
41
|
direct: merged.direct ?? false,
|
|
39
42
|
emitter: createInstallerEventEmitter(), // Will be replaced in runWithCore
|
|
40
43
|
};
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,YAAY,CAAC,mBAAmB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,YAAY,CAAC,mBAAmB,GAAG,EAAE,CAAC;AA6BtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAmB;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,IAAmB;IACvC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAExD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;QAC5B,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,KAAK;QAC1C,UAAU;QACV,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK;QAC5B,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK;QACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;QACpC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;QAChC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK;QAC1D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;QACpD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK;QACpD,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK;QAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;QAC9B,OAAO,EAAE,2BAA2B,EAAE,EAAE,kCAAkC;KAC3E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import { readEnvironment } from './utils/environment.js';\nimport { runWithCore } from './lib/run-with-core.js';\nimport type { InstallerOptions } from './utils/types.js';\nimport type { Integration } from './lib/constants.js';\nimport { createInstallerEventEmitter } from './lib/events.js';\nimport path from 'path';\nimport { EventEmitter } from 'events';\n\nEventEmitter.defaultMaxListeners = 50;\n\nexport type InstallerArgs = {\n integration?: Integration;\n debug?: boolean;\n forceInstall?: boolean;\n installDir?: string;\n default?: boolean;\n local?: boolean;\n ci?: boolean;\n skipAuth?: boolean;\n apiKey?: string;\n clientId?: string;\n homepageUrl?: string;\n redirectUri?: string;\n dashboard?: boolean;\n inspect?: boolean;\n noValidate?: boolean;\n validate?: boolean;\n noCommit?: boolean;\n commit?: boolean;\n noBranch?: boolean;\n branch?: boolean;\n createPr?: boolean;\n noGitCheck?: boolean;\n gitCheck?: boolean;\n direct?: boolean;\n};\n\n/**\n * Main entry point for the wizard CLI.\n * Builds options from args and delegates to the core.\n */\nexport async function runInstaller(argv: InstallerArgs): Promise<void> {\n const options = buildOptions(argv);\n await runWithCore(options);\n}\n\n/**\n * Build InstallerOptions from CLI args and environment.\n */\nfunction buildOptions(argv: InstallerArgs): InstallerOptions {\n const envArgs = readEnvironment();\n const merged = { ...argv, ...envArgs };\n\n const installDir = resolveInstallDir(merged.installDir);\n\n return {\n debug: merged.debug ?? false,\n forceInstall: merged.forceInstall ?? false,\n installDir,\n local: merged.local ?? false,\n ci: merged.ci ?? false,\n skipAuth: merged.skipAuth ?? false,\n apiKey: merged.apiKey,\n clientId: merged.clientId,\n homepageUrl: merged.homepageUrl,\n redirectUri: merged.redirectUri,\n dashboard: merged.dashboard ?? false,\n integration: merged.integration,\n inspect: merged.inspect ?? false,\n noValidate: merged.noValidate ?? merged.validate === false,\n noCommit: merged.noCommit ?? merged.commit === false,\n noBranch: merged.noBranch ?? merged.branch === false,\n createPr: merged.createPr ?? false,\n noGitCheck: merged.noGitCheck ?? merged.gitCheck === false,\n direct: merged.direct ?? false,\n emitter: createInstallerEventEmitter(), // Will be replaced in runWithCore\n };\n}\n\n/**\n * Resolve install directory to absolute path.\n */\nfunction resolveInstallDir(dir?: string): string {\n if (!dir) return process.cwd();\n return path.isAbsolute(dir) ? dir : path.join(process.cwd(), dir);\n}\n"]}
|