git-slot-machine 1.3.2 → 1.4.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/.claude/settings.local.json +15 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +5 -1
- package/dist/api.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/utils/fetch-polyfill.d.ts +2 -0
- package/dist/utils/fetch-polyfill.d.ts.map +1 -0
- package/dist/utils/fetch-polyfill.js +12 -0
- package/dist/utils/fetch-polyfill.js.map +1 -0
- package/package.json +4 -2
- package/src/api.ts +5 -1
- package/src/utils/fetch-polyfill.ts +13 -0
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAkBD,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkCD,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuBhF;AAGD,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAoBlE;AAGD,wBAAsB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwBhF;AAGD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAejE;AAGD,wBAAsB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAe/C"}
|
package/dist/api.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getApiUrl, getApiToken, isSyncEnabled } from './config.js';
|
|
2
|
+
import { getFetch } from './utils/fetch-polyfill.js';
|
|
2
3
|
// Fallback domains to try in order (if primary fails)
|
|
3
4
|
const FALLBACK_DOMAINS = [
|
|
4
5
|
'https://gitslotmachinecom-main-vilmm1.laravel.cloud',
|
|
@@ -22,6 +23,7 @@ export function isApiAvailable() {
|
|
|
22
23
|
// Helper to try API call with fallback domains
|
|
23
24
|
async function fetchWithFallback(endpoint, options) {
|
|
24
25
|
const configuredUrl = getApiUrl();
|
|
26
|
+
const fetchFn = await getFetch();
|
|
25
27
|
// Build list of URLs to try: configured URL first, then fallbacks (excluding duplicates)
|
|
26
28
|
const urlsToTry = [
|
|
27
29
|
configuredUrl,
|
|
@@ -30,7 +32,7 @@ async function fetchWithFallback(endpoint, options) {
|
|
|
30
32
|
for (const baseUrl of urlsToTry) {
|
|
31
33
|
try {
|
|
32
34
|
const url = `${baseUrl.replace(/\/api$/, '')}/api${endpoint}`;
|
|
33
|
-
const response = await
|
|
35
|
+
const response = await fetchFn(url, options);
|
|
34
36
|
if (response.ok) {
|
|
35
37
|
return response;
|
|
36
38
|
}
|
|
@@ -101,12 +103,14 @@ export async function createToken(githubUsername) {
|
|
|
101
103
|
}),
|
|
102
104
|
});
|
|
103
105
|
if (!response) {
|
|
106
|
+
console.error('Failed to reach API server. Please check your network connection.');
|
|
104
107
|
return null;
|
|
105
108
|
}
|
|
106
109
|
const result = await response.json();
|
|
107
110
|
return result.data?.token || null;
|
|
108
111
|
}
|
|
109
112
|
catch (error) {
|
|
113
|
+
console.error('API request failed:', error.message);
|
|
110
114
|
return null;
|
|
111
115
|
}
|
|
112
116
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-polyfill.d.ts","sourceRoot":"","sources":["../../src/utils/fetch-polyfill.ts"],"names":[],"mappings":"AAGA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,CAStD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Polyfill fetch for Node.js < 18
|
|
2
|
+
// Node 18+ has native fetch, older versions need node-fetch
|
|
3
|
+
export async function getFetch() {
|
|
4
|
+
// Check if native fetch exists (Node 18+)
|
|
5
|
+
if (typeof globalThis.fetch !== 'undefined') {
|
|
6
|
+
return globalThis.fetch;
|
|
7
|
+
}
|
|
8
|
+
// Fall back to node-fetch for Node < 18
|
|
9
|
+
const nodeFetch = await import('node-fetch');
|
|
10
|
+
return nodeFetch.default;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=fetch-polyfill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-polyfill.js","sourceRoot":"","sources":["../../src/utils/fetch-polyfill.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,4DAA4D;AAE5D,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,0CAA0C;IAC1C,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QAC5C,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,wCAAwC;IACxC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC,OAAkC,CAAC;AACtD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "git-slot-machine",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Turn your git commits into a slot machine game! CLI tool with global leaderboards and win streaks.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/jest": "^30.0.0",
|
|
40
40
|
"@types/node": "^20.0.0",
|
|
41
|
+
"@types/node-fetch": "^2.6.11",
|
|
41
42
|
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
42
43
|
"@typescript-eslint/parser": "^6.0.0",
|
|
43
44
|
"eslint": "^8.0.0",
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
},
|
|
48
49
|
"dependencies": {
|
|
49
50
|
"chalk": "^5.3.0",
|
|
50
|
-
"commander": "^11.0.0"
|
|
51
|
+
"commander": "^11.0.0",
|
|
52
|
+
"node-fetch": "^3.3.2"
|
|
51
53
|
}
|
|
52
54
|
}
|
package/src/api.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getApiUrl, getApiToken, isSyncEnabled } from './config.js';
|
|
2
|
+
import { getFetch } from './utils/fetch-polyfill.js';
|
|
2
3
|
|
|
3
4
|
// Fallback domains to try in order (if primary fails)
|
|
4
5
|
const FALLBACK_DOMAINS = [
|
|
@@ -65,6 +66,7 @@ export interface PlayResponse {
|
|
|
65
66
|
// Helper to try API call with fallback domains
|
|
66
67
|
async function fetchWithFallback(endpoint: string, options: RequestInit): Promise<Response | null> {
|
|
67
68
|
const configuredUrl = getApiUrl();
|
|
69
|
+
const fetchFn = await getFetch();
|
|
68
70
|
|
|
69
71
|
// Build list of URLs to try: configured URL first, then fallbacks (excluding duplicates)
|
|
70
72
|
const urlsToTry = [
|
|
@@ -75,7 +77,7 @@ async function fetchWithFallback(endpoint: string, options: RequestInit): Promis
|
|
|
75
77
|
for (const baseUrl of urlsToTry) {
|
|
76
78
|
try {
|
|
77
79
|
const url = `${baseUrl.replace(/\/api$/, '')}/api${endpoint}`;
|
|
78
|
-
const response = await
|
|
80
|
+
const response = await fetchFn(url, options);
|
|
79
81
|
|
|
80
82
|
if (response.ok) {
|
|
81
83
|
return response;
|
|
@@ -156,12 +158,14 @@ export async function createToken(githubUsername: string): Promise<string | null
|
|
|
156
158
|
});
|
|
157
159
|
|
|
158
160
|
if (!response) {
|
|
161
|
+
console.error('Failed to reach API server. Please check your network connection.');
|
|
159
162
|
return null;
|
|
160
163
|
}
|
|
161
164
|
|
|
162
165
|
const result = await response.json() as ApiResponse<{ token: string }>;
|
|
163
166
|
return result.data?.token || null;
|
|
164
167
|
} catch (error) {
|
|
168
|
+
console.error('API request failed:', (error as Error).message);
|
|
165
169
|
return null;
|
|
166
170
|
}
|
|
167
171
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Polyfill fetch for Node.js < 18
|
|
2
|
+
// Node 18+ has native fetch, older versions need node-fetch
|
|
3
|
+
|
|
4
|
+
export async function getFetch(): Promise<typeof fetch> {
|
|
5
|
+
// Check if native fetch exists (Node 18+)
|
|
6
|
+
if (typeof globalThis.fetch !== 'undefined') {
|
|
7
|
+
return globalThis.fetch;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Fall back to node-fetch for Node < 18
|
|
11
|
+
const nodeFetch = await import('node-fetch');
|
|
12
|
+
return nodeFetch.default as unknown as typeof fetch;
|
|
13
|
+
}
|