@openlimiter/connectors 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAEtD,MAAM,UAAU,GAAG,MAAM,CAAC;AAC1B,MAAM,OAAO,GAAG,MAAM,CAAC;AACvB,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,SAAS,MAAM,CAAC,GAAW,EAAE,OAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,WAAW;IACrD,OAAO;QACL,WAAW,EAAE;YACX,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aACnC;YACD,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aACnC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,IAAI,EAAE;YACJ,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,KAAK;SACnB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,WAAW;IACpD,OAAO;QACL,WAAW,EAAE;YACX,cAAc,EAAE;gBACd,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC;aAClC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,WAAW;IAC1D,OAAO;QACL,KAAK,EAAE;YACL,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;SAC/B;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,WAAW;IACvD,OAAO;QACL,KAAK,EAAE;YACL,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;YAC9B,aAAa,EAAE,mBAAmB;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc,WAAW;IACrD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;gBACP,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,eAAe,CAAC;aACvC,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,OAAO,EAAE,iDAAiD;IAC1D,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;CACd,CAAC"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,YAAY;;;;;CAKW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAKX;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CA+BnF;AAED,eAAO,MAAM,eAAe,EAAE,iBAa7B,CAAC"}
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,YAAY;;;;;CAKW,CAAC;AAErC,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAKX;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CA+BnF;AAED,eAAO,MAAM,eAAe,EAAE,iBAc7B,CAAC"}
package/dist/manual.js CHANGED
@@ -64,6 +64,7 @@ export function parseManualPayload(payload, now) {
64
64
  }
65
65
  export const manualConnector = {
66
66
  id: "manual",
67
+ encoding: "json",
67
68
  displayName: "Manual",
68
69
  labels: manualLabels,
69
70
  detect(environment) {
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  import type { ConnectorContract, RawMeter } from "@openlimiter/core";
2
+ /**
3
+ * The OpenCode usage reader, and the least trustworthy one in the product.
4
+ *
5
+ * OpenCode publishes no usage interface at all. More than twenty candidate
6
+ * routes were probed on 2026-08-03 and the API key opens none of them: the plan
7
+ * percentages exist only inside the HTML of a logged in workspace page, server
8
+ * rendered. So this parser reads a PAGE, not a payload, and that is why its
9
+ * labels say browser-session, authenticated-scrape and automationRisk high, and
10
+ * why they do not improve when a capture lands. They describe the method, not
11
+ * the amount of evidence behind it.
12
+ *
13
+ * The reader used to parse `usage.percent` out of a JSON object, a shape from
14
+ * an early prototype that no OpenCode surface has ever produced.
15
+ *
16
+ * Two things make reading HTML survivable rather than reckless. Windows are
17
+ * matched by their LABEL and never by position, so a reordered page degrades to
18
+ * unknown instead of quietly reporting the monthly figure as the weekly one.
19
+ * And all three labels must be found: a page that has changed enough to lose
20
+ * one of them has changed enough not to be trusted for the other two.
21
+ */
2
22
  export declare const opencodeLabels: {
3
23
  readonly credentialOrigin: "browser-session";
4
24
  readonly dataInterfaceStatus: "authenticated-scrape";
@@ -12,6 +32,48 @@ export declare const opencodeInput: {
12
32
  readonly readMode: "read_only";
13
33
  readonly honesty: "UNVERIFIED_AUTHENTICATED_SCRAPE_HIGH_RISK";
14
34
  };
35
+ /**
36
+ * What this reader reads: text, not JSON.
37
+ *
38
+ * The collection pipeline keys on this. A body for this reader is handed over
39
+ * as the raw string it arrived as, because running it through a JSON parser
40
+ * first would turn every real response into a parse failure.
41
+ */
42
+ export declare const opencodeEncoding: "text";
43
+ /**
44
+ * How far this reader will search for a window's own container, in characters.
45
+ *
46
+ * A bound on WORK, not a boundary. The boundary is structural: see
47
+ * `windowContainer`. A character count alone was tried and it does not close
48
+ * the hole, because "the first percentage within two thousand characters after
49
+ * the label" still reaches a footer when the window's own percentage is absent.
50
+ * That is the difference between bounding how far a reader wanders and
51
+ * bounding where it is allowed to look at all.
52
+ */
53
+ export declare const OPENCODE_MAX_SEGMENT_CHARS = 2000;
54
+ /**
55
+ * Largest page this reader will look at, in characters.
56
+ *
57
+ * The transport already bounds the response at one mebibyte. This is the second
58
+ * bound, on the work done with it, so a page that is within the transport's
59
+ * limit still cannot make the label scan expensive.
60
+ */
61
+ export declare const OPENCODE_MAX_PAGE_CHARS = 1048576;
62
+ /**
63
+ * The three windows the workspace page renders, and how long each one is.
64
+ *
65
+ * All three are required. Matched by label, in the page's own words.
66
+ */
67
+ export declare const OPENCODE_WINDOWS: readonly {
68
+ readonly label: string;
69
+ readonly seconds: number;
70
+ }[];
71
+ /**
72
+ * The binding window, as one meter.
73
+ *
74
+ * The highest of the three, because that is the one that will stop the work,
75
+ * and because it is what the reference reader's own bar names.
76
+ */
15
77
  export declare function parseOpencodePayload(payload: unknown, now: string): RawMeter[] | null;
16
78
  export declare const opencodeConnector: ConnectorContract;
17
79
  //# sourceMappingURL=opencode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,cAAc;;;;;CAKS,CAAC;AAErC,eAAO,MAAM,eAAe,EAAG,2CAAoD,CAAC;AAEpF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAmBrF;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAa/B,CAAC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAQ3B;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,cAAc;;;;;CAKS,CAAC;AAErC,eAAO,MAAM,eAAe,EAAG,2CAAoD,CAAC;AAEpF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AA6ChD;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,UAAY,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,EAIA,CAAC;AAuLF;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAuBrF;AAED,eAAO,MAAM,iBAAiB,EAAE,iBAc/B,CAAC"}
package/dist/opencode.js CHANGED
@@ -1,4 +1,24 @@
1
- import { boundedNumber, futureInstant, rawMeter, record, shortExpiry } from "./shared.js";
1
+ import { durationSecondsFromWords, instantAfter, rawMeter, shortExpiry } from "./shared.js";
2
+ /**
3
+ * The OpenCode usage reader, and the least trustworthy one in the product.
4
+ *
5
+ * OpenCode publishes no usage interface at all. More than twenty candidate
6
+ * routes were probed on 2026-08-03 and the API key opens none of them: the plan
7
+ * percentages exist only inside the HTML of a logged in workspace page, server
8
+ * rendered. So this parser reads a PAGE, not a payload, and that is why its
9
+ * labels say browser-session, authenticated-scrape and automationRisk high, and
10
+ * why they do not improve when a capture lands. They describe the method, not
11
+ * the amount of evidence behind it.
12
+ *
13
+ * The reader used to parse `usage.percent` out of a JSON object, a shape from
14
+ * an early prototype that no OpenCode surface has ever produced.
15
+ *
16
+ * Two things make reading HTML survivable rather than reckless. Windows are
17
+ * matched by their LABEL and never by position, so a reordered page degrades to
18
+ * unknown instead of quietly reporting the monthly figure as the weekly one.
19
+ * And all three labels must be found: a page that has changed enough to lose
20
+ * one of them has changed enough not to be trusted for the other two.
21
+ */
2
22
  export const opencodeLabels = {
3
23
  credentialOrigin: "browser-session",
4
24
  dataInterfaceStatus: "authenticated-scrape",
@@ -12,20 +32,270 @@ export const opencodeInput = {
12
32
  readMode: "read_only",
13
33
  honesty: opencodeHonesty
14
34
  };
35
+ /**
36
+ * What this reader reads: text, not JSON.
37
+ *
38
+ * The collection pipeline keys on this. A body for this reader is handed over
39
+ * as the raw string it arrived as, because running it through a JSON parser
40
+ * first would turn every real response into a parse failure.
41
+ */
42
+ export const opencodeEncoding = "text";
43
+ /**
44
+ * How far this reader will search for a window's own container, in characters.
45
+ *
46
+ * A bound on WORK, not a boundary. The boundary is structural: see
47
+ * `windowContainer`. A character count alone was tried and it does not close
48
+ * the hole, because "the first percentage within two thousand characters after
49
+ * the label" still reaches a footer when the window's own percentage is absent.
50
+ * That is the difference between bounding how far a reader wanders and
51
+ * bounding where it is allowed to look at all.
52
+ */
53
+ export const OPENCODE_MAX_SEGMENT_CHARS = 2_000;
54
+ /**
55
+ * Elements that never close, so a scan must not wait for a closing tag.
56
+ *
57
+ * Not exhaustive HTML: exhaustive for what a rendered page puts inside a meter
58
+ * block. An element outside this list that never closes makes the container
59
+ * scan run past its own end, and the scan answers null rather than guessing,
60
+ * which is the direction that costs a reading instead of inventing one.
61
+ */
62
+ const VOID_ELEMENTS = new Set([
63
+ "area", "base", "br", "col", "embed", "hr", "img", "input",
64
+ "link", "meta", "param", "source", "track", "wbr"
65
+ ]);
66
+ /** Every tag in a slice of text, in order. Comments are not tags. */
67
+ function tagsIn(html, from, to) {
68
+ const tags = [];
69
+ const pattern = /<!--[\s\S]*?-->|<\s*(\/?)\s*([a-zA-Z][a-zA-Z0-9-]*)([^>]*)>/gu;
70
+ const slice = html.slice(from, to);
71
+ for (const match of slice.matchAll(pattern)) {
72
+ /* A comment matched the first alternative and has no tag name. */
73
+ if (match[2] === undefined)
74
+ continue;
75
+ const name = match[2].toLowerCase();
76
+ const attributes = match[3] ?? "";
77
+ tags.push({
78
+ at: from + (match.index ?? 0),
79
+ end: from + (match.index ?? 0) + match[0].length,
80
+ name,
81
+ closing: match[1] === "/",
82
+ selfClosing: attributes.trimEnd().endsWith("/") || VOID_ELEMENTS.has(name)
83
+ });
84
+ }
85
+ return tags;
86
+ }
87
+ /**
88
+ * Largest page this reader will look at, in characters.
89
+ *
90
+ * The transport already bounds the response at one mebibyte. This is the second
91
+ * bound, on the work done with it, so a page that is within the transport's
92
+ * limit still cannot make the label scan expensive.
93
+ */
94
+ export const OPENCODE_MAX_PAGE_CHARS = 1_048_576;
95
+ /**
96
+ * The three windows the workspace page renders, and how long each one is.
97
+ *
98
+ * All three are required. Matched by label, in the page's own words.
99
+ */
100
+ export const OPENCODE_WINDOWS = [
101
+ { label: "Rolling Usage", seconds: 18_000 },
102
+ { label: "Weekly Usage", seconds: 604_800 },
103
+ { label: "Monthly Usage", seconds: 2_592_000 }
104
+ ];
105
+ /**
106
+ * Markup and hydration comments, removed so text can be matched.
107
+ *
108
+ * The page is server rendered by a framework that sprays hydration markers
109
+ * through the text, so it renders "Resets in<!--/--> <!--$-->5 days<!--/-->".
110
+ * Matching against raw HTML silently loses every reset time, which is a missing
111
+ * countdown rather than a wrong number, but missing for an invisible reason is
112
+ * still the worst kind of missing. Verified against the live page 2026-08-03.
113
+ */
114
+ const MARKUP = /<!--[\s\S]*?-->|<[^>]*>/gu;
115
+ /** A percentage as the page prints it: a whole number and a percent sign. */
116
+ const PERCENT = /(\d{1,3})\s*%/u;
117
+ /**
118
+ * A countdown as the page prints it.
119
+ *
120
+ * Anchored on the words, and consuming only consecutive number and unit pairs,
121
+ * so it cannot wander into the next window's duration if a label boundary ever
122
+ * moves.
123
+ */
124
+ const RESETS_IN = /Resets in\s+((?:\d{1,6}\s*(?:day|hour|minute|second)s?\s*)+)/iu;
125
+ function flatten(fragment) {
126
+ return fragment.replace(MARKUP, " ").split(/\s+/u).filter(Boolean).join(" ");
127
+ }
128
+ /** How many ancestors of a label this reader will consider. */
129
+ const MAX_CONTAINER_DEPTH = 6;
130
+ /**
131
+ * The element that encloses a position, as a half open range, or null.
132
+ *
133
+ * Found by walking backwards to the nearest element still open at that point,
134
+ * then forwards to its own closing tag. Both walks are bounded, and every
135
+ * failure answers null: an unbalanced page is one this reader declines rather
136
+ * than one it reads approximately.
137
+ */
138
+ function enclosingElement(html, at) {
139
+ const searchFrom = Math.max(0, at - OPENCODE_MAX_SEGMENT_CHARS);
140
+ const before = tagsIn(html, searchFrom, at);
141
+ /* Backwards: a closing tag means a sibling element already finished, so the
142
+ next opening tag going left belongs to it and not to us. */
143
+ let pendingCloses = 0;
144
+ let container = null;
145
+ for (let index = before.length - 1; index >= 0; index -= 1) {
146
+ const tag = before[index];
147
+ if (tag.selfClosing)
148
+ continue;
149
+ if (tag.closing) {
150
+ pendingCloses += 1;
151
+ continue;
152
+ }
153
+ if (pendingCloses > 0) {
154
+ pendingCloses -= 1;
155
+ continue;
156
+ }
157
+ container = tag;
158
+ break;
159
+ }
160
+ if (container === null)
161
+ return null;
162
+ /* Forwards from just inside the container to its own close, counting depth so
163
+ a nested element of the same name cannot end the region early. */
164
+ const searchTo = Math.min(html.length, container.end + OPENCODE_MAX_SEGMENT_CHARS);
165
+ let depth = 0;
166
+ for (const tag of tagsIn(html, container.end, searchTo)) {
167
+ if (tag.selfClosing)
168
+ continue;
169
+ if (!tag.closing) {
170
+ depth += 1;
171
+ continue;
172
+ }
173
+ if (depth === 0) {
174
+ return tag.name === container.name
175
+ ? { openedAt: container.at, from: container.end, to: tag.at }
176
+ /* A closing tag for something else pops above our container, which
177
+ means the page is unbalanced here. Decline it. */
178
+ : null;
179
+ }
180
+ depth -= 1;
181
+ }
182
+ return null;
183
+ }
184
+ /**
185
+ * The region a window's reading may be read from, or null.
186
+ *
187
+ * This is the fix for the final segment attack, and the reason a character count
188
+ * could not be. A window's figure is not inside the heading that names it: it is
189
+ * a SIBLING of that heading, in a shared block. So the readable region is an
190
+ * ancestor of the label, and the right ancestor is the nearest one that holds a
191
+ * percentage while naming no other window.
192
+ *
193
+ * Both halves of that rule carry weight. Requiring a percentage is what walks
194
+ * past the bare heading element. Refusing a region that names another window is
195
+ * what stops the walk at the meter block instead of continuing up to the page
196
+ * body, which contains every window's figure and would let any of them stand in
197
+ * for any other. When no ancestor satisfies both, there is no region, and a
198
+ * window with no region is refused rather than approximated: that is the case
199
+ * the audit named, a monthly block that rendered no figure and a footer a few
200
+ * characters later that did.
201
+ */
202
+ function windowRegion(html, labelAt, otherLabels) {
203
+ let position = labelAt;
204
+ for (let level = 0; level < MAX_CONTAINER_DEPTH; level += 1) {
205
+ const element = enclosingElement(html, position);
206
+ if (element === null)
207
+ return null;
208
+ const segment = flatten(html.slice(element.from, element.to));
209
+ if (otherLabels.some((label) => segment.includes(label)))
210
+ return null;
211
+ if (PERCENT.test(segment))
212
+ return segment;
213
+ /* No figure at this level, so try the block above it. */
214
+ position = element.openedAt;
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Every window the page states, or null unless all three are there.
220
+ *
221
+ * Each window's segment runs from its own label to the next label in page
222
+ * order, so a percentage can only ever be read out of the block that belongs to
223
+ * it.
224
+ */
225
+ function parseWindows(html, now) {
226
+ const found = [];
227
+ for (const window of OPENCODE_WINDOWS) {
228
+ const at = html.indexOf(window.label);
229
+ if (at < 0)
230
+ return null;
231
+ /* One occurrence only. A page rendering a label twice gives this reader two
232
+ candidate containers and no way to know which is the meter. */
233
+ if (html.indexOf(window.label, at + window.label.length) >= 0)
234
+ return null;
235
+ found.push({ at, seconds: window.seconds, label: window.label });
236
+ }
237
+ found.sort((left, right) => left.at - right.at);
238
+ const windows = [];
239
+ for (const start of found) {
240
+ /*
241
+ * The readable region is this window's own CONTAINER, and nothing past it.
242
+ *
243
+ * A character count was not enough, and the way it failed is worth stating:
244
+ * "the first percentage within two thousand characters after the label"
245
+ * still reaches a footer whenever the window's own percentage is absent, so
246
+ * a page that stopped rendering one meter would report an unrelated figure
247
+ * as that meter. Outside the container is outside, at any distance.
248
+ */
249
+ const segment = windowRegion(html, start.at, found.filter((entry) => entry.label !== start.label).map((entry) => entry.label));
250
+ if (segment === null)
251
+ return null;
252
+ const percentMatch = PERCENT.exec(segment);
253
+ if (percentMatch === null)
254
+ return null;
255
+ const percent = Number.parseInt(percentMatch[1] ?? "", 10);
256
+ if (!Number.isFinite(percent) || percent < 0 || percent > 100)
257
+ return null;
258
+ /* The countdown is optional, because the page omits it on a window that has
259
+ no reset pending. A missing countdown costs the countdown and nothing
260
+ else: the percentage beside it was still rendered by the provider. */
261
+ const resetMatch = RESETS_IN.exec(segment);
262
+ const seconds = resetMatch === null ? null : durationSecondsFromWords(resetMatch[1] ?? "");
263
+ windows.push({
264
+ percent,
265
+ seconds: start.seconds,
266
+ resetAt: seconds === null ? null : instantAfter(now, seconds)
267
+ });
268
+ }
269
+ return windows;
270
+ }
271
+ /**
272
+ * The binding window, as one meter.
273
+ *
274
+ * The highest of the three, because that is the one that will stop the work,
275
+ * and because it is what the reference reader's own bar names.
276
+ */
15
277
  export function parseOpencodePayload(payload, now) {
16
- const root = record(payload);
17
- const usage = record(root?.["usage"]);
18
- const percent = boundedNumber(usage?.["percent"]);
19
- const resetAt = futureInstant(usage?.["reset_at"], now);
278
+ if (typeof payload !== "string")
279
+ return null;
280
+ if (payload.length === 0 || payload.length > OPENCODE_MAX_PAGE_CHARS)
281
+ return null;
282
+ const windows = parseWindows(payload, now);
283
+ if (windows === null || windows.length === 0)
284
+ return null;
20
285
  const expiresAt = shortExpiry(now);
21
- if (percent === null || resetAt === null || expiresAt === null)
286
+ if (expiresAt === null)
22
287
  return null;
288
+ let binding = windows[0];
289
+ for (const candidate of windows.slice(1)) {
290
+ if (candidate.percent > binding.percent)
291
+ binding = candidate;
292
+ }
23
293
  return [rawMeter({
24
294
  provider: "OPENCODE",
25
295
  meter: "PRIMARY",
26
- value: percent,
27
- window: { kind: "fixed" },
28
- resetAt,
296
+ value: binding.percent,
297
+ window: { kind: "rolling", durationSeconds: binding.seconds },
298
+ resetAt: binding.resetAt,
29
299
  source: "authenticated_page",
30
300
  precision: "estimated",
31
301
  observedAt: now,
@@ -36,6 +306,7 @@ export function parseOpencodePayload(payload, now) {
36
306
  export const opencodeConnector = {
37
307
  id: "opencode",
38
308
  displayName: "OpenCode",
309
+ encoding: "text",
39
310
  labels: opencodeLabels,
40
311
  detect(environment) {
41
312
  return environment["OPENCODE_SESSION_PRESENT"] === "1";
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,gBAAgB,EAAE,iBAAiB;IACnC,mBAAmB,EAAE,sBAAsB;IAC3C,cAAc,EAAE,MAAM;IACtB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAAG,2CAAoD,CAAC;AAEpF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,4BAA4B;IAClC,YAAY,EAAE,wBAAwB;IACtC,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,eAAe;CAChB,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,GAAW;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACzB,OAAO;YACP,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,WAAW;YACtB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,cAAc;IACtB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,0BAA0B,CAAC,KAAK,GAAG,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QAClE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../src/opencode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,gBAAgB;;;;;CAKO,CAAC;AAErC,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAmCvF;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAajC,CAAC"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,QAAQ,EACT,MAAM,mBAAmB,CAAC;AAG3B,eAAO,MAAM,gBAAgB;;;;;CAKO,CAAC;AAErC,eAAO,MAAM,oBAAoB;;;;;;CAMvB,CAAC;AAEX,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI,CAmCvF;AAED,eAAO,MAAM,mBAAmB,EAAE,iBAcjC,CAAC"}
@@ -50,6 +50,7 @@ export function parseOpenrouterPayload(payload, now) {
50
50
  }
51
51
  export const openrouterConnector = {
52
52
  id: "openrouter",
53
+ encoding: "json",
53
54
  displayName: "OpenRouter",
54
55
  labels: openrouterLabels,
55
56
  detect(environment) {
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,gBAAgB;IACrC,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,WAAW;CACb,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IACE,OAAO,KAAK,IAAI;QAChB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,CAAC;QACZ,KAAK,GAAG,OAAO;QACf,SAAS,KAAK,IAAI;QAClB,OAAO,IAAI,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3E;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;SACtE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,EAAE,YAAY;IAChB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,gBAAgB;IACxB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,mCAAmC,CAAC,KAAK,WAAW,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3E,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB,EAAE,UAAU;IAC5B,mBAAmB,EAAE,gBAAgB;IACrC,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;CACQ,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,IAAI;IACpB,QAAQ,EAAE,WAAW;CACb,CAAC;AAEX,MAAM,UAAU,sBAAsB,CAAC,OAAgB,EAAE,GAAW;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,IACE,OAAO,KAAK,IAAI;QAChB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,CAAC;QACZ,KAAK,GAAG,OAAO;QACf,SAAS,KAAK,IAAI;QAClB,OAAO,IAAI,CAAC;IACd,MAAM,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC3E;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC;YACf,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB;YACxB,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,GAAG;YACf,SAAS;YACT,MAAM,EAAE,gBAAgB;YACxB,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;SACtE,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,EAAE,EAAE,YAAY;IAChB,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,YAAY;IACzB,MAAM,EAAE,gBAAgB;IACxB,MAAM,CAAC,WAAW;QAChB,OAAO,WAAW,CAAC,mCAAmC,CAAC,KAAK,WAAW,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO;QAChB,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,MAAM,KAAK,IAAI;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;YAClC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC"}
package/dist/shared.d.ts CHANGED
@@ -2,6 +2,94 @@ import type { ConnectorLabels, ProviderCode, RawMeter, SnapshotAmounts, Snapshot
2
2
  export declare function record(value: unknown): Record<string, unknown> | null;
3
3
  export declare function boundedNumber(value: unknown, maximum?: number): number | null;
4
4
  export declare function futureInstant(value: unknown, now: string): string | null;
5
+ /**
6
+ * Largest epoch value that is still read as seconds.
7
+ *
8
+ * A number this size in seconds is the year 33658, and the same number read as
9
+ * milliseconds is 2001. Anything at or above it is therefore a millisecond
10
+ * stamp handed to a seconds field, which is the single most likely way this
11
+ * conversion gets a reset instant wrong, so it is refused rather than turned
12
+ * into a date thirty thousand years away.
13
+ */
14
+ export declare const MAX_EPOCH_SECONDS = 1000000000000;
15
+ /**
16
+ * Slack allowed between a machine's clock and a provider's clock.
17
+ *
18
+ * An hour covers a wrong time zone offset applied to a timestamp, which is the
19
+ * realistic way two correct systems disagree, without widening the plausibility
20
+ * bound below into something that accepts nonsense.
21
+ */
22
+ export declare const CLOCK_SKEW_SECONDS = 3600;
23
+ /**
24
+ * The furthest ahead a window of a given length may plausibly reset.
25
+ *
26
+ * A rolling window cannot reset more than one window from now, so twice the
27
+ * window is already generous, and the skew allowance sits on top of that. This
28
+ * is what stops a five hour meter from claiming it resets in 2038: such a value
29
+ * is not a reset, it is a corrupt field, a different unit, or a different
30
+ * meaning, and rendering a twelve year countdown beside a five hour window
31
+ * would be the product lying with a straight face.
32
+ */
33
+ export declare function plausibleResetHorizon(windowSeconds: number): number;
34
+ /**
35
+ * Read a reset instant stated as Unix epoch seconds.
36
+ *
37
+ * Claude Code states its reset times this way. The value must be a finite
38
+ * number, must be in seconds rather than milliseconds, must still be in the
39
+ * future against the supplied clock, because a window that has already reset
40
+ * says nothing about the window running now, and must be close enough to now to
41
+ * belong to the window it claims to describe. Nothing is repaired: a value that
42
+ * fails any of these is null and the caller drops that reading alone.
43
+ *
44
+ * `maxAheadSeconds` is the plausibility bound and is optional only so the
45
+ * helper stays usable for a source with no window length to reason from.
46
+ */
47
+ export declare function futureInstantFromEpochSeconds(value: unknown, now: string, maxAheadSeconds?: number): string | null;
48
+ /**
49
+ * A fraction of a whole, as Google's quota summary states remaining quota.
50
+ *
51
+ * Zero and one are both real answers, so the bound is inclusive. A boolean is
52
+ * refused explicitly: JavaScript will happily do arithmetic on `true`, and a
53
+ * `remainingFraction` of `true` would otherwise become a usage of zero percent,
54
+ * which is the most dangerous wrong answer this product can give.
55
+ */
56
+ export declare function boundedFraction(value: unknown): number | null;
57
+ /**
58
+ * A whole positive count of seconds, when a provider states a window length.
59
+ *
60
+ * Bounded above by a year, because a rolling window longer than that is not a
61
+ * subscription window, it is a misread field or a different unit.
62
+ */
63
+ export declare const MAX_WINDOW_SECONDS = 31536000;
64
+ export declare function windowSeconds(value: unknown): number | null;
65
+ /**
66
+ * Read a reset instant stated as an RFC3339 timestamp.
67
+ *
68
+ * Google's quota summary states reset times this way, and the Antigravity
69
+ * client writes them with SEVEN fractional digits, which `Date.parse` on some
70
+ * runtimes reads and others do not. The fraction is normalised to three digits
71
+ * before parsing, which is the one repair made anywhere in this file, and it is
72
+ * a repair of ENCODING rather than of value: the instant it names is unchanged.
73
+ * Recorded 2026-08-07 against a real credential and a real response.
74
+ *
75
+ * An offsetless stamp is read as UTC explicitly. Both observed sources carry an
76
+ * offset today, so this is a guard rather than a fix, and it exists because the
77
+ * alternative is silent: a naive stamp read as local time moves a reset by the
78
+ * machine's offset instead of failing.
79
+ */
80
+ export declare function futureInstantFromRfc3339(value: unknown, now: string, maxAheadSeconds?: number): string | null;
81
+ /**
82
+ * Seconds from a duration a page spelled out in words, or null.
83
+ *
84
+ * OpenCode's workspace page prints "Resets in 5 days 20 hours" rather than a
85
+ * timestamp, so the only reset available is a countdown rendered for a human.
86
+ * Only consecutive number and unit pairs are read, and an empty or zero total
87
+ * is null rather than now: a reset of zero seconds would render as a countdown
88
+ * that has already finished.
89
+ */
90
+ export declare function durationSecondsFromWords(text: string): number | null;
91
+ /** An instant this many seconds after the supplied clock, or null. */
92
+ export declare function instantAfter(now: string, seconds: number): string | null;
5
93
  export declare function shortExpiry(now: string): string | null;
6
94
  export declare function rawMeter(input: {
7
95
  provider: ProviderCode;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAIrE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,SAAM,GAAG,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,GAAG,QAAQ,CAGX"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAIrE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,SAAM,GAAG,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,gBAAO,CAAC;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAExC;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CAef;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG7D;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,WAAa,CAAC;AAE7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CAuBf;AAUD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAapE;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAC9B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B,GAAG,QAAQ,CAGX"}