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.
@@ -0,0 +1,15 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run build:*)",
5
+ "Bash(git add:*)",
6
+ "Bash(git commit:*)",
7
+ "Bash(git push)",
8
+ "Bash(git push:*)",
9
+ "Bash(npm publish)",
10
+ "Bash(npm config set:*)"
11
+ ],
12
+ "deny": [],
13
+ "ask": []
14
+ }
15
+ }
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAOA,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;AAiCD,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,CAsBhF;AAGD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAejE;AAGD,wBAAsB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAe/C"}
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 fetch(url, options);
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":"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"}
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,2 @@
1
+ export declare function getFetch(): Promise<typeof fetch>;
2
+ //# sourceMappingURL=fetch-polyfill.d.ts.map
@@ -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.2",
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 fetch(url, options);
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
+ }