@bitblit/ratchet-node-only 4.0.420-alpha → 4.0.421-alpha
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/lib/build/index.d.ts +1 -0
- package/lib/build/index.js +2 -0
- package/lib/build/index.js.map +1 -0
- package/lib/build/ratchet-node-only-info.d.ts +5 -0
- package/lib/build/ratchet-node-only-info.js +15 -0
- package/lib/build/ratchet-node-only-info.js.map +1 -0
- package/lib/ci/apply-ci-env-variables-to-files.d.ts +7 -0
- package/lib/ci/apply-ci-env-variables-to-files.js +81 -0
- package/lib/ci/apply-ci-env-variables-to-files.js.map +1 -0
- package/lib/ci/ci-run-information-util.d.ts +8 -0
- package/lib/ci/ci-run-information-util.js +44 -0
- package/lib/ci/ci-run-information-util.js.map +1 -0
- package/lib/ci/ci-run-information.d.ts +9 -0
- package/lib/ci/ci-run-information.js +2 -0
- package/lib/ci/ci-run-information.js.map +1 -0
- package/lib/ci/index.d.ts +3 -0
- package/lib/ci/index.js +4 -0
- package/lib/ci/index.js.map +1 -0
- package/lib/cli/abstract-ratchet-cli-handler.d.ts +6 -0
- package/lib/cli/abstract-ratchet-cli-handler.js +31 -0
- package/lib/cli/abstract-ratchet-cli-handler.js.map +1 -0
- package/lib/cli/cli-ratchet.d.ts +6 -0
- package/lib/cli/cli-ratchet.js +29 -0
- package/lib/cli/cli-ratchet.js.map +1 -0
- package/lib/cli/index.d.ts +3 -0
- package/lib/cli/index.js +4 -0
- package/lib/cli/index.js.map +1 -0
- package/lib/cli/ratchet-cli-handler.d.ts +6 -0
- package/lib/cli/ratchet-cli-handler.js +20 -0
- package/lib/cli/ratchet-cli-handler.js.map +1 -0
- package/lib/csv/csv-ratchet.d.ts +24 -0
- package/lib/csv/csv-ratchet.js +159 -0
- package/lib/csv/csv-ratchet.js.map +1 -0
- package/lib/csv/index.d.ts +1 -0
- package/lib/csv/index.js +2 -0
- package/lib/csv/index.js.map +1 -0
- package/lib/export-builder/export-map-builder-config.d.ts +9 -0
- package/lib/export-builder/export-map-builder-config.js +2 -0
- package/lib/export-builder/export-map-builder-config.js.map +1 -0
- package/lib/export-builder/export-map-builder-target-config.d.ts +5 -0
- package/lib/export-builder/export-map-builder-target-config.js +2 -0
- package/lib/export-builder/export-map-builder-target-config.js.map +1 -0
- package/lib/export-builder/export-map-builder.d.ts +8 -0
- package/lib/export-builder/export-map-builder.js +138 -0
- package/lib/export-builder/export-map-builder.js.map +1 -0
- package/lib/export-builder/index.d.ts +3 -0
- package/lib/export-builder/index.js +4 -0
- package/lib/export-builder/index.js.map +1 -0
- package/lib/files/files-to-static-class.d.ts +5 -0
- package/lib/files/files-to-static-class.js +76 -0
- package/lib/files/files-to-static-class.js.map +1 -0
- package/lib/files/index.d.ts +2 -0
- package/lib/files/index.js +3 -0
- package/lib/files/index.js.map +1 -0
- package/lib/files/unique-file-rename.d.ts +4 -0
- package/lib/files/unique-file-rename.js +68 -0
- package/lib/files/unique-file-rename.js.map +1 -0
- package/lib/stream/buffer-writable.d.ts +7 -0
- package/lib/stream/buffer-writable.js +17 -0
- package/lib/stream/buffer-writable.js.map +1 -0
- package/lib/stream/index.d.ts +4 -0
- package/lib/stream/index.js +5 -0
- package/lib/stream/index.js.map +1 -0
- package/lib/stream/multi-stream.d.ts +6 -0
- package/lib/stream/multi-stream.js +13 -0
- package/lib/stream/multi-stream.js.map +1 -0
- package/lib/stream/node-stream-ratchet.d.ts +9 -0
- package/lib/stream/node-stream-ratchet.js +53 -0
- package/lib/stream/node-stream-ratchet.js.map +1 -0
- package/lib/stream/string-writable.d.ts +7 -0
- package/lib/stream/string-writable.js +15 -0
- package/lib/stream/string-writable.js.map +1 -0
- package/lib/third-party/git/git-ratchet.d.ts +26 -0
- package/lib/third-party/git/git-ratchet.js +71 -0
- package/lib/third-party/git/git-ratchet.js.map +1 -0
- package/lib/third-party/index.d.ts +2 -0
- package/lib/third-party/index.js +3 -0
- package/lib/third-party/index.js.map +1 -0
- package/lib/third-party/slack/publish-ci-release-to-slack.d.ts +4 -0
- package/lib/third-party/slack/publish-ci-release-to-slack.js +59 -0
- package/lib/third-party/slack/publish-ci-release-to-slack.js.map +1 -0
- package/package.json +10 -8
- package/lib/index.mjs +0 -2
- package/lib/types.d.ts +0 -149
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { CliRatchet } from '../cli/cli-ratchet.js';
|
|
4
|
+
import { Logger } from '@bitblit/ratchet-common/logger/logger';
|
|
5
|
+
import { EsmRatchet } from '@bitblit/ratchet-common/lang/esm-ratchet';
|
|
6
|
+
import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
|
|
7
|
+
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
|
|
8
|
+
export class ExportMapBuilder {
|
|
9
|
+
static process(cfg) {
|
|
10
|
+
Logger.info('Building export map : %j', cfg);
|
|
11
|
+
cfg.targetPackageJsonFile = cfg.targetPackageJsonFile ?? path.join(EsmRatchet.fetchDirName(import.meta.url), 'package.json');
|
|
12
|
+
cfg.includes = cfg.includes ?? [new RegExp('.*')];
|
|
13
|
+
cfg.excludes = cfg.excludes ?? [];
|
|
14
|
+
if (!fs.statSync(cfg.targetPackageJsonFile).isFile()) {
|
|
15
|
+
throw ErrorRatchet.fErr('targetPackageJsonFile: %s does not exist or is not a file', cfg.targetPackageJsonFile);
|
|
16
|
+
}
|
|
17
|
+
cfg.sourceRoot = cfg.sourceRoot ?? path.join(path.dirname(cfg.targetPackageJsonFile), 'src');
|
|
18
|
+
if (!fs.statSync(cfg.sourceRoot).isDirectory()) {
|
|
19
|
+
throw ErrorRatchet.fErr('sourceRoot: %s does not exist or is not a folder', cfg.sourceRoot);
|
|
20
|
+
}
|
|
21
|
+
cfg.targets = cfg.targets ?? [
|
|
22
|
+
{
|
|
23
|
+
type: 'import',
|
|
24
|
+
prefix: './lib',
|
|
25
|
+
suffix: '.js',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
type: 'types',
|
|
29
|
+
prefix: './lib',
|
|
30
|
+
suffix: '.d.ts',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
Logger.info('Using sourceRoot %s and targets %j', cfg.sourceRoot, cfg.targets);
|
|
34
|
+
const exports = {};
|
|
35
|
+
for (let i = 0; i < cfg.includes.length; i++) {
|
|
36
|
+
ExportMapBuilder.processSingleFile(cfg.sourceRoot, cfg, exports);
|
|
37
|
+
}
|
|
38
|
+
const parsedPackage = JSON.parse(fs.readFileSync(cfg.targetPackageJsonFile).toString());
|
|
39
|
+
parsedPackage['exports'] = exports;
|
|
40
|
+
if (cfg.dryRun) {
|
|
41
|
+
Logger.info('DryRun : Would have updated package json to : \n%j', parsedPackage);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
fs.writeFileSync(cfg.targetPackageJsonFile, JSON.stringify(parsedPackage, null, 2));
|
|
45
|
+
}
|
|
46
|
+
return exports;
|
|
47
|
+
}
|
|
48
|
+
static pathMatchesOneOfRegExp(fileName, reg) {
|
|
49
|
+
let rval = false;
|
|
50
|
+
if (StringRatchet.trimToNull(fileName) && reg.length > 0) {
|
|
51
|
+
rval = true;
|
|
52
|
+
}
|
|
53
|
+
return rval;
|
|
54
|
+
}
|
|
55
|
+
static findExports(fileName) {
|
|
56
|
+
const text = StringRatchet.trimToEmpty(fs.readFileSync(fileName).toString());
|
|
57
|
+
const words = text.split(/[ \t\n]+/);
|
|
58
|
+
const exports = [];
|
|
59
|
+
for (let i = 0; i < words.length - 2; i++) {
|
|
60
|
+
if (words[i] === 'export') {
|
|
61
|
+
if (words[i + 1] === 'class' || words[i + 1] === 'interface') {
|
|
62
|
+
let next = words[i + 2];
|
|
63
|
+
if (next.endsWith('{')) {
|
|
64
|
+
next = next.substring(0, next.length - 1);
|
|
65
|
+
}
|
|
66
|
+
if (next.indexOf('<') !== -1) {
|
|
67
|
+
next = next.substring(0, next.indexOf('<'));
|
|
68
|
+
}
|
|
69
|
+
exports.push(next);
|
|
70
|
+
}
|
|
71
|
+
else if (words[i + 1] === 'default') {
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return exports;
|
|
76
|
+
}
|
|
77
|
+
static processSingleFile(fileName, cfg, inRecord) {
|
|
78
|
+
const rval = Object.assign({}, inRecord ?? {});
|
|
79
|
+
if (fs.existsSync(fileName)) {
|
|
80
|
+
if (ExportMapBuilder.pathMatchesOneOfRegExp(fileName, cfg.includes)) {
|
|
81
|
+
if (!ExportMapBuilder.pathMatchesOneOfRegExp(fileName, cfg.excludes)) {
|
|
82
|
+
const stats = fs.statSync(fileName);
|
|
83
|
+
if (stats.isDirectory()) {
|
|
84
|
+
const contFiles = fs.readdirSync(fileName);
|
|
85
|
+
Logger.info('Found %d files in %s to process', contFiles.length, fileName);
|
|
86
|
+
contFiles.forEach((f) => ExportMapBuilder.processSingleFile(path.join(fileName, f), cfg, inRecord));
|
|
87
|
+
}
|
|
88
|
+
else if (stats.isFile()) {
|
|
89
|
+
const exports = ExportMapBuilder.findExports(fileName);
|
|
90
|
+
exports.forEach((s) => {
|
|
91
|
+
if (inRecord[s]) {
|
|
92
|
+
throw ErrorRatchet.fErr('Collision on name %s : %s vs %s', fileName, inRecord[s], s);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
let subPath = fileName.substring(cfg.sourceRoot.length);
|
|
96
|
+
subPath = subPath.split('\\').join('/');
|
|
97
|
+
if (subPath.endsWith('.ts')) {
|
|
98
|
+
subPath = subPath.substring(0, subPath.length - 3);
|
|
99
|
+
}
|
|
100
|
+
cfg.targets.forEach((tgt) => {
|
|
101
|
+
inRecord[s] = inRecord[s] || {};
|
|
102
|
+
const targetFileName = StringRatchet.trimToEmpty(tgt.prefix) + subPath + StringRatchet.trimToEmpty(tgt.suffix);
|
|
103
|
+
inRecord[s][tgt.type] = targetFileName;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
Logger.error('Skipping - neither file nor directory : %s', fileName);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
Logger.error('Skipping - fails exclude check : %s', fileName);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
Logger.error('Skipping - fails include check : %s', fileName);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
Logger.warn('Could not find file %s', fileName);
|
|
122
|
+
}
|
|
123
|
+
return rval;
|
|
124
|
+
}
|
|
125
|
+
static async runFromCliArgs(args) {
|
|
126
|
+
if (args.length < 3) {
|
|
127
|
+
Logger.infoP('Usage: ratchet-export-builder');
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
const idx = CliRatchet.indexOfCommandArgument('export-builder');
|
|
132
|
+
const cfg = {};
|
|
133
|
+
Logger.info('Running ExportMapBuilder from command line arguments');
|
|
134
|
+
return ExportMapBuilder.process(cfg);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=export-map-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-map-builder.js","sourceRoot":"","sources":["../../src/export-builder/export-map-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/export-builder/index.ts"],"names":[],"mappings":"AAIA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uCAAuC,CAAC;AACtD,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { CliRatchet } from '../cli/cli-ratchet.js';
|
|
4
|
+
import { Logger } from '@bitblit/ratchet-common/logger/logger';
|
|
5
|
+
import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
|
|
6
|
+
export class FilesToStaticClass {
|
|
7
|
+
static async process(inFileNames, outClassName, outFileName = null) {
|
|
8
|
+
if (!inFileNames) {
|
|
9
|
+
throw new Error('fileNames must be defined');
|
|
10
|
+
}
|
|
11
|
+
if (!outClassName) {
|
|
12
|
+
throw new Error('outClassName must be defined');
|
|
13
|
+
}
|
|
14
|
+
if (inFileNames.length === 0) {
|
|
15
|
+
Logger.warn('Warning - no files supplied to process');
|
|
16
|
+
}
|
|
17
|
+
const fileNames = [];
|
|
18
|
+
inFileNames.forEach((f) => FilesToStaticClass.processFilename(f, fileNames));
|
|
19
|
+
Logger.info('Generating class %s from files %j (output file: %s)', outClassName, fileNames, outFileName);
|
|
20
|
+
let rval = '/** \n';
|
|
21
|
+
rval += '* Holder for the constants to be used by consumers \n';
|
|
22
|
+
rval += '* Moves it into code so that it can survive a trip through WebPack \n';
|
|
23
|
+
rval += '*/ \n\n';
|
|
24
|
+
rval += 'export class ' + outClassName + ' { \n';
|
|
25
|
+
rval += ' public static readonly VALUES:Record<string, string> = { \n';
|
|
26
|
+
for (let i = 0; i < fileNames.length; i++) {
|
|
27
|
+
let trimmed = fileNames[i].substring(fileNames[i].lastIndexOf('/') + 1);
|
|
28
|
+
trimmed = trimmed.substring(trimmed.lastIndexOf('\\') + 1);
|
|
29
|
+
const contents = fs.readFileSync(fileNames[i]).toString();
|
|
30
|
+
rval += i > 0 ? ',' : '';
|
|
31
|
+
rval += '"' + trimmed + '":' + JSON.stringify(contents) + '\n';
|
|
32
|
+
}
|
|
33
|
+
rval += '}; \n';
|
|
34
|
+
rval += '}';
|
|
35
|
+
if (outFileName) {
|
|
36
|
+
Logger.info('Writing to %s', outFileName);
|
|
37
|
+
fs.writeFileSync(outFileName, rval);
|
|
38
|
+
}
|
|
39
|
+
return rval;
|
|
40
|
+
}
|
|
41
|
+
static processFilename(fileName, targetArrayInPlace) {
|
|
42
|
+
RequireRatchet.notNullOrUndefined(targetArrayInPlace, 'targetArrayInPlace');
|
|
43
|
+
if (fs.existsSync(fileName)) {
|
|
44
|
+
const stats = fs.statSync(fileName);
|
|
45
|
+
if (stats.isDirectory()) {
|
|
46
|
+
const contFiles = fs.readdirSync(fileName);
|
|
47
|
+
Logger.info('Found %d files in %s to process', contFiles.length, fileName);
|
|
48
|
+
contFiles.forEach((f) => FilesToStaticClass.processFilename(path.join(fileName, f), targetArrayInPlace));
|
|
49
|
+
}
|
|
50
|
+
else if (stats.isFile()) {
|
|
51
|
+
targetArrayInPlace.push(fileName);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
Logger.error('Skipping - neither file nor directory : %s', fileName);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
Logger.warn('Could not find file %s', fileName);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
static async runFromCliArgs(args) {
|
|
62
|
+
if (args.length < 3) {
|
|
63
|
+
Logger.infoP('Usage: ratchet-files-to-static-class {outFileName} {outClassName} {file0} ... {fileN}');
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const idx = CliRatchet.indexOfCommandArgument('files-to-static-class');
|
|
68
|
+
const outFileName = process.argv[idx + 1];
|
|
69
|
+
const outClassName = process.argv[idx + 2];
|
|
70
|
+
const files = process.argv.slice(idx + 3);
|
|
71
|
+
Logger.info('Running FilesToStaticClass from command line arguments Target: %s TargetClass: %s InFiles: %j', outFileName, outClassName, files);
|
|
72
|
+
return FilesToStaticClass.process(files, outClassName, outFileName);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=files-to-static-class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files-to-static-class.js","sourceRoot":"","sources":["../../src/files/files-to-static-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAIA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { CliRatchet } from '../cli/cli-ratchet.js';
|
|
4
|
+
import { Logger } from '@bitblit/ratchet-common/logger/logger';
|
|
5
|
+
import { BooleanRatchet } from '@bitblit/ratchet-common/lang/boolean-ratchet';
|
|
6
|
+
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
|
|
7
|
+
export class UniqueFileRename {
|
|
8
|
+
static async process(inFolder, recursive = false, dryRun = false) {
|
|
9
|
+
let rval = 0;
|
|
10
|
+
if (!inFolder || inFolder.trim().length === 0) {
|
|
11
|
+
throw new Error('folder must be defined');
|
|
12
|
+
}
|
|
13
|
+
if (!fs.existsSync(inFolder)) {
|
|
14
|
+
throw new Error(inFolder + ' does not exist');
|
|
15
|
+
}
|
|
16
|
+
const stats = fs.statSync(inFolder);
|
|
17
|
+
if (!stats.isDirectory()) {
|
|
18
|
+
throw new Error(inFolder + ' is not a folder');
|
|
19
|
+
}
|
|
20
|
+
const contFiles = fs.readdirSync(inFolder);
|
|
21
|
+
for (let i = 0; i < contFiles.length; i++) {
|
|
22
|
+
const full = path.join(inFolder, contFiles[i]);
|
|
23
|
+
const s2 = fs.statSync(full);
|
|
24
|
+
if (s2.isFile()) {
|
|
25
|
+
const newNamePart = Date.now() + '_' + rval;
|
|
26
|
+
const idx = contFiles[i].lastIndexOf('.');
|
|
27
|
+
const newName = idx > -1 ? newNamePart + contFiles[i].substring(idx) : newNamePart;
|
|
28
|
+
const newFull = path.join(inFolder, newName);
|
|
29
|
+
if (dryRun) {
|
|
30
|
+
Logger.info('Would have renamed %s to %s', full, newFull);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
Logger.info('Renaming %s to %s', full, newFull);
|
|
34
|
+
fs.renameSync(full, newFull);
|
|
35
|
+
}
|
|
36
|
+
rval++;
|
|
37
|
+
}
|
|
38
|
+
else if (s2.isDirectory()) {
|
|
39
|
+
if (recursive) {
|
|
40
|
+
rval += await UniqueFileRename.process(full, recursive, dryRun);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
Logger.info('Ignoring %s - folder, and recursive not specified', full);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
Logger.info('Ignoring %s - neither file nor folder', full);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return rval;
|
|
51
|
+
}
|
|
52
|
+
static async runFromCliArgs(args) {
|
|
53
|
+
if (args.length !== 3) {
|
|
54
|
+
Logger.infoP('Usage: ratchet-unique-file-rename {folder} {recursive} {dryrun}');
|
|
55
|
+
Logger.infoP(args.length);
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const idx = CliRatchet.indexOfCommandArgument('unique-file-rename');
|
|
60
|
+
const folder = process.argv[idx + 1];
|
|
61
|
+
const recursive = BooleanRatchet.parseBool(process.argv[idx + 2]);
|
|
62
|
+
const dryrun = BooleanRatchet.parseBool(process.argv[idx + 3]);
|
|
63
|
+
Logger.info('Running UniqueFileName from command line arguments Folder: %s Recursive: %s DryRun: %s', folder, recursive, dryrun);
|
|
64
|
+
return StringRatchet.safeString(UniqueFileRename.process(folder, recursive, dryrun));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=unique-file-rename.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unique-file-rename.js","sourceRoot":"","sources":["../../src/files/unique-file-rename.ts"],"names":[],"mappings":"AAOA,OAAO,EAAa,MAAM,IAAI,CAAC;AAC/B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAE5E,MAAM,OAAO,gBAAgB;IACpB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,YAAqB,KAAK,EAAE,SAAkB,KAAK;QAC/F,IAAI,IAAI,GAAW,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,KAAK,GAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,EAAE,GAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAW,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC;gBACpD,MAAM,GAAG,GAAW,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,OAAO,GAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC3F,MAAM,OAAO,GAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;oBAChD,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5B,IAAI,SAAS,EAAE,CAAC;oBACd,IAAI,IAAI,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,IAAI,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAMM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAc;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YAChF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAW,UAAU,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAW,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC7C,MAAM,SAAS,GAAY,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAY,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAExE,MAAM,CAAC,IAAI,CAAC,wFAAwF,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAEjI,OAAO,aAAa,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
2
|
+
export class BufferWritable extends Writable {
|
|
3
|
+
_val = [];
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
}
|
|
7
|
+
_write(chunk, encoding, callback) {
|
|
8
|
+
if (chunk) {
|
|
9
|
+
this._val.push(chunk);
|
|
10
|
+
}
|
|
11
|
+
callback();
|
|
12
|
+
}
|
|
13
|
+
get value() {
|
|
14
|
+
return Buffer.concat(this._val);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=buffer-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer-writable.js","sourceRoot":"","sources":["../../src/stream/buffer-writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAClC,IAAI,GAAU,EAAE,CAAC;IAEzB;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,QAAgB,EAAE,QAAQ;QAC3C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAW,KAAK;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stream/index.ts"],"names":[],"mappings":"AAIA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
2
|
+
export class MultiStream extends Readable {
|
|
3
|
+
_object;
|
|
4
|
+
constructor(object, options = {}) {
|
|
5
|
+
super(object instanceof Buffer || typeof object === 'string' ? options : { objectMode: true });
|
|
6
|
+
this._object = object;
|
|
7
|
+
}
|
|
8
|
+
_read() {
|
|
9
|
+
this.push(this._object);
|
|
10
|
+
this._object = null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=multi-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-stream.js","sourceRoot":"","sources":["../../src/stream/multi-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAmB,MAAM,QAAQ,CAAC;AAEnD,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,OAAO,CAAM;IAEb,YAAY,MAAW,EAAE,UAA2B,EAAE;QACpD,KAAK,CAAC,MAAM,YAAY,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Readable, Writable } from 'stream';
|
|
2
|
+
export declare class NodeStreamRatchet {
|
|
3
|
+
private constructor();
|
|
4
|
+
static readableToBufferSync(stream: Readable): Buffer;
|
|
5
|
+
static stringToReadable(input: string): Readable;
|
|
6
|
+
static anyToStringReadable(input: any): Readable;
|
|
7
|
+
static webReadableStreamToNodeReadable(rs: ReadableStream): Readable;
|
|
8
|
+
static webWritableStreamToNodeWriteable(ws: WritableStream): Writable;
|
|
9
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Readable, Writable } from 'stream';
|
|
2
|
+
import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
|
|
3
|
+
export class NodeStreamRatchet {
|
|
4
|
+
constructor() { }
|
|
5
|
+
static readableToBufferSync(stream) {
|
|
6
|
+
const bufs = [];
|
|
7
|
+
let next = stream.read();
|
|
8
|
+
while (next) {
|
|
9
|
+
bufs.push(next);
|
|
10
|
+
next = stream.read();
|
|
11
|
+
}
|
|
12
|
+
return Buffer.concat(bufs);
|
|
13
|
+
}
|
|
14
|
+
static stringToReadable(input) {
|
|
15
|
+
return new Readable({
|
|
16
|
+
read() {
|
|
17
|
+
this.push(input);
|
|
18
|
+
this.push(null);
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
static anyToStringReadable(input) {
|
|
23
|
+
return input === null || input === undefined
|
|
24
|
+
? NodeStreamRatchet.stringToReadable(null)
|
|
25
|
+
: NodeStreamRatchet.stringToReadable(StringRatchet.safeString(input));
|
|
26
|
+
}
|
|
27
|
+
static webReadableStreamToNodeReadable(rs) {
|
|
28
|
+
const reader = rs.getReader();
|
|
29
|
+
const out = new Readable();
|
|
30
|
+
reader.read().then(async ({ value, done }) => {
|
|
31
|
+
while (!done) {
|
|
32
|
+
out.push(value);
|
|
33
|
+
({ done, value } = await reader.read());
|
|
34
|
+
}
|
|
35
|
+
out.push(null);
|
|
36
|
+
});
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
static webWritableStreamToNodeWriteable(ws) {
|
|
40
|
+
const writer = ws.getWriter();
|
|
41
|
+
const out = new Writable();
|
|
42
|
+
out._write = (chunk, encoding, callback) => {
|
|
43
|
+
writer.write(chunk);
|
|
44
|
+
callback();
|
|
45
|
+
};
|
|
46
|
+
out._final = (callback) => {
|
|
47
|
+
writer.close();
|
|
48
|
+
callback();
|
|
49
|
+
};
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=node-stream-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-stream-ratchet.js","sourceRoot":"","sources":["../../src/stream/node-stream-ratchet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAU5E,MAAM,OAAO,iBAAiB;IAG5B,gBAAuB,CAAC;IAEjB,MAAM,CAAC,oBAAoB,CAAC,MAAgB;QACjD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAa;QAC1C,OAAO,IAAI,QAAQ,CAAC;YAClB,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAAC,KAAU;QAC1C,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAC1C,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAC1C,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IAGM,MAAM,CAAC,+BAA+B,CAAC,EAAkB;QAC9D,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YAC3C,OAAO,CAAC,IAAI,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAGM,MAAM,CAAC,gCAAgC,CAAC,EAAkB;QAC/D,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QACF,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE;YACxB,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QACF,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Writable } from 'stream';
|
|
2
|
+
export class StringWritable extends Writable {
|
|
3
|
+
_val = '';
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
}
|
|
7
|
+
_write(chunk, encoding, callback) {
|
|
8
|
+
this._val += chunk ? chunk.toString() : '';
|
|
9
|
+
callback();
|
|
10
|
+
}
|
|
11
|
+
get value() {
|
|
12
|
+
return this._val;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=string-writable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-writable.js","sourceRoot":"","sources":["../../src/stream/string-writable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAClC,IAAI,GAAW,EAAE,CAAC;IAE1B;QACE,KAAK,EAAE,CAAC;IACV,CAAC;IAED,MAAM,CAAC,KAAU,EAAE,QAAgB,EAAE,QAAQ;QAC3C,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare class GitRatchet {
|
|
2
|
+
private static readonly SPLIT_CHARACTER;
|
|
3
|
+
private static readonly PRETTY_FORMAT;
|
|
4
|
+
static executeCommand(command: string, options: any): Promise<string>;
|
|
5
|
+
private static getCommandString;
|
|
6
|
+
static getLastCommitSwallowException(options?: any): Promise<GitCommitData>;
|
|
7
|
+
static getLastCommit(options?: any): Promise<GitCommitData>;
|
|
8
|
+
}
|
|
9
|
+
export interface GitCommitData {
|
|
10
|
+
shortHash: string;
|
|
11
|
+
hash: string;
|
|
12
|
+
subject: string;
|
|
13
|
+
sanitizedSubject: string;
|
|
14
|
+
body: string;
|
|
15
|
+
authoredOn: string;
|
|
16
|
+
committedOn: string;
|
|
17
|
+
author: GitCommitDataPerson;
|
|
18
|
+
committer: GitCommitDataPerson;
|
|
19
|
+
notes: string;
|
|
20
|
+
branch: string;
|
|
21
|
+
tags: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface GitCommitDataPerson {
|
|
24
|
+
name: string;
|
|
25
|
+
email: string;
|
|
26
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import process from 'child_process';
|
|
2
|
+
import { EsmRatchet } from '@bitblit/ratchet-common/lang/esm-ratchet';
|
|
3
|
+
import { Logger } from '@bitblit/ratchet-common/logger/logger';
|
|
4
|
+
export class GitRatchet {
|
|
5
|
+
static SPLIT_CHARACTER = '<##>';
|
|
6
|
+
static PRETTY_FORMAT = ['%h', '%H', '%s', '%f', '%b', '%at', '%ct', '%an', '%ae', '%cn', '%ce', '%N', ''];
|
|
7
|
+
static async executeCommand(command, options) {
|
|
8
|
+
let dst = EsmRatchet.fetchDirName(import.meta.url);
|
|
9
|
+
if (!!options && !!options.dst) {
|
|
10
|
+
dst = options.dst;
|
|
11
|
+
}
|
|
12
|
+
return new Promise((res, rej) => {
|
|
13
|
+
process.exec(command, { cwd: dst }, (err, stdout, stderr) => {
|
|
14
|
+
if (stdout === '') {
|
|
15
|
+
rej('this does not look like a git repo');
|
|
16
|
+
}
|
|
17
|
+
if (stderr) {
|
|
18
|
+
rej(stderr);
|
|
19
|
+
}
|
|
20
|
+
res(stdout);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
static getCommandString(splitChar) {
|
|
25
|
+
return ('git log -1 --pretty=format:"' +
|
|
26
|
+
GitRatchet.PRETTY_FORMAT.join(splitChar) +
|
|
27
|
+
'"' +
|
|
28
|
+
' && git rev-parse --abbrev-ref HEAD' +
|
|
29
|
+
' && git tag --contains HEAD');
|
|
30
|
+
}
|
|
31
|
+
static async getLastCommitSwallowException(options = {}) {
|
|
32
|
+
let rval = null;
|
|
33
|
+
try {
|
|
34
|
+
rval = await this.getLastCommit(options);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
Logger.warn('Failed to fetch git data : %s', err, err);
|
|
38
|
+
}
|
|
39
|
+
return rval;
|
|
40
|
+
}
|
|
41
|
+
static async getLastCommit(options = {}) {
|
|
42
|
+
const command = GitRatchet.getCommandString(GitRatchet.SPLIT_CHARACTER);
|
|
43
|
+
const res = await GitRatchet.executeCommand(command, options);
|
|
44
|
+
const a = res.split(GitRatchet.SPLIT_CHARACTER);
|
|
45
|
+
const branchAndTags = a[a.length - 1].split('\n').filter((n) => n);
|
|
46
|
+
const branch = branchAndTags[0];
|
|
47
|
+
const tags = branchAndTags.slice(1);
|
|
48
|
+
const rval = {
|
|
49
|
+
shortHash: a[0],
|
|
50
|
+
hash: a[1],
|
|
51
|
+
subject: a[2],
|
|
52
|
+
sanitizedSubject: a[3],
|
|
53
|
+
body: a[4],
|
|
54
|
+
authoredOn: a[5],
|
|
55
|
+
committedOn: a[6],
|
|
56
|
+
author: {
|
|
57
|
+
name: a[7],
|
|
58
|
+
email: a[8],
|
|
59
|
+
},
|
|
60
|
+
committer: {
|
|
61
|
+
name: a[9],
|
|
62
|
+
email: a[10],
|
|
63
|
+
},
|
|
64
|
+
notes: a[11],
|
|
65
|
+
branch,
|
|
66
|
+
tags,
|
|
67
|
+
};
|
|
68
|
+
return rval;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=git-ratchet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-ratchet.js","sourceRoot":"","sources":["../../../src/third-party/git/git-ratchet.ts"],"names":[],"mappings":"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"}
|