fire-pilot-rn 1.0.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/GoogleService-Info.plist +30 -0
- package/LICENSE +21 -0
- package/README.md +391 -0
- package/build/commands/enable.d.ts +2 -0
- package/build/commands/enable.d.ts.map +1 -0
- package/build/commands/enable.js +73 -0
- package/build/commands/enable.js.map +1 -0
- package/build/commands/login.d.ts +2 -0
- package/build/commands/login.d.ts.map +1 -0
- package/build/commands/login.js +117 -0
- package/build/commands/login.js.map +1 -0
- package/build/commands/setup.d.ts +2 -0
- package/build/commands/setup.d.ts.map +1 -0
- package/build/commands/setup.js +297 -0
- package/build/commands/setup.js.map +1 -0
- package/build/commands/sha.d.ts +7 -0
- package/build/commands/sha.d.ts.map +1 -0
- package/build/commands/sha.js +165 -0
- package/build/commands/sha.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +59 -0
- package/build/index.js.map +1 -0
- package/build/utils/checker.d.ts +2 -0
- package/build/utils/checker.d.ts.map +1 -0
- package/build/utils/checker.js +100 -0
- package/build/utils/checker.js.map +1 -0
- package/build/utils/logger.d.ts +11 -0
- package/build/utils/logger.d.ts.map +1 -0
- package/build/utils/logger.js +18 -0
- package/build/utils/logger.js.map +1 -0
- package/build/utils/runner.d.ts +7 -0
- package/build/utils/runner.d.ts.map +1 -0
- package/build/utils/runner.js +125 -0
- package/build/utils/runner.js.map +1 -0
- package/dist/commands/enable.d.ts +2 -0
- package/dist/commands/enable.d.ts.map +1 -0
- package/dist/commands/enable.js +65 -0
- package/dist/commands/enable.js.map +1 -0
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +86 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +133 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/sha.d.ts +2 -0
- package/dist/commands/sha.d.ts.map +1 -0
- package/dist/commands/sha.js +118 -0
- package/dist/commands/sha.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/checker.d.ts +2 -0
- package/dist/utils/checker.d.ts.map +1 -0
- package/dist/utils/checker.js +100 -0
- package/dist/utils/checker.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +18 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/runner.d.ts +4 -0
- package/dist/utils/runner.d.ts.map +1 -0
- package/dist/utils/runner.js +36 -0
- package/dist/utils/runner.js.map +1 -0
- package/google-services.json +48 -0
- package/package.json +51 -0
- package/src/commands/enable.ts +80 -0
- package/src/commands/login.ts +119 -0
- package/src/commands/setup.ts +313 -0
- package/src/commands/sha.ts +177 -0
- package/src/index.ts +65 -0
- package/src/utils/checker.ts +70 -0
- package/src/utils/logger.ts +13 -0
- package/src/utils/runner.ts +98 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.checkAllTools = checkAllTools;
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
const runner_1 = require("./runner");
|
|
39
|
+
const logger_1 = require("./logger");
|
|
40
|
+
// ─── Check Node.js ───────────────────────────────────────────
|
|
41
|
+
async function ensureNode() {
|
|
42
|
+
if ((0, runner_1.commandExists)('node')) {
|
|
43
|
+
const version = (0, runner_1.runSilent)('node', ['--version']);
|
|
44
|
+
logger_1.logger.success(`Node.js found: ${version}`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
logger_1.logger.warn('Node.js not found! Attempting to install...');
|
|
48
|
+
const platform = os.platform();
|
|
49
|
+
if (platform === 'win32') {
|
|
50
|
+
(0, runner_1.runLive)('winget', ['install', 'OpenJS.NodeJS.LTS']);
|
|
51
|
+
}
|
|
52
|
+
else if (platform === 'darwin') {
|
|
53
|
+
(0, runner_1.runLive)('brew', ['install', 'node']);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
logger_1.logger.error('Please install Node.js manually: https://nodejs.org');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
logger_1.logger.success('Node.js installed successfully!');
|
|
60
|
+
}
|
|
61
|
+
// ─── Check NPM ───────────────────────────────────────────────
|
|
62
|
+
async function ensureNpm() {
|
|
63
|
+
if ((0, runner_1.commandExists)('npm')) {
|
|
64
|
+
const version = (0, runner_1.runSilent)('npm', ['--version']);
|
|
65
|
+
logger_1.logger.success(`NPM found: v${version}`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
logger_1.logger.error('NPM not found. Please reinstall Node.js from https://nodejs.org');
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
// ─── Check Firebase CLI ──────────────────────────────────────
|
|
72
|
+
async function ensureFirebaseCLI() {
|
|
73
|
+
if ((0, runner_1.commandExists)('firebase')) {
|
|
74
|
+
const version = (0, runner_1.runSilent)('firebase', ['--version']);
|
|
75
|
+
logger_1.logger.success(`Firebase CLI found: v${version}`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
logger_1.logger.warn('Firebase CLI not found! Installing...');
|
|
79
|
+
(0, runner_1.runLive)('npm', ['install', '-g', 'firebase-tools']);
|
|
80
|
+
logger_1.logger.success('Firebase CLI installed!');
|
|
81
|
+
}
|
|
82
|
+
// ─── Check Java (needed for SHA key extraction) ──────────────
|
|
83
|
+
async function ensureJava() {
|
|
84
|
+
if ((0, runner_1.resolveJavaTool)('keytool')) {
|
|
85
|
+
logger_1.logger.success('Java keytool found ✓');
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
logger_1.logger.warn('Java keytool not found. SHA extraction may not work.');
|
|
89
|
+
logger_1.logger.info('Install Java from: https://adoptium.net');
|
|
90
|
+
}
|
|
91
|
+
// ─── Main checker ────────────────────────────────────────────
|
|
92
|
+
async function checkAllTools() {
|
|
93
|
+
logger_1.logger.title('Checking Required Tools');
|
|
94
|
+
await ensureNode();
|
|
95
|
+
await ensureNpm();
|
|
96
|
+
await ensureFirebaseCLI();
|
|
97
|
+
await ensureJava();
|
|
98
|
+
logger_1.logger.success('All required tools are ready!\n');
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/utils/checker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,sCAOC;AArED,uCAAyB;AACzB,qCAA8E;AAC9E,qCAAkC;AAElC,gEAAgE;AAChE,KAAK,UAAU,UAAU;IACvB,IAAI,IAAA,sBAAa,EAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAA,kBAAS,EAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,eAAM,CAAC,OAAO,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,IAAA,gBAAO,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,IAAA,gBAAO,EAAC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,eAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AACpD,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,SAAS;IACtB,IAAI,IAAA,sBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAA,kBAAS,EAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,eAAM,CAAC,OAAO,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,iBAAiB;IAC9B,IAAI,IAAA,sBAAa,EAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAAA,kBAAS,EAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,eAAM,CAAC,OAAO,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,eAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACrD,IAAA,gBAAO,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpD,eAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;AAC5C,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,UAAU;IACvB,IAAI,IAAA,wBAAe,EAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,eAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACpE,eAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC;AAED,gEAAgE;AACzD,KAAK,UAAU,aAAa;IACjC,eAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACxC,MAAM,UAAU,EAAE,CAAC;IACnB,MAAM,SAAS,EAAE,CAAC;IAClB,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,UAAU,EAAE,CAAC;IACnB,eAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export declare const logger: {
|
|
3
|
+
info: (msg: string) => void;
|
|
4
|
+
success: (msg: string) => void;
|
|
5
|
+
error: (msg: string) => void;
|
|
6
|
+
warn: (msg: string) => void;
|
|
7
|
+
title: (msg: string) => void;
|
|
8
|
+
step: (msg: string) => void;
|
|
9
|
+
running: (msg: string) => void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,MAAM;gBACL,MAAM;mBACH,MAAM;iBACR,MAAM;gBACP,MAAM;iBACL,MAAM;gBAEP,MAAM;mBACH,MAAM;CACtB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.logger = void 0;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
exports.logger = {
|
|
10
|
+
info: (msg) => console.log(chalk_1.default.cyan('ℹ️ ' + msg)),
|
|
11
|
+
success: (msg) => console.log(chalk_1.default.green('✅ ' + msg)),
|
|
12
|
+
error: (msg) => console.log(chalk_1.default.red('❌ ' + msg)),
|
|
13
|
+
warn: (msg) => console.log(chalk_1.default.yellow('⚠️ ' + msg)),
|
|
14
|
+
title: (msg) => console.log(chalk_1.default.bold.magenta('\n🚀 ' + msg + '\n')),
|
|
15
|
+
step: (msg) => console.log(chalk_1.default.bold.white('\n👉 ' + msg)),
|
|
16
|
+
running: (msg) => console.log(chalk_1.default.gray(' Running: ' + msg)),
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;;AACA,kDAA0B;AAEb,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC9D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IAC1D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC9D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CACrB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IACvD,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;CACxE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function resolveCommand(command: string): string | null;
|
|
2
|
+
export declare function resolveJavaTool(command: string): string | null;
|
|
3
|
+
export declare function runLive(command: string, args?: string[]): void;
|
|
4
|
+
export declare function runSilent(command: string, args?: string[]): string;
|
|
5
|
+
export declare function runCheckedOutput(command: string, args?: string[]): string;
|
|
6
|
+
export declare function commandExists(command: string): boolean;
|
|
7
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/utils/runner.ts"],"names":[],"mappings":"AAkDA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE9D;AAGD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI,CAMlE;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAOtE;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAc7E;AAGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveCommand = resolveCommand;
|
|
37
|
+
exports.resolveJavaTool = resolveJavaTool;
|
|
38
|
+
exports.runLive = runLive;
|
|
39
|
+
exports.runSilent = runSilent;
|
|
40
|
+
exports.runCheckedOutput = runCheckedOutput;
|
|
41
|
+
exports.commandExists = commandExists;
|
|
42
|
+
const child_process_1 = require("child_process");
|
|
43
|
+
const fs_1 = require("fs");
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const logger_1 = require("./logger");
|
|
46
|
+
function getShellOption() {
|
|
47
|
+
return process.platform === 'win32';
|
|
48
|
+
}
|
|
49
|
+
function resolveFromPath(command) {
|
|
50
|
+
const lookupCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
51
|
+
try {
|
|
52
|
+
const output = (0, child_process_1.execFileSync)(lookupCommand, [command], { stdio: 'pipe' })
|
|
53
|
+
.toString()
|
|
54
|
+
.split(/\r?\n/)
|
|
55
|
+
.map((line) => line.trim())
|
|
56
|
+
.find(Boolean);
|
|
57
|
+
return output || null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function resolveFromJavaHome(command) {
|
|
64
|
+
const executable = process.platform === 'win32' ? `${command}.exe` : command;
|
|
65
|
+
const candidates = [];
|
|
66
|
+
if (process.env.JAVA_HOME) {
|
|
67
|
+
candidates.push(path.join(process.env.JAVA_HOME, 'bin', executable));
|
|
68
|
+
}
|
|
69
|
+
if (process.platform === 'darwin') {
|
|
70
|
+
try {
|
|
71
|
+
const javaHome = (0, child_process_1.execFileSync)('/usr/libexec/java_home', [], { stdio: 'pipe' })
|
|
72
|
+
.toString()
|
|
73
|
+
.trim();
|
|
74
|
+
if (javaHome) {
|
|
75
|
+
candidates.push(path.join(javaHome, 'bin', executable));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Ignore missing or misconfigured java_home output.
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return candidates.find((candidate) => (0, fs_1.existsSync)(candidate)) || null;
|
|
83
|
+
}
|
|
84
|
+
function resolveCommand(command) {
|
|
85
|
+
return resolveFromPath(command);
|
|
86
|
+
}
|
|
87
|
+
function resolveJavaTool(command) {
|
|
88
|
+
return resolveFromPath(command) || resolveFromJavaHome(command);
|
|
89
|
+
}
|
|
90
|
+
// Run a command and stream output live to terminal
|
|
91
|
+
function runLive(command, args = []) {
|
|
92
|
+
logger_1.logger.running(`${command} ${args.join(' ')}`);
|
|
93
|
+
const result = (0, child_process_1.spawnSync)(command, args, { stdio: 'inherit', shell: getShellOption() });
|
|
94
|
+
if (result.status !== 0) {
|
|
95
|
+
throw new Error(`Command failed: ${command} ${args.join(' ')}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Run a command silently and return the output as string
|
|
99
|
+
function runSilent(command, args = []) {
|
|
100
|
+
try {
|
|
101
|
+
const result = (0, child_process_1.spawnSync)(command, args, { stdio: 'pipe', shell: getShellOption() });
|
|
102
|
+
return result.stdout?.toString().trim() ?? '';
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return '';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Run a command silently and throw if it fails
|
|
109
|
+
function runCheckedOutput(command, args = []) {
|
|
110
|
+
logger_1.logger.running(`${command} ${args.join(' ')}`);
|
|
111
|
+
const result = (0, child_process_1.spawnSync)(command, args, { stdio: 'pipe', shell: getShellOption() });
|
|
112
|
+
if (result.error) {
|
|
113
|
+
throw result.error;
|
|
114
|
+
}
|
|
115
|
+
if (result.status !== 0) {
|
|
116
|
+
const stderr = result.stderr?.toString().trim();
|
|
117
|
+
throw new Error(stderr || `Command failed: ${command} ${args.join(' ')}`);
|
|
118
|
+
}
|
|
119
|
+
return result.stdout?.toString().trim() ?? '';
|
|
120
|
+
}
|
|
121
|
+
// Check if a command/tool exists on the machine
|
|
122
|
+
function commandExists(command) {
|
|
123
|
+
return resolveCommand(command) !== null;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/utils/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"AAkBA,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCnE"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.enableCommand = enableCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const runner_1 = require("../utils/runner");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
// All supported RN Firebase packages
|
|
11
|
+
const FEATURES = {
|
|
12
|
+
auth: { label: '🔐 Authentication', pkg: '@react-native-firebase/auth' },
|
|
13
|
+
firestore: { label: '🗄️ Firestore Database', pkg: '@react-native-firebase/firestore' },
|
|
14
|
+
storage: { label: '📦 Cloud Storage', pkg: '@react-native-firebase/storage' },
|
|
15
|
+
messaging: { label: '📲 Cloud Messaging (FCM)', pkg: '@react-native-firebase/messaging' },
|
|
16
|
+
analytics: { label: '📈 Analytics', pkg: '@react-native-firebase/analytics' },
|
|
17
|
+
crashlytics: { label: '💥 Crashlytics', pkg: '@react-native-firebase/crashlytics' },
|
|
18
|
+
database: { label: '⚡ Realtime Database', pkg: '@react-native-firebase/database' },
|
|
19
|
+
functions: { label: '☁️ Cloud Functions', pkg: '@react-native-firebase/functions' },
|
|
20
|
+
remote: { label: '🎛️ Remote Config', pkg: '@react-native-firebase/remote-config' },
|
|
21
|
+
perf: { label: '⏱️ Performance Monitoring', pkg: '@react-native-firebase/perf' },
|
|
22
|
+
};
|
|
23
|
+
async function enableCommand(feature) {
|
|
24
|
+
logger_1.logger.title('Enable Firebase Feature');
|
|
25
|
+
let selectedKey = feature;
|
|
26
|
+
// ── If no feature passed, show interactive menu ──────────────
|
|
27
|
+
if (!selectedKey) {
|
|
28
|
+
const choices = Object.entries(FEATURES).map(([key, val]) => ({
|
|
29
|
+
name: val.label,
|
|
30
|
+
value: key,
|
|
31
|
+
}));
|
|
32
|
+
// Allow selecting multiple features at once
|
|
33
|
+
const { selected } = await inquirer_1.default.prompt([
|
|
34
|
+
{
|
|
35
|
+
type: 'checkbox',
|
|
36
|
+
name: 'selected',
|
|
37
|
+
message: 'Select Firebase features to enable (Space to select, Enter to confirm):',
|
|
38
|
+
choices,
|
|
39
|
+
validate: (val) => val.length > 0 ? true : 'Please select at least one feature',
|
|
40
|
+
},
|
|
41
|
+
]);
|
|
42
|
+
// Install all selected features
|
|
43
|
+
for (const key of selected) {
|
|
44
|
+
await installFeature(key);
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// ── If feature passed directly (e.g. firebase enable auth) ───
|
|
49
|
+
if (!FEATURES[selectedKey]) {
|
|
50
|
+
logger_1.logger.error(`Unknown feature: "${selectedKey}"`);
|
|
51
|
+
logger_1.logger.info(`Available features: ${Object.keys(FEATURES).join(', ')}`);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
await installFeature(selectedKey);
|
|
55
|
+
}
|
|
56
|
+
async function installFeature(key) {
|
|
57
|
+
const feature = FEATURES[key];
|
|
58
|
+
logger_1.logger.step(`Installing ${feature.label}...`);
|
|
59
|
+
logger_1.logger.info(`Package: ${feature.pkg}`);
|
|
60
|
+
(0, runner_1.runLive)('npm', ['install', feature.pkg]);
|
|
61
|
+
logger_1.logger.success(`${feature.label} installed!`);
|
|
62
|
+
logger_1.logger.info(`Docs: https://rnfirebase.io/${key === 'auth' ? 'auth' : key}`);
|
|
63
|
+
console.log('');
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=enable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/commands/enable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAsFlD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loginCommand = loginCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const runner_1 = require("../utils/runner");
|
|
9
|
+
const logger_1 = require("../utils/logger");
|
|
10
|
+
async function loginCommand() {
|
|
11
|
+
logger_1.logger.title('Firebase Account Manager');
|
|
12
|
+
// ── Get current logged-in accounts ──────────────────────────
|
|
13
|
+
logger_1.logger.step('Fetching logged-in Firebase accounts...');
|
|
14
|
+
const accountsRaw = (0, runner_1.runSilent)('firebase', ['login:list']);
|
|
15
|
+
// Parse emails from output
|
|
16
|
+
const emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;
|
|
17
|
+
const accounts = accountsRaw.match(emailRegex) ?? [];
|
|
18
|
+
if (accounts.length > 0) {
|
|
19
|
+
logger_1.logger.info('Currently logged-in accounts:');
|
|
20
|
+
accounts.forEach((acc, i) => console.log(` ${i + 1}. ${acc}`));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
logger_1.logger.warn('No accounts logged in yet.');
|
|
24
|
+
}
|
|
25
|
+
console.log('');
|
|
26
|
+
// ── Ask what the user wants to do ───────────────────────────
|
|
27
|
+
const { action } = await inquirer_1.default.prompt([
|
|
28
|
+
{
|
|
29
|
+
type: 'list',
|
|
30
|
+
name: 'action',
|
|
31
|
+
message: 'What do you want to do?',
|
|
32
|
+
choices: [
|
|
33
|
+
{ name: '🔑 Login with a new Google account', value: 'login' },
|
|
34
|
+
{ name: '🔄 Switch to a different account', value: 'switch' },
|
|
35
|
+
{ name: '📋 List all logged-in accounts', value: 'list' },
|
|
36
|
+
{ name: '🚪 Logout from current account', value: 'logout' },
|
|
37
|
+
{ name: '⬅️ Cancel', value: 'cancel' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
]);
|
|
41
|
+
if (action === 'cancel')
|
|
42
|
+
return;
|
|
43
|
+
// ── Login ────────────────────────────────────────────────────
|
|
44
|
+
if (action === 'login') {
|
|
45
|
+
logger_1.logger.info('Opening browser for Google login...');
|
|
46
|
+
(0, runner_1.runLive)('firebase', ['login', '--reauth']);
|
|
47
|
+
logger_1.logger.success('Login successful!');
|
|
48
|
+
}
|
|
49
|
+
// ── Switch account ───────────────────────────────────────────
|
|
50
|
+
else if (action === 'switch') {
|
|
51
|
+
if (accounts.length === 0) {
|
|
52
|
+
logger_1.logger.error('No accounts to switch to. Please login first.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const { selectedAccount } = await inquirer_1.default.prompt([
|
|
56
|
+
{
|
|
57
|
+
type: 'list',
|
|
58
|
+
name: 'selectedAccount',
|
|
59
|
+
message: 'Select the account to switch to:',
|
|
60
|
+
choices: accounts,
|
|
61
|
+
},
|
|
62
|
+
]);
|
|
63
|
+
(0, runner_1.runLive)('firebase', ['login:use', selectedAccount]);
|
|
64
|
+
logger_1.logger.success(`Switched to: ${selectedAccount}`);
|
|
65
|
+
}
|
|
66
|
+
// ── List accounts ────────────────────────────────────────────
|
|
67
|
+
else if (action === 'list') {
|
|
68
|
+
(0, runner_1.runLive)('firebase', ['login:list']);
|
|
69
|
+
}
|
|
70
|
+
// ── Logout ───────────────────────────────────────────────────
|
|
71
|
+
else if (action === 'logout') {
|
|
72
|
+
const { confirmLogout } = await inquirer_1.default.prompt([
|
|
73
|
+
{
|
|
74
|
+
type: 'confirm',
|
|
75
|
+
name: 'confirmLogout',
|
|
76
|
+
message: 'Are you sure you want to logout?',
|
|
77
|
+
default: false,
|
|
78
|
+
},
|
|
79
|
+
]);
|
|
80
|
+
if (confirmLogout) {
|
|
81
|
+
(0, runner_1.runLive)('firebase', ['logout']);
|
|
82
|
+
logger_1.logger.success('Logged out successfully!');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AASA,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2H/D"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setupCommand = setupCommand;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const ora_1 = __importDefault(require("ora"));
|
|
9
|
+
const checker_1 = require("../utils/checker");
|
|
10
|
+
const login_1 = require("./login");
|
|
11
|
+
const sha_1 = require("./sha");
|
|
12
|
+
const enable_1 = require("./enable");
|
|
13
|
+
const runner_1 = require("../utils/runner");
|
|
14
|
+
const logger_1 = require("../utils/logger");
|
|
15
|
+
async function setupCommand(full) {
|
|
16
|
+
logger_1.logger.title('FirePilot RN — Firebase Setup Wizard');
|
|
17
|
+
console.log('This wizard will set up Firebase for your React Native project.\n');
|
|
18
|
+
// ── STEP 1: Check & install all tools ───────────────────────
|
|
19
|
+
await (0, checker_1.checkAllTools)();
|
|
20
|
+
// ── STEP 2: Firebase login ───────────────────────────────────
|
|
21
|
+
logger_1.logger.step('STEP 2 — Firebase Login');
|
|
22
|
+
const { doLogin } = await inquirer_1.default.prompt([{
|
|
23
|
+
type: 'confirm',
|
|
24
|
+
name: 'doLogin',
|
|
25
|
+
message: 'Do you want to manage your Firebase login now?',
|
|
26
|
+
default: true,
|
|
27
|
+
}]);
|
|
28
|
+
if (doLogin)
|
|
29
|
+
await (0, login_1.loginCommand)();
|
|
30
|
+
// ── STEP 3: Create or select Firebase project ────────────────
|
|
31
|
+
logger_1.logger.step('STEP 3 — Firebase Project');
|
|
32
|
+
logger_1.logger.info('Fetching your existing Firebase projects...');
|
|
33
|
+
(0, runner_1.runLive)('firebase', ['projects:list']);
|
|
34
|
+
const { projectAction } = await inquirer_1.default.prompt([{
|
|
35
|
+
type: 'list',
|
|
36
|
+
name: 'projectAction',
|
|
37
|
+
message: 'What do you want to do?',
|
|
38
|
+
choices: [
|
|
39
|
+
{ name: '➕ Create a new Firebase project', value: 'create' },
|
|
40
|
+
{ name: '✅ Use an existing project', value: 'existing' },
|
|
41
|
+
],
|
|
42
|
+
}]);
|
|
43
|
+
let projectId = '';
|
|
44
|
+
if (projectAction === 'create') {
|
|
45
|
+
const { newProjectId } = await inquirer_1.default.prompt([{
|
|
46
|
+
type: 'input',
|
|
47
|
+
name: 'newProjectId',
|
|
48
|
+
message: 'Enter new Firebase project ID:',
|
|
49
|
+
validate: (val) => val.trim().length > 0 ? true : 'Project ID cannot be empty',
|
|
50
|
+
}]);
|
|
51
|
+
projectId = newProjectId.trim();
|
|
52
|
+
const spinner = (0, ora_1.default)(`Creating Firebase project: ${projectId}...`).start();
|
|
53
|
+
try {
|
|
54
|
+
(0, runner_1.runLive)('firebase', ['projects:create', projectId]);
|
|
55
|
+
spinner.succeed(`Project "${projectId}" created!`);
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
spinner.fail('Project creation failed!');
|
|
59
|
+
// ── Real-Time Diagnostics (like fire_pilot) ──────────────
|
|
60
|
+
if (e.message.includes('quota')) {
|
|
61
|
+
logger_1.logger.error('REASON: Firebase project quota exceeded.');
|
|
62
|
+
logger_1.logger.info('Fix: Delete old projects at https://console.firebase.google.com');
|
|
63
|
+
}
|
|
64
|
+
else if (e.message.includes('already exists')) {
|
|
65
|
+
logger_1.logger.error('REASON: A project with this ID already exists.');
|
|
66
|
+
logger_1.logger.info('Fix: Choose a different project ID.');
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
logger_1.logger.error('REASON: ' + e.message);
|
|
70
|
+
}
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const { existingId } = await inquirer_1.default.prompt([{
|
|
76
|
+
type: 'input',
|
|
77
|
+
name: 'existingId',
|
|
78
|
+
message: 'Enter the Project ID from the list above:',
|
|
79
|
+
}]);
|
|
80
|
+
projectId = existingId.trim();
|
|
81
|
+
}
|
|
82
|
+
// ── STEP 4: Install @react-native-firebase/app ───────────────
|
|
83
|
+
logger_1.logger.step('STEP 4 — Install React Native Firebase Core');
|
|
84
|
+
const spinner2 = (0, ora_1.default)('Installing @react-native-firebase/app...').start();
|
|
85
|
+
try {
|
|
86
|
+
(0, runner_1.runLive)('npm', ['install', '@react-native-firebase/app']);
|
|
87
|
+
spinner2.succeed('@react-native-firebase/app installed!');
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
spinner2.fail('Installation failed. Run manually: npm install @react-native-firebase/app');
|
|
91
|
+
}
|
|
92
|
+
// ── STEP 5: Download google-services.json ───────────────────
|
|
93
|
+
logger_1.logger.step('STEP 5 — Firebase Config Files');
|
|
94
|
+
logger_1.logger.info('Please download your config files from Firebase Console:');
|
|
95
|
+
logger_1.logger.info(`🔗 https://console.firebase.google.com/project/${projectId}/settings/general`);
|
|
96
|
+
console.log('');
|
|
97
|
+
logger_1.logger.warn('📱 Android → Download "google-services.json" → place in android/app/');
|
|
98
|
+
logger_1.logger.warn('🍎 iOS → Download "GoogleService-Info.plist" → place in ios/<AppName>/');
|
|
99
|
+
console.log('');
|
|
100
|
+
// ── STEP 6: SHA keys (only if --full) ───────────────────────
|
|
101
|
+
if (full) {
|
|
102
|
+
logger_1.logger.step('STEP 6 — SHA Key Registration');
|
|
103
|
+
const { doSha } = await inquirer_1.default.prompt([{
|
|
104
|
+
type: 'confirm',
|
|
105
|
+
name: 'doSha',
|
|
106
|
+
message: 'Do you want to register Android SHA keys now?',
|
|
107
|
+
default: true,
|
|
108
|
+
}]);
|
|
109
|
+
if (doSha)
|
|
110
|
+
await (0, sha_1.shaCommand)();
|
|
111
|
+
}
|
|
112
|
+
// ── STEP 7: Enable Firebase features ────────────────────────
|
|
113
|
+
logger_1.logger.step('STEP 7 — Enable Firebase Features');
|
|
114
|
+
const { doFeatures } = await inquirer_1.default.prompt([{
|
|
115
|
+
type: 'confirm',
|
|
116
|
+
name: 'doFeatures',
|
|
117
|
+
message: 'Do you want to install additional Firebase features (Auth, Firestore, etc)?',
|
|
118
|
+
default: true,
|
|
119
|
+
}]);
|
|
120
|
+
if (doFeatures)
|
|
121
|
+
await (0, enable_1.enableCommand)();
|
|
122
|
+
// ── DONE ─────────────────────────────────────────────────────
|
|
123
|
+
console.log('\n' + '─'.repeat(60));
|
|
124
|
+
logger_1.logger.success('🎉 Firebase setup complete for your React Native project!');
|
|
125
|
+
console.log('─'.repeat(60));
|
|
126
|
+
logger_1.logger.info('Next steps:');
|
|
127
|
+
console.log(' 1. Add google-services.json to android/app/');
|
|
128
|
+
console.log(' 2. Add GoogleService-Info.plist to ios/<AppName>/');
|
|
129
|
+
console.log(' 3. Follow platform setup at https://rnfirebase.io');
|
|
130
|
+
console.log(' 4. Run your app: npx react-native run-android');
|
|
131
|
+
console.log('─'.repeat(60) + '\n');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";;;;;AASA,oCA2HC;AApID,wDAAgC;AAChC,8CAAsB;AACtB,8CAAiD;AACjD,mCAAuC;AACvC,+BAAmC;AACnC,qCAAyC;AACzC,4CAAqD;AACrD,4CAAyC;AAElC,KAAK,UAAU,YAAY,CAAC,IAAa;IAC9C,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IAEjF,+DAA+D;IAC/D,MAAM,IAAA,uBAAa,GAAE,CAAC;IAEtB,gEAAgE;IAChE,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,gDAAgD;YACzD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACJ,IAAI,OAAO;QAAE,MAAM,IAAA,oBAAY,GAAE,CAAC;IAElC,gEAAgE;IAChE,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEzC,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,IAAA,gBAAO,EAAC,UAAU,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEvC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,yBAAyB;YAClC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,kCAAkC,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC7D,EAAE,IAAI,EAAE,4BAA4B,EAAS,KAAK,EAAE,UAAU,EAAE;aACjE;SACF,CAAC,CAAC,CAAC;IAEJ,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,gCAAgC;gBACzC,QAAQ,EAAE,CAAC,GAAW,EAAE,EAAE,CACxB,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B;aAC9D,CAAC,CAAC,CAAC;QACJ,SAAS,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,8BAA8B,SAAS,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1E,IAAI,CAAC;YACH,IAAA,gBAAO,EAAC,UAAU,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,OAAO,CAAC,YAAY,SAAS,YAAY,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACzC,4DAA4D;YAC5D,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACzD,eAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YACjF,CAAC;iBAAM,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAChD,eAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;gBAC/D,eAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBAC5C,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,2CAA2C;aACrD,CAAC,CAAC,CAAC;QACJ,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,gEAAgE;IAChE,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAA,aAAG,EAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC;IACzE,IAAI,CAAC;QACH,IAAA,gBAAO,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IAC7F,CAAC;IAED,+DAA+D;IAC/D,eAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC9C,eAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACxE,eAAM,CAAC,IAAI,CAAC,kDAAkD,SAAS,mBAAmB,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,eAAM,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACpF,eAAM,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,+DAA+D;IAC/D,IAAI,IAAI,EAAE,CAAC;QACT,eAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,+CAA+C;gBACxD,OAAO,EAAE,IAAI;aACd,CAAC,CAAC,CAAC;QACJ,IAAI,KAAK;YAAE,MAAM,IAAA,gBAAU,GAAE,CAAC;IAChC,CAAC;IAED,+DAA+D;IAC/D,eAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACjD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,6EAA6E;YACtF,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACJ,IAAI,UAAU;QAAE,MAAM,IAAA,sBAAa,GAAE,CAAC;IAEtC,gEAAgE;IAChE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,eAAM,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha.d.ts","sourceRoot":"","sources":["../../src/commands/sha.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwFhD"}
|