git-slot-machine 1.0.0 → 1.1.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/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # 🎰 Git Slot Machine
2
2
 
3
+ [![Git Slot Machine](https://gitslotmachine.com/badge/than/git-slot-machine.svg)](https://gitslotmachine.com)
4
+
5
+ [![npm version](https://img.shields.io/npm/v/git-slot-machine.svg)](https://www.npmjs.com/package/git-slot-machine)
6
+ [![npm downloads](https://img.shields.io/npm/dt/git-slot-machine.svg)](https://www.npmjs.com/package/git-slot-machine)
7
+ [![license](https://img.shields.io/npm/l/git-slot-machine.svg)](https://github.com/than/git-slot-machine/blob/main/LICENSE)
8
+ [![GitHub stars](https://img.shields.io/github/stars/than/git-slot-machine.svg)](https://github.com/than/git-slot-machine/stargazers)
9
+
3
10
  **Turn every git commit into a slot machine pull!**
4
11
 
5
12
  A fun CLI tool that analyzes your commit hashes and rewards you based on patterns found in the first 7 hex characters. Automatically plays after each commit via a post-commit hook, syncs with a global leaderboard, and tracks your stats across all your repos.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA6BA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA2FjD"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA4CA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAmHjD"}
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.initCommand = initCommand;
40
40
  const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
+ const readline = __importStar(require("readline"));
42
43
  const chalk_1 = __importDefault(require("chalk"));
43
44
  const git_1 = require("../utils/git");
44
45
  const post_commit_1 = require("../templates/post-commit");
@@ -63,6 +64,18 @@ async function isRepoPublic(owner, repo) {
63
64
  return null;
64
65
  }
65
66
  }
67
+ function askQuestion(question) {
68
+ const rl = readline.createInterface({
69
+ input: process.stdin,
70
+ output: process.stdout
71
+ });
72
+ return new Promise((resolve) => {
73
+ rl.question(question, (answer) => {
74
+ rl.close();
75
+ resolve(answer.trim().toLowerCase());
76
+ });
77
+ });
78
+ }
66
79
  async function initCommand() {
67
80
  // Check if git repo
68
81
  if (!(0, git_1.isGitRepo)()) {
@@ -76,13 +89,11 @@ async function initCommand() {
76
89
  console.log();
77
90
  console.error(chalk_1.default.red('Error: No GitHub remote detected'));
78
91
  console.log();
79
- console.log(chalk_1.default.yellow('Git Slot Machine requires a public GitHub repository.'));
92
+ console.log(chalk_1.default.yellow('Git Slot Machine requires a GitHub repository.'));
80
93
  console.log();
81
94
  console.log(chalk_1.default.dim('Add a GitHub remote to this repo:'));
82
95
  console.log(chalk_1.default.cyan(' git remote add origin https://github.com/username/repo.git'));
83
96
  console.log();
84
- console.log(chalk_1.default.dim('This prevents farming points in private/local repos.'));
85
- console.log(chalk_1.default.dim('Your commits must be publicly verifiable.'));
86
97
  process.exit(1);
87
98
  }
88
99
  const existingUsername = (0, config_1.getGitHubUsername)();
@@ -93,22 +104,47 @@ async function initCommand() {
93
104
  // Check if repository is public
94
105
  console.log(chalk_1.default.dim('Checking repository visibility...'));
95
106
  const isPublic = await isRepoPublic(repoInfo.owner, repoInfo.name);
107
+ let usePrivacyMode = false;
96
108
  if (isPublic === false) {
109
+ console.log(chalk_1.default.yellow('⚠️ Private repository detected'));
97
110
  console.log();
98
- console.error(chalk_1.default.red('Error: Private repository detected'));
99
- console.log();
100
- console.log(chalk_1.default.yellow('Git Slot Machine only supports public repositories.'));
111
+ console.log(chalk_1.default.cyan('Privacy Mode Available'));
112
+ console.log(chalk_1.default.dim('You can still use Git Slot Machine with privacy mode enabled.'));
101
113
  console.log();
102
- console.log(chalk_1.default.dim('Why? Your commit hashes would be visible on the public'));
103
- console.log(chalk_1.default.dim('leaderboard, which could expose information about your'));
104
- console.log(chalk_1.default.dim('private repository.'));
114
+ console.log(chalk_1.default.yellow('What happens in privacy mode:'));
115
+ console.log(chalk_1.default.dim(' Repository name/org are NOT stored on the server'));
116
+ console.log(chalk_1.default.dim(' • Sent as "private/private" to the API'));
117
+ console.log(chalk_1.default.dim(' • Displayed as "*******/*******" on leaderboard'));
118
+ console.log(chalk_1.default.dim(' • Your GitHub username is still public'));
119
+ console.log(chalk_1.default.dim(' • All private repos share one balance'));
105
120
  console.log();
106
- console.log(chalk_1.default.dim('Please use git-slot-machine with a public repository.'));
107
- process.exit(1);
121
+ const answer = await askQuestion(chalk_1.default.green('Enable privacy mode? (y/n): '));
122
+ if (answer === 'y' || answer === 'yes') {
123
+ usePrivacyMode = true;
124
+ (0, config_1.setPrivateRepo)(true);
125
+ console.log(chalk_1.default.green('✓ Privacy mode enabled'));
126
+ console.log(chalk_1.default.dim('Repository details will never be sent to the server.'));
127
+ }
128
+ else {
129
+ console.log();
130
+ console.log(chalk_1.default.red('Cannot proceed without privacy mode for private repos.'));
131
+ console.log(chalk_1.default.dim('Please make the repository public or enable privacy mode.'));
132
+ process.exit(1);
133
+ }
108
134
  }
109
- if (isPublic === null) {
135
+ else if (isPublic === null) {
110
136
  console.log(chalk_1.default.yellow('⚠️ Could not verify repository visibility'));
111
- console.log(chalk_1.default.dim('Proceeding with installation...'));
137
+ console.log();
138
+ const answer = await askQuestion(chalk_1.default.green('Is this a private repository? (y/n): '));
139
+ if (answer === 'y' || answer === 'yes') {
140
+ usePrivacyMode = true;
141
+ (0, config_1.setPrivateRepo)(true);
142
+ console.log(chalk_1.default.green('✓ Privacy mode enabled'));
143
+ console.log(chalk_1.default.dim('Repository details will never be sent to the server.'));
144
+ }
145
+ else {
146
+ console.log(chalk_1.default.dim('Proceeding with public repository mode...'));
147
+ }
112
148
  }
113
149
  else {
114
150
  console.log(chalk_1.default.green('✓ Public repository confirmed'));
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -3,6 +3,7 @@ interface Config {
3
3
  apiUrl?: string;
4
4
  apiToken?: string;
5
5
  syncEnabled?: boolean;
6
+ privateRepo?: boolean;
6
7
  }
7
8
  export declare function getConfig(): Config;
8
9
  export declare function getRepoConfig(): Config;
@@ -18,6 +19,8 @@ export declare function setApiToken(token: string): void;
18
19
  export declare function clearApiToken(): void;
19
20
  export declare function isSyncEnabled(): boolean;
20
21
  export declare function setSyncEnabled(enabled: boolean): void;
22
+ export declare function isPrivateRepo(): boolean;
23
+ export declare function setPrivateRepo(isPrivate: boolean): void;
21
24
  export declare function getRepoInfo(): {
22
25
  owner: string;
23
26
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqBD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAGD,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAGD,wBAAgB,eAAe,IAAI,MAAM,CAaxC;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGnD;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAGjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C;AAED,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAG3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIrD;AAED,wBAAgB,WAAW,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBjF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,UAAU,MAAM;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqBD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAGD,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAGD,wBAAgB,eAAe,IAAI,MAAM,CAaxC;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGnD;AAGD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGrD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAGjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAGlC;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAI3C;AAED,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAG3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAIrD;AAED,wBAAgB,aAAa,IAAI,OAAO,CAGvC;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAIvD;AAED,wBAAgB,WAAW,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA+BjF"}
package/dist/config.js CHANGED
@@ -17,6 +17,8 @@ exports.setApiToken = setApiToken;
17
17
  exports.clearApiToken = clearApiToken;
18
18
  exports.isSyncEnabled = isSyncEnabled;
19
19
  exports.setSyncEnabled = setSyncEnabled;
20
+ exports.isPrivateRepo = isPrivateRepo;
21
+ exports.setPrivateRepo = setPrivateRepo;
20
22
  exports.getRepoInfo = getRepoInfo;
21
23
  const fs_1 = __importDefault(require("fs"));
22
24
  const path_1 = __importDefault(require("path"));
@@ -121,6 +123,15 @@ function setSyncEnabled(enabled) {
121
123
  config.syncEnabled = enabled;
122
124
  saveGlobalConfig(config);
123
125
  }
126
+ function isPrivateRepo() {
127
+ const config = getRepoConfig();
128
+ return config.privateRepo === true;
129
+ }
130
+ function setPrivateRepo(isPrivate) {
131
+ const config = getRepoConfig();
132
+ config.privateRepo = isPrivate;
133
+ saveRepoConfig(config);
134
+ }
124
135
  function getRepoInfo() {
125
136
  try {
126
137
  const remoteUrl = (0, child_process_1.execSync)('git config --get remote.origin.url', { encoding: 'utf-8' }).trim();
@@ -129,6 +140,14 @@ function getRepoInfo() {
129
140
  if (match) {
130
141
  const owner = match[1];
131
142
  const name = match[2];
143
+ // If privacy mode is enabled, return obfuscated info
144
+ if (isPrivateRepo()) {
145
+ return {
146
+ owner: 'private',
147
+ name: 'private',
148
+ url: 'private',
149
+ };
150
+ }
132
151
  return {
133
152
  owner,
134
153
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-slot-machine",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Turn your git commits into a slot machine game! CLI tool with global leaderboards and win streaks.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -1,9 +1,10 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
+ import * as readline from 'readline';
3
4
  import chalk from 'chalk';
4
5
  import { isGitRepo } from '../utils/git';
5
6
  import { POST_COMMIT_HOOK } from '../templates/post-commit';
6
- import { getRepoInfo, setGitHubUsername, getGitHubUsername } from '../config';
7
+ import { getRepoInfo, setGitHubUsername, getGitHubUsername, setPrivateRepo } from '../config';
7
8
 
8
9
  async function isRepoPublic(owner: string, repo: string): Promise<boolean | null> {
9
10
  try {
@@ -27,6 +28,20 @@ async function isRepoPublic(owner: string, repo: string): Promise<boolean | null
27
28
  }
28
29
  }
29
30
 
31
+ function askQuestion(question: string): Promise<string> {
32
+ const rl = readline.createInterface({
33
+ input: process.stdin,
34
+ output: process.stdout
35
+ });
36
+
37
+ return new Promise((resolve) => {
38
+ rl.question(question, (answer) => {
39
+ rl.close();
40
+ resolve(answer.trim().toLowerCase());
41
+ });
42
+ });
43
+ }
44
+
30
45
  export async function initCommand(): Promise<void> {
31
46
  // Check if git repo
32
47
  if (!isGitRepo()) {
@@ -42,13 +57,11 @@ export async function initCommand(): Promise<void> {
42
57
  console.log();
43
58
  console.error(chalk.red('Error: No GitHub remote detected'));
44
59
  console.log();
45
- console.log(chalk.yellow('Git Slot Machine requires a public GitHub repository.'));
60
+ console.log(chalk.yellow('Git Slot Machine requires a GitHub repository.'));
46
61
  console.log();
47
62
  console.log(chalk.dim('Add a GitHub remote to this repo:'));
48
63
  console.log(chalk.cyan(' git remote add origin https://github.com/username/repo.git'));
49
64
  console.log();
50
- console.log(chalk.dim('This prevents farming points in private/local repos.'));
51
- console.log(chalk.dim('Your commits must be publicly verifiable.'));
52
65
  process.exit(1);
53
66
  }
54
67
 
@@ -62,23 +75,49 @@ export async function initCommand(): Promise<void> {
62
75
  console.log(chalk.dim('Checking repository visibility...'));
63
76
  const isPublic = await isRepoPublic(repoInfo.owner, repoInfo.name);
64
77
 
78
+ let usePrivacyMode = false;
79
+
65
80
  if (isPublic === false) {
81
+ console.log(chalk.yellow('⚠️ Private repository detected'));
66
82
  console.log();
67
- console.error(chalk.red('Error: Private repository detected'));
68
- console.log();
69
- console.log(chalk.yellow('Git Slot Machine only supports public repositories.'));
83
+ console.log(chalk.cyan('Privacy Mode Available'));
84
+ console.log(chalk.dim('You can still use Git Slot Machine with privacy mode enabled.'));
70
85
  console.log();
71
- console.log(chalk.dim('Why? Your commit hashes would be visible on the public'));
72
- console.log(chalk.dim('leaderboard, which could expose information about your'));
73
- console.log(chalk.dim('private repository.'));
86
+ console.log(chalk.yellow('What happens in privacy mode:'));
87
+ console.log(chalk.dim(' Repository name/org are NOT stored on the server'));
88
+ console.log(chalk.dim(' • Sent as "private/private" to the API'));
89
+ console.log(chalk.dim(' • Displayed as "*******/*******" on leaderboard'));
90
+ console.log(chalk.dim(' • Your GitHub username is still public'));
91
+ console.log(chalk.dim(' • All private repos share one balance'));
74
92
  console.log();
75
- console.log(chalk.dim('Please use git-slot-machine with a public repository.'));
76
- process.exit(1);
77
- }
78
93
 
79
- if (isPublic === null) {
94
+ const answer = await askQuestion(chalk.green('Enable privacy mode? (y/n): '));
95
+
96
+ if (answer === 'y' || answer === 'yes') {
97
+ usePrivacyMode = true;
98
+ setPrivateRepo(true);
99
+ console.log(chalk.green('✓ Privacy mode enabled'));
100
+ console.log(chalk.dim('Repository details will never be sent to the server.'));
101
+ } else {
102
+ console.log();
103
+ console.log(chalk.red('Cannot proceed without privacy mode for private repos.'));
104
+ console.log(chalk.dim('Please make the repository public or enable privacy mode.'));
105
+ process.exit(1);
106
+ }
107
+ } else if (isPublic === null) {
80
108
  console.log(chalk.yellow('⚠️ Could not verify repository visibility'));
81
- console.log(chalk.dim('Proceeding with installation...'));
109
+ console.log();
110
+
111
+ const answer = await askQuestion(chalk.green('Is this a private repository? (y/n): '));
112
+
113
+ if (answer === 'y' || answer === 'yes') {
114
+ usePrivacyMode = true;
115
+ setPrivateRepo(true);
116
+ console.log(chalk.green('✓ Privacy mode enabled'));
117
+ console.log(chalk.dim('Repository details will never be sent to the server.'));
118
+ } else {
119
+ console.log(chalk.dim('Proceeding with public repository mode...'));
120
+ }
82
121
  } else {
83
122
  console.log(chalk.green('✓ Public repository confirmed'));
84
123
  }
package/src/config.ts CHANGED
@@ -8,6 +8,7 @@ interface Config {
8
8
  apiUrl?: string;
9
9
  apiToken?: string;
10
10
  syncEnabled?: boolean;
11
+ privateRepo?: boolean;
11
12
  }
12
13
 
13
14
  // Get repo-specific config path
@@ -130,6 +131,17 @@ export function setSyncEnabled(enabled: boolean): void {
130
131
  saveGlobalConfig(config);
131
132
  }
132
133
 
134
+ export function isPrivateRepo(): boolean {
135
+ const config = getRepoConfig();
136
+ return config.privateRepo === true;
137
+ }
138
+
139
+ export function setPrivateRepo(isPrivate: boolean): void {
140
+ const config = getRepoConfig();
141
+ config.privateRepo = isPrivate;
142
+ saveRepoConfig(config);
143
+ }
144
+
133
145
  export function getRepoInfo(): { owner: string; name: string; url: string } | null {
134
146
  try {
135
147
  const remoteUrl = execSync('git config --get remote.origin.url', { encoding: 'utf-8' }).trim();
@@ -140,6 +152,16 @@ export function getRepoInfo(): { owner: string; name: string; url: string } | nu
140
152
  if (match) {
141
153
  const owner = match[1];
142
154
  const name = match[2];
155
+
156
+ // If privacy mode is enabled, return obfuscated info
157
+ if (isPrivateRepo()) {
158
+ return {
159
+ owner: 'private',
160
+ name: 'private',
161
+ url: 'private',
162
+ };
163
+ }
164
+
143
165
  return {
144
166
  owner,
145
167
  name,