@gojinko/api-client 2.6.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +43 -12
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +126 -53
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +8 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +12 -12
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/auth.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type AuthMethod = 'api_key' | 'oauth';
|
|
2
|
+
/** Named deployment environment. Maps to a base URL and a credential slot. */
|
|
3
|
+
export type Environment = 'prod' | 'sandbox';
|
|
2
4
|
export interface ResolvedAuth {
|
|
3
5
|
readonly method: AuthMethod;
|
|
4
6
|
readonly token: string;
|
|
@@ -8,36 +10,65 @@ export interface OAuthConfig {
|
|
|
8
10
|
readonly refresh_token: string;
|
|
9
11
|
readonly expires_at: number;
|
|
10
12
|
}
|
|
13
|
+
/** Per-environment credentials stored under `environments.<env>`. */
|
|
14
|
+
interface EnvCredentials {
|
|
15
|
+
readonly api_key?: string;
|
|
16
|
+
readonly oauth?: OAuthConfig;
|
|
17
|
+
}
|
|
11
18
|
interface ConfigFile {
|
|
19
|
+
/** Active environment. Defaults to "prod" when absent. */
|
|
20
|
+
readonly environment?: Environment;
|
|
21
|
+
/** Per-environment credentials. */
|
|
22
|
+
readonly environments?: Partial<Record<Environment, EnvCredentials>>;
|
|
12
23
|
readonly api_key?: string;
|
|
13
24
|
readonly oauth?: OAuthConfig;
|
|
14
25
|
}
|
|
15
|
-
|
|
26
|
+
/** Built-in base URLs per environment. */
|
|
27
|
+
export declare const ENV_BASE_URLS: Record<Environment, string>;
|
|
28
|
+
declare const DEFAULT_ENVIRONMENT: Environment;
|
|
29
|
+
declare const DEFAULT_BASE_URL: string;
|
|
16
30
|
declare const CONFIG_DIR: string;
|
|
17
31
|
declare const CONFIG_FILE: string;
|
|
18
32
|
/**
|
|
19
|
-
* Resolve
|
|
33
|
+
* Resolve the active environment with precedence:
|
|
34
|
+
* param > JINKO_ENV env > config `environment` > "prod".
|
|
35
|
+
*/
|
|
36
|
+
export declare function resolveEnvironment(paramEnv?: Environment): Promise<Environment>;
|
|
37
|
+
/**
|
|
38
|
+
* Resolve auth credentials for the given environment with precedence:
|
|
39
|
+
* param > JINKO_API_KEY env > config environments.<env> > legacy top-level (prod only).
|
|
20
40
|
*
|
|
21
|
-
* OAuth tokens are auto-refreshed if expired
|
|
41
|
+
* OAuth tokens are auto-refreshed if expired, and persisted back to the slot
|
|
42
|
+
* they came from (per-env or legacy top-level).
|
|
22
43
|
*/
|
|
23
|
-
export declare function resolveAuth(paramToken?: string): Promise<ResolvedAuth | undefined>;
|
|
44
|
+
export declare function resolveAuth(paramToken?: string, env?: Environment): Promise<ResolvedAuth | undefined>;
|
|
24
45
|
/**
|
|
25
|
-
* Resolve the
|
|
26
|
-
*
|
|
27
|
-
* pointing the CLI/SDK at dev/staging).
|
|
46
|
+
* Resolve the API base URL for the given environment. Precedence:
|
|
47
|
+
* JINKO_API_BASE env (raw override, e.g. dev/staging) > env-mapped URL > prod.
|
|
28
48
|
*/
|
|
29
|
-
export declare function resolveBaseUrl(): string;
|
|
49
|
+
export declare function resolveBaseUrl(env?: Environment): string;
|
|
30
50
|
/**
|
|
31
51
|
* Read the config file at ~/.jinko/config.yaml.
|
|
32
52
|
*/
|
|
33
53
|
export declare function readConfigFile(): Promise<ConfigFile | undefined>;
|
|
34
54
|
/**
|
|
35
|
-
* Write
|
|
55
|
+
* Write top-level config values to ~/.jinko/config.yaml, deep-merging the
|
|
56
|
+
* `environments` map so writing one slot never clobbers the other.
|
|
36
57
|
*/
|
|
37
58
|
export declare function writeConfigFile(updates: Partial<ConfigFile>): Promise<void>;
|
|
38
59
|
/**
|
|
39
|
-
*
|
|
60
|
+
* Write credentials into a specific environment slot, deep-merging so an
|
|
61
|
+
* existing api_key/oauth in that slot is preserved unless overwritten.
|
|
62
|
+
*/
|
|
63
|
+
export declare function writeEnvAuth(env: Environment, creds: EnvCredentials): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Set the active environment in the config file.
|
|
66
|
+
*/
|
|
67
|
+
export declare function setEnvironment(env: Environment): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Clear auth credentials. With an environment, clears just that slot; without,
|
|
70
|
+
* clears the legacy top-level credentials (back-compat).
|
|
40
71
|
*/
|
|
41
|
-
export declare function clearAuthConfig(): Promise<void>;
|
|
42
|
-
export { CONFIG_DIR, CONFIG_FILE, DEFAULT_BASE_URL };
|
|
72
|
+
export declare function clearAuthConfig(env?: Environment): Promise<void>;
|
|
73
|
+
export { CONFIG_DIR, CONFIG_FILE, DEFAULT_BASE_URL, DEFAULT_ENVIRONMENT };
|
|
43
74
|
//# sourceMappingURL=auth.d.ts.map
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,QAAA,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7C,8EAA8E;AAC9E,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qEAAqE;AACrE,UAAU,cAAc;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,UAAU,UAAU;IAClB,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,mCAAmC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAGrE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,0CAA0C;AAC1C,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAGrD,CAAC;AAEF,QAAA,MAAM,mBAAmB,EAAE,WAAoB,CAAC;AAChD,QAAA,MAAM,gBAAgB,QAAqC,CAAC;AAC5D,QAAA,MAAM,UAAU,QAA4B,CAAC;AAC7C,QAAA,MAAM,WAAW,QAAkC,CAAC;AAMpD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAOrF;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,GAAG,GAAE,WAAiC,GACrC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAkCnC;AA+BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,WAAiC,GAAG,MAAM,CAE7E;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAOtE;AASD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtE;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -3,16 +3,42 @@ import { join } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { parse as parseYaml } from 'yaml';
|
|
5
5
|
import { isTokenExpired, refreshAccessToken } from './oauth.js';
|
|
6
|
-
|
|
6
|
+
/** Built-in base URLs per environment. */
|
|
7
|
+
export const ENV_BASE_URLS = {
|
|
8
|
+
prod: 'https://api.gojinko.com',
|
|
9
|
+
sandbox: 'https://api.sandbox.gojinko.com',
|
|
10
|
+
};
|
|
11
|
+
const DEFAULT_ENVIRONMENT = 'prod';
|
|
12
|
+
const DEFAULT_BASE_URL = ENV_BASE_URLS[DEFAULT_ENVIRONMENT];
|
|
7
13
|
const CONFIG_DIR = join(homedir(), '.jinko');
|
|
8
14
|
const CONFIG_FILE = join(CONFIG_DIR, 'config.yaml');
|
|
15
|
+
function isEnvironment(v) {
|
|
16
|
+
return v === 'prod' || v === 'sandbox';
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolve the active environment with precedence:
|
|
20
|
+
* param > JINKO_ENV env > config `environment` > "prod".
|
|
21
|
+
*/
|
|
22
|
+
export async function resolveEnvironment(paramEnv) {
|
|
23
|
+
if (paramEnv)
|
|
24
|
+
return paramEnv;
|
|
25
|
+
const envVar = process.env['JINKO_ENV'];
|
|
26
|
+
if (isEnvironment(envVar))
|
|
27
|
+
return envVar;
|
|
28
|
+
const config = await readConfigFile();
|
|
29
|
+
if (isEnvironment(config?.environment))
|
|
30
|
+
return config.environment;
|
|
31
|
+
return DEFAULT_ENVIRONMENT;
|
|
32
|
+
}
|
|
9
33
|
/**
|
|
10
|
-
* Resolve auth credentials
|
|
34
|
+
* Resolve auth credentials for the given environment with precedence:
|
|
35
|
+
* param > JINKO_API_KEY env > config environments.<env> > legacy top-level (prod only).
|
|
11
36
|
*
|
|
12
|
-
* OAuth tokens are auto-refreshed if expired
|
|
37
|
+
* OAuth tokens are auto-refreshed if expired, and persisted back to the slot
|
|
38
|
+
* they came from (per-env or legacy top-level).
|
|
13
39
|
*/
|
|
14
|
-
export async function resolveAuth(paramToken) {
|
|
15
|
-
// 1. Explicit param or env —
|
|
40
|
+
export async function resolveAuth(paramToken, env = DEFAULT_ENVIRONMENT) {
|
|
41
|
+
// 1. Explicit param or env var — used as-is regardless of environment.
|
|
16
42
|
const explicitToken = paramToken ?? process.env['JINKO_API_KEY'];
|
|
17
43
|
if (explicitToken) {
|
|
18
44
|
return {
|
|
@@ -20,50 +46,59 @@ export async function resolveAuth(paramToken) {
|
|
|
20
46
|
token: explicitToken,
|
|
21
47
|
};
|
|
22
48
|
}
|
|
23
|
-
// 2. Config file
|
|
24
49
|
const config = await readConfigFile();
|
|
25
50
|
if (!config)
|
|
26
51
|
return undefined;
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
52
|
+
// 2. Per-environment credentials.
|
|
53
|
+
const envCreds = config.environments?.[env];
|
|
54
|
+
if (envCreds?.api_key) {
|
|
55
|
+
return { method: 'api_key', token: envCreds.api_key };
|
|
30
56
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
await writeConfigFile({
|
|
43
|
-
oauth: {
|
|
44
|
-
access_token: refreshed.access_token,
|
|
45
|
-
refresh_token: refreshed.refresh_token,
|
|
46
|
-
expires_at: refreshed.expires_at,
|
|
47
|
-
},
|
|
48
|
-
});
|
|
49
|
-
return { method: 'oauth', token: refreshed.access_token };
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
// Refresh failed — try with existing token, server will 401 if truly expired
|
|
53
|
-
return { method: 'oauth', token: tokens.access_token };
|
|
54
|
-
}
|
|
57
|
+
if (envCreds?.oauth) {
|
|
58
|
+
return refreshAndPersist(envCreds.oauth, (oauth) => writeEnvAuth(env, { oauth }));
|
|
59
|
+
}
|
|
60
|
+
// 3. Legacy top-level credentials — treated as the PROD slot only, so a
|
|
61
|
+
// legacy prod key never leaks into a sandbox session.
|
|
62
|
+
if (env === DEFAULT_ENVIRONMENT) {
|
|
63
|
+
if (config.api_key) {
|
|
64
|
+
return { method: 'api_key', token: config.api_key };
|
|
65
|
+
}
|
|
66
|
+
if (config.oauth) {
|
|
67
|
+
return refreshAndPersist(config.oauth, (oauth) => writeConfigFile({ oauth }));
|
|
55
68
|
}
|
|
56
|
-
return { method: 'oauth', token: tokens.access_token };
|
|
57
69
|
}
|
|
58
70
|
return undefined;
|
|
59
71
|
}
|
|
72
|
+
/** Refresh an OAuth token if expired, persist via the given writer, return the resolved auth. */
|
|
73
|
+
async function refreshAndPersist(oauth, persist) {
|
|
74
|
+
const tokens = {
|
|
75
|
+
access_token: oauth.access_token,
|
|
76
|
+
refresh_token: oauth.refresh_token,
|
|
77
|
+
expires_at: oauth.expires_at,
|
|
78
|
+
};
|
|
79
|
+
if (isTokenExpired(tokens)) {
|
|
80
|
+
try {
|
|
81
|
+
const refreshed = await refreshAccessToken(tokens.refresh_token);
|
|
82
|
+
await persist({
|
|
83
|
+
access_token: refreshed.access_token,
|
|
84
|
+
refresh_token: refreshed.refresh_token,
|
|
85
|
+
expires_at: refreshed.expires_at,
|
|
86
|
+
});
|
|
87
|
+
return { method: 'oauth', token: refreshed.access_token };
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Refresh failed — try existing token, server will 401 if truly expired.
|
|
91
|
+
return { method: 'oauth', token: tokens.access_token };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return { method: 'oauth', token: tokens.access_token };
|
|
95
|
+
}
|
|
60
96
|
/**
|
|
61
|
-
* Resolve the
|
|
62
|
-
*
|
|
63
|
-
* pointing the CLI/SDK at dev/staging).
|
|
97
|
+
* Resolve the API base URL for the given environment. Precedence:
|
|
98
|
+
* JINKO_API_BASE env (raw override, e.g. dev/staging) > env-mapped URL > prod.
|
|
64
99
|
*/
|
|
65
|
-
export function resolveBaseUrl() {
|
|
66
|
-
return process.env['JINKO_API_BASE'] ?? DEFAULT_BASE_URL;
|
|
100
|
+
export function resolveBaseUrl(env = DEFAULT_ENVIRONMENT) {
|
|
101
|
+
return process.env['JINKO_API_BASE'] ?? ENV_BASE_URLS[env] ?? DEFAULT_BASE_URL;
|
|
67
102
|
}
|
|
68
103
|
/**
|
|
69
104
|
* Read the config file at ~/.jinko/config.yaml.
|
|
@@ -77,30 +112,68 @@ export async function readConfigFile() {
|
|
|
77
112
|
return undefined;
|
|
78
113
|
}
|
|
79
114
|
}
|
|
80
|
-
|
|
81
|
-
* Write a config value to ~/.jinko/config.yaml.
|
|
82
|
-
*/
|
|
83
|
-
export async function writeConfigFile(updates) {
|
|
115
|
+
async function writeRaw(config) {
|
|
84
116
|
const { mkdir, writeFile } = await import('node:fs/promises');
|
|
85
117
|
const { stringify: stringifyYaml } = await import('yaml');
|
|
86
118
|
await mkdir(CONFIG_DIR, { recursive: true });
|
|
119
|
+
await writeFile(CONFIG_FILE, stringifyYaml(config), 'utf-8');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Write top-level config values to ~/.jinko/config.yaml, deep-merging the
|
|
123
|
+
* `environments` map so writing one slot never clobbers the other.
|
|
124
|
+
*/
|
|
125
|
+
export async function writeConfigFile(updates) {
|
|
87
126
|
const existing = (await readConfigFile()) ?? {};
|
|
88
|
-
const merged = {
|
|
89
|
-
|
|
127
|
+
const merged = {
|
|
128
|
+
...existing,
|
|
129
|
+
...updates,
|
|
130
|
+
// Deep-merge the environments map so writing one slot never clobbers the other.
|
|
131
|
+
...(updates.environments || existing.environments
|
|
132
|
+
? { environments: { ...existing.environments, ...updates.environments } }
|
|
133
|
+
: {}),
|
|
134
|
+
};
|
|
135
|
+
await writeRaw(merged);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Write credentials into a specific environment slot, deep-merging so an
|
|
139
|
+
* existing api_key/oauth in that slot is preserved unless overwritten.
|
|
140
|
+
*/
|
|
141
|
+
export async function writeEnvAuth(env, creds) {
|
|
142
|
+
const existing = (await readConfigFile()) ?? {};
|
|
143
|
+
const environments = { ...existing.environments };
|
|
144
|
+
environments[env] = { ...environments[env], ...creds };
|
|
145
|
+
await writeRaw({ ...existing, environments });
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Set the active environment in the config file.
|
|
149
|
+
*/
|
|
150
|
+
export async function setEnvironment(env) {
|
|
151
|
+
await writeConfigFile({ environment: env });
|
|
90
152
|
}
|
|
91
153
|
/**
|
|
92
|
-
* Clear
|
|
154
|
+
* Clear auth credentials. With an environment, clears just that slot; without,
|
|
155
|
+
* clears the legacy top-level credentials (back-compat).
|
|
93
156
|
*/
|
|
94
|
-
export async function clearAuthConfig() {
|
|
157
|
+
export async function clearAuthConfig(env) {
|
|
95
158
|
const config = await readConfigFile();
|
|
96
159
|
if (!config)
|
|
97
160
|
return;
|
|
161
|
+
if (env) {
|
|
162
|
+
const environments = { ...config.environments };
|
|
163
|
+
if (environments[env]) {
|
|
164
|
+
const { api_key: _a, oauth: _o, ...restEnv } = environments[env];
|
|
165
|
+
if (Object.keys(restEnv).length > 0) {
|
|
166
|
+
environments[env] = restEnv;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
delete environments[env];
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
await writeRaw({ ...config, environments });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
98
175
|
const { api_key: _, oauth: __, ...rest } = config;
|
|
99
|
-
|
|
100
|
-
const { stringify: stringifyYaml } = await import('yaml');
|
|
101
|
-
await mkdir(CONFIG_DIR, { recursive: true });
|
|
102
|
-
const cleaned = Object.keys(rest).length > 0 ? rest : {};
|
|
103
|
-
await writeFile(CONFIG_FILE, stringifyYaml(cleaned), 'utf-8');
|
|
176
|
+
await writeRaw(rest);
|
|
104
177
|
}
|
|
105
|
-
export { CONFIG_DIR, CONFIG_FILE, DEFAULT_BASE_URL };
|
|
178
|
+
export { CONFIG_DIR, CONFIG_FILE, DEFAULT_BASE_URL, DEFAULT_ENVIRONMENT };
|
|
106
179
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import createClient from 'openapi-fetch';
|
|
2
|
-
import { type ResolvedAuth } from './auth.js';
|
|
2
|
+
import { type ResolvedAuth, type Environment } from './auth.js';
|
|
3
3
|
import { type JinkoTools } from './tools.js';
|
|
4
4
|
import type { paths } from './types/generated.js';
|
|
5
5
|
export interface ClientOptions {
|
|
6
6
|
readonly apiKey?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Target environment ("prod" | "sandbox"). Selects the base URL and the
|
|
9
|
+
* credential slot used from ~/.jinko/config.yaml. Precedence: this option >
|
|
10
|
+
* JINKO_ENV env > config `environment` > "prod". An explicit `apiKey` or
|
|
11
|
+
* `JINKO_API_BASE` still wins over the environment mapping.
|
|
12
|
+
*/
|
|
13
|
+
readonly environment?: Environment;
|
|
7
14
|
}
|
|
8
15
|
export type JinkoRawClient = ReturnType<typeof createClient<paths>>;
|
|
9
16
|
export interface JinkoClient extends JinkoTools {
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAalD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACpC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC7B;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqJzF"}
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomBytes, randomUUID } from 'node:crypto';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import createClient from 'openapi-fetch';
|
|
4
|
-
import { resolveAuth, resolveBaseUrl, writeConfigFile } from './auth.js';
|
|
4
|
+
import { resolveAuth, resolveBaseUrl, resolveEnvironment, writeConfigFile, } from './auth.js';
|
|
5
5
|
import { isTokenExpired, refreshAccessToken } from './oauth.js';
|
|
6
6
|
import { ApiError, AuthError } from './errors.js';
|
|
7
7
|
import { loadOrCreateCliSession, extractUserIdFromJwt } from './session.js';
|
|
@@ -22,11 +22,12 @@ const CLI_CLIENT_KIND = `jinko-cli/${pkg.version}`;
|
|
|
22
22
|
* OAuth tokens are auto-refreshed before each request when expired.
|
|
23
23
|
*/
|
|
24
24
|
export async function createJinkoClient(options = {}) {
|
|
25
|
-
const
|
|
25
|
+
const environment = await resolveEnvironment(options.environment);
|
|
26
|
+
const auth = await resolveAuth(options.apiKey, environment);
|
|
26
27
|
if (!auth) {
|
|
27
28
|
throw new AuthError();
|
|
28
29
|
}
|
|
29
|
-
const baseUrl = resolveBaseUrl();
|
|
30
|
+
const baseUrl = resolveBaseUrl(environment);
|
|
30
31
|
const client = createClient({ baseUrl });
|
|
31
32
|
// Persistent CLI session id — stable across invocations within the session TTL.
|
|
32
33
|
// Decoupled from per-request correlation (X-Request-ID, fresh each call).
|
|
@@ -62,7 +63,13 @@ export async function createJinkoClient(options = {}) {
|
|
|
62
63
|
}
|
|
63
64
|
const authMiddleware = {
|
|
64
65
|
async onRequest({ request }) {
|
|
65
|
-
|
|
66
|
+
// Mutate headers on the existing request rather than reconstructing it.
|
|
67
|
+
// Rebuilding with `body: request.body` + `duplex: 'half'` sends a
|
|
68
|
+
// half-duplex *stream*, which undici aborts with "expected non-null body
|
|
69
|
+
// source" whenever the server short-circuits before consuming the body
|
|
70
|
+
// (e.g. a 401 at the public ingress) — masking every auth failure as an
|
|
71
|
+
// opaque "fetch failed". Header mutation leaves the body untouched.
|
|
72
|
+
const { headers } = request;
|
|
66
73
|
headers.set('X-Tenant-ID', 'jinko');
|
|
67
74
|
headers.set('Content-Type', 'application/json');
|
|
68
75
|
headers.set('Accept', 'application/json');
|
|
@@ -118,14 +125,7 @@ export async function createJinkoClient(options = {}) {
|
|
|
118
125
|
}
|
|
119
126
|
headers.set('Authorization', `Bearer ${currentToken}`);
|
|
120
127
|
}
|
|
121
|
-
return
|
|
122
|
-
method: request.method,
|
|
123
|
-
headers,
|
|
124
|
-
body: request.body,
|
|
125
|
-
signal: request.signal,
|
|
126
|
-
// @ts-expect-error — Node.js requires duplex for streaming body
|
|
127
|
-
duplex: 'half',
|
|
128
|
-
});
|
|
128
|
+
return request;
|
|
129
129
|
},
|
|
130
130
|
};
|
|
131
131
|
// Error middleware — converts HTTP errors to ApiError.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,YAAiC,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,eAAe,GAGhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAmB,MAAM,YAAY,CAAC;AAG1D,qEAAqE;AACrE,gEAAgE;AAChE,sEAAsE;AACtE,oCAAoC;AACpC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAwB,CAAC;AAErF,qEAAqE;AACrE,uEAAuE;AACvE,4DAA4D;AAC5D,MAAM,eAAe,GAAG,aAAa,GAAG,CAAC,OAAO,EAAE,CAAC;AA0BnD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAyB,EAAE;IACjE,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAEhD,gFAAgF;IAChF,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,SAAS,GAAG,UAAU,EAAE,CAAC,CAAC,0CAA0C;IACtE,CAAC;IAED,uEAAuE;IACvE,kEAAkE;IAClE,mEAAmE;IACnE,0DAA0D;IAC1D,EAAE;IACF,mEAAmE;IACnE,oEAAoE;IACpE,qEAAqE;IACrE,2CAA2C;IAC3C,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;IAChE,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe;IAE/E,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,yEAAyE;IACzE,IAAI,UAAkC,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC5B,gEAAgE;QAChE,oEAAoE;QACpE,sEAAsE;QACtE,UAAU,GAAG,SAAS,CAAC,CAAC,wCAAwC;IAClE,CAAC;IAED,MAAM,cAAc,GAAe;QACjC,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE;YACzB,wEAAwE;YACxE,kEAAkE;YAClE,yEAAyE;YACzE,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YAE1C,2EAA2E;YAC3E,0EAA0E;YAC1E,uEAAuE;YACvE,mCAAmC;YACnC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1C,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YAED,oEAAoE;YACpE,kEAAkE;YAClE,iEAAiE;YACjE,2DAA2D;YAC3D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;YAE9C,qEAAqE;YACrE,iEAAiE;YACjE,wDAAwD;YACxD,qEAAqE;YACrE,oEAAoE;YACpE,uEAAuE;YACvE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,OAAO,IAAI,SAAS,EAAE,KAAK,CAAC,CAAC;YAE9D,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC;gBAE9B,IAAI,UAAU,IAAI,cAAc,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;oBACrJ,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;wBACpE,UAAU,GAAG;4BACX,WAAW,EAAE,SAAS,CAAC,YAAY;4BACnC,YAAY,EAAE,SAAS,CAAC,aAAa;4BACrC,SAAS,EAAE,SAAS,CAAC,UAAU;yBAChC,CAAC;wBACF,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;wBACtC,mBAAmB;wBACnB,MAAM,eAAe,CAAC;4BACpB,KAAK,EAAE;gCACL,YAAY,EAAE,SAAS,CAAC,YAAY;gCACpC,aAAa,EAAE,SAAS,CAAC,aAAa;gCACtC,UAAU,EAAE,SAAS,CAAC,UAAU;6BACjC;yBACF,CAAC,CAAC;oBACL,CAAC;oBAAC,MAAM,CAAC;wBACP,6BAA6B;oBAC/B,CAAC;gBACH,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,YAAY,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;IAEF,uDAAuD;IACvD,MAAM,eAAe,GAAe;QAClC,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE;YAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,IAAI,MAAM,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACjE,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;oBAC3C,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;wBAChB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBACxC,CAAC;yBAAM,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;wBACzB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6CAA6C;gBAC/C,CAAC;gBACD,MAAM,IAAI,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO;QACL,GAAG,EAAE,MAAM;QACX,IAAI;QACJ,GAAG,KAAK;KACT,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createJinkoClient, type ClientOptions, type JinkoClient, type JinkoRawClient } from './client.js';
|
|
2
2
|
export { type JinkoTools } from './tools.js';
|
|
3
|
-
export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE, type AuthMethod, type ResolvedAuth, type OAuthConfig } from './auth.js';
|
|
3
|
+
export { resolveAuth, resolveBaseUrl, resolveEnvironment, readConfigFile, writeConfigFile, writeEnvAuth, setEnvironment, clearAuthConfig, ENV_BASE_URLS, CONFIG_DIR, CONFIG_FILE, DEFAULT_ENVIRONMENT, type AuthMethod, type Environment, type ResolvedAuth, type OAuthConfig, } from './auth.js';
|
|
4
4
|
export { loadOrCreateCliSession, clearCliSession, extractUserIdFromJwt, getSessionFilePath, SESSION_TTL_MS } from './session.js';
|
|
5
5
|
export { ApiError, AuthError, ValidationError, type ApiErrorDetail } from './errors.js';
|
|
6
6
|
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, type OAuthTokens, type DeviceAuthorization, } from './oauth.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC3G,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC9D,YAAY,EAEV,KAAK,EACL,MAAM,EACN,SAAS,EACT,SAAS,EAET,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,qBAAqB,EACrB,uBAAuB,EAEvB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACX,IAAI,EACJ,SAAS,EAET,sBAAsB,EACtB,uBAAuB,EAEvB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EAEpB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EAExB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createJinkoClient } from './client.js';
|
|
2
|
-
export { resolveAuth, readConfigFile, writeConfigFile, clearAuthConfig, CONFIG_DIR, CONFIG_FILE } from './auth.js';
|
|
2
|
+
export { resolveAuth, resolveBaseUrl, resolveEnvironment, readConfigFile, writeConfigFile, writeEnvAuth, setEnvironment, clearAuthConfig, ENV_BASE_URLS, CONFIG_DIR, CONFIG_FILE, DEFAULT_ENVIRONMENT, } from './auth.js';
|
|
3
3
|
export { loadOrCreateCliSession, clearCliSession, extractUserIdFromJwt, getSessionFilePath, SESSION_TTL_MS } from './session.js';
|
|
4
4
|
export { ApiError, AuthError, ValidationError } from './errors.js';
|
|
5
5
|
export { requestDeviceAuthorization, pollForToken, refreshAccessToken, isTokenExpired, OAuthError, OAuthRefreshError, resolveExpiresAt, } from './oauth.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,aAAa,CAAC;AAE3G,OAAO,EACL,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,mBAAmB,GAKpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACjI,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GAGjB,MAAM,YAAY,CAAC"}
|