@extenshi/cli 0.20.0 → 0.22.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.
Files changed (122) hide show
  1. package/README.md +4 -0
  2. package/dist/amo-source-detect.d.ts +18 -0
  3. package/dist/amo-source-detect.d.ts.map +1 -0
  4. package/dist/amo-source-detect.js +41 -0
  5. package/dist/amo-source-detect.js.map +1 -0
  6. package/dist/amo-source.d.ts +41 -0
  7. package/dist/amo-source.d.ts.map +1 -0
  8. package/dist/amo-source.js +240 -0
  9. package/dist/amo-source.js.map +1 -0
  10. package/dist/amowebstore-md.d.ts +38 -0
  11. package/dist/amowebstore-md.d.ts.map +1 -0
  12. package/dist/amowebstore-md.js +118 -0
  13. package/dist/amowebstore-md.js.map +1 -0
  14. package/dist/auto-evidence.d.ts +100 -0
  15. package/dist/auto-evidence.d.ts.map +1 -0
  16. package/dist/auto-evidence.js +197 -0
  17. package/dist/auto-evidence.js.map +1 -0
  18. package/dist/cli.js +320 -8
  19. package/dist/cli.js.map +1 -1
  20. package/dist/edgewebstore-md.d.ts +26 -0
  21. package/dist/edgewebstore-md.d.ts.map +1 -0
  22. package/dist/edgewebstore-md.js +95 -0
  23. package/dist/edgewebstore-md.js.map +1 -0
  24. package/dist/evidence-ingest.d.ts +60 -0
  25. package/dist/evidence-ingest.d.ts.map +1 -0
  26. package/dist/evidence-ingest.js +141 -0
  27. package/dist/evidence-ingest.js.map +1 -0
  28. package/dist/expected-error.d.ts +9 -0
  29. package/dist/expected-error.d.ts.map +1 -1
  30. package/dist/expected-error.js +16 -1
  31. package/dist/expected-error.js.map +1 -1
  32. package/dist/firefox-rdp.d.ts +55 -0
  33. package/dist/firefox-rdp.d.ts.map +1 -0
  34. package/dist/firefox-rdp.js +203 -0
  35. package/dist/firefox-rdp.js.map +1 -0
  36. package/dist/gecko-id.d.ts +55 -0
  37. package/dist/gecko-id.d.ts.map +1 -0
  38. package/dist/gecko-id.js +132 -0
  39. package/dist/gecko-id.js.map +1 -0
  40. package/dist/generate-listing.d.ts +19 -8
  41. package/dist/generate-listing.d.ts.map +1 -1
  42. package/dist/generate-listing.js +66 -18
  43. package/dist/generate-listing.js.map +1 -1
  44. package/dist/icon.d.ts +18 -0
  45. package/dist/icon.d.ts.map +1 -1
  46. package/dist/icon.js +29 -20
  47. package/dist/icon.js.map +1 -1
  48. package/dist/json-ld.d.ts +89 -0
  49. package/dist/json-ld.d.ts.map +1 -0
  50. package/dist/json-ld.js +118 -0
  51. package/dist/json-ld.js.map +1 -0
  52. package/dist/landing-page.d.ts +123 -0
  53. package/dist/landing-page.d.ts.map +1 -0
  54. package/dist/landing-page.js +405 -0
  55. package/dist/landing-page.js.map +1 -0
  56. package/dist/media.d.ts +42 -0
  57. package/dist/media.d.ts.map +1 -0
  58. package/dist/media.js +96 -0
  59. package/dist/media.js.map +1 -0
  60. package/dist/package.d.ts +163 -0
  61. package/dist/package.d.ts.map +1 -0
  62. package/dist/package.js +500 -0
  63. package/dist/package.js.map +1 -0
  64. package/dist/page.d.ts +141 -0
  65. package/dist/page.d.ts.map +1 -0
  66. package/dist/page.js +227 -0
  67. package/dist/page.js.map +1 -0
  68. package/dist/pay-contract.d.ts +20 -13
  69. package/dist/pay-contract.d.ts.map +1 -1
  70. package/dist/pay-contract.js +20 -11
  71. package/dist/pay-contract.js.map +1 -1
  72. package/dist/pay-test-cycle.d.ts +40 -0
  73. package/dist/pay-test-cycle.d.ts.map +1 -0
  74. package/dist/pay-test-cycle.js +207 -0
  75. package/dist/pay-test-cycle.js.map +1 -0
  76. package/dist/pay.d.ts +1 -1
  77. package/dist/pay.d.ts.map +1 -1
  78. package/dist/pay.js +1 -0
  79. package/dist/pay.js.map +1 -1
  80. package/dist/project.d.ts +39 -1
  81. package/dist/project.d.ts.map +1 -1
  82. package/dist/project.js +231 -20
  83. package/dist/project.js.map +1 -1
  84. package/dist/publish.d.ts +33 -0
  85. package/dist/publish.d.ts.map +1 -1
  86. package/dist/publish.js +113 -2
  87. package/dist/publish.js.map +1 -1
  88. package/dist/review-checks.d.ts +13 -0
  89. package/dist/review-checks.d.ts.map +1 -1
  90. package/dist/review-checks.js.map +1 -1
  91. package/dist/review-risk.d.ts +10 -1
  92. package/dist/review-risk.d.ts.map +1 -1
  93. package/dist/review-risk.js +1 -0
  94. package/dist/review-risk.js.map +1 -1
  95. package/dist/scan.d.ts +3 -2
  96. package/dist/scan.d.ts.map +1 -1
  97. package/dist/scan.js +4 -2
  98. package/dist/scan.js.map +1 -1
  99. package/dist/screenshots-scenes.d.ts +1383 -0
  100. package/dist/screenshots-scenes.d.ts.map +1 -0
  101. package/dist/screenshots-scenes.js +276 -0
  102. package/dist/screenshots-scenes.js.map +1 -0
  103. package/dist/screenshots.d.ts +145 -0
  104. package/dist/screenshots.d.ts.map +1 -0
  105. package/dist/screenshots.js +557 -0
  106. package/dist/screenshots.js.map +1 -0
  107. package/dist/smoke.d.ts +81 -0
  108. package/dist/smoke.d.ts.map +1 -0
  109. package/dist/smoke.js +491 -0
  110. package/dist/smoke.js.map +1 -0
  111. package/dist/store-assets.d.ts +139 -0
  112. package/dist/store-assets.d.ts.map +1 -0
  113. package/dist/store-assets.js +582 -0
  114. package/dist/store-assets.js.map +1 -0
  115. package/dist/telemetry.d.ts.map +1 -1
  116. package/dist/telemetry.js +3 -0
  117. package/dist/telemetry.js.map +1 -1
  118. package/dist/zip.d.ts +57 -0
  119. package/dist/zip.d.ts.map +1 -0
  120. package/dist/zip.js +134 -0
  121. package/dist/zip.js.map +1 -0
  122. package/package.json +4 -3
@@ -0,0 +1,139 @@
1
+ /**
2
+ * `extenshi icon store-assets <source>` — the store LISTING artwork each store
3
+ * asks for, rendered offline from one .svg / .png source.
4
+ *
5
+ * `icon preview` covers the toolbar sizes inside the package (16/32/48/128);
6
+ * this covers what the store dashboards ask for next to it: the Chrome Web
7
+ * Store promo tile and marquee, the Edge Add-ons logo and tiles, the AMO icon.
8
+ * Same source validation (readIconSource / svg-scrub) as the preview.
9
+ *
10
+ * Rendering is resvg compiled to WebAssembly (@resvg/resvg-wasm): no native
11
+ * module, no browser, no network. It is imported lazily so no other command
12
+ * pays for loading it.
13
+ *
14
+ * Sizes are the stores' own numbers; each spec carries the page it came from.
15
+ * The screenshot sizes used by `extenshi screenshots` live here too, so there is
16
+ * one table of store image requirements in the CLI.
17
+ */
18
+ import { type IconSource } from './icon.js';
19
+ /** https://developer.chrome.com/docs/webstore/images */
20
+ export declare const CWS_IMAGES_DOC = "https://developer.chrome.com/docs/webstore/images";
21
+ /** https://learn.microsoft.com/en-us/microsoft-edge/extensions/publish/publish-extension (Step 7, store listing) */
22
+ export declare const EDGE_LISTING_DOC = "https://learn.microsoft.com/en-us/microsoft-edge/extensions/publish/publish-extension#step-7-enter-store-listing-details-for-each-language";
23
+ /** https://mozilla.github.io/addons-server/topics/api/addons.html#addon-icon — square PNG/JPEG, 128×128 recommended; AMO derives 32/64/128. */
24
+ export declare const AMO_ICON_DOC = "https://mozilla.github.io/addons-server/topics/api/addons.html#addon-icon";
25
+ /** https://extensionworkshop.com/documentation/develop/create-an-appealing-listing/ — screenshots 1280×800 (1.6:1). */
26
+ export declare const AMO_LISTING_DOC = "https://extensionworkshop.com/documentation/develop/create-an-appealing-listing/";
27
+ /** https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons — 32 px default, 2× for HiDPI. */
28
+ export declare const MDN_ICONS_DOC = "https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons";
29
+ export declare const STORES: readonly ["chrome", "edge", "firefox"];
30
+ export type StoreId = (typeof STORES)[number];
31
+ export interface Size {
32
+ width: number;
33
+ height: number;
34
+ }
35
+ /**
36
+ * Listing screenshots. All three stores take 1280×800, so one capture serves
37
+ * every store at the default size; `small` is each store's other accepted size.
38
+ */
39
+ export declare const STORE_SCREENSHOT_SPECS: Record<StoreId, {
40
+ large: Size;
41
+ small: Size;
42
+ max: number | null;
43
+ doc: string;
44
+ note: string;
45
+ }>;
46
+ export type AssetKind = 'icon' | 'logo' | 'promo' | 'marquee';
47
+ export interface StoreAssetSpec extends Size {
48
+ store: StoreId;
49
+ id: string;
50
+ file: string;
51
+ kind: AssetKind;
52
+ required: boolean;
53
+ /** Artwork box as a fraction of the canvas (icons/logos) — the transparent margin is the rest. */
54
+ artwork?: number;
55
+ note: string;
56
+ doc: string;
57
+ }
58
+ export declare const STORE_ASSET_SPECS: readonly StoreAssetSpec[];
59
+ export declare function parseStores(value: string | undefined): StoreId[];
60
+ type ResvgModule = typeof import('@resvg/resvg-wasm');
61
+ export declare function loadResvg(): Promise<ResvgModule>;
62
+ export interface Raster {
63
+ width: number;
64
+ height: number;
65
+ pixels: Uint8Array;
66
+ png: Uint8Array;
67
+ }
68
+ export declare function renderSvg(svg: string, width: number, fontBuffers?: Uint8Array[]): Promise<Raster>;
69
+ export interface SourceInfo extends Size {
70
+ /** The user-coordinate system of an SVG source (its viewBox, or 0 0 w h). */
71
+ viewBox: Box;
72
+ /** Some painted content lies outside the canvas (and would be cut off). */
73
+ overflow: boolean;
74
+ }
75
+ /** Intrinsic size, user coordinates and (for SVG) whether content overflows the canvas. */
76
+ export declare function sourceInfo(source: IconSource, fontBuffers?: Uint8Array[]): Promise<SourceInfo>;
77
+ /** Map a box in rendered-canvas pixels of a source to its user coordinates (xMidYMid meet). */
78
+ export declare function canvasToUser(box: Box, info: SourceInfo): Box;
79
+ export interface Box {
80
+ x: number;
81
+ y: number;
82
+ width: number;
83
+ height: number;
84
+ }
85
+ /** Bounding box of pixels with alpha > threshold, or null for a fully transparent image. */
86
+ export declare function alphaBoundingBox(pixels: Uint8Array, width: number, height: number, threshold?: number): Box | null;
87
+ /** Alpha-weighted average colour of the opaque artwork, as #rrggbb. */
88
+ export declare function dominantColor(pixels: Uint8Array): string;
89
+ /** Mix a #rrggbb colour toward white by `t` (0 = colour, 1 = white). */
90
+ export declare function tint(color: string, t: number): string;
91
+ /**
92
+ * resvg in WebAssembly cannot see system fonts, so text in a source SVG would
93
+ * silently vanish. Load only the files whose names match the families the SVG
94
+ * asks for (plus a common sans fallback) — not the whole font directory.
95
+ */
96
+ export declare function fontsForSvg(svg: string, extraFiles?: string[]): {
97
+ buffers: Uint8Array[];
98
+ files: string[];
99
+ };
100
+ export interface StoreAssetsOptions {
101
+ /** Comma-separated stores (default all). */
102
+ store?: string;
103
+ /** Output directory (default ./store-assets). */
104
+ out?: string;
105
+ /** Background for promo tiles/marquee (default: a light tint of the artwork colour). */
106
+ background?: string;
107
+ /** Background for icons/logos (default transparent). */
108
+ iconBackground?: string;
109
+ /** Full-bleed artwork for the 440×280 tiles (else composed from the icon). */
110
+ promo?: string;
111
+ /** Full-bleed artwork for the 1400×560 tiles (else composed from the icon). */
112
+ marquee?: string;
113
+ /** Extra font files for text in SVG sources. */
114
+ font?: string[];
115
+ }
116
+ export interface RenderedAsset {
117
+ store: StoreId;
118
+ id: string;
119
+ file: string;
120
+ path: string;
121
+ width: number;
122
+ height: number;
123
+ bytes: number;
124
+ sha256: string;
125
+ required: boolean;
126
+ doc: string;
127
+ }
128
+ export interface StoreAssetsResult {
129
+ outDir: string;
130
+ assets: RenderedAsset[];
131
+ warnings: string[];
132
+ }
133
+ /** Render every requested store's listing artwork. Exported for tests. */
134
+ export declare function renderStoreAssets(iconPath: string, opts?: StoreAssetsOptions): Promise<StoreAssetsResult>;
135
+ export declare function runStoreAssets(iconPath: string, opts: StoreAssetsOptions & {
136
+ json?: boolean;
137
+ }): Promise<void>;
138
+ export {};
139
+ //# sourceMappingURL=store-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-assets.d.ts","sourceRoot":"","sources":["../src/store-assets.ts"],"names":[],"mappings":"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"}