@codeleap/cli 1.0.2 → 2.3.15

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.
@@ -1,70 +1,79 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- var __rest = (this && this.__rest) || function (s, e) {
39
- var t = {};
40
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
41
- t[p] = s[p];
42
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
43
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
44
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
45
- t[p[i]] = s[p[i]];
46
- }
47
- return t;
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.spinWhileNotCompleted = void 0;
51
- var nanospinner_1 = require("nanospinner");
52
- function spinWhileNotCompleted(operation, opts) {
53
- return __awaiter(this, void 0, void 0, function () {
54
- var name, others, spinner, result;
55
- return __generator(this, function (_a) {
56
- switch (_a.label) {
57
- case 0:
58
- name = opts.name, others = __rest(opts, ["name"]);
59
- spinner = (0, nanospinner_1.createSpinner)("".concat(name, "\n"), others);
60
- spinner.start();
61
- return [4 /*yield*/, operation()];
62
- case 1:
63
- result = _a.sent();
64
- spinner.success();
65
- return [2 /*return*/, result];
66
- }
67
- });
68
- });
69
- }
70
- exports.spinWhileNotCompleted = spinWhileNotCompleted;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __rest = (this && this.__rest) || function (s, e) {
39
+ var t = {};
40
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
41
+ t[p] = s[p];
42
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
43
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
44
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
45
+ t[p[i]] = s[p[i]];
46
+ }
47
+ return t;
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.spinWhileNotCompleted = void 0;
51
+ var nanospinner_1 = require("nanospinner");
52
+ function spinWhileNotCompleted(operation, opts) {
53
+ return __awaiter(this, void 0, void 0, function () {
54
+ var name, others, spinner, result, e_1;
55
+ return __generator(this, function (_a) {
56
+ switch (_a.label) {
57
+ case 0:
58
+ name = opts.name, others = __rest(opts, ["name"]);
59
+ spinner = (0, nanospinner_1.createSpinner)("".concat(name, "\n"), others);
60
+ spinner.start();
61
+ _a.label = 1;
62
+ case 1:
63
+ _a.trys.push([1, 3, , 4]);
64
+ return [4 /*yield*/, operation()];
65
+ case 2:
66
+ result = _a.sent();
67
+ spinner.success();
68
+ return [2 /*return*/, result];
69
+ case 3:
70
+ e_1 = _a.sent();
71
+ spinner.error();
72
+ console.error(e_1);
73
+ return [3 /*break*/, 4];
74
+ case 4: return [2 /*return*/];
75
+ }
76
+ });
77
+ });
78
+ }
79
+ exports.spinWhileNotCompleted = spinWhileNotCompleted;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ var __importDefault = (this && this.__importDefault) || function (mod) {
28
+ return (mod && mod.__esModule) ? mod : { "default": mod };
29
+ };
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.path = exports.fs = exports.subprocess = exports.getNewBundleName = void 0;
32
+ var child_process_1 = __importDefault(require("child_process"));
33
+ var getNewBundleName = function (newName) { return "uk.co.codeleap.".concat(newName.trim()); };
34
+ exports.getNewBundleName = getNewBundleName;
35
+ function subprocess(name) {
36
+ var params = [];
37
+ for (var _i = 1; _i < arguments.length; _i++) {
38
+ params[_i - 1] = arguments[_i];
39
+ }
40
+ return new Promise(function (resolve, reject) {
41
+ var _a, _b, _c, _d;
42
+ console.log("Running ".concat(params[0], " ").concat(params[1].join(' ')));
43
+ var child = child_process_1.default.spawn.apply(child_process_1.default, __spreadArray([], __read(params), false));
44
+ child.on('error', function (err) {
45
+ console.log("".concat(name, " finished with error: "), err.toString());
46
+ reject(err);
47
+ });
48
+ child.on('close', function (code) {
49
+ console.log("".concat(name, " finished with code: "), code);
50
+ if (code !== 0) {
51
+ reject("".concat(name, " finieshed with non zero exit code"));
52
+ }
53
+ else {
54
+ resolve(code);
55
+ }
56
+ });
57
+ (_b = (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.on) === null || _b === void 0 ? void 0 : _b.call(_a, 'data', function (outdata) {
58
+ console.log(outdata.toString());
59
+ });
60
+ (_d = (_c = child.stderr) === null || _c === void 0 ? void 0 : _c.on) === null || _d === void 0 ? void 0 : _d.call(_c, 'data', function (errdata) {
61
+ console.error(errdata.toString());
62
+ });
63
+ });
64
+ }
65
+ exports.subprocess = subprocess;
66
+ var path_1 = __importDefault(require("path"));
67
+ exports.path = path_1.default;
68
+ var fs_1 = __importDefault(require("fs"));
69
+ exports.fs = fs_1.default;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.walkDir = void 0;
54
+ var common_1 = require("@codeleap/common");
55
+ var fs_1 = __importDefault(require("fs"));
56
+ var dive_1 = __importDefault(require("dive"));
57
+ var matchFile = function (path, stat, config) {
58
+ var isDir = stat.isDirectory();
59
+ if (isDir && !config.dir) {
60
+ return false;
61
+ }
62
+ if (!isDir && !config.file) {
63
+ return false;
64
+ }
65
+ var pathData = (0, common_1.parseFilePathData)(path);
66
+ var conditions = [];
67
+ if (!!config.name) {
68
+ var nameMatch = false;
69
+ if (config.name instanceof RegExp) {
70
+ nameMatch = config.name.test(path);
71
+ }
72
+ else {
73
+ var matchConfig = (0, common_1.parseFilePathData)(config.name);
74
+ nameMatch = [
75
+ pathData.name === matchConfig.name,
76
+ pathData.extension === matchConfig.extension,
77
+ pathData.path === matchConfig.path,
78
+ ].some(function (x) { return x; });
79
+ }
80
+ conditions.push(nameMatch);
81
+ }
82
+ if (!isDir && !!config.ext) {
83
+ var extMatch = false;
84
+ extMatch = config.ext.includes(pathData.extension);
85
+ conditions.push(extMatch);
86
+ }
87
+ return conditions.every(function (a) { return a; });
88
+ };
89
+ function walkDir(config) {
90
+ return __awaiter(this, void 0, void 0, function () {
91
+ var options;
92
+ return __generator(this, function (_a) {
93
+ options = __assign({ directories: true, recursive: true }, config.options);
94
+ return [2 /*return*/, new Promise(function (resolve) {
95
+ (0, dive_1.default)(config.path, options, function (err, file, stat) {
96
+ var isDir = stat.isDirectory();
97
+ var pathData = (0, common_1.parseFilePathData)(file);
98
+ if (options.ignore) {
99
+ var ignore = options.ignore.some(function (i) { return matchFile(file, stat, i); });
100
+ if (ignore)
101
+ return;
102
+ }
103
+ var fileInfo = isDir ? null : {
104
+ ext: pathData.extension,
105
+ content: (options === null || options === void 0 ? void 0 : options.scanFileContent) ? fs_1.default.readFileSync(file).toString() : '',
106
+ };
107
+ var dirInfo = isDir ? {
108
+ contents: fs_1.default.readdirSync(file),
109
+ } : null;
110
+ var newContent = config.action({
111
+ path: file,
112
+ stat: stat,
113
+ err: err,
114
+ isDir: isDir,
115
+ dir: dirInfo,
116
+ name: pathData.name,
117
+ parentPath: pathData.path,
118
+ file: fileInfo,
119
+ });
120
+ if (!common_1.TypeGuards.isNil(newContent) && !isDir) {
121
+ fs_1.default.writeFileSync(file, newContent);
122
+ }
123
+ }, function () {
124
+ resolve();
125
+ });
126
+ })];
127
+ });
128
+ });
129
+ }
130
+ exports.walkDir = walkDir;
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,31 +1,49 @@
1
- {
2
- "name": "@codeleap/cli",
3
- "version": "1.0.2",
4
- "main": "src/index.ts",
5
- "repository": "git@github.com:codeleap-uk/codeleap-lib.git",
6
- "author": "Paulo Henrique De Souza <paulosouza300272@gmail.com>",
7
- "license": "UNLICENSED",
8
- "bin": "dist/index.js",
9
- "devDependencies": {
10
- "@codeleap/config": "*",
11
- "@types/inquirer": "^8.2.0",
12
- "typescript": "^4.5.5"
13
- },
14
- "scripts": {
15
- "build": "tsc --build",
16
- "lint": "./node_modules/.bin/eslint -c .eslintrc.js \"./src/**/*.{ts,tsx,js,jsx}\"",
17
- "dev:cli": "node dist/index.js",
18
- "start": "node dist/index.js"
19
- },
20
- "peerDependencies": {
21
- "@codeleap/common": "*"
22
- },
23
- "dependencies": {
24
- "chalk": "4.1.2",
25
- "chalk-animation": "^1.6.0",
26
- "cleye": "^1.1.0",
27
- "figlet": "^1.5.2",
28
- "inquirer": "^8.2.0",
29
- "nanospinner": "^1.0.0"
30
- }
31
- }
1
+ {
2
+ "name": "@codeleap/cli",
3
+ "version": "2.3.15",
4
+ "main": "./dist/index.js",
5
+ "repository": "git@github.com:codeleap-uk/codeleap-lib.git",
6
+ "author": "Paulo Henrique De Souza <paulosouza300272@gmail.com>",
7
+ "license": "UNLICENSED",
8
+ "bin": {
9
+ "codeleap": "./dist/index.js",
10
+ "codeleap-cli": "./dist/index.js"
11
+ },
12
+ "devDependencies": {
13
+ "@codeleap/config": "*",
14
+ "@types/inquirer": "^8.2.0",
15
+ "@types/libsodium-wrappers": "^0.7.10",
16
+ "cross-env": "^7.0.3",
17
+ "typescript": "^4.5.5"
18
+ },
19
+ "peerDependencies": {
20
+ "@codeleap/common": "*"
21
+ },
22
+ "scripts": {
23
+ "build": "tsc --build",
24
+ "lint": "eslint -c .eslintrc.js --fix \"./src/**/*.{ts,tsx,js,jsx}\"",
25
+ "dev:cli": "node dist/index.js",
26
+ "start": "node dist/index.js",
27
+ "dev": "cross-env CODELEAP_CLI_DEV_MODE=true tsnd --transpile-only src/index.ts"
28
+ },
29
+ "dependencies": {
30
+ "@google-cloud/resource-manager": "^4.1.1",
31
+ "axios": "^1.1.3",
32
+ "chalk": "4.1.2",
33
+ "chalk-animation": "^1.6.0",
34
+ "cleye": "^1.1.0",
35
+ "dive": "^0.5.0",
36
+ "figlet": "^1.5.2",
37
+ "firebase-admin": "^11.0.1",
38
+ "generate-password": "^1.7.0",
39
+ "inquirer": "^8.2.0",
40
+ "libsodium-wrappers": "^0.7.10",
41
+ "nanospinner": "^1.0.0",
42
+ "node-keytool": "^0.0.3",
43
+ "octokit": "^2.0.10",
44
+ "react": "^17.0.2",
45
+ "react-icons": "^4.3.1",
46
+ "simple-git": "^3.15.0",
47
+ "yup": "^0.32.11"
48
+ }
49
+ }
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,31 +0,0 @@
1
- import { waitFor } from '@codeleap/common'
2
- import { codeleapCommand } from '../lib/Command'
3
-
4
- import { spinWhileNotCompleted } from '../lib/spinner'
5
- import { chalk, inquirer, figlet } from '../lib'
6
-
7
- export const initCommand = codeleapCommand({
8
- name: 'init',
9
- parameters: [],
10
- alias: 'i',
11
- }, async ({_}) => {
12
- const answers = await inquirer.prompt([
13
- {
14
- message: `What's your name?`,
15
- default: 'Codeleap',
16
- name: 'name',
17
- },
18
- ])
19
-
20
- spinWhileNotCompleted(async () => {
21
- await waitFor(10000)
22
-
23
- console.log(chalk.greenBright(answers.name +', your awesomeness level is:'))
24
-
25
- console.log(chalk.yellow(figlet.textSync('Cacetinho')))
26
- }, {
27
- name: 'Measuring your awesomeness...',
28
- })
29
-
30
- })
31
-
package/src/index.ts DELETED
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env node
2
- import { cli } from 'cleye'
3
- import { initCommand } from './commands/init'
4
-
5
- cli({
6
- name: 'codeleap',
7
- commands: [
8
- initCommand,
9
- ],
10
- })
11
-
12
-
13
- export {}
@@ -1,10 +0,0 @@
1
- import { command } from 'cleye';
2
- import figlet from 'figlet'
3
- import chalk from 'chalk'
4
-
5
- export const codeleapCommand:typeof command = (opts, callback) => {
6
- return command(opts, async (...args) => {
7
- console.log(chalk.blue(figlet.textSync('Codeleap')))
8
- return await callback(...args)
9
- })
10
- }
package/src/lib/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export {default as figlet } from 'figlet'
2
- export {default as chalk } from 'chalk'
3
- export {default as inquirer } from 'inquirer'
@@ -1,21 +0,0 @@
1
- import { FunctionType } from '@codeleap/common';
2
- import { createSpinner, Options } from 'nanospinner';
3
-
4
- type SpinWhileNotCompletedOpts = Options & {
5
- name: string
6
- }
7
-
8
- export async function spinWhileNotCompleted(operation:FunctionType<[], Promise<any>>, opts:SpinWhileNotCompletedOpts){
9
- const {name, ...others} = opts
10
-
11
- const spinner = createSpinner(`${name}\n`, others)
12
-
13
- spinner.start()
14
-
15
-
16
- const result = await operation()
17
-
18
- spinner.success()
19
-
20
- return result
21
- }