@trazum/core 2.4.1 → 2.4.2
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/pdf.d.ts +108 -0
- package/dist/pdf.d.ts.map +1 -0
- package/dist/pdf.js +323 -0
- package/dist/pdf.js.map +1 -0
- package/dist/pricing.d.ts +6 -5
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +126 -9
- package/dist/pricing.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +4 -0
- package/src/pdf.ts +356 -0
- package/src/pricing.ts +128 -9
package/dist/pricing.js
CHANGED
|
@@ -28,8 +28,13 @@
|
|
|
28
28
|
* catalogue's headline date derived as the oldest of them rather than typed.
|
|
29
29
|
*/
|
|
30
30
|
export const PROVIDER_REVIEWED = Object.freeze({
|
|
31
|
-
/*
|
|
32
|
-
|
|
31
|
+
/*
|
|
32
|
+
* platform.claude.com/docs/en/about-claude/pricing, the models overview and
|
|
33
|
+
* each model's own page, read 2026-10-10. Every existing row matched; five
|
|
34
|
+
* models were added and one (Claude Haiku 5.5) deliberately was not, see the
|
|
35
|
+
* comment above its would-be place in MODELS.
|
|
36
|
+
*/
|
|
37
|
+
anthropic: '2026-10-10',
|
|
33
38
|
/*
|
|
34
39
|
* developers.openai.com/api/docs/pricing, read 2026-08-31.
|
|
35
40
|
*
|
|
@@ -90,11 +95,12 @@ export const PRICING_LAST_REVIEWED = Object.values(PROVIDER_REVIEWED).reduce((ol
|
|
|
90
95
|
/**
|
|
91
96
|
* The defaults, which are Anthropic's numbers.
|
|
92
97
|
*
|
|
93
|
-
* Still exported and still
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
+
* Still exported, and still Anthropic's numbers for every model up to Opus 5
|
|
99
|
+
* and Sonnet 5, but no longer the whole story even there: Claude Fable 5.1 and
|
|
100
|
+
* Mythos 5.1 read the cache at 0.025x and Opus 5.5 and Sonnet 5.5 at 0.05x, so
|
|
101
|
+
* a model overrides any of these through `multipliers`, and anything computing
|
|
102
|
+
* a cost should go through `multipliersFor` rather than reading these
|
|
103
|
+
* directly. Using one cache-read ratio for every model invents a saving.
|
|
98
104
|
*/
|
|
99
105
|
export const COST_MULTIPLIERS = {
|
|
100
106
|
/** Cache write with a 5-minute TTL. */
|
|
@@ -130,6 +136,46 @@ export function multipliersFor(model) {
|
|
|
130
136
|
return result;
|
|
131
137
|
}
|
|
132
138
|
export const MODELS = [
|
|
139
|
+
{
|
|
140
|
+
/*
|
|
141
|
+
* platform.claude.com/docs/en/about-claude/pricing and the Fable 5.1 model
|
|
142
|
+
* page, read 2026-10-10. The same $10/$50 as Fable 5; what moved is the
|
|
143
|
+
* cache read, $0.25 against $10 of input, a quarter of the 0.1x every
|
|
144
|
+
* earlier Claude model pays. Writes stay at 1.25x and 2x ($12.50, $20),
|
|
145
|
+
* and the Batch API halves both sides ($5/$25).
|
|
146
|
+
*/
|
|
147
|
+
id: 'claude-fable-5-1',
|
|
148
|
+
provider: 'anthropic',
|
|
149
|
+
displayName: 'Claude Fable 5.1',
|
|
150
|
+
inputPerMTok: 10,
|
|
151
|
+
outputPerMTok: 50,
|
|
152
|
+
contextWindow: 1_000_000,
|
|
153
|
+
cacheMinTokens: 512,
|
|
154
|
+
multipliers: { cacheRead: 0.025, cacheWrite5m: 1.25, cacheWrite1h: 2, batch: 0.5 },
|
|
155
|
+
capability: 'frontier',
|
|
156
|
+
tier: 'frontier',
|
|
157
|
+
notes: 'Cache hits cost 2.5% of the input price ($0.25). Requires 30-day data retention.',
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
/*
|
|
161
|
+
* The same page and prices as Fable 5.1, cache read included ($0.25,
|
|
162
|
+
* 0.025x). Sold only to verified organisations, so priced for the logs that
|
|
163
|
+
* carry it and never offered as somebody's cheaper alternative.
|
|
164
|
+
*/
|
|
165
|
+
id: 'claude-mythos-5-1',
|
|
166
|
+
provider: 'anthropic',
|
|
167
|
+
displayName: 'Claude Mythos 5.1',
|
|
168
|
+
recommendable: false,
|
|
169
|
+
inputPerMTok: 10,
|
|
170
|
+
outputPerMTok: 50,
|
|
171
|
+
contextWindow: 1_000_000,
|
|
172
|
+
cacheMinTokens: 512,
|
|
173
|
+
multipliers: { cacheRead: 0.025, cacheWrite5m: 1.25, cacheWrite1h: 2, batch: 0.5 },
|
|
174
|
+
capability: 'frontier',
|
|
175
|
+
tier: 'frontier',
|
|
176
|
+
notes: 'Available only to organizations verified through Anthropic\'s verification programs.'
|
|
177
|
+
+ ' Requires 30-day data retention.',
|
|
178
|
+
},
|
|
133
179
|
{
|
|
134
180
|
id: 'claude-fable-5',
|
|
135
181
|
provider: 'anthropic',
|
|
@@ -140,7 +186,7 @@ export const MODELS = [
|
|
|
140
186
|
cacheMinTokens: 512,
|
|
141
187
|
capability: 'frontier',
|
|
142
188
|
tier: 'frontier',
|
|
143
|
-
notes: '
|
|
189
|
+
notes: 'Legacy: superseded by Claude Fable 5.1 at the same prices. Requires 30-day data retention.',
|
|
144
190
|
},
|
|
145
191
|
{
|
|
146
192
|
id: 'claude-mythos-5',
|
|
@@ -153,7 +199,27 @@ export const MODELS = [
|
|
|
153
199
|
cacheMinTokens: 512,
|
|
154
200
|
capability: 'frontier',
|
|
155
201
|
tier: 'frontier',
|
|
156
|
-
notes: 'Available only through
|
|
202
|
+
notes: 'Available only to organizations verified through Anthropic\'s verification programs.'
|
|
203
|
+
+ ' Requires 30-day data retention.',
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
/*
|
|
207
|
+
* The pricing page and the Opus 5.5 model page, read 2026-10-10. Cheaper
|
|
208
|
+
* than Opus 5 at both ends, $4/$20, and the overview now says to start
|
|
209
|
+
* there for most workloads. Cache read $0.20 is 0.05x, half the ratio of
|
|
210
|
+
* every earlier Opus; writes $5 and $8 are 1.25x and 2x; batch $2/$10.
|
|
211
|
+
*/
|
|
212
|
+
id: 'claude-opus-5-5',
|
|
213
|
+
provider: 'anthropic',
|
|
214
|
+
displayName: 'Claude Opus 5.5',
|
|
215
|
+
inputPerMTok: 4,
|
|
216
|
+
outputPerMTok: 20,
|
|
217
|
+
contextWindow: 1_000_000,
|
|
218
|
+
cacheMinTokens: 512,
|
|
219
|
+
multipliers: { cacheRead: 0.05, cacheWrite5m: 1.25, cacheWrite1h: 2, batch: 0.5 },
|
|
220
|
+
capability: 'large',
|
|
221
|
+
tier: 'opus',
|
|
222
|
+
notes: 'Cache hits cost 5% of the input price ($0.20), against 10% on Opus 5 and earlier.',
|
|
157
223
|
},
|
|
158
224
|
{
|
|
159
225
|
id: 'claude-opus-5',
|
|
@@ -200,6 +266,45 @@ export const MODELS = [
|
|
|
200
266
|
capability: 'large',
|
|
201
267
|
tier: 'opus',
|
|
202
268
|
},
|
|
269
|
+
{
|
|
270
|
+
/*
|
|
271
|
+
* Legacy and still served, and never carried here before, so every
|
|
272
|
+
* Claude Code log from late 2025 had it as an unpriced gap. The Opus 4.5
|
|
273
|
+
* model page, read 2026-10-10: model id claude-opus-4-5-20251101, alias
|
|
274
|
+
* claude-opus-4-5, 200K context, $5/$25, 4,096-token cache minimum (the
|
|
275
|
+
* prompt caching page). Like Haiku 4.5, the short alias is the id and the
|
|
276
|
+
* dated canonical form is declared, not derived.
|
|
277
|
+
*/
|
|
278
|
+
id: 'claude-opus-4-5',
|
|
279
|
+
aliases: ['claude-opus-4-5-20251101'],
|
|
280
|
+
provider: 'anthropic',
|
|
281
|
+
displayName: 'Claude Opus 4.5',
|
|
282
|
+
inputPerMTok: 5,
|
|
283
|
+
outputPerMTok: 25,
|
|
284
|
+
contextWindow: 200_000,
|
|
285
|
+
cacheMinTokens: 4096,
|
|
286
|
+
capability: 'large',
|
|
287
|
+
tier: 'opus',
|
|
288
|
+
notes: '200K context window and a 64K output cap.',
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
/*
|
|
292
|
+
* The pricing page and the Sonnet 5.5 model page, read 2026-10-10. The
|
|
293
|
+
* same $2/$10 as Sonnet 5, with the cache read at $0.10, 0.05x, where
|
|
294
|
+
* Sonnet 5 reads at $0.20. Writes $2.50 and $4; batch $1/$5.
|
|
295
|
+
*/
|
|
296
|
+
id: 'claude-sonnet-5-5',
|
|
297
|
+
provider: 'anthropic',
|
|
298
|
+
displayName: 'Claude Sonnet 5.5',
|
|
299
|
+
inputPerMTok: 2,
|
|
300
|
+
outputPerMTok: 10,
|
|
301
|
+
contextWindow: 1_000_000,
|
|
302
|
+
cacheMinTokens: 512,
|
|
303
|
+
multipliers: { cacheRead: 0.05, cacheWrite5m: 1.25, cacheWrite1h: 2, batch: 0.5 },
|
|
304
|
+
capability: 'mid',
|
|
305
|
+
tier: 'sonnet',
|
|
306
|
+
notes: 'Cache hits cost 5% of the input price ($0.10), against 10% ($0.20) on Sonnet 5.',
|
|
307
|
+
},
|
|
203
308
|
{
|
|
204
309
|
id: 'claude-sonnet-5',
|
|
205
310
|
provider: 'anthropic',
|
|
@@ -224,6 +329,18 @@ export const MODELS = [
|
|
|
224
329
|
capability: 'mid',
|
|
225
330
|
tier: 'sonnet',
|
|
226
331
|
},
|
|
332
|
+
/*
|
|
333
|
+
* Claude Haiku 5.5 is not here, on purpose, and its calls are an unpriced
|
|
334
|
+
* gap that names it. The pricing page (read 2026-10-10) prices it by prompt
|
|
335
|
+
* length: $0.10/$0.50 up to 100,000 tokens and $0.50/$2.50 above, where the
|
|
336
|
+
* length counts cache reads and writes and each request is priced on its
|
|
337
|
+
* own. A tier can say that, but nothing that prices a usage log passes one
|
|
338
|
+
* request's prompt length to `effectivePricing`: records are summed per
|
|
339
|
+
* workload, model and day before they are priced. Added today, every Haiku
|
|
340
|
+
* 5.5 call would fall to the undecided ceiling, five times the price most of
|
|
341
|
+
* them paid. It goes in with the change that prices tiered models per
|
|
342
|
+
* request, not before.
|
|
343
|
+
*/
|
|
227
344
|
{
|
|
228
345
|
id: 'claude-haiku-4-5',
|
|
229
346
|
// The dated form is the canonical API id and is what a real usage log
|
package/dist/pricing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqC,MAAM,CAAC,MAAM,CAAC;IAC/E,wEAAwE;IACxE,SAAS,EAAE,YAAY;IACvB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,YAAY;IACpB,6DAA6D;IAC7D,MAAM,EAAE,YAAY;IACpB;;;;;;;;;;OAUG;IACH,QAAQ,EAAE,YAAY;IACtB,iEAAiE;IACjE,QAAQ,EAAE,YAAY;IACtB;;;;;;;;OAQG;IACH,GAAG,EAAE,YAAY;IACjB;;;;;;;;;OASG;IACH,OAAO,EAAE,YAAY;CACtB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAW,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAClF,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAClD,CAAC;AAEF,oDAAoD;AACpD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,uCAAuC;IACvC,YAAY,EAAE,IAAI;IAClB,qCAAqC;IACrC,YAAY,EAAE,GAAG;IACjB,2CAA2C;IAC3C,SAAS,EAAE,GAAG;IACd,mDAAmD;IACnD,KAAK,EAAE,GAAG;CACF,CAAC;AAEX;;;;;;GAMG;AACH,2EAA2E;AAC3E,MAAM,eAAe,GAAG,IAAI,OAAO,EAGhC,CAAC;AAEJ,MAAM,UAAU,cAAc,CAAC,KAAmB;IAMhD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3B,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,gBAAgB,CAAC,YAAY;QAC7D,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,gBAAgB,CAAC,YAAY;QAC7D,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS;QACpD,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;KAChE,CAAC,CAAC;IACH,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAmB;IACpC;QACE,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,gBAAgB;QAC7B,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,qDAAqD;KAC7D;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,iBAAiB;QAC9B,aAAa,EAAE,KAAK;QACpB,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,2CAA2C;KACnD;IACD;QACE,EAAE,EAAE,eAAe;QACnB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,GAAG;QACnB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,sEAAsE;KAC9E;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;KACb;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;KACb;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;KACb;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;QACd,KAAK,EACH,8EAA8E;cAC5E,+EAA+E;KACpF;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,sEAAsE;QACtE,uEAAuE;QACvE,0CAA0C;QAC1C,OAAO,EAAE,CAAC,2BAA2B,CAAC;QACtC,QAAQ,EAAE,WAAW;QACrB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,kEAAkE;KAC1E;IAED,2EAA2E;IAC3E,SAAS;IACT,EAAE;IACF,8EAA8E;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,8DAA8D;IAC9D,2EAA2E;IAC3E;QACE,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,OAAO;QACpB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC7E,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,4EAA4E;KACpF;IACD;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC7E,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC7E,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,OAAO;KACd;IAED,2EAA2E;IAC3E,SAAS;IACT,2EAA2E;IAC3E;QACE,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,gBAAgB;QAC7B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC9E,mFAAmF;QACnF,OAAO,EAAE;YACP,EAAE,EAAE,YAAY;YAChB,OAAO,EACL,4NAA4N;SAC/N;QACD,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,qEAAqE;KAC7E;IACD;QACE,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC9E,mFAAmF;QACnF,OAAO,EAAE;YACP,EAAE,EAAE,YAAY;YAChB,OAAO,EACL,wNAAwN;SAC3N;QACD,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;KACf;IAED;QACE;;;;;;;;;WASG;QACH,EAAE,EAAE,kBAAkB;QACtB,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE;QACvE,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,UAAU;QACnB;;;;;WAKG;QACH,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;QAC7E,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;QACd,KAAK,EACH,qEAAqE;cACnE,gEAAgE;KACrE;IAED,2EAA2E;IAC3E,WAAW;IACX,2EAA2E;IAC3E;QACE,EAAE,EAAE,SAAS;QACb,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9E,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;QACd,KAAK,EACH,8FAA8F;cAC5F,+IAA+I;KACpJ;IAED,2EAA2E;IAC3E,WAAW;IACX,2EAA2E;IAC3E;QACE,EAAE,EAAE,aAAa;QACjB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC9E,0FAA0F;QAC1F,OAAO,EAAE;YACP,EAAE,EAAE,YAAY;YAChB,OAAO,EACL,qIAAqI;SACxI;QACD,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;QACE;;;;;;;WAOG;QACH,EAAE,EAAE,mBAAmB;QACvB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE;gBAC7E,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,oDAAoD;QACpD,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACjF,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,6BAA6B;KACrC;IACD;QACE,mEAAmE;QACnE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,UAAU;QACpB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE;YACL;gBACE,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE;gBAC7E,YAAY,EAAE,IAAI;gBAClB,aAAa,EAAE,IAAI;aACpB;SACF;QACD,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,oDAAoD;QACpD,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QACjF,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,6BAA6B;KACrC;IAED,2EAA2E;IAC3E,MAAM;IACN,2EAA2E;IAC3E;QACE,EAAE,EAAE,QAAQ;QACZ,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,QAAQ;QACrB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/E,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EACH,yIAAyI;KAC5I;IAED,2EAA2E;IAC3E,UAAU;IACV,2EAA2E;IAC3E;QACE,EAAE,EAAE,iBAAiB;QACrB,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3B,uDAAuD;QACvD,OAAO,EAAE;YACP,EAAE,EAAE,YAAY;YAChB,OAAO,EACL,gCAAgC;SACnC;QACD,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,+EAA+E;KACvF;IACD;QACE;;;;;;;;;;;;;;;WAeG;QACH,EAAE,EAAE,oBAAoB;QACxB,OAAO,EAAE,CAAC,sBAAsB,CAAC;QACjC,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3B,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,+EAA+E;KACvF;IACD;QACE;;;;;;;;;;;;WAYG;QACH,EAAE,EAAE,qBAAqB;QACzB,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;QACxD,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,oBAAoB;QACjC,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3B,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;QACE,wEAAwE;QACxE,EAAE,EAAE,oBAAoB;QACxB,OAAO,EAAE,CAAC,sBAAsB,CAAC;QACjC,QAAQ,EAAE,SAAS;QACnB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,GAAG;QAClB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM;QACf,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;QAC3B,UAAU,EAAE,OAAO;QACnB,IAAI,EAAE,OAAO;KACd;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AA2B7C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,MAAsB;IAChD,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAU,CAAC,CAAC;QAC/E,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CACpB,MAAsB,EACtB,YAAoB,EACpB,gBAAgB,GAAa,EAAE,EAC/B,WAAW,GAAa,EAAE;IAE1B,OAAO;QACL,MAAM;QACN,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;QACzB,YAAY;QACZ,gBAAgB;QAChB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,iBAAiB,GAAqB,aAAa,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AAEhG;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CAAC,KAAmB;IAC3C,OAAO,KAAK,CAAC,aAAa,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC;AACtE,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,SAAS,CAAC,SAA2B,EAAE,EAAU;IAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,mBAAmB,EAAE,iBAAiB,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA2B,EAC3B,IAA0B,EAC1B,EAAE,GAAS,IAAI,IAAI,EAAE;AACrB;;;;;GAKG;AACH,QAAiB;IAEjB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,IAAI;QACf,SAAS,CAAC,CAAC,CAAC;QACZ,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CACtD,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,OAAO,UAAU,CAAC,MAAM,CACtB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,gBAAgB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAC3F,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAU;IACjC,OAAO,SAAS,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;AACrB,CAAC;AAoBD,MAAM,WAAW,GAAG,IAAI,OAAO,EAG5B,CAAC;AAEJ,gEAAgE;AAChE,SAAS,KAAK,CAAC,KAAmB;IAKhC,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QACtF,KAAK,EAAE,KAAK,CAAC,KAAK;YAChB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;gBACtC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa;gBACxC,YAAY,EAAE,IAAI;gBAClB,IAAI,EAAE,IAAI;aACX,CAAC;YACJ,CAAC,CAAC,IAAI;QACR,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,IAAI;SACX,CAAC;KACH,CAAC;IACF,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,KAAK,CACZ,IAAmB,EACnB,EAAQ,EACR,WAA+B;IAE/B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmB,EACnB,EAAE,GAAS,IAAI,IAAI,EAAE,EACrB,OAAO,GAA6B,EAAE;IAEtC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpD;;;;;;;OAOG;IACH,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO;oBACL,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;oBACjC,YAAY,EAAE,KAAK;oBACnB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBACxE,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,GAAG,IAAI,CAAC,IAAI;gBACZ,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,EAAE;aAC/E,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CACtD,CAAC;QACF,MAAM,OAAO,GACX,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY;YACvC,CAAC,CAAC;gBACE,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB;YACH,CAAC,CAAC;gBACE,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,OAAO,EAAE,IAAI;aACd,CAAC;QACR,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE;gBACJ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC;aACxE;SACF,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC,KAAM,CAAC;IAC9E,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC;AAED,gFAAgF;AAChF,SAAS,QAAQ,CAAC,IAAmB;IACnC,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;QACvC,OAAO,gBAAgB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5E,CAAC;IACD,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,KAAK,KAAK,IAAI;YAAE,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACnG,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAwB,EACxB,SAA2B;IAE3B;6BACyB;IACzB,IAAI,SAAS,CAAC,YAAY,KAAK,qBAAqB;QAAE,OAAO,SAAS,CAAC,YAAY,CAAC;IAEpF,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,YAAY,CAAC;QACjE,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC,YAAY,CAAC;QACtD,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,GAAG,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC;IACtD,CAAC;IACD;qEACiE;IACjE,OAAO,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC;AAC1C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,cAAc,CAAC,IAA0B;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAChG,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,YAAoB,EAAE,GAAS;IAC3D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,YAAY,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAClF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACrD,8EAA8E;IAC9E,+EAA+E;IAC/E,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trazum/core",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.2",
|
|
4
4
|
"description": "Trazum core: priced advisories for LLM prompts (caching, model tier, batching, schemas), plus deterministic trimming, token counting and pricing.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "David Mu\u00f1oz Rey",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"prepublishOnly": "npm run build && npm test"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@types/node": "^26.
|
|
54
|
+
"@types/node": "^26.6.3",
|
|
55
55
|
"typescript": "^7.0.2"
|
|
56
56
|
},
|
|
57
57
|
"engines": {
|
package/src/index.ts
CHANGED
|
@@ -45,6 +45,10 @@ export {
|
|
|
45
45
|
profileToCsv,
|
|
46
46
|
} from './csv.js';
|
|
47
47
|
export type { ProfileCsvOptions, ProfileCsvShape } from './csv.js';
|
|
48
|
+
// A PDF writer over the standard fonts, with no dependency and no embedded
|
|
49
|
+
// font, so a bill can be handed to the person who signs it off. See pdf.ts.
|
|
50
|
+
export { PDF_PAGE, PdfDocument, pdfEncode, pdfFit, pdfTextWidth, pdfWrap } from './pdf.js';
|
|
51
|
+
export type { PdfColor, PdfFont, PdfMetadata, PdfShapeOptions, PdfTextOptions } from './pdf.js';
|
|
48
52
|
export { driversBetween } from './against.js';
|
|
49
53
|
export type { AgainstDriver } from './against.js';
|
|
50
54
|
export { coverageDrift, COVERAGE_FIELDS, COVERAGE_DRIFT_MIN } from './coverage-drift.js';
|
package/src/pdf.ts
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A PDF writer with nothing behind it.
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* The person who signs off a bill reads it as a PDF: attached to an email,
|
|
7
|
+
* filed beside an invoice, printed for a meeting. The HTML report renders the
|
|
8
|
+
* same everywhere a browser does, and a browser is still one step a finance
|
|
9
|
+
* reader should not have to take. This writes the file directly.
|
|
10
|
+
*
|
|
11
|
+
* ## Why it is small on purpose
|
|
12
|
+
*
|
|
13
|
+
* This package has no runtime dependencies, and a PDF library would be the
|
|
14
|
+
* largest thing in it by an order of magnitude. A bill report needs very little
|
|
15
|
+
* of the format: text in two weights, filled and stroked rectangles, lines, and
|
|
16
|
+
* pages. So this is exactly that, over the 14 standard fonts every PDF reader
|
|
17
|
+
* carries, which means no font is embedded and a three-page bill weighs a few
|
|
18
|
+
* kilobytes.
|
|
19
|
+
*
|
|
20
|
+
* ## What that costs, said plainly
|
|
21
|
+
*
|
|
22
|
+
* The standard fonts speak WinAnsiEncoding: Latin script, which covers every
|
|
23
|
+
* locale this product ships (English, Spanish, French, German, Portuguese)
|
|
24
|
+
* and nothing beyond it. A character outside it is written as its closest
|
|
25
|
+
* ASCII form when there is an obvious one (`→` as `->`) and as `?` when there
|
|
26
|
+
* is not, never dropped silently: a label in Japanese arrives as question
|
|
27
|
+
* marks, which a reader can see is wrong, rather than as an empty cell, which
|
|
28
|
+
* reads as nothing.
|
|
29
|
+
*
|
|
30
|
+
* ## Deterministic
|
|
31
|
+
*
|
|
32
|
+
* The same calls write the same bytes. No creation date unless one is passed,
|
|
33
|
+
* no random ids, content streams uncompressed, so a test can compare the file
|
|
34
|
+
* and a reader can open it in a text editor and find their figures. The file
|
|
35
|
+
* is plain ASCII: every byte past 127 is written as an octal escape.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
export type PdfFont = 'regular' | 'bold' | 'mono';
|
|
39
|
+
|
|
40
|
+
/** A colour as `#rrggbb`. */
|
|
41
|
+
export type PdfColor = `#${string}`;
|
|
42
|
+
|
|
43
|
+
export interface PdfTextOptions {
|
|
44
|
+
font?: PdfFont;
|
|
45
|
+
size?: number;
|
|
46
|
+
color?: PdfColor;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface PdfShapeOptions {
|
|
50
|
+
fill?: PdfColor;
|
|
51
|
+
stroke?: PdfColor;
|
|
52
|
+
lineWidth?: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface PdfMetadata {
|
|
56
|
+
title?: string;
|
|
57
|
+
subject?: string;
|
|
58
|
+
author?: string;
|
|
59
|
+
/** Omitted unless given, so the same report writes the same bytes. */
|
|
60
|
+
createdAt?: Date;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** A4, in points. Letter readers print it with a small margin and lose nothing. */
|
|
64
|
+
export const PDF_PAGE = { width: 595.28, height: 841.89 } as const;
|
|
65
|
+
|
|
66
|
+
const FONT_NAME: Readonly<Record<PdfFont, string>> = {
|
|
67
|
+
regular: 'Helvetica',
|
|
68
|
+
bold: 'Helvetica-Bold',
|
|
69
|
+
mono: 'Courier',
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const FONT_KEY: Readonly<Record<PdfFont, string>> = { regular: 'F1', bold: 'F2', mono: 'F3' };
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
Advance widths in thousandths of an em for character codes 32 to 126, from
|
|
76
|
+
the Adobe font metrics every reader ships with these fonts. Needed for one
|
|
77
|
+
thing: right-aligning a column of figures and wrapping a sentence, both of
|
|
78
|
+
which a report has on every page.
|
|
79
|
+
*/
|
|
80
|
+
const HELVETICA = [
|
|
81
|
+
278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278,
|
|
82
|
+
556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556,
|
|
83
|
+
1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778,
|
|
84
|
+
667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556,
|
|
85
|
+
333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556,
|
|
86
|
+
556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584,
|
|
87
|
+
];
|
|
88
|
+
|
|
89
|
+
const HELVETICA_BOLD = [
|
|
90
|
+
278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278,
|
|
91
|
+
556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611,
|
|
92
|
+
975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778,
|
|
93
|
+
667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556,
|
|
94
|
+
333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611,
|
|
95
|
+
611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584,
|
|
96
|
+
];
|
|
97
|
+
|
|
98
|
+
/** The WinAnsi code points that are not Latin-1's, and the punctuation reports use. */
|
|
99
|
+
const WIN_ANSI_EXTRA: ReadonlyMap<string, number> = new Map([
|
|
100
|
+
['€', 0x80], ['‚', 0x82], ['ƒ', 0x83], ['„', 0x84], ['…', 0x85], ['†', 0x86],
|
|
101
|
+
['‡', 0x87], ['ˆ', 0x88], ['‰', 0x89], ['Š', 0x8a], ['‹', 0x8b], ['Œ', 0x8c],
|
|
102
|
+
['Ž', 0x8e], ['‘', 0x91], ['’', 0x92], ['“', 0x93], ['”', 0x94], ['•', 0x95],
|
|
103
|
+
['–', 0x96], ['—', 0x97], ['˜', 0x98], ['™', 0x99], ['š', 0x9a], ['›', 0x9b],
|
|
104
|
+
['œ', 0x9c], ['ž', 0x9e], ['Ÿ', 0x9f],
|
|
105
|
+
]);
|
|
106
|
+
|
|
107
|
+
/** Characters outside WinAnsi with an obvious ASCII reading. */
|
|
108
|
+
const TRANSLITERATE: ReadonlyMap<string, string> = new Map([
|
|
109
|
+
['→', '->'], ['←', '<-'], ['↔', '<->'], ['≈', '~'], ['≤', '<='], ['≥', '>='],
|
|
110
|
+
['−', '-'], ['‑', '-'], ['‐', '-'], ['≠', '!='], ['✓', 'v'], ['✗', 'x'],
|
|
111
|
+
// Thin and narrow spaces, which some locales use as a thousands separator.
|
|
112
|
+
[' ', ' '], [' ', ' '], [' ', ' '], ['', ''],
|
|
113
|
+
]);
|
|
114
|
+
|
|
115
|
+
/** Widths for the WinAnsi codes above 127 that are not an accented letter. */
|
|
116
|
+
const HIGH_WIDTH: ReadonlyMap<number, number> = new Map([
|
|
117
|
+
[0x80, 556], [0x85, 1000], [0x91, 222], [0x92, 222], [0x93, 333], [0x94, 333],
|
|
118
|
+
[0x95, 350], [0x96, 556], [0x97, 1000], [0x99, 1000], [0xa0, 278], [0xa1, 333],
|
|
119
|
+
[0xa2, 556], [0xa3, 556], [0xa5, 556], [0xa7, 556], [0xa9, 737], [0xab, 556],
|
|
120
|
+
[0xae, 737], [0xb0, 400], [0xb7, 278], [0xbb, 556], [0xbf, 611], [0xc6, 1000],
|
|
121
|
+
[0xd7, 584], [0xd8, 778], [0xdf, 611], [0xe6, 889], [0xf7, 584], [0xf8, 611],
|
|
122
|
+
]);
|
|
123
|
+
|
|
124
|
+
/** One character as WinAnsi byte codes: one, several when transliterated, `?` when neither. */
|
|
125
|
+
function winAnsi(char: string): number[] {
|
|
126
|
+
const code = char.codePointAt(0) ?? 63;
|
|
127
|
+
if (code === 0x0a || code === 0x0d || code === 0x09) return [32];
|
|
128
|
+
if (code >= 32 && code <= 126) return [code];
|
|
129
|
+
if (code >= 0xa0 && code <= 0xff) return [code];
|
|
130
|
+
const extra = WIN_ANSI_EXTRA.get(char);
|
|
131
|
+
if (extra !== undefined) return [extra];
|
|
132
|
+
const ascii = TRANSLITERATE.get(char);
|
|
133
|
+
if (ascii !== undefined) return [...ascii].map((c) => c.charCodeAt(0));
|
|
134
|
+
return [63];
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** The text as WinAnsi codes, the form both the width and the stream are measured in. */
|
|
138
|
+
export function pdfEncode(text: string): number[] {
|
|
139
|
+
const codes: number[] = [];
|
|
140
|
+
for (const char of text) codes.push(...winAnsi(char));
|
|
141
|
+
return codes;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function codeWidth(code: number, font: PdfFont): number {
|
|
145
|
+
if (font === 'mono') return 600;
|
|
146
|
+
const table = font === 'bold' ? HELVETICA_BOLD : HELVETICA;
|
|
147
|
+
if (code >= 32 && code <= 126) return table[code - 32] ?? 556;
|
|
148
|
+
const high = HIGH_WIDTH.get(code);
|
|
149
|
+
if (high !== undefined) return high;
|
|
150
|
+
// An accented letter is as wide as the letter under the accent.
|
|
151
|
+
const base = String.fromCharCode(code).normalize('NFD').charCodeAt(0);
|
|
152
|
+
if (base >= 32 && base <= 126) return table[base - 32] ?? 556;
|
|
153
|
+
return 556;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** How wide `text` sets in `font` at `size` points. */
|
|
157
|
+
export function pdfTextWidth(text: string, font: PdfFont, size: number): number {
|
|
158
|
+
let units = 0;
|
|
159
|
+
for (const code of pdfEncode(text)) units += codeWidth(code, font);
|
|
160
|
+
return (units * size) / 1000;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* `text` broken into lines no wider than `maxWidth`, at spaces.
|
|
165
|
+
*
|
|
166
|
+
* A word wider than the line on its own (a model id, a path) is broken
|
|
167
|
+
* mid-word rather than left to run off the page, because a figure that leaves
|
|
168
|
+
* the paper is a figure nobody reads.
|
|
169
|
+
*/
|
|
170
|
+
export function pdfWrap(text: string, font: PdfFont, size: number, maxWidth: number): string[] {
|
|
171
|
+
const lines: string[] = [];
|
|
172
|
+
for (const paragraph of text.split('\n')) {
|
|
173
|
+
let line = '';
|
|
174
|
+
for (const word of paragraph.split(/ +/)) {
|
|
175
|
+
const candidate = line === '' ? word : `${line} ${word}`;
|
|
176
|
+
if (pdfTextWidth(candidate, font, size) <= maxWidth) {
|
|
177
|
+
line = candidate;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if (line !== '') lines.push(line);
|
|
181
|
+
let rest = word;
|
|
182
|
+
while (pdfTextWidth(rest, font, size) > maxWidth && rest.length > 1) {
|
|
183
|
+
let cut = rest.length - 1;
|
|
184
|
+
while (cut > 1 && pdfTextWidth(rest.slice(0, cut), font, size) > maxWidth) cut -= 1;
|
|
185
|
+
lines.push(rest.slice(0, cut));
|
|
186
|
+
rest = rest.slice(cut);
|
|
187
|
+
}
|
|
188
|
+
line = rest;
|
|
189
|
+
}
|
|
190
|
+
lines.push(line);
|
|
191
|
+
}
|
|
192
|
+
return lines;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/** `text` cut to fit `maxWidth`, with an ellipsis saying it was cut. */
|
|
196
|
+
export function pdfFit(text: string, font: PdfFont, size: number, maxWidth: number): string {
|
|
197
|
+
if (pdfTextWidth(text, font, size) <= maxWidth) return text;
|
|
198
|
+
let cut = text.length;
|
|
199
|
+
while (cut > 0 && pdfTextWidth(`${text.slice(0, cut)}…`, font, size) > maxWidth) cut -= 1;
|
|
200
|
+
return `${text.slice(0, cut)}…`;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/** A PDF string literal: parentheses and backslashes escaped, every byte past 127 in octal. */
|
|
204
|
+
function literal(text: string): string {
|
|
205
|
+
let out = '(';
|
|
206
|
+
for (const code of pdfEncode(text)) {
|
|
207
|
+
if (code === 0x28 || code === 0x29 || code === 0x5c) out += `\\${String.fromCharCode(code)}`;
|
|
208
|
+
else if (code < 32 || code > 126) out += `\\${code.toString(8).padStart(3, '0')}`;
|
|
209
|
+
else out += String.fromCharCode(code);
|
|
210
|
+
}
|
|
211
|
+
return `${out})`;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/** Numbers as PDF writes them: at most two decimals, no exponent, no `-0`. */
|
|
215
|
+
function num(value: number): string {
|
|
216
|
+
const rounded = Math.round(value * 100) / 100;
|
|
217
|
+
return Object.is(rounded, -0) ? '0' : String(rounded);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function rgb(color: PdfColor): string {
|
|
221
|
+
const hex = color.slice(1);
|
|
222
|
+
const channel = (offset: number): string => num(parseInt(hex.slice(offset, offset + 2), 16) / 255);
|
|
223
|
+
return `${channel(0)} ${channel(2)} ${channel(4)}`;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Pages of text and shapes, written as one PDF.
|
|
228
|
+
*
|
|
229
|
+
* Coordinates are in points from the **top-left** corner, the way a layout is
|
|
230
|
+
* thought about, and converted to PDF's bottom-left origin on the way out. A
|
|
231
|
+
* text call's `y` is the baseline.
|
|
232
|
+
*/
|
|
233
|
+
export class PdfDocument {
|
|
234
|
+
readonly width = PDF_PAGE.width;
|
|
235
|
+
readonly height = PDF_PAGE.height;
|
|
236
|
+
private readonly pages: string[][] = [];
|
|
237
|
+
private current = -1;
|
|
238
|
+
|
|
239
|
+
constructor() {
|
|
240
|
+
this.addPage();
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/** Starts a new page and makes it the one drawn on. */
|
|
244
|
+
addPage(): number {
|
|
245
|
+
this.pages.push([]);
|
|
246
|
+
this.current = this.pages.length - 1;
|
|
247
|
+
return this.current;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
get pageCount(): number {
|
|
251
|
+
return this.pages.length;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/** Draws on an earlier page, which is how a footer learns the page count. */
|
|
255
|
+
setPage(index: number): void {
|
|
256
|
+
if (!Number.isInteger(index) || index < 0 || index >= this.pages.length) {
|
|
257
|
+
throw new RangeError(`no page ${index}: the document has ${this.pages.length}`);
|
|
258
|
+
}
|
|
259
|
+
this.current = index;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
private ops(): string[] {
|
|
263
|
+
const page = this.pages[this.current];
|
|
264
|
+
if (page === undefined) throw new RangeError('no page to draw on');
|
|
265
|
+
return page;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
text(x: number, y: number, text: string, options: PdfTextOptions = {}): void {
|
|
269
|
+
const font = options.font ?? 'regular';
|
|
270
|
+
const size = options.size ?? 10;
|
|
271
|
+
const color = options.color ?? '#000000';
|
|
272
|
+
this.ops().push(
|
|
273
|
+
`BT /${FONT_KEY[font]} ${num(size)} Tf ${rgb(color)} rg ${num(x)} ${num(this.height - y)} Td ${literal(text)} Tj ET`,
|
|
274
|
+
);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/** Text ending at `right`, for a column of figures. */
|
|
278
|
+
textRight(right: number, y: number, text: string, options: PdfTextOptions = {}): void {
|
|
279
|
+
const width = pdfTextWidth(text, options.font ?? 'regular', options.size ?? 10);
|
|
280
|
+
this.text(right - width, y, text, options);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
rect(x: number, y: number, width: number, height: number, options: PdfShapeOptions = {}): void {
|
|
284
|
+
const { fill, stroke } = options;
|
|
285
|
+
if (fill === undefined && stroke === undefined) return;
|
|
286
|
+
const parts: string[] = ['q'];
|
|
287
|
+
if (fill !== undefined) parts.push(`${rgb(fill)} rg`);
|
|
288
|
+
if (stroke !== undefined) parts.push(`${rgb(stroke)} RG ${num(options.lineWidth ?? 1)} w`);
|
|
289
|
+
parts.push(`${num(x)} ${num(this.height - y - height)} ${num(width)} ${num(height)} re`);
|
|
290
|
+
parts.push(fill !== undefined && stroke !== undefined ? 'B' : fill !== undefined ? 'f' : 'S');
|
|
291
|
+
parts.push('Q');
|
|
292
|
+
this.ops().push(parts.join(' '));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
line(x1: number, y1: number, x2: number, y2: number, options: { color?: PdfColor; width?: number } = {}): void {
|
|
296
|
+
this.ops().push(
|
|
297
|
+
`q ${rgb(options.color ?? '#000000')} RG ${num(options.width ?? 1)} w ${num(x1)} ${num(this.height - y1)} m ${num(x2)} ${num(this.height - y2)} l S Q`,
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/** The whole file, as ASCII bytes. */
|
|
302
|
+
toBytes(metadata: PdfMetadata = {}): Uint8Array {
|
|
303
|
+
const text = this.toString(metadata);
|
|
304
|
+
const bytes = new Uint8Array(text.length);
|
|
305
|
+
for (let i = 0; i < text.length; i += 1) bytes[i] = text.charCodeAt(i);
|
|
306
|
+
return bytes;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/** The whole file as a string; every character is ASCII, so its length is its byte count. */
|
|
310
|
+
toString(metadata: PdfMetadata = {}): string {
|
|
311
|
+
/*
|
|
312
|
+
Object numbers: 1 catalog, 2 page tree, 3 to 5 fonts, 6 info, then a page
|
|
313
|
+
and its content stream for each page in order.
|
|
314
|
+
*/
|
|
315
|
+
const objects: string[] = [];
|
|
316
|
+
const pageIds = this.pages.map((_, i) => 7 + i * 2);
|
|
317
|
+
objects.push('<< /Type /Catalog /Pages 2 0 R >>');
|
|
318
|
+
objects.push(`<< /Type /Pages /Kids [${pageIds.map((id) => `${id} 0 R`).join(' ')}] /Count ${this.pages.length} >>`);
|
|
319
|
+
for (const font of ['regular', 'bold', 'mono'] as const) {
|
|
320
|
+
objects.push(`<< /Type /Font /Subtype /Type1 /BaseFont /${FONT_NAME[font]} /Encoding /WinAnsiEncoding >>`);
|
|
321
|
+
}
|
|
322
|
+
const info: string[] = ['/Producer (Trazum)'];
|
|
323
|
+
if (metadata.title !== undefined) info.push(`/Title ${literal(metadata.title)}`);
|
|
324
|
+
if (metadata.subject !== undefined) info.push(`/Subject ${literal(metadata.subject)}`);
|
|
325
|
+
if (metadata.author !== undefined) info.push(`/Author ${literal(metadata.author)}`);
|
|
326
|
+
if (metadata.createdAt !== undefined) info.push(`/CreationDate (${pdfDate(metadata.createdAt)})`);
|
|
327
|
+
objects.push(`<< ${info.join(' ')} >>`);
|
|
328
|
+
const resources = '<< /Font << /F1 3 0 R /F2 4 0 R /F3 5 0 R >> >>';
|
|
329
|
+
this.pages.forEach((ops, i) => {
|
|
330
|
+
const contentId = 8 + i * 2;
|
|
331
|
+
objects.push(
|
|
332
|
+
`<< /Type /Page /Parent 2 0 R /MediaBox [0 0 ${num(this.width)} ${num(this.height)}] /Resources ${resources} /Contents ${contentId} 0 R >>`,
|
|
333
|
+
);
|
|
334
|
+
const stream = ops.join('\n');
|
|
335
|
+
objects.push(`<< /Length ${stream.length} >>\nstream\n${stream}\nendstream`);
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
let out = '%PDF-1.4\n';
|
|
339
|
+
const offsets: number[] = [];
|
|
340
|
+
objects.forEach((body, i) => {
|
|
341
|
+
offsets.push(out.length);
|
|
342
|
+
out += `${i + 1} 0 obj\n${body}\nendobj\n`;
|
|
343
|
+
});
|
|
344
|
+
const xref = out.length;
|
|
345
|
+
out += `xref\n0 ${objects.length + 1}\n0000000000 65535 f \n`;
|
|
346
|
+
for (const offset of offsets) out += `${String(offset).padStart(10, '0')} 00000 n \n`;
|
|
347
|
+
out += `trailer\n<< /Size ${objects.length + 1} /Root 1 0 R /Info 6 0 R >>\nstartxref\n${xref}\n%%EOF\n`;
|
|
348
|
+
return out;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/** `D:YYYYMMDDHHmmSSZ`, in UTC. */
|
|
353
|
+
function pdfDate(date: Date): string {
|
|
354
|
+
const pad = (value: number): string => String(value).padStart(2, '0');
|
|
355
|
+
return `D:${date.getUTCFullYear()}${pad(date.getUTCMonth() + 1)}${pad(date.getUTCDate())}${pad(date.getUTCHours())}${pad(date.getUTCMinutes())}${pad(date.getUTCSeconds())}Z`;
|
|
356
|
+
}
|