refineo-cli 0.0.6 → 0.0.7
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/cjs/api.js +38 -10
- package/dist/cjs/cli.js +38 -10
- package/dist/cjs/config.js +1 -1
- package/dist/cjs/index.js +38 -10
- package/dist/esm/api.d.ts.map +1 -1
- package/dist/esm/api.js +38 -10
- package/dist/esm/cli.js +38 -10
- package/dist/esm/config.js +1 -1
- package/dist/esm/index.js +38 -10
- package/package.json +1 -1
package/dist/cjs/api.js
CHANGED
|
@@ -69,42 +69,65 @@ function getPlatformInfo() {
|
|
|
69
69
|
if (platform === "darwin") os = "macOS";
|
|
70
70
|
else if (platform === "win32") os = "Windows";
|
|
71
71
|
else if (platform === "linux") os = "Linux";
|
|
72
|
-
return `refineo-cli-node/0.0.
|
|
72
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
// src/api.ts
|
|
76
76
|
var USER_AGENT = getPlatformInfo();
|
|
77
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
78
|
+
function debug(...args) {
|
|
79
|
+
if (DEBUG) {
|
|
80
|
+
console.error("[refineo-debug]", ...args);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
77
83
|
async function apiRequest(path, options = {}) {
|
|
78
84
|
const credentials = loadCredentials();
|
|
79
85
|
if (!credentials) {
|
|
80
86
|
throw new Error("Not logged in. Run: refineo login");
|
|
81
87
|
}
|
|
88
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
89
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
82
90
|
let token = credentials.accessToken;
|
|
83
91
|
if (isTokenExpired(credentials)) {
|
|
92
|
+
debug("Token expired, refreshing...");
|
|
84
93
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
85
94
|
if (refreshed) {
|
|
86
95
|
token = refreshed.accessToken;
|
|
96
|
+
debug("Token refreshed successfully");
|
|
87
97
|
} else {
|
|
88
98
|
throw new Error("Session expired. Run: refineo login");
|
|
89
99
|
}
|
|
90
100
|
}
|
|
91
|
-
const
|
|
101
|
+
const url = `${API_BASE_URL}${path}`;
|
|
102
|
+
const headers = {
|
|
103
|
+
"Content-Type": "application/json",
|
|
104
|
+
"Authorization": `Bearer ${token}`,
|
|
105
|
+
"User-Agent": USER_AGENT
|
|
106
|
+
};
|
|
107
|
+
debug("Request URL:", url);
|
|
108
|
+
debug("Request method:", options.method || "GET");
|
|
109
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
110
|
+
const response = await fetch(url, {
|
|
92
111
|
...options,
|
|
93
|
-
headers
|
|
94
|
-
"Content-Type": "application/json",
|
|
95
|
-
"Authorization": `Bearer ${token}`,
|
|
96
|
-
"User-Agent": USER_AGENT,
|
|
97
|
-
...options.headers
|
|
98
|
-
}
|
|
112
|
+
headers
|
|
99
113
|
});
|
|
114
|
+
debug("Response status:", response.status);
|
|
100
115
|
if (!response.ok) {
|
|
101
|
-
const
|
|
116
|
+
const errorText = await response.text();
|
|
117
|
+
debug("Error response:", errorText);
|
|
118
|
+
let error;
|
|
119
|
+
try {
|
|
120
|
+
error = JSON.parse(errorText);
|
|
121
|
+
} catch {
|
|
122
|
+
error = { error: errorText || "Unknown error" };
|
|
123
|
+
}
|
|
102
124
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
103
125
|
}
|
|
104
126
|
return response.json();
|
|
105
127
|
}
|
|
106
128
|
async function refreshToken(refreshTokenValue) {
|
|
107
129
|
try {
|
|
130
|
+
debug("Attempting token refresh...");
|
|
108
131
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
109
132
|
method: "POST",
|
|
110
133
|
headers: {
|
|
@@ -116,7 +139,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
116
139
|
grant_type: "refresh_token"
|
|
117
140
|
})
|
|
118
141
|
});
|
|
142
|
+
debug("Refresh response status:", response.status);
|
|
119
143
|
if (!response.ok) {
|
|
144
|
+
const errorText = await response.text();
|
|
145
|
+
debug("Refresh error:", errorText);
|
|
120
146
|
return null;
|
|
121
147
|
}
|
|
122
148
|
const data = await response.json();
|
|
@@ -128,8 +154,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
128
154
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
129
155
|
};
|
|
130
156
|
saveCredentials(credentials);
|
|
157
|
+
debug("Token refreshed and saved");
|
|
131
158
|
return credentials;
|
|
132
|
-
} catch {
|
|
159
|
+
} catch (err) {
|
|
160
|
+
debug("Refresh exception:", err);
|
|
133
161
|
return null;
|
|
134
162
|
}
|
|
135
163
|
}
|
package/dist/cjs/cli.js
CHANGED
|
@@ -76,42 +76,65 @@ function getPlatformInfo() {
|
|
|
76
76
|
if (platform === "darwin") os = "macOS";
|
|
77
77
|
else if (platform === "win32") os = "Windows";
|
|
78
78
|
else if (platform === "linux") os = "Linux";
|
|
79
|
-
return `refineo-cli-node/0.0.
|
|
79
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
// src/api.ts
|
|
83
83
|
var USER_AGENT = getPlatformInfo();
|
|
84
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
85
|
+
function debug(...args) {
|
|
86
|
+
if (DEBUG) {
|
|
87
|
+
console.error("[refineo-debug]", ...args);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
84
90
|
async function apiRequest(path, options = {}) {
|
|
85
91
|
const credentials = loadCredentials();
|
|
86
92
|
if (!credentials) {
|
|
87
93
|
throw new Error("Not logged in. Run: refineo login");
|
|
88
94
|
}
|
|
95
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
96
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
89
97
|
let token = credentials.accessToken;
|
|
90
98
|
if (isTokenExpired(credentials)) {
|
|
99
|
+
debug("Token expired, refreshing...");
|
|
91
100
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
92
101
|
if (refreshed) {
|
|
93
102
|
token = refreshed.accessToken;
|
|
103
|
+
debug("Token refreshed successfully");
|
|
94
104
|
} else {
|
|
95
105
|
throw new Error("Session expired. Run: refineo login");
|
|
96
106
|
}
|
|
97
107
|
}
|
|
98
|
-
const
|
|
108
|
+
const url = `${API_BASE_URL}${path}`;
|
|
109
|
+
const headers = {
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
"Authorization": `Bearer ${token}`,
|
|
112
|
+
"User-Agent": USER_AGENT
|
|
113
|
+
};
|
|
114
|
+
debug("Request URL:", url);
|
|
115
|
+
debug("Request method:", options.method || "GET");
|
|
116
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
117
|
+
const response = await fetch(url, {
|
|
99
118
|
...options,
|
|
100
|
-
headers
|
|
101
|
-
"Content-Type": "application/json",
|
|
102
|
-
"Authorization": `Bearer ${token}`,
|
|
103
|
-
"User-Agent": USER_AGENT,
|
|
104
|
-
...options.headers
|
|
105
|
-
}
|
|
119
|
+
headers
|
|
106
120
|
});
|
|
121
|
+
debug("Response status:", response.status);
|
|
107
122
|
if (!response.ok) {
|
|
108
|
-
const
|
|
123
|
+
const errorText = await response.text();
|
|
124
|
+
debug("Error response:", errorText);
|
|
125
|
+
let error;
|
|
126
|
+
try {
|
|
127
|
+
error = JSON.parse(errorText);
|
|
128
|
+
} catch {
|
|
129
|
+
error = { error: errorText || "Unknown error" };
|
|
130
|
+
}
|
|
109
131
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
110
132
|
}
|
|
111
133
|
return response.json();
|
|
112
134
|
}
|
|
113
135
|
async function refreshToken(refreshTokenValue) {
|
|
114
136
|
try {
|
|
137
|
+
debug("Attempting token refresh...");
|
|
115
138
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
116
139
|
method: "POST",
|
|
117
140
|
headers: {
|
|
@@ -123,7 +146,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
123
146
|
grant_type: "refresh_token"
|
|
124
147
|
})
|
|
125
148
|
});
|
|
149
|
+
debug("Refresh response status:", response.status);
|
|
126
150
|
if (!response.ok) {
|
|
151
|
+
const errorText = await response.text();
|
|
152
|
+
debug("Refresh error:", errorText);
|
|
127
153
|
return null;
|
|
128
154
|
}
|
|
129
155
|
const data = await response.json();
|
|
@@ -135,8 +161,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
135
161
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
136
162
|
};
|
|
137
163
|
saveCredentials(credentials);
|
|
164
|
+
debug("Token refreshed and saved");
|
|
138
165
|
return credentials;
|
|
139
|
-
} catch {
|
|
166
|
+
} catch (err) {
|
|
167
|
+
debug("Refresh exception:", err);
|
|
140
168
|
return null;
|
|
141
169
|
}
|
|
142
170
|
}
|
package/dist/cjs/config.js
CHANGED
|
@@ -77,7 +77,7 @@ function getPlatformInfo() {
|
|
|
77
77
|
if (platform === "darwin") os = "macOS";
|
|
78
78
|
else if (platform === "win32") os = "Windows";
|
|
79
79
|
else if (platform === "linux") os = "Linux";
|
|
80
|
-
return `refineo-cli-node/0.0.
|
|
80
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
81
81
|
}
|
|
82
82
|
// Annotate the CommonJS export names for ESM import in node:
|
|
83
83
|
0 && (module.exports = {
|
package/dist/cjs/index.js
CHANGED
|
@@ -83,42 +83,65 @@ function getPlatformInfo() {
|
|
|
83
83
|
if (platform === "darwin") os = "macOS";
|
|
84
84
|
else if (platform === "win32") os = "Windows";
|
|
85
85
|
else if (platform === "linux") os = "Linux";
|
|
86
|
-
return `refineo-cli-node/0.0.
|
|
86
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// src/api.ts
|
|
90
90
|
var USER_AGENT = getPlatformInfo();
|
|
91
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
92
|
+
function debug(...args) {
|
|
93
|
+
if (DEBUG) {
|
|
94
|
+
console.error("[refineo-debug]", ...args);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
91
97
|
async function apiRequest(path, options = {}) {
|
|
92
98
|
const credentials = loadCredentials();
|
|
93
99
|
if (!credentials) {
|
|
94
100
|
throw new Error("Not logged in. Run: refineo login");
|
|
95
101
|
}
|
|
102
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
103
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
96
104
|
let token = credentials.accessToken;
|
|
97
105
|
if (isTokenExpired(credentials)) {
|
|
106
|
+
debug("Token expired, refreshing...");
|
|
98
107
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
99
108
|
if (refreshed) {
|
|
100
109
|
token = refreshed.accessToken;
|
|
110
|
+
debug("Token refreshed successfully");
|
|
101
111
|
} else {
|
|
102
112
|
throw new Error("Session expired. Run: refineo login");
|
|
103
113
|
}
|
|
104
114
|
}
|
|
105
|
-
const
|
|
115
|
+
const url = `${API_BASE_URL}${path}`;
|
|
116
|
+
const headers = {
|
|
117
|
+
"Content-Type": "application/json",
|
|
118
|
+
"Authorization": `Bearer ${token}`,
|
|
119
|
+
"User-Agent": USER_AGENT
|
|
120
|
+
};
|
|
121
|
+
debug("Request URL:", url);
|
|
122
|
+
debug("Request method:", options.method || "GET");
|
|
123
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
124
|
+
const response = await fetch(url, {
|
|
106
125
|
...options,
|
|
107
|
-
headers
|
|
108
|
-
"Content-Type": "application/json",
|
|
109
|
-
"Authorization": `Bearer ${token}`,
|
|
110
|
-
"User-Agent": USER_AGENT,
|
|
111
|
-
...options.headers
|
|
112
|
-
}
|
|
126
|
+
headers
|
|
113
127
|
});
|
|
128
|
+
debug("Response status:", response.status);
|
|
114
129
|
if (!response.ok) {
|
|
115
|
-
const
|
|
130
|
+
const errorText = await response.text();
|
|
131
|
+
debug("Error response:", errorText);
|
|
132
|
+
let error;
|
|
133
|
+
try {
|
|
134
|
+
error = JSON.parse(errorText);
|
|
135
|
+
} catch {
|
|
136
|
+
error = { error: errorText || "Unknown error" };
|
|
137
|
+
}
|
|
116
138
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
117
139
|
}
|
|
118
140
|
return response.json();
|
|
119
141
|
}
|
|
120
142
|
async function refreshToken(refreshTokenValue) {
|
|
121
143
|
try {
|
|
144
|
+
debug("Attempting token refresh...");
|
|
122
145
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
123
146
|
method: "POST",
|
|
124
147
|
headers: {
|
|
@@ -130,7 +153,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
130
153
|
grant_type: "refresh_token"
|
|
131
154
|
})
|
|
132
155
|
});
|
|
156
|
+
debug("Refresh response status:", response.status);
|
|
133
157
|
if (!response.ok) {
|
|
158
|
+
const errorText = await response.text();
|
|
159
|
+
debug("Refresh error:", errorText);
|
|
134
160
|
return null;
|
|
135
161
|
}
|
|
136
162
|
const data = await response.json();
|
|
@@ -142,8 +168,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
142
168
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
143
169
|
};
|
|
144
170
|
saveCredentials(credentials);
|
|
171
|
+
debug("Token refreshed and saved");
|
|
145
172
|
return credentials;
|
|
146
|
-
} catch {
|
|
173
|
+
} catch (err) {
|
|
174
|
+
debug("Refresh exception:", err);
|
|
147
175
|
return null;
|
|
148
176
|
}
|
|
149
177
|
}
|
package/dist/esm/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAGlB,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAGlB,cAAc,EACd,UAAU,EACX,MAAM,YAAY,CAAC;AAuHpB;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAcvE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,IAAI,GAClB,OAAO,CAAC,WAAW,CAAC,CA8DtB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,UAAU,GAAG,UAAuB,GAC1C,OAAO,CAAC,cAAc,CAAC,CAqBzB;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,CAoBpD"}
|
package/dist/esm/api.js
CHANGED
|
@@ -40,42 +40,65 @@ function getPlatformInfo() {
|
|
|
40
40
|
if (platform === "darwin") os = "macOS";
|
|
41
41
|
else if (platform === "win32") os = "Windows";
|
|
42
42
|
else if (platform === "linux") os = "Linux";
|
|
43
|
-
return `refineo-cli-node/0.0.
|
|
43
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// src/api.ts
|
|
47
47
|
var USER_AGENT = getPlatformInfo();
|
|
48
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
49
|
+
function debug(...args) {
|
|
50
|
+
if (DEBUG) {
|
|
51
|
+
console.error("[refineo-debug]", ...args);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
48
54
|
async function apiRequest(path, options = {}) {
|
|
49
55
|
const credentials = loadCredentials();
|
|
50
56
|
if (!credentials) {
|
|
51
57
|
throw new Error("Not logged in. Run: refineo login");
|
|
52
58
|
}
|
|
59
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
60
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
53
61
|
let token = credentials.accessToken;
|
|
54
62
|
if (isTokenExpired(credentials)) {
|
|
63
|
+
debug("Token expired, refreshing...");
|
|
55
64
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
56
65
|
if (refreshed) {
|
|
57
66
|
token = refreshed.accessToken;
|
|
67
|
+
debug("Token refreshed successfully");
|
|
58
68
|
} else {
|
|
59
69
|
throw new Error("Session expired. Run: refineo login");
|
|
60
70
|
}
|
|
61
71
|
}
|
|
62
|
-
const
|
|
72
|
+
const url = `${API_BASE_URL}${path}`;
|
|
73
|
+
const headers = {
|
|
74
|
+
"Content-Type": "application/json",
|
|
75
|
+
"Authorization": `Bearer ${token}`,
|
|
76
|
+
"User-Agent": USER_AGENT
|
|
77
|
+
};
|
|
78
|
+
debug("Request URL:", url);
|
|
79
|
+
debug("Request method:", options.method || "GET");
|
|
80
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
81
|
+
const response = await fetch(url, {
|
|
63
82
|
...options,
|
|
64
|
-
headers
|
|
65
|
-
"Content-Type": "application/json",
|
|
66
|
-
"Authorization": `Bearer ${token}`,
|
|
67
|
-
"User-Agent": USER_AGENT,
|
|
68
|
-
...options.headers
|
|
69
|
-
}
|
|
83
|
+
headers
|
|
70
84
|
});
|
|
85
|
+
debug("Response status:", response.status);
|
|
71
86
|
if (!response.ok) {
|
|
72
|
-
const
|
|
87
|
+
const errorText = await response.text();
|
|
88
|
+
debug("Error response:", errorText);
|
|
89
|
+
let error;
|
|
90
|
+
try {
|
|
91
|
+
error = JSON.parse(errorText);
|
|
92
|
+
} catch {
|
|
93
|
+
error = { error: errorText || "Unknown error" };
|
|
94
|
+
}
|
|
73
95
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
74
96
|
}
|
|
75
97
|
return response.json();
|
|
76
98
|
}
|
|
77
99
|
async function refreshToken(refreshTokenValue) {
|
|
78
100
|
try {
|
|
101
|
+
debug("Attempting token refresh...");
|
|
79
102
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
80
103
|
method: "POST",
|
|
81
104
|
headers: {
|
|
@@ -87,7 +110,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
87
110
|
grant_type: "refresh_token"
|
|
88
111
|
})
|
|
89
112
|
});
|
|
113
|
+
debug("Refresh response status:", response.status);
|
|
90
114
|
if (!response.ok) {
|
|
115
|
+
const errorText = await response.text();
|
|
116
|
+
debug("Refresh error:", errorText);
|
|
91
117
|
return null;
|
|
92
118
|
}
|
|
93
119
|
const data = await response.json();
|
|
@@ -99,8 +125,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
99
125
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
100
126
|
};
|
|
101
127
|
saveCredentials(credentials);
|
|
128
|
+
debug("Token refreshed and saved");
|
|
102
129
|
return credentials;
|
|
103
|
-
} catch {
|
|
130
|
+
} catch (err) {
|
|
131
|
+
debug("Refresh exception:", err);
|
|
104
132
|
return null;
|
|
105
133
|
}
|
|
106
134
|
}
|
package/dist/esm/cli.js
CHANGED
|
@@ -53,42 +53,65 @@ function getPlatformInfo() {
|
|
|
53
53
|
if (platform === "darwin") os = "macOS";
|
|
54
54
|
else if (platform === "win32") os = "Windows";
|
|
55
55
|
else if (platform === "linux") os = "Linux";
|
|
56
|
-
return `refineo-cli-node/0.0.
|
|
56
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// src/api.ts
|
|
60
60
|
var USER_AGENT = getPlatformInfo();
|
|
61
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
62
|
+
function debug(...args) {
|
|
63
|
+
if (DEBUG) {
|
|
64
|
+
console.error("[refineo-debug]", ...args);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
61
67
|
async function apiRequest(path, options = {}) {
|
|
62
68
|
const credentials = loadCredentials();
|
|
63
69
|
if (!credentials) {
|
|
64
70
|
throw new Error("Not logged in. Run: refineo login");
|
|
65
71
|
}
|
|
72
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
73
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
66
74
|
let token = credentials.accessToken;
|
|
67
75
|
if (isTokenExpired(credentials)) {
|
|
76
|
+
debug("Token expired, refreshing...");
|
|
68
77
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
69
78
|
if (refreshed) {
|
|
70
79
|
token = refreshed.accessToken;
|
|
80
|
+
debug("Token refreshed successfully");
|
|
71
81
|
} else {
|
|
72
82
|
throw new Error("Session expired. Run: refineo login");
|
|
73
83
|
}
|
|
74
84
|
}
|
|
75
|
-
const
|
|
85
|
+
const url = `${API_BASE_URL}${path}`;
|
|
86
|
+
const headers = {
|
|
87
|
+
"Content-Type": "application/json",
|
|
88
|
+
"Authorization": `Bearer ${token}`,
|
|
89
|
+
"User-Agent": USER_AGENT
|
|
90
|
+
};
|
|
91
|
+
debug("Request URL:", url);
|
|
92
|
+
debug("Request method:", options.method || "GET");
|
|
93
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
94
|
+
const response = await fetch(url, {
|
|
76
95
|
...options,
|
|
77
|
-
headers
|
|
78
|
-
"Content-Type": "application/json",
|
|
79
|
-
"Authorization": `Bearer ${token}`,
|
|
80
|
-
"User-Agent": USER_AGENT,
|
|
81
|
-
...options.headers
|
|
82
|
-
}
|
|
96
|
+
headers
|
|
83
97
|
});
|
|
98
|
+
debug("Response status:", response.status);
|
|
84
99
|
if (!response.ok) {
|
|
85
|
-
const
|
|
100
|
+
const errorText = await response.text();
|
|
101
|
+
debug("Error response:", errorText);
|
|
102
|
+
let error;
|
|
103
|
+
try {
|
|
104
|
+
error = JSON.parse(errorText);
|
|
105
|
+
} catch {
|
|
106
|
+
error = { error: errorText || "Unknown error" };
|
|
107
|
+
}
|
|
86
108
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
87
109
|
}
|
|
88
110
|
return response.json();
|
|
89
111
|
}
|
|
90
112
|
async function refreshToken(refreshTokenValue) {
|
|
91
113
|
try {
|
|
114
|
+
debug("Attempting token refresh...");
|
|
92
115
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
93
116
|
method: "POST",
|
|
94
117
|
headers: {
|
|
@@ -100,7 +123,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
100
123
|
grant_type: "refresh_token"
|
|
101
124
|
})
|
|
102
125
|
});
|
|
126
|
+
debug("Refresh response status:", response.status);
|
|
103
127
|
if (!response.ok) {
|
|
128
|
+
const errorText = await response.text();
|
|
129
|
+
debug("Refresh error:", errorText);
|
|
104
130
|
return null;
|
|
105
131
|
}
|
|
106
132
|
const data = await response.json();
|
|
@@ -112,8 +138,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
112
138
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
113
139
|
};
|
|
114
140
|
saveCredentials(credentials);
|
|
141
|
+
debug("Token refreshed and saved");
|
|
115
142
|
return credentials;
|
|
116
|
-
} catch {
|
|
143
|
+
} catch (err) {
|
|
144
|
+
debug("Refresh exception:", err);
|
|
117
145
|
return null;
|
|
118
146
|
}
|
|
119
147
|
}
|
package/dist/esm/config.js
CHANGED
|
@@ -48,7 +48,7 @@ function getPlatformInfo() {
|
|
|
48
48
|
if (platform === "darwin") os = "macOS";
|
|
49
49
|
else if (platform === "win32") os = "Windows";
|
|
50
50
|
else if (platform === "linux") os = "Linux";
|
|
51
|
-
return `refineo-cli-node/0.0.
|
|
51
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
52
52
|
}
|
|
53
53
|
export {
|
|
54
54
|
API_BASE_URL,
|
package/dist/esm/index.js
CHANGED
|
@@ -48,42 +48,65 @@ function getPlatformInfo() {
|
|
|
48
48
|
if (platform === "darwin") os = "macOS";
|
|
49
49
|
else if (platform === "win32") os = "Windows";
|
|
50
50
|
else if (platform === "linux") os = "Linux";
|
|
51
|
-
return `refineo-cli-node/0.0.
|
|
51
|
+
return `refineo-cli-node/0.0.7 (${os}; ${arch}) Node/${nodeVersion}`;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
// src/api.ts
|
|
55
55
|
var USER_AGENT = getPlatformInfo();
|
|
56
|
+
var DEBUG = process.env.REFINEO_DEBUG === "1" || process.env.REFINEO_DEBUG === "true";
|
|
57
|
+
function debug(...args) {
|
|
58
|
+
if (DEBUG) {
|
|
59
|
+
console.error("[refineo-debug]", ...args);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
56
62
|
async function apiRequest(path, options = {}) {
|
|
57
63
|
const credentials = loadCredentials();
|
|
58
64
|
if (!credentials) {
|
|
59
65
|
throw new Error("Not logged in. Run: refineo login");
|
|
60
66
|
}
|
|
67
|
+
debug("Credentials loaded, email:", credentials.user.email);
|
|
68
|
+
debug("Token expiresAt:", credentials.expiresAt, "now:", Math.floor(Date.now() / 1e3));
|
|
61
69
|
let token = credentials.accessToken;
|
|
62
70
|
if (isTokenExpired(credentials)) {
|
|
71
|
+
debug("Token expired, refreshing...");
|
|
63
72
|
const refreshed = await refreshToken(credentials.refreshToken);
|
|
64
73
|
if (refreshed) {
|
|
65
74
|
token = refreshed.accessToken;
|
|
75
|
+
debug("Token refreshed successfully");
|
|
66
76
|
} else {
|
|
67
77
|
throw new Error("Session expired. Run: refineo login");
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
|
-
const
|
|
80
|
+
const url = `${API_BASE_URL}${path}`;
|
|
81
|
+
const headers = {
|
|
82
|
+
"Content-Type": "application/json",
|
|
83
|
+
"Authorization": `Bearer ${token}`,
|
|
84
|
+
"User-Agent": USER_AGENT
|
|
85
|
+
};
|
|
86
|
+
debug("Request URL:", url);
|
|
87
|
+
debug("Request method:", options.method || "GET");
|
|
88
|
+
debug("Authorization header set:", headers.Authorization.substring(0, 20) + "...");
|
|
89
|
+
const response = await fetch(url, {
|
|
71
90
|
...options,
|
|
72
|
-
headers
|
|
73
|
-
"Content-Type": "application/json",
|
|
74
|
-
"Authorization": `Bearer ${token}`,
|
|
75
|
-
"User-Agent": USER_AGENT,
|
|
76
|
-
...options.headers
|
|
77
|
-
}
|
|
91
|
+
headers
|
|
78
92
|
});
|
|
93
|
+
debug("Response status:", response.status);
|
|
79
94
|
if (!response.ok) {
|
|
80
|
-
const
|
|
95
|
+
const errorText = await response.text();
|
|
96
|
+
debug("Error response:", errorText);
|
|
97
|
+
let error;
|
|
98
|
+
try {
|
|
99
|
+
error = JSON.parse(errorText);
|
|
100
|
+
} catch {
|
|
101
|
+
error = { error: errorText || "Unknown error" };
|
|
102
|
+
}
|
|
81
103
|
throw new Error(error.message || error.error_description || error.error || `HTTP ${response.status}`);
|
|
82
104
|
}
|
|
83
105
|
return response.json();
|
|
84
106
|
}
|
|
85
107
|
async function refreshToken(refreshTokenValue) {
|
|
86
108
|
try {
|
|
109
|
+
debug("Attempting token refresh...");
|
|
87
110
|
const response = await fetch(`${API_BASE_URL}/api/auth/device/refresh`, {
|
|
88
111
|
method: "POST",
|
|
89
112
|
headers: {
|
|
@@ -95,7 +118,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
95
118
|
grant_type: "refresh_token"
|
|
96
119
|
})
|
|
97
120
|
});
|
|
121
|
+
debug("Refresh response status:", response.status);
|
|
98
122
|
if (!response.ok) {
|
|
123
|
+
const errorText = await response.text();
|
|
124
|
+
debug("Refresh error:", errorText);
|
|
99
125
|
return null;
|
|
100
126
|
}
|
|
101
127
|
const data = await response.json();
|
|
@@ -107,8 +133,10 @@ async function refreshToken(refreshTokenValue) {
|
|
|
107
133
|
user: oldCredentials?.user || { email: "", tier: "" }
|
|
108
134
|
};
|
|
109
135
|
saveCredentials(credentials);
|
|
136
|
+
debug("Token refreshed and saved");
|
|
110
137
|
return credentials;
|
|
111
|
-
} catch {
|
|
138
|
+
} catch (err) {
|
|
139
|
+
debug("Refresh exception:", err);
|
|
112
140
|
return null;
|
|
113
141
|
}
|
|
114
142
|
}
|