smart-commit-copilot-cli 0.1.8 → 0.1.9

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/CHANGELOG.md CHANGED
@@ -6,6 +6,24 @@ The format is based on Keep a Changelog, and this project follows Semantic Versi
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.9] - 2026-05-22
10
+
11
+ ### Added
12
+
13
+ - review detail locator to align review findings with diff file paths and line numbers via code snippets, message prefixes, and added-line matching
14
+ - localized report time window `displayRangeLabel` for `en`, `zh-cn`, and `zh-tw` output languages
15
+ - review response parser now extracts JSON from fenced code blocks and surrounding object text when model output is not pure JSON
16
+ - regression coverage for detail locator matching, fenced JSON review parsing, localized report windows, and full secret redaction
17
+
18
+ ### Changed
19
+
20
+ - config secret redaction now fully replaces `connection.apiKey` and `pullRequest.authToken` with `[REDACTED]` instead of partial masking that could leak trailing characters
21
+ - publish guidance now points to the `0.1.9` release draft during pre-publish review
22
+
23
+ ### Security
24
+
25
+ - rendered config output no longer exposes partial API keys or auth tokens after redaction
26
+
9
27
  ## [0.1.8] - 2026-05-21
10
28
 
11
29
  ### Added
package/docs/publish.md CHANGED
@@ -21,7 +21,7 @@ Current package name:
21
21
  3. Run `npm run pack:dry-run`
22
22
  4. Review [`CHANGELOG.md`](../CHANGELOG.md)
23
23
  5. Review [`docs/release-checklist.md`](./release-checklist.md)
24
- 6. Review the matching release draft in [`docs/releases/0.1.8-draft.md`](./releases/0.1.8-draft.md)
24
+ 6. Review the matching release draft in [`docs/releases/0.1.9-draft.md`](./releases/0.1.9-draft.md)
25
25
 
26
26
  ## Recommended Release Order
27
27
 
@@ -0,0 +1,69 @@
1
+ # `smart-commit-copilot-cli` 0.1.9 Draft Release Notes
2
+
3
+ ## Summary
4
+
5
+ `smart-commit-copilot-cli` 0.1.9 improves review result quality, report presentation, and secret handling for automation consumers.
6
+
7
+ This release focuses on making review findings easier to act on, accepting more LLM response formats, localizing report time window labels, and fully redacting secrets in rendered config output.
8
+
9
+ ## Highlights
10
+
11
+ - review findings are now aligned with diff file paths and line numbers via a new detail locator
12
+ - review JSON parsing accepts fenced code blocks and JSON embedded in surrounding text
13
+ - report `displayRangeLabel` is localized for `en`, `zh-cn`, and `zh-tw`
14
+ - config secret redaction now uses full `[REDACTED]` replacement instead of partial masking
15
+
16
+ ## Why This Release Matters
17
+
18
+ This version closes several quality gaps for teams using review and reporting in hooks or agents:
19
+
20
+ - review details are more likely to include actionable file and line metadata even when the model only returns message text or inline code snippets
21
+ - report headings and period labels read naturally in the configured output language
22
+ - rendered config output no longer leaks trailing characters from API keys or auth tokens
23
+
24
+ ## Notable Behavior Updates
25
+
26
+ ### Review detail locator
27
+
28
+ - after parsing a review response, the CLI attempts to map each detail to added diff lines using message prefixes, fenced code snippets, and fuzzy content matching
29
+ - when a line match is found, `filePath` and `lineNumber` are populated and the message prefix is normalized
30
+ - when only a file can be inferred, `filePath` is set without forcing a line number
31
+
32
+ ### Review response parsing
33
+
34
+ - `parseReviewResponse` now extracts JSON from ```json fenced blocks when present
35
+ - if no fenced block is found, it falls back to the first `{ ... }` object span in the raw text
36
+ - this reduces correction retries when providers wrap JSON in markdown
37
+
38
+ ### Report time window labels
39
+
40
+ - `resolveReportTimeWindow` accepts an output `language` and localizes `displayRangeLabel`
41
+ - Chinese labels use natural month, quarter, and year phrasing; English labels use month names and `Qn` quarter notation
42
+ - report aggregation passes the configured reporting language through to time window resolution
43
+
44
+ ### Secret redaction
45
+
46
+ - `redactCliConfig` now replaces non-empty `connection.apiKey` and `pullRequest.authToken` values with `[REDACTED]`
47
+ - partial masking such as `sk-****1234` is no longer used in rendered config output
48
+
49
+ ## Verification Coverage Added Or Strengthened
50
+
51
+ The project now has stronger regression protection for:
52
+
53
+ 1. detail locator file and line matching against unified diffs
54
+ 2. fenced JSON and embedded-object review response parsing
55
+ 3. localized report window labels for English and Chinese output languages
56
+ 4. full secret redaction without leaking original token characters in JSON output
57
+
58
+ ## Suggested Upgrade Path
59
+
60
+ 1. update to `0.1.9`
61
+ 2. run `npm test`
62
+ 3. run `npm run smoke:test`
63
+ 4. run `npm run pack:dry-run`
64
+ 5. publish only after all three checks pass
65
+
66
+ ## Known Follow-Up Areas
67
+
68
+ - broader real-provider validation for review detail locator edge cases on large or heavily chunked diffs
69
+ - optional Traditional Chinese label variants if teams need locale-specific wording beyond the current shared Chinese formatter
package/out/output.js CHANGED
@@ -19,9 +19,6 @@ function redactSecret(value) {
19
19
  if (!trimmed) {
20
20
  return "";
21
21
  }
22
- if (trimmed.length <= 4) {
23
- return "*".repeat(trimmed.length);
24
- }
25
- return `${"*".repeat(Math.max(4, trimmed.length - 4))}${trimmed.slice(-4)}`;
22
+ return "[REDACTED]";
26
23
  }
27
24
  //# sourceMappingURL=output.js.map
package/out/output.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":";;AAaA,0CAYC;AAZD,SAAgB,eAAe,CAAC,MAAiB;IAC/C,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;SAC/C;QACD,WAAW,EAAE;YACX,GAAG,MAAM,CAAC,WAAW;YACrB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;SACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":";;AAaA,0CAYC;AAZD,SAAgB,eAAe,CAAC,MAAiB;IAC/C,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE;YACV,GAAG,MAAM,CAAC,UAAU;YACpB,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;SAC/C;QACD,WAAW,EAAE;YACX,GAAG,MAAM,CAAC,WAAW;YACrB,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;SACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alignReviewResultWithDiff = alignReviewResultWithDiff;
4
+ const chunkPrefixPattern = /^(\[chunk \d+\]\s*)/i;
5
+ const locationPattern = /^(?:\[|【)([^\]】:]+(?:\/[^\]】:]+)*)(?::([^\]】]+))?(?:\]|】)\s*/;
6
+ function alignReviewResultWithDiff(result, diff) {
7
+ if (result.details.length === 0 || !diff.trim()) {
8
+ return result;
9
+ }
10
+ const index = buildAddedLineIndex(diff);
11
+ if (index.size === 0) {
12
+ return result;
13
+ }
14
+ return {
15
+ ...result,
16
+ details: result.details.map((detail) => alignDetailWithDiff(detail, index))
17
+ };
18
+ }
19
+ function alignDetailWithDiff(detail, index) {
20
+ const parsed = parseDetailPrefix(detail);
21
+ const snippets = extractSnippets(parsed.message);
22
+ const match = snippets.length > 0 ? findBestMatch(parsed, snippets, index) : undefined;
23
+ if (match) {
24
+ return {
25
+ ...detail,
26
+ filePath: match.filePath,
27
+ lineNumber: match.lineNumber,
28
+ message: buildNormalizedMessage(parsed)
29
+ };
30
+ }
31
+ const fallbackLocation = buildFallbackLocation(parsed, index);
32
+ if (fallbackLocation) {
33
+ return {
34
+ ...detail,
35
+ filePath: fallbackLocation.filePath,
36
+ lineNumber: undefined,
37
+ message: buildNormalizedMessage(parsed)
38
+ };
39
+ }
40
+ const normalizedMessage = buildNormalizedMessage(parsed);
41
+ return normalizedMessage === detail.message
42
+ ? detail
43
+ : {
44
+ ...detail,
45
+ message: normalizedMessage
46
+ };
47
+ }
48
+ function parseDetailPrefix(detail) {
49
+ let rest = detail.message.trim();
50
+ let chunkPrefix = "";
51
+ const chunkMatch = rest.match(chunkPrefixPattern);
52
+ if (chunkMatch) {
53
+ chunkPrefix = chunkMatch[1] ?? "";
54
+ rest = rest.slice(chunkPrefix.length);
55
+ }
56
+ const locationMatch = rest.match(locationPattern);
57
+ if (!locationMatch) {
58
+ return {
59
+ chunkPrefix,
60
+ filePath: detail.filePath,
61
+ lineNumber: detail.lineNumber,
62
+ message: rest
63
+ };
64
+ }
65
+ return {
66
+ chunkPrefix,
67
+ filePath: detail.filePath ?? locationMatch[1],
68
+ lineNumber: detail.lineNumber ?? parseLooseLineNumber(locationMatch[2]),
69
+ message: rest.slice(locationMatch[0].length).trimStart()
70
+ };
71
+ }
72
+ function extractSnippets(message) {
73
+ const fencedSnippets = [...message.matchAll(/`([^`]+)`/g)].map((match) => match[1]?.trim() ?? "");
74
+ const inferredSnippets = [
75
+ ...message.matchAll(/\b[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*\([^()\n]{0,120}\)/g)
76
+ ].map((match) => match[0]?.trim() ?? "");
77
+ const snippets = [...fencedSnippets, ...inferredSnippets]
78
+ .filter((snippet) => isInformativeSnippet(snippet))
79
+ .filter((snippet) => snippet.length > 0)
80
+ .sort((left, right) => right.length - left.length);
81
+ return [...new Set(snippets)];
82
+ }
83
+ function buildFallbackLocation(detail, index) {
84
+ if (!detail.filePath) {
85
+ return undefined;
86
+ }
87
+ const candidates = getCandidateFiles(detail.filePath, index);
88
+ const resolvedFilePath = candidates.length === 1 ? candidates[0] : detail.filePath;
89
+ return {
90
+ filePath: resolvedFilePath
91
+ };
92
+ }
93
+ function findBestMatch(detail, snippets, index) {
94
+ const requestedFiles = getCandidateFiles(detail.filePath, index);
95
+ const fileGroups = requestedFiles.length > 0
96
+ ? requestedFiles.map((filePath) => ({
97
+ filePath,
98
+ fileScore: scoreFileMatch(detail.filePath, filePath),
99
+ lines: index.get(filePath) ?? []
100
+ }))
101
+ : [...index.entries()].map(([filePath, lines]) => ({
102
+ filePath,
103
+ fileScore: 0,
104
+ lines
105
+ }));
106
+ const candidates = [];
107
+ for (const snippet of snippets) {
108
+ const normalizedSnippet = normalizeSnippet(snippet);
109
+ if (!normalizedSnippet) {
110
+ continue;
111
+ }
112
+ for (const group of fileGroups) {
113
+ for (const addedLine of group.lines) {
114
+ if (!isSnippetMatch(normalizedSnippet, addedLine.normalizedContent)) {
115
+ continue;
116
+ }
117
+ candidates.push({
118
+ addedLine,
119
+ fileScore: group.fileScore,
120
+ snippetLength: normalizedSnippet.length,
121
+ lineDistance: detail.lineNumber === undefined ? 0 : Math.abs(addedLine.lineNumber - detail.lineNumber)
122
+ });
123
+ }
124
+ }
125
+ }
126
+ if (candidates.length === 0) {
127
+ return undefined;
128
+ }
129
+ candidates.sort((left, right) => {
130
+ if (left.fileScore !== right.fileScore) {
131
+ return right.fileScore - left.fileScore;
132
+ }
133
+ if (left.snippetLength !== right.snippetLength) {
134
+ return right.snippetLength - left.snippetLength;
135
+ }
136
+ if (left.lineDistance !== right.lineDistance) {
137
+ return left.lineDistance - right.lineDistance;
138
+ }
139
+ if (left.addedLine.filePath !== right.addedLine.filePath) {
140
+ return left.addedLine.filePath.localeCompare(right.addedLine.filePath);
141
+ }
142
+ return left.addedLine.lineNumber - right.addedLine.lineNumber;
143
+ });
144
+ return candidates[0]?.addedLine;
145
+ }
146
+ function getCandidateFiles(filePath, index) {
147
+ if (!filePath) {
148
+ return [];
149
+ }
150
+ if (index.has(filePath)) {
151
+ return [filePath];
152
+ }
153
+ return [...index.keys()].filter((candidate) => candidate === filePath || candidate.endsWith(`/${filePath}`));
154
+ }
155
+ function scoreFileMatch(requestedFilePath, actualFilePath) {
156
+ if (!requestedFilePath) {
157
+ return 0;
158
+ }
159
+ if (requestedFilePath === actualFilePath) {
160
+ return 2;
161
+ }
162
+ if (actualFilePath.endsWith(`/${requestedFilePath}`)) {
163
+ return 1;
164
+ }
165
+ return 0;
166
+ }
167
+ function buildAddedLineIndex(diff) {
168
+ const index = new Map();
169
+ const lines = diff.split(/\r?\n/);
170
+ let currentFilePath;
171
+ let currentNewLine = 0;
172
+ let inHunk = false;
173
+ for (const line of lines) {
174
+ if (line.startsWith("diff --git ")) {
175
+ currentFilePath = extractFilePathFromDiffHeader(line);
176
+ inHunk = false;
177
+ continue;
178
+ }
179
+ if (line.startsWith("+++ ")) {
180
+ currentFilePath = extractFilePathFromPlusHeader(line) ?? currentFilePath;
181
+ continue;
182
+ }
183
+ const hunkMatch = line.match(/^@@ -\d+(?:,\d+)? \+(\d+)(?:,\d+)? @@/);
184
+ if (hunkMatch) {
185
+ currentNewLine = Number(hunkMatch[1]);
186
+ inHunk = true;
187
+ continue;
188
+ }
189
+ if (!inHunk || !currentFilePath) {
190
+ continue;
191
+ }
192
+ if (line.startsWith("+") && !line.startsWith("+++")) {
193
+ const content = line.slice(1);
194
+ pushAddedLine(index, currentFilePath, currentNewLine, content);
195
+ currentNewLine += 1;
196
+ continue;
197
+ }
198
+ if (line.startsWith("-") && !line.startsWith("---")) {
199
+ continue;
200
+ }
201
+ if (line.startsWith(" ")) {
202
+ currentNewLine += 1;
203
+ continue;
204
+ }
205
+ if (line.startsWith("\\")) {
206
+ continue;
207
+ }
208
+ inHunk = false;
209
+ }
210
+ return index;
211
+ }
212
+ function pushAddedLine(index, filePath, lineNumber, content) {
213
+ const normalizedContent = normalizeSnippet(content);
214
+ if (!normalizedContent) {
215
+ return;
216
+ }
217
+ const bucket = index.get(filePath) ?? [];
218
+ bucket.push({
219
+ filePath,
220
+ lineNumber,
221
+ content,
222
+ normalizedContent
223
+ });
224
+ index.set(filePath, bucket);
225
+ }
226
+ function extractFilePathFromDiffHeader(line) {
227
+ const match = line.match(/^diff --git a\/(.+?) b\/(.+)$/);
228
+ if (!match) {
229
+ return undefined;
230
+ }
231
+ return match[2];
232
+ }
233
+ function extractFilePathFromPlusHeader(line) {
234
+ const match = line.match(/^\+\+\+ b\/(.+)$/);
235
+ if (!match) {
236
+ return undefined;
237
+ }
238
+ return match[1];
239
+ }
240
+ function normalizeSnippet(value) {
241
+ return value.replace(/\s+/g, " ").trim();
242
+ }
243
+ function isSnippetMatch(normalizedSnippet, normalizedLine) {
244
+ return normalizedLine.includes(normalizedSnippet) || normalizedSnippet.includes(normalizedLine);
245
+ }
246
+ function isInformativeSnippet(snippet) {
247
+ const normalizedSnippet = normalizeSnippet(snippet);
248
+ if (normalizedSnippet.length < 2) {
249
+ return false;
250
+ }
251
+ const identifierLikeChars = normalizedSnippet.match(/[\p{L}\p{N}_$]/gu) ?? [];
252
+ return identifierLikeChars.length >= 2;
253
+ }
254
+ function buildNormalizedMessage(detail) {
255
+ return `${detail.chunkPrefix}${detail.message}`.trim();
256
+ }
257
+ function parseLooseLineNumber(raw) {
258
+ if (!raw) {
259
+ return undefined;
260
+ }
261
+ const match = raw.match(/\d+/);
262
+ if (!match) {
263
+ return undefined;
264
+ }
265
+ const lineNumber = Number(match[0]);
266
+ return Number.isFinite(lineNumber) ? lineNumber : undefined;
267
+ }
268
+ //# sourceMappingURL=detailLocator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detailLocator.js","sourceRoot":"","sources":["../../src/review/detailLocator.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.runReviewExecution = runReviewExecution;
18
18
  const responseCorrection_1 = require("../llm/responseCorrection");
19
19
  const openaiProvider_1 = require("./openaiProvider");
20
+ const detailLocator_1 = require("./detailLocator");
20
21
  const parser_1 = require("./parser");
21
22
  const mockProvider_1 = require("./mockProvider");
22
23
  __exportStar(require("./types"), exports);
@@ -28,7 +29,7 @@ async function runReviewExecution(input, options) {
28
29
  initialResponse: rawReview,
29
30
  maxCorrectionRetries: options.config.connection.llmResponseCorrectionRetryCount,
30
31
  validateResponse: async (response) => {
31
- const parsed = tryParseAndValidate(response, provider.name, input.reviewLanguage, input.threshold);
32
+ const parsed = tryParseAndValidate(response, provider.name, input.reviewLanguage, input.threshold, input.diff);
32
33
  if (!parsed.ok) {
33
34
  throw new ReviewResponseValidationError(parsed.issues);
34
35
  }
@@ -50,9 +51,9 @@ function resolveProviderMode() {
50
51
  function createProvider(config, mode, mockMode) {
51
52
  return mode === "mock" ? (0, mockProvider_1.createMockReviewProvider)({ mode: mockMode }) : (0, openaiProvider_1.createOpenAICompatibleReviewProvider)(config);
52
53
  }
53
- function tryParseAndValidate(raw, providerName, reviewLanguage, threshold) {
54
+ function tryParseAndValidate(raw, providerName, reviewLanguage, threshold, diff) {
54
55
  try {
55
- const result = (0, parser_1.parseReviewResponse)(raw, providerName);
56
+ const result = (0, detailLocator_1.alignReviewResultWithDiff)((0, parser_1.parseReviewResponse)(raw, providerName), diff);
56
57
  const issues = [
57
58
  ...(0, parser_1.validateReviewResult)(result, threshold),
58
59
  ...(0, parser_1.validateReviewContentLanguage)(result, reviewLanguage)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/review/index.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,10 @@ const protocol_1 = require("../commitMessage/protocol");
8
8
  const validSeverities = new Set(["P0", "P1", "P2", "P3", "OTHER"]);
9
9
  function parseReviewResponse(raw, provider) {
10
10
  const trimmed = raw.trim();
11
+ const jsonText = extractJsonPayload(trimmed);
11
12
  let payload;
12
13
  try {
13
- payload = JSON.parse(trimmed);
14
+ payload = JSON.parse(jsonText);
14
15
  }
15
16
  catch (error) {
16
17
  const message = error instanceof Error ? error.message : String(error);
@@ -102,4 +103,16 @@ function parseReviewDetails(value) {
102
103
  }
103
104
  return details;
104
105
  }
106
+ function extractJsonPayload(raw) {
107
+ const fencedMatch = raw.match(/```(?:json)?\s*([\s\S]*?)```/i);
108
+ if (fencedMatch?.[1]) {
109
+ return fencedMatch[1].trim();
110
+ }
111
+ const objectStart = raw.indexOf("{");
112
+ const objectEnd = raw.lastIndexOf("}");
113
+ if (objectStart >= 0 && objectEnd > objectStart) {
114
+ return raw.slice(objectStart, objectEnd + 1);
115
+ }
116
+ return raw;
117
+ }
105
118
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/review/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/review/parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smart-commit-copilot-cli",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "private": false,
5
5
  "description": "CLI for AI-assisted commit review, commit message generation, Git workflow automation, and work reports.",
6
6
  "license": "MIT",