@pristine-ts/cli 0.0.319 → 0.0.321

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.
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./command-not-found.error"), exports);
18
+ __exportStar(require("./path-already-contains-filename.error"), exports);
18
19
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,yEAAuD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PathAlreadyContainsFilenameError = void 0;
4
+ class PathAlreadyContainsFilenameError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ // Set the prototype explicitly.
8
+ // As specified in the documentation in TypeScript
9
+ // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
10
+ Object.setPrototypeOf(this, PathAlreadyContainsFilenameError.prototype);
11
+ }
12
+ }
13
+ exports.PathAlreadyContainsFilenameError = PathAlreadyContainsFilenameError;
14
+ //# sourceMappingURL=path-already-contains-filename.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-already-contains-filename.error.js","sourceRoot":"","sources":["../../../../src/errors/path-already-contains-filename.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,gCAAiC,SAAQ,KAAK;IACvD,YAAmB,OAAe;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;CACJ;AATD,4EASC"}
@@ -15,4 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./console.manager"), exports);
18
+ __exportStar(require("./path.manager"), exports);
19
+ __exportStar(require("./shell.manager"), exports);
18
20
  //# sourceMappingURL=managers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
1
+ {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PathManager = void 0;
10
+ const tsyringe_1 = require("tsyringe");
11
+ const path_already_contains_filename_error_1 = require("../errors/path-already-contains-filename.error");
12
+ let PathManager = class PathManager {
13
+ getCurrentExecutionDirectory() {
14
+ return process.cwd();
15
+ }
16
+ getPathRelativeToCurrentExecutionDirectory(path, filename) {
17
+ const currentExecutionDirectory = this.getCurrentExecutionDirectory();
18
+ // If it starts with a "/", remove this character.
19
+ path = path.replace(/^\//, '');
20
+ // If it ends with a "/", remove this character.
21
+ path = path.replace(/\/$/, '');
22
+ // If path already ends with a filename and a filename was also provided, throw an error
23
+ if (filename) {
24
+ if (path.match(/\.\w+$/)) {
25
+ throw new path_already_contains_filename_error_1.PathAlreadyContainsFilenameError(`The path '${path}' already contains a filename. Cannot add filename: '${filename}'.`);
26
+ }
27
+ filename = filename.replace(/^\//, '');
28
+ path += `/${filename}`;
29
+ }
30
+ return currentExecutionDirectory + "/" + path;
31
+ }
32
+ };
33
+ exports.PathManager = PathManager;
34
+ exports.PathManager = PathManager = __decorate([
35
+ (0, tsyringe_1.injectable)()
36
+ ], PathManager);
37
+ //# sourceMappingURL=path.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.manager.js","sourceRoot":"","sources":["../../../../src/managers/path.manager.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uCAAoC;AACpC,yGAAgG;AAGzF,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,4BAA4B;QACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,0CAA0C,CAAC,IAAY,EAAE,QAAiB;QACtE,MAAM,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEtE,kDAAkD;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,gDAAgD;QAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,wFAAwF;QACxF,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,uEAAgC,CAAC,aAAa,IAAI,wDAAwD,QAAQ,IAAI,CAAC,CAAA;YACrI,CAAC;YAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,CAAC;CACJ,CAAA;AA3BY,kCAAW;sBAAX,WAAW;IADvB,IAAA,qBAAU,GAAE;GACA,WAAW,CA2BvB"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ShellManager = void 0;
13
+ const child_process_1 = require("child_process");
14
+ const console_manager_1 = require("./console.manager");
15
+ const tsyringe_1 = require("tsyringe");
16
+ const path_manager_1 = require("./path.manager");
17
+ let ShellManager = class ShellManager {
18
+ constructor(consoleManager, pathManager) {
19
+ this.consoleManager = consoleManager;
20
+ this.pathManager = pathManager;
21
+ }
22
+ execute(command, options) {
23
+ return new Promise((resolve, reject) => {
24
+ var _a;
25
+ const env = process.env;
26
+ let finalCommand = command;
27
+ const streamStdout = (_a = options === null || options === void 0 ? void 0 : options.streamStdout) !== null && _a !== void 0 ? _a : false;
28
+ const directory = options === null || options === void 0 ? void 0 : options.directory;
29
+ if (directory) {
30
+ const absoluteDirectory = this.pathManager.getPathRelativeToCurrentExecutionDirectory(directory);
31
+ finalCommand = "cd " + absoluteDirectory + " && " + command;
32
+ }
33
+ this.consoleManager.writeLine(finalCommand);
34
+ if (streamStdout) {
35
+ const child = (0, child_process_1.spawn)(finalCommand, [], { shell: true, env });
36
+ child.stdout.on('data', (data) => {
37
+ this.consoleManager.writeLine(`${data}`);
38
+ });
39
+ child.stderr.on('data', (data) => {
40
+ this.consoleManager.writeLine(`Stderr: ${data}`);
41
+ });
42
+ child.on('close', (code) => {
43
+ this.consoleManager.writeLine(`Command exited with code ${code}`);
44
+ if (code !== 0) {
45
+ return reject(code);
46
+ }
47
+ return resolve(code + "");
48
+ });
49
+ }
50
+ return (0, child_process_1.exec)(finalCommand, { env, maxBuffer: options === null || options === void 0 ? void 0 : options.maxBuffer }, (error, stdout, stderr) => {
51
+ if (error && error.code) {
52
+ this.consoleManager.writeLine("Error: " + error.message);
53
+ return reject(error);
54
+ }
55
+ if (stderr) {
56
+ this.consoleManager.writeLine("Stderr: " + stderr);
57
+ return resolve(stderr);
58
+ }
59
+ this.consoleManager.writeLine(stdout);
60
+ return resolve(stdout);
61
+ });
62
+ });
63
+ }
64
+ };
65
+ exports.ShellManager = ShellManager;
66
+ exports.ShellManager = ShellManager = __decorate([
67
+ (0, tsyringe_1.injectable)(),
68
+ __metadata("design:paramtypes", [console_manager_1.ConsoleManager, path_manager_1.PathManager])
69
+ ], ShellManager);
70
+ //# sourceMappingURL=shell.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  export * from "./command-not-found.error";
2
+ export * from "./path-already-contains-filename.error";
2
3
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wCAAwC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export class PathAlreadyContainsFilenameError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ // Set the prototype explicitly.
5
+ // As specified in the documentation in TypeScript
6
+ // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
7
+ Object.setPrototypeOf(this, PathAlreadyContainsFilenameError.prototype);
8
+ }
9
+ }
10
+ //# sourceMappingURL=path-already-contains-filename.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-already-contains-filename.error.js","sourceRoot":"","sources":["../../../../src/errors/path-already-contains-filename.error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACvD,YAAmB,OAAe;QAC9B,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;CACJ"}
@@ -1,2 +1,4 @@
1
1
  export * from "./console.manager";
2
+ export * from "./path.manager";
3
+ export * from "./shell.manager";
2
4
  //# sourceMappingURL=managers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"managers.js","sourceRoot":"","sources":["../../../../src/managers/managers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { injectable } from "tsyringe";
8
+ import { PathAlreadyContainsFilenameError } from "../errors/path-already-contains-filename.error";
9
+ let PathManager = class PathManager {
10
+ getCurrentExecutionDirectory() {
11
+ return process.cwd();
12
+ }
13
+ getPathRelativeToCurrentExecutionDirectory(path, filename) {
14
+ const currentExecutionDirectory = this.getCurrentExecutionDirectory();
15
+ // If it starts with a "/", remove this character.
16
+ path = path.replace(/^\//, '');
17
+ // If it ends with a "/", remove this character.
18
+ path = path.replace(/\/$/, '');
19
+ // If path already ends with a filename and a filename was also provided, throw an error
20
+ if (filename) {
21
+ if (path.match(/\.\w+$/)) {
22
+ throw new PathAlreadyContainsFilenameError(`The path '${path}' already contains a filename. Cannot add filename: '${filename}'.`);
23
+ }
24
+ filename = filename.replace(/^\//, '');
25
+ path += `/${filename}`;
26
+ }
27
+ return currentExecutionDirectory + "/" + path;
28
+ }
29
+ };
30
+ PathManager = __decorate([
31
+ injectable()
32
+ ], PathManager);
33
+ export { PathManager };
34
+ //# sourceMappingURL=path.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.manager.js","sourceRoot":"","sources":["../../../../src/managers/path.manager.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,gCAAgC,EAAC,MAAM,gDAAgD,CAAC;AAGzF,IAAM,WAAW,GAAjB,MAAM,WAAW;IACpB,4BAA4B;QACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,0CAA0C,CAAC,IAAY,EAAE,QAAiB;QACtE,MAAM,yBAAyB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEtE,kDAAkD;QAClD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,gDAAgD;QAChD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE/B,wFAAwF;QACxF,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,gCAAgC,CAAC,aAAa,IAAI,wDAAwD,QAAQ,IAAI,CAAC,CAAA;YACrI,CAAC;YAED,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAEvC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAA;QAC1B,CAAC;QAED,OAAO,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAC;IAClD,CAAC;CACJ,CAAA;AA3BY,WAAW;IADvB,UAAU,EAAE;GACA,WAAW,CA2BvB"}
@@ -0,0 +1,67 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { exec, spawn } from "child_process";
11
+ import { ConsoleManager } from "./console.manager";
12
+ import { injectable } from "tsyringe";
13
+ import { PathManager } from "./path.manager";
14
+ let ShellManager = class ShellManager {
15
+ constructor(consoleManager, pathManager) {
16
+ this.consoleManager = consoleManager;
17
+ this.pathManager = pathManager;
18
+ }
19
+ execute(command, options) {
20
+ return new Promise((resolve, reject) => {
21
+ var _a;
22
+ const env = process.env;
23
+ let finalCommand = command;
24
+ const streamStdout = (_a = options === null || options === void 0 ? void 0 : options.streamStdout) !== null && _a !== void 0 ? _a : false;
25
+ const directory = options === null || options === void 0 ? void 0 : options.directory;
26
+ if (directory) {
27
+ const absoluteDirectory = this.pathManager.getPathRelativeToCurrentExecutionDirectory(directory);
28
+ finalCommand = "cd " + absoluteDirectory + " && " + command;
29
+ }
30
+ this.consoleManager.writeLine(finalCommand);
31
+ if (streamStdout) {
32
+ const child = spawn(finalCommand, [], { shell: true, env });
33
+ child.stdout.on('data', (data) => {
34
+ this.consoleManager.writeLine(`${data}`);
35
+ });
36
+ child.stderr.on('data', (data) => {
37
+ this.consoleManager.writeLine(`Stderr: ${data}`);
38
+ });
39
+ child.on('close', (code) => {
40
+ this.consoleManager.writeLine(`Command exited with code ${code}`);
41
+ if (code !== 0) {
42
+ return reject(code);
43
+ }
44
+ return resolve(code + "");
45
+ });
46
+ }
47
+ return exec(finalCommand, { env, maxBuffer: options === null || options === void 0 ? void 0 : options.maxBuffer }, (error, stdout, stderr) => {
48
+ if (error && error.code) {
49
+ this.consoleManager.writeLine("Error: " + error.message);
50
+ return reject(error);
51
+ }
52
+ if (stderr) {
53
+ this.consoleManager.writeLine("Stderr: " + stderr);
54
+ return resolve(stderr);
55
+ }
56
+ this.consoleManager.writeLine(stdout);
57
+ return resolve(stdout);
58
+ });
59
+ });
60
+ }
61
+ };
62
+ ShellManager = __decorate([
63
+ injectable(),
64
+ __metadata("design:paramtypes", [ConsoleManager, PathManager])
65
+ ], ShellManager);
66
+ export { ShellManager };
67
+ //# sourceMappingURL=shell.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.manager.js","sourceRoot":"","sources":["../../../../src/managers/shell.manager.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export * from "./command-not-found.error";
2
+ export * from "./path-already-contains-filename.error";
@@ -0,0 +1,3 @@
1
+ export declare class PathAlreadyContainsFilenameError extends Error {
2
+ constructor(message: string);
3
+ }
@@ -1 +1,3 @@
1
1
  export * from "./console.manager";
2
+ export * from "./path.manager";
3
+ export * from "./shell.manager";
@@ -0,0 +1,4 @@
1
+ export declare class PathManager {
2
+ getCurrentExecutionDirectory(): string;
3
+ getPathRelativeToCurrentExecutionDirectory(path: string, filename?: string): string;
4
+ }
@@ -0,0 +1,12 @@
1
+ import { ConsoleManager } from "./console.manager";
2
+ import { PathManager } from "./path.manager";
3
+ export declare class ShellManager {
4
+ private readonly consoleManager;
5
+ private readonly pathManager;
6
+ constructor(consoleManager: ConsoleManager, pathManager: PathManager);
7
+ execute(command: string, options?: {
8
+ directory?: string;
9
+ streamStdout?: boolean;
10
+ maxBuffer?: number;
11
+ }): Promise<string>;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pristine-ts/cli",
3
- "version": "0.0.319",
3
+ "version": "0.0.321",
4
4
  "description": "",
5
5
  "module": "dist/lib/esm/cli.module.js",
6
6
  "main": "dist/lib/cjs/cli.module.js",
@@ -24,11 +24,11 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@pristine-ts/common": "^0.0.319",
28
- "@pristine-ts/core": "^0.0.319",
29
- "@pristine-ts/file": "^0.0.319",
30
- "@pristine-ts/logging": "^0.0.319",
31
- "@pristine-ts/validation": "^0.0.319",
27
+ "@pristine-ts/common": "^0.0.321",
28
+ "@pristine-ts/core": "^0.0.321",
29
+ "@pristine-ts/file": "^0.0.321",
30
+ "@pristine-ts/logging": "^0.0.321",
31
+ "@pristine-ts/validation": "^0.0.321",
32
32
  "class-transformer": "^0.5.1"
33
33
  },
34
34
  "jest": {
@@ -65,5 +65,5 @@
65
65
  "src/*.{js,ts}"
66
66
  ]
67
67
  },
68
- "gitHead": "43273e8d41e45d1d43b738d17dece1fc914c7f2f"
68
+ "gitHead": "0bac47f1253fd813991bcdbae2a75b0dd6572c20"
69
69
  }