@slowcook-ai/review-overlay 0.1.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/comment-format.d.ts +35 -0
- package/dist/comment-format.d.ts.map +1 -1
- package/dist/comment-format.js +66 -0
- package/dist/comment-format.js.map +1 -1
- package/dist/github.d.ts +85 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +213 -0
- package/dist/github.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +1 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -0
- package/dist/react/index.js.map +1 -1
- package/dist/react/overlay.d.ts.map +1 -1
- package/dist/react/overlay.js +413 -11
- package/dist/react/overlay.js.map +1 -1
- package/dist/react/use-scenario-comment-stats.d.ts +18 -0
- package/dist/react/use-scenario-comment-stats.d.ts.map +1 -0
- package/dist/react/use-scenario-comment-stats.js +49 -0
- package/dist/react/use-scenario-comment-stats.js.map +1 -0
- package/dist/selector.d.ts +12 -0
- package/dist/selector.d.ts.map +1 -1
- package/dist/selector.js +29 -0
- package/dist/selector.js.map +1 -1
- package/package.json +1 -1
package/dist/comment-format.d.ts
CHANGED
|
@@ -45,6 +45,41 @@ export interface ReviewCommentPayload {
|
|
|
45
45
|
user_agent: string;
|
|
46
46
|
}
|
|
47
47
|
export declare const PAYLOAD_MARKER = "slowcook:review-overlay";
|
|
48
|
+
/**
|
|
49
|
+
* 0.3.0 — Plate-reply breadcrumb. Plate emits this JSON block at the
|
|
50
|
+
* end of its amendment summary so the overlay can correlate each
|
|
51
|
+
* reply to the original review-overlay comment by ID without any
|
|
52
|
+
* timestamp heuristics. One reply entry per overlay comment plate
|
|
53
|
+
* processed in the run.
|
|
54
|
+
*/
|
|
55
|
+
export declare const PLATE_REPLY_MARKER = "slowcook:plate-reply";
|
|
56
|
+
export type PlateReplyStatus = "applied" | "declined" | "spec-altering" | "noop";
|
|
57
|
+
export interface PlateReplyEntry {
|
|
58
|
+
/** GitHub comment id of the overlay comment this reply addresses. */
|
|
59
|
+
to_comment_id: number;
|
|
60
|
+
status: PlateReplyStatus;
|
|
61
|
+
/** One-line summary of plate's action (what changed, or why declined). */
|
|
62
|
+
summary: string;
|
|
63
|
+
/** Files plate touched as part of resolving this comment (mock/ paths). */
|
|
64
|
+
files_touched?: string[];
|
|
65
|
+
}
|
|
66
|
+
export interface PlateReplyPayload {
|
|
67
|
+
version: string;
|
|
68
|
+
/** Commit SHA plate force-pushed (when status applies); null on no-op / escalate. */
|
|
69
|
+
amendment_commit?: string | null;
|
|
70
|
+
replies: PlateReplyEntry[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Build the HTML-comment block plate appends to its summary so the
|
|
74
|
+
* overlay can correlate replies to overlay comments.
|
|
75
|
+
*/
|
|
76
|
+
export declare function formatPlateReplyBlock(p: PlateReplyPayload): string;
|
|
77
|
+
/**
|
|
78
|
+
* Reverse — extract the plate-reply payload from a comment body.
|
|
79
|
+
* Returns null when the comment isn't a plate reply or the payload is
|
|
80
|
+
* malformed.
|
|
81
|
+
*/
|
|
82
|
+
export declare function parsePlateReply(body: string): PlateReplyPayload | null;
|
|
48
83
|
export interface FormatArgs {
|
|
49
84
|
payload: ReviewCommentPayload;
|
|
50
85
|
/** Optional inline screenshot data URL (image/png). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-format.d.ts","sourceRoot":"","sources":["../src/comment-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;IAChD,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACnC,wBAAwB,EAAE,MAAM,CAAC;IACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,iDAAiD;QACjD,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACtD,CAAC;IACF,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA8B5D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAgB5E;AAeD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,IAAI,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,oBAAoB,CAkBvB"}
|
|
1
|
+
{"version":3,"file":"comment-format.d.ts","sourceRoot":"","sources":["../src/comment-format.ts"],"names":[],"mappings":"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"}
|
package/dist/comment-format.js
CHANGED
|
@@ -13,6 +13,72 @@
|
|
|
13
13
|
* Pure function; no DOM access.
|
|
14
14
|
*/
|
|
15
15
|
export const PAYLOAD_MARKER = "slowcook:review-overlay";
|
|
16
|
+
/**
|
|
17
|
+
* 0.3.0 — Plate-reply breadcrumb. Plate emits this JSON block at the
|
|
18
|
+
* end of its amendment summary so the overlay can correlate each
|
|
19
|
+
* reply to the original review-overlay comment by ID without any
|
|
20
|
+
* timestamp heuristics. One reply entry per overlay comment plate
|
|
21
|
+
* processed in the run.
|
|
22
|
+
*/
|
|
23
|
+
export const PLATE_REPLY_MARKER = "slowcook:plate-reply";
|
|
24
|
+
/**
|
|
25
|
+
* Build the HTML-comment block plate appends to its summary so the
|
|
26
|
+
* overlay can correlate replies to overlay comments.
|
|
27
|
+
*/
|
|
28
|
+
export function formatPlateReplyBlock(p) {
|
|
29
|
+
return [
|
|
30
|
+
"<!--",
|
|
31
|
+
PLATE_REPLY_MARKER,
|
|
32
|
+
JSON.stringify(p),
|
|
33
|
+
"-->",
|
|
34
|
+
].join("\n");
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Reverse — extract the plate-reply payload from a comment body.
|
|
38
|
+
* Returns null when the comment isn't a plate reply or the payload is
|
|
39
|
+
* malformed.
|
|
40
|
+
*/
|
|
41
|
+
export function parsePlateReply(body) {
|
|
42
|
+
const idx = body.indexOf(PLATE_REPLY_MARKER);
|
|
43
|
+
if (idx < 0)
|
|
44
|
+
return null;
|
|
45
|
+
const tail = body.slice(idx + PLATE_REPLY_MARKER.length);
|
|
46
|
+
const closeIdx = tail.indexOf("-->");
|
|
47
|
+
const region = closeIdx < 0 ? tail : tail.slice(0, closeIdx);
|
|
48
|
+
const m = region.match(/\{[\s\S]*\}/);
|
|
49
|
+
if (!m)
|
|
50
|
+
return null;
|
|
51
|
+
try {
|
|
52
|
+
const parsed = JSON.parse(m[0]);
|
|
53
|
+
if (!isPlateReplyPayload(parsed))
|
|
54
|
+
return null;
|
|
55
|
+
return parsed;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function isPlateReplyPayload(v) {
|
|
62
|
+
if (!v || typeof v !== "object")
|
|
63
|
+
return false;
|
|
64
|
+
const o = v;
|
|
65
|
+
if (typeof o["version"] !== "string")
|
|
66
|
+
return false;
|
|
67
|
+
if (!Array.isArray(o["replies"]))
|
|
68
|
+
return false;
|
|
69
|
+
for (const r of o["replies"]) {
|
|
70
|
+
if (!r || typeof r !== "object")
|
|
71
|
+
return false;
|
|
72
|
+
const e = r;
|
|
73
|
+
if (typeof e["to_comment_id"] !== "number")
|
|
74
|
+
return false;
|
|
75
|
+
if (typeof e["status"] !== "string")
|
|
76
|
+
return false;
|
|
77
|
+
if (typeof e["summary"] !== "string")
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
16
82
|
/**
|
|
17
83
|
* Render the full comment body (markdown + hidden JSON). The hidden
|
|
18
84
|
* JSON is wrapped in an HTML comment with a stable marker so plate's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-format.js","sourceRoot":"","sources":["../src/comment-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"comment-format.js","sourceRoot":"","sources":["../src/comment-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAyBzD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,CAAoB;IACxD,OAAO;QACL,MAAM;QACN,kBAAkB;QAClB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACjB,KAAK;KACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7C,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,CAAC;QAC3C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAU;IACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;QACvC,IAAI,OAAO,CAAC,CAAC,eAAe,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACzD,IAAI,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;IAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7H,KAAK,CAAC,IAAI,CACR,iBAAiB,OAAO,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,SAAS,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,CACnI,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,iBAAiB,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,GAAG,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,sEAAsE;IACtE,+DAA+D;IAC/D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,0DAA0D;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAY,CAAC;QAC3C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QACjD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAU;IACxC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,0BAA0B,CAAC,KAAK,QAAQ;QACjD,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,QAAQ;QAClC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;QAC9B,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI;QACzD,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAS5B;IACC,OAAO;QACL,wBAAwB,EAAE,IAAI,CAAC,cAAc;QAC7C,QAAQ,EAAE,IAAI,CAAC,OAAO;QACtB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;YACtB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB;QACD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC"}
|
package/dist/github.d.ts
CHANGED
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Storage key is keyed by the {owner}/{repo} pair so the same browser
|
|
9
9
|
* can hold multiple consumers' tokens without collision.
|
|
10
|
+
*
|
|
11
|
+
* 0.3.0 — also reads PR comments to render Figma-style anchored pins
|
|
12
|
+
* for previously-left feedback. Cached in localStorage so the pin
|
|
13
|
+
* layer renders instantly on refresh.
|
|
10
14
|
*/
|
|
15
|
+
import { type ReviewCommentPayload, type PlateReplyEntry } from "./comment-format.js";
|
|
11
16
|
export interface RepoCoord {
|
|
12
17
|
owner: string;
|
|
13
18
|
repo: string;
|
|
@@ -36,9 +41,89 @@ export interface SubmitErr {
|
|
|
36
41
|
message: string;
|
|
37
42
|
}
|
|
38
43
|
export type SubmitResult = SubmitOk | SubmitErr;
|
|
44
|
+
/**
|
|
45
|
+
* 0.3.0 — A single overlay comment paired with plate's reply (when one
|
|
46
|
+
* exists). The overlay's pin layer renders one of these per comment.
|
|
47
|
+
*/
|
|
48
|
+
export interface OverlayCommentRecord {
|
|
49
|
+
/** GitHub comment id (numeric). */
|
|
50
|
+
commentId: number;
|
|
51
|
+
/** PR-comment author + ISO timestamp + comment body URL on GitHub. */
|
|
52
|
+
author: string;
|
|
53
|
+
createdAt: string;
|
|
54
|
+
htmlUrl: string;
|
|
55
|
+
/** Parsed structured payload from the review-overlay marker block. */
|
|
56
|
+
payload: ReviewCommentPayload;
|
|
57
|
+
/**
|
|
58
|
+
* Plate's reply for this comment (parsed from a `slowcook:plate-reply`
|
|
59
|
+
* block on a comment posted after the overlay one). Null when plate
|
|
60
|
+
* hasn't acted yet OR when the run pre-dates the breadcrumb (0.3.0+).
|
|
61
|
+
*/
|
|
62
|
+
plateReply: PlateReplyEntry | null;
|
|
63
|
+
/** GitHub comment URL of the plate reply (when plateReply is set). */
|
|
64
|
+
plateCommentUrl?: string;
|
|
65
|
+
}
|
|
66
|
+
interface FetchArgs extends RepoCoord {
|
|
67
|
+
pr: number;
|
|
68
|
+
pat: string;
|
|
69
|
+
apiBase?: string;
|
|
70
|
+
fetchImpl?: typeof fetch;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Fetch all overlay comments + correlated plate replies for a PR.
|
|
74
|
+
* Returns one record per overlay comment in oldest-first order.
|
|
75
|
+
*/
|
|
76
|
+
export declare function fetchOverlayComments(args: FetchArgs): Promise<OverlayCommentRecord[]>;
|
|
77
|
+
export declare function commentsCacheKey(repo: RepoCoord, pr: number): string;
|
|
78
|
+
export declare function loadCachedComments(storage: Storage, repo: RepoCoord, pr: number): OverlayCommentRecord[] | null;
|
|
79
|
+
export declare function saveCachedComments(storage: Storage, repo: RepoCoord, pr: number, records: OverlayCommentRecord[]): void;
|
|
80
|
+
/**
|
|
81
|
+
* 0.4.0 — per-scenario comment stats. The scenarios picker renders one
|
|
82
|
+
* badge cluster per card: total / applied / unresolved / spec-altering
|
|
83
|
+
* / declined / noop. Aggregated across every open + closed mockup PR
|
|
84
|
+
* in the repo, grouped by story_id from each overlay comment's payload.
|
|
85
|
+
*/
|
|
86
|
+
export interface ScenarioCommentStats {
|
|
87
|
+
total: number;
|
|
88
|
+
unresolved: number;
|
|
89
|
+
applied: number;
|
|
90
|
+
declined: number;
|
|
91
|
+
specAltering: number;
|
|
92
|
+
noop: number;
|
|
93
|
+
}
|
|
94
|
+
export declare function emptyStats(): ScenarioCommentStats;
|
|
95
|
+
interface FetchPrsArgs extends RepoCoord {
|
|
96
|
+
pat: string;
|
|
97
|
+
apiBase?: string;
|
|
98
|
+
fetchImpl?: typeof fetch;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* List every PR (open + closed) on the repo that carries the
|
|
102
|
+
* `slowcook-mockup` label. Each result includes the PR number, the
|
|
103
|
+
* derived storyId from the branch name (`slowcook/mockup/story-N`),
|
|
104
|
+
* and the comments-list URL for paginated comment fetch.
|
|
105
|
+
*/
|
|
106
|
+
export declare function fetchAllMockupPrs(args: FetchPrsArgs): Promise<Array<{
|
|
107
|
+
pr: number;
|
|
108
|
+
storyId: string;
|
|
109
|
+
}>>;
|
|
110
|
+
/**
|
|
111
|
+
* Aggregate per-scenario comment stats by walking every mockup PR's
|
|
112
|
+
* comments + grouping by overlay-payload.story_id. Plate's breadcrumb
|
|
113
|
+
* provides the status (applied / declined / spec-altering / noop);
|
|
114
|
+
* absent breadcrumb counts as unresolved.
|
|
115
|
+
*
|
|
116
|
+
* One round-trip per PR + 1 for the listing. For most consumers the
|
|
117
|
+
* total is <20 PRs; in-flight Promise.all keeps the wall-clock fast.
|
|
118
|
+
*/
|
|
119
|
+
export declare function fetchScenarioStats(args: FetchPrsArgs): Promise<Record<string, ScenarioCommentStats>>;
|
|
120
|
+
export declare function scenarioStatsCacheKey(repo: RepoCoord): string;
|
|
121
|
+
export declare function loadCachedScenarioStats(storage: Storage, repo: RepoCoord): Record<string, ScenarioCommentStats> | null;
|
|
122
|
+
export declare function saveCachedScenarioStats(storage: Storage, repo: RepoCoord, stats: Record<string, ScenarioCommentStats>): void;
|
|
39
123
|
/**
|
|
40
124
|
* POST a comment to the given PR. Returns a tagged result rather than
|
|
41
125
|
* throwing so the React layer can render specific UI per failure mode.
|
|
42
126
|
*/
|
|
43
127
|
export declare function submitComment(args: SubmitArgs): Promise<SubmitResult>;
|
|
128
|
+
export {};
|
|
44
129
|
//# sourceMappingURL=github.d.ts.map
|
package/dist/github.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/github.js
CHANGED
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Storage key is keyed by the {owner}/{repo} pair so the same browser
|
|
9
9
|
* can hold multiple consumers' tokens without collision.
|
|
10
|
+
*
|
|
11
|
+
* 0.3.0 — also reads PR comments to render Figma-style anchored pins
|
|
12
|
+
* for previously-left feedback. Cached in localStorage so the pin
|
|
13
|
+
* layer renders instantly on refresh.
|
|
10
14
|
*/
|
|
15
|
+
import { parseReviewComment, parsePlateReply, } from "./comment-format.js";
|
|
11
16
|
const PAT_STORAGE_KEY_PREFIX = "slowcook.review-overlay.pat.";
|
|
12
17
|
export function patStorageKey(repo) {
|
|
13
18
|
return `${PAT_STORAGE_KEY_PREFIX}${repo.owner}/${repo.repo}`;
|
|
@@ -21,6 +26,214 @@ export function savePat(storage, repo, pat) {
|
|
|
21
26
|
export function clearPat(storage, repo) {
|
|
22
27
|
storage.removeItem(patStorageKey(repo));
|
|
23
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch all overlay comments + correlated plate replies for a PR.
|
|
31
|
+
* Returns one record per overlay comment in oldest-first order.
|
|
32
|
+
*/
|
|
33
|
+
export async function fetchOverlayComments(args) {
|
|
34
|
+
const fetchImpl = args.fetchImpl ?? globalThis.fetch;
|
|
35
|
+
const apiBase = args.apiBase ?? "https://api.github.com";
|
|
36
|
+
const url = `${apiBase}/repos/${encodeURIComponent(args.owner)}/${encodeURIComponent(args.repo)}/issues/${args.pr}/comments?per_page=100`;
|
|
37
|
+
let res;
|
|
38
|
+
try {
|
|
39
|
+
res = await fetchImpl(url, {
|
|
40
|
+
headers: {
|
|
41
|
+
Authorization: `Bearer ${args.pat}`,
|
|
42
|
+
Accept: "application/vnd.github+json",
|
|
43
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
if (!res.ok)
|
|
51
|
+
return [];
|
|
52
|
+
const all = (await res.json());
|
|
53
|
+
const overlayRecords = [];
|
|
54
|
+
// Plate-reply entries indexed by `to_comment_id` for O(1) lookup later.
|
|
55
|
+
const plateRepliesByCommentId = new Map();
|
|
56
|
+
for (const c of all) {
|
|
57
|
+
const overlayPayload = parseReviewComment(c.body);
|
|
58
|
+
if (overlayPayload) {
|
|
59
|
+
overlayRecords.push({
|
|
60
|
+
commentId: c.id,
|
|
61
|
+
author: c.user.login,
|
|
62
|
+
createdAt: c.created_at,
|
|
63
|
+
htmlUrl: c.html_url,
|
|
64
|
+
payload: overlayPayload,
|
|
65
|
+
plateReply: null,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const plateReply = parsePlateReply(c.body);
|
|
69
|
+
if (plateReply) {
|
|
70
|
+
for (const r of plateReply.replies) {
|
|
71
|
+
plateRepliesByCommentId.set(r.to_comment_id, { entry: r, htmlUrl: c.html_url });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Correlate by comment id (no heuristic; plate's breadcrumb names it).
|
|
76
|
+
for (const rec of overlayRecords) {
|
|
77
|
+
const reply = plateRepliesByCommentId.get(rec.commentId);
|
|
78
|
+
if (reply) {
|
|
79
|
+
rec.plateReply = reply.entry;
|
|
80
|
+
rec.plateCommentUrl = reply.htmlUrl;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return overlayRecords;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* localStorage cache for the comment list — lets the pin layer render
|
|
87
|
+
* instantly on refresh without waiting for the network round-trip.
|
|
88
|
+
* Background-refresh fires after, updating with any newer state.
|
|
89
|
+
*/
|
|
90
|
+
const COMMENTS_CACHE_KEY_PREFIX = "slowcook.review-overlay.comments.";
|
|
91
|
+
export function commentsCacheKey(repo, pr) {
|
|
92
|
+
return `${COMMENTS_CACHE_KEY_PREFIX}${repo.owner}/${repo.repo}/${pr}`;
|
|
93
|
+
}
|
|
94
|
+
export function loadCachedComments(storage, repo, pr) {
|
|
95
|
+
const raw = storage.getItem(commentsCacheKey(repo, pr));
|
|
96
|
+
if (!raw)
|
|
97
|
+
return null;
|
|
98
|
+
try {
|
|
99
|
+
const parsed = JSON.parse(raw);
|
|
100
|
+
if (!Array.isArray(parsed))
|
|
101
|
+
return null;
|
|
102
|
+
return parsed;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export function saveCachedComments(storage, repo, pr, records) {
|
|
109
|
+
try {
|
|
110
|
+
storage.setItem(commentsCacheKey(repo, pr), JSON.stringify(records));
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* ignore quota / private-mode errors */
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
export function emptyStats() {
|
|
117
|
+
return { total: 0, unresolved: 0, applied: 0, declined: 0, specAltering: 0, noop: 0 };
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* List every PR (open + closed) on the repo that carries the
|
|
121
|
+
* `slowcook-mockup` label. Each result includes the PR number, the
|
|
122
|
+
* derived storyId from the branch name (`slowcook/mockup/story-N`),
|
|
123
|
+
* and the comments-list URL for paginated comment fetch.
|
|
124
|
+
*/
|
|
125
|
+
export async function fetchAllMockupPrs(args) {
|
|
126
|
+
const fetchImpl = args.fetchImpl ?? globalThis.fetch;
|
|
127
|
+
const apiBase = args.apiBase ?? "https://api.github.com";
|
|
128
|
+
const url = `${apiBase}/repos/${encodeURIComponent(args.owner)}/${encodeURIComponent(args.repo)}/issues?labels=slowcook-mockup&state=all&per_page=100`;
|
|
129
|
+
let res;
|
|
130
|
+
try {
|
|
131
|
+
res = await fetchImpl(url, {
|
|
132
|
+
headers: {
|
|
133
|
+
Authorization: `Bearer ${args.pat}`,
|
|
134
|
+
Accept: "application/vnd.github+json",
|
|
135
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return [];
|
|
141
|
+
}
|
|
142
|
+
if (!res.ok)
|
|
143
|
+
return [];
|
|
144
|
+
const issues = (await res.json());
|
|
145
|
+
const out = [];
|
|
146
|
+
for (const issue of issues) {
|
|
147
|
+
if (!issue.pull_request)
|
|
148
|
+
continue;
|
|
149
|
+
// The branch name carries the unambiguous story id; fall back to
|
|
150
|
+
// title regex if branch fetch isn't available in this issues
|
|
151
|
+
// response (it usually isn't — would need a second PR fetch).
|
|
152
|
+
// Title pattern from vibe: "mockup: story-N".
|
|
153
|
+
const titleMatch = (issue.title ?? "").match(/story-([\w-]+)/);
|
|
154
|
+
if (!titleMatch || !titleMatch[1])
|
|
155
|
+
continue;
|
|
156
|
+
out.push({ pr: issue.number, storyId: titleMatch[1] });
|
|
157
|
+
}
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Aggregate per-scenario comment stats by walking every mockup PR's
|
|
162
|
+
* comments + grouping by overlay-payload.story_id. Plate's breadcrumb
|
|
163
|
+
* provides the status (applied / declined / spec-altering / noop);
|
|
164
|
+
* absent breadcrumb counts as unresolved.
|
|
165
|
+
*
|
|
166
|
+
* One round-trip per PR + 1 for the listing. For most consumers the
|
|
167
|
+
* total is <20 PRs; in-flight Promise.all keeps the wall-clock fast.
|
|
168
|
+
*/
|
|
169
|
+
export async function fetchScenarioStats(args) {
|
|
170
|
+
const prs = await fetchAllMockupPrs(args);
|
|
171
|
+
if (prs.length === 0)
|
|
172
|
+
return {};
|
|
173
|
+
const allRecords = await Promise.all(prs.map((p) => fetchOverlayComments({ ...args, pr: p.pr }).catch(() => [])));
|
|
174
|
+
const stats = {};
|
|
175
|
+
for (let i = 0; i < prs.length; i++) {
|
|
176
|
+
const { storyId } = prs[i];
|
|
177
|
+
const records = allRecords[i];
|
|
178
|
+
if (!stats[storyId])
|
|
179
|
+
stats[storyId] = emptyStats();
|
|
180
|
+
const s = stats[storyId];
|
|
181
|
+
for (const rec of records) {
|
|
182
|
+
// Prefer the payload's story_id when present (more reliable than
|
|
183
|
+
// PR-title parsing); fall back to the PR's storyId otherwise.
|
|
184
|
+
const targetId = rec.payload.story_id ?? storyId;
|
|
185
|
+
if (!stats[targetId])
|
|
186
|
+
stats[targetId] = emptyStats();
|
|
187
|
+
const target = stats[targetId];
|
|
188
|
+
target.total += 1;
|
|
189
|
+
const status = rec.plateReply?.status;
|
|
190
|
+
switch (status) {
|
|
191
|
+
case "applied":
|
|
192
|
+
target.applied += 1;
|
|
193
|
+
break;
|
|
194
|
+
case "declined":
|
|
195
|
+
target.declined += 1;
|
|
196
|
+
break;
|
|
197
|
+
case "spec-altering":
|
|
198
|
+
target.specAltering += 1;
|
|
199
|
+
break;
|
|
200
|
+
case "noop":
|
|
201
|
+
target.noop += 1;
|
|
202
|
+
break;
|
|
203
|
+
default:
|
|
204
|
+
target.unresolved += 1;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Suppress unused — `s` was only kept as a clarity anchor; if there
|
|
209
|
+
// were no records, `stats[storyId]` was initialised but stays zero.
|
|
210
|
+
void s;
|
|
211
|
+
}
|
|
212
|
+
return stats;
|
|
213
|
+
}
|
|
214
|
+
const SCENARIO_STATS_CACHE_KEY_PREFIX = "slowcook.review-overlay.scenario-stats.";
|
|
215
|
+
export function scenarioStatsCacheKey(repo) {
|
|
216
|
+
return `${SCENARIO_STATS_CACHE_KEY_PREFIX}${repo.owner}/${repo.repo}`;
|
|
217
|
+
}
|
|
218
|
+
export function loadCachedScenarioStats(storage, repo) {
|
|
219
|
+
const raw = storage.getItem(scenarioStatsCacheKey(repo));
|
|
220
|
+
if (!raw)
|
|
221
|
+
return null;
|
|
222
|
+
try {
|
|
223
|
+
return JSON.parse(raw);
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
export function saveCachedScenarioStats(storage, repo, stats) {
|
|
230
|
+
try {
|
|
231
|
+
storage.setItem(scenarioStatsCacheKey(repo), JSON.stringify(stats));
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
/* ignore quota errors */
|
|
235
|
+
}
|
|
236
|
+
}
|
|
24
237
|
/**
|
|
25
238
|
* POST a comment to the given PR. Returns a tagged result rather than
|
|
26
239
|
* throwing so the React layer can render specific UI per failure mode.
|
package/dist/github.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* cli package, server-side) imports `parseReviewComment` from here to
|
|
11
11
|
* decode review comments off the PR thread.
|
|
12
12
|
*/
|
|
13
|
-
export { PAYLOAD_MARKER, formatReviewComment, parseReviewComment, buildPayload, type ReviewCommentPayload, type ViewportInfo, type FormatArgs, } from "./comment-format.js";
|
|
14
|
-
export { extractSelector, type ExtractedSelector, } from "./selector.js";
|
|
15
|
-
export { loadPat, savePat, clearPat, patStorageKey, submitComment, type RepoCoord, type SubmitArgs, type SubmitResult, type SubmitOk, type SubmitErr, } from "./github.js";
|
|
13
|
+
export { PAYLOAD_MARKER, PLATE_REPLY_MARKER, formatReviewComment, parseReviewComment, formatPlateReplyBlock, parsePlateReply, buildPayload, type ReviewCommentPayload, type ViewportInfo, type FormatArgs, type PlateReplyEntry, type PlateReplyPayload, type PlateReplyStatus, } from "./comment-format.js";
|
|
14
|
+
export { extractSelector, resolveStoredSelector, type ExtractedSelector, } from "./selector.js";
|
|
15
|
+
export { loadPat, savePat, clearPat, patStorageKey, submitComment, fetchOverlayComments, loadCachedComments, saveCachedComments, commentsCacheKey, fetchAllMockupPrs, fetchScenarioStats, loadCachedScenarioStats, saveCachedScenarioStats, scenarioStatsCacheKey, emptyStats, type RepoCoord, type SubmitArgs, type SubmitResult, type SubmitOk, type SubmitErr, type OverlayCommentRecord, type ScenarioCommentStats, } from "./github.js";
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACV,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* cli package, server-side) imports `parseReviewComment` from here to
|
|
11
11
|
* decode review comments off the PR thread.
|
|
12
12
|
*/
|
|
13
|
-
export { PAYLOAD_MARKER, formatReviewComment, parseReviewComment, buildPayload, } from "./comment-format.js";
|
|
14
|
-
export { extractSelector, } from "./selector.js";
|
|
15
|
-
export { loadPat, savePat, clearPat, patStorageKey, submitComment, } from "./github.js";
|
|
13
|
+
export { PAYLOAD_MARKER, PLATE_REPLY_MARKER, formatReviewComment, parseReviewComment, formatPlateReplyBlock, parsePlateReply, buildPayload, } from "./comment-format.js";
|
|
14
|
+
export { extractSelector, resolveStoredSelector, } from "./selector.js";
|
|
15
|
+
export { loadPat, savePat, clearPat, patStorageKey, submitComment, fetchOverlayComments, loadCachedComments, saveCachedComments, commentsCacheKey, fetchAllMockupPrs, fetchScenarioStats, loadCachedScenarioStats, saveCachedScenarioStats, scenarioStatsCacheKey, emptyStats, } from "./github.js";
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,YAAY,GAOb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,eAAe,EACf,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,OAAO,EACP,OAAO,EACP,QAAQ,EACR,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,GAQX,MAAM,aAAa,CAAC"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,KAAK,0BAA0B,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,KAAK,2BAA2B,EAAE,MAAM,iCAAiC,CAAC"}
|
package/dist/react/index.js
CHANGED
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAmC,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAmC,MAAM,cAAc,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAoC,MAAM,iCAAiC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/react/overlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAA4C,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/react/overlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,EAA4C,KAAK,GAAG,EAAE,MAAM,OAAO,CAAC;AAkB3E,MAAM,WAAW,0BAA0B;IACzC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oGAAoG;IACpG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAQD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CA6Q3F"}
|