@akesson/figma-explorer 0.2.0 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +119 -0
- package/README.md +3 -3
- package/binary-install.js +149 -13
- package/binary.js +4 -8
- package/npm-shrinkwrap.json +8 -502
- package/package.json +5 -9
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,125 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.3] - 2026-09-23
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **`cache prefetch` now backfills a missing `.full.json.gz` sidecar.** A file
|
|
15
|
+
first cached by opening it via URL (`ls <url>`, `node-info <url>`, …) has a
|
|
16
|
+
payload but no full sidecar, and prefetch used to count it as up to date
|
|
17
|
+
forever — so `node-info --cache-only` never worked offline for it. Prefetch
|
|
18
|
+
now refetches an unchanged file whose full sidecar is missing or stamped
|
|
19
|
+
with another schema version (unless `--no-full`).
|
|
20
|
+
- **Root `ls` no longer lists folders with no cached files.** A folder dropped
|
|
21
|
+
from `FIGMA_PROJECTS_IDS` keeps its `proj:N` id (synthetic ids are stable),
|
|
22
|
+
and root `ls` rendered it as an empty project named by its raw folder id
|
|
23
|
+
(e.g. `proj:3 "571382610"`). Such folders are now omitted; `ls proj:N` still
|
|
24
|
+
works, and `cache prefetch --folder-ids <id>` brings a folder back with its
|
|
25
|
+
real name.
|
|
26
|
+
- **`cache prefetch`, root `ls` refresh and `ls proj:N` refresh no longer 403
|
|
27
|
+
with a Figma token created after 2026-08-03.** Figma renamed projects to
|
|
28
|
+
folders; new personal access tokens carry `folders:read` instead of
|
|
29
|
+
`projects:read`, and the deprecated `GET /v1/projects/{id}/files` rejects
|
|
30
|
+
them (`Invalid scope … requires the file_read or files:read or projects:read
|
|
31
|
+
scope`). Listings now use `GET /v2/folders/{id}/files`. Folder ids are the
|
|
32
|
+
old project ids, so `FIGMA_PROJECTS_IDS`, `proj:N` and existing cache metas
|
|
33
|
+
are unchanged; `--project-ids` gained a `--folder-ids` alias. A 403 from v2
|
|
34
|
+
falls back to v1 once (pre-rename tokens are documented to keep working
|
|
35
|
+
there) and prints a hint to regenerate the token. `figma-api` was
|
|
36
|
+
regenerated from the 2026-08-11 upstream spec, which adds `folders_api`;
|
|
37
|
+
`figma-get` gained `folder-files`, `folder-folders`, `folder-meta` and
|
|
38
|
+
`team-folders`, and marks `project-files` / `team-projects` deprecated.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **`node-info` output is ~4–5× smaller with nothing implementation-relevant
|
|
43
|
+
dropped.** Measured on a 475-node screen: 634 KB → 141 KB YAML. What changed
|
|
44
|
+
in the curated view (`--raw` is untouched):
|
|
45
|
+
- Hidden (`visible: false`) children are pruned and listed on the parent as
|
|
46
|
+
`hidden_children: [{id, name, type}]` — they were 65% of the output and,
|
|
47
|
+
worse, their descendants were indistinguishable from visible nodes.
|
|
48
|
+
`--include-hidden` restores them; a hidden target is always rendered, and
|
|
49
|
+
so is a hidden layer inside a COMPONENT definition whose visibility is
|
|
50
|
+
wired to a BOOLEAN property (its `property_refs` are the wiring an
|
|
51
|
+
implementer needs). A comment anchored to a pruned node is tagged
|
|
52
|
+
`anchor_rendered: false`.
|
|
53
|
+
- Defaults are elided: `constraints: LEFT/TOP`, `layout.wrap: NO_WRAP`,
|
|
54
|
+
axis `sizing: AUTO` / `align: MIN`, text alignment LEFT/TOP,
|
|
55
|
+
`line_height_unit: PIXELS`.
|
|
56
|
+
- `bounds` is parent-relative on descendants; flow children of an
|
|
57
|
+
auto-layout parent carry only `width`/`height`. A CANVAS has no box, so
|
|
58
|
+
a page's children are relative to the canvas origin (Figma's absolute
|
|
59
|
+
coordinates). `size` appears only when it differs from the bounding box
|
|
60
|
+
(rotation).
|
|
61
|
+
- Colors are `hex` only; the float channels are gone from fills, strokes,
|
|
62
|
+
gradient stops and effects.
|
|
63
|
+
- Text style drops `font_post_script_name`, `line_height_percent`,
|
|
64
|
+
`line_height_percent_font_size` (all restate other fields).
|
|
65
|
+
- `layout_child.sizing` is one `"H/V"` string; padding is one number when
|
|
66
|
+
uniform, else `[top, right, bottom, left]`.
|
|
67
|
+
- `component.component_properties` is split into `variants` and
|
|
68
|
+
`properties` with plain scalar values and Figma's `#n:m` name suffixes
|
|
69
|
+
stripped (kept when stripping would collide). An INSTANCE_SWAP prop keeps
|
|
70
|
+
its allowed swap targets as `preferred`. `property_refs` is emitted on
|
|
71
|
+
the target and inside component definitions only.
|
|
72
|
+
- Geometry leaves below the target (VECTOR, BOOLEAN_OPERATION, STAR, LINE,
|
|
73
|
+
REGULAR_POLYGON) drop only the layout block that cannot apply to them —
|
|
74
|
+
`constraints` when they are flow children of an auto-layout parent,
|
|
75
|
+
`layout_child` when the parent has no auto-layout — so a FILL-width
|
|
76
|
+
divider LINE keeps its sizing; fills and strokes stay so icon color
|
|
77
|
+
tokens remain visible.
|
|
78
|
+
- Bound variables are referenced by short handles (`v1`, `v2`, … in
|
|
79
|
+
first-seen order). The top-level `variables` block is keyed by handle and
|
|
80
|
+
always carries the raw `id`, plus name/values when the Variables sidecar
|
|
81
|
+
is available. The 60-character `VariableID:` strings no longer repeat
|
|
82
|
+
per use.
|
|
83
|
+
- Node-level `bound_variables` no longer repeats `fills[i]`/`strokes[i]`
|
|
84
|
+
entries that the paint itself already carries as `bound_variable` (half
|
|
85
|
+
of the map on a real screen). Entries the paints don't mirror are kept.
|
|
86
|
+
- Floats are rounded to 3 decimals (`14.40007495880127` → `14.4`): Figma
|
|
87
|
+
stores f32 and the REST API prints it as f64. The top-level `variables`
|
|
88
|
+
block gets the same treatment.
|
|
89
|
+
- `--no-variables` once again omits the `variables` block entirely; when a
|
|
90
|
+
sidecar is present but some handles point at library-owned variables, a
|
|
91
|
+
`variables_note` says how many could not be resolved locally.
|
|
92
|
+
- **YAML output uses flow style for leaf containers** (`bounds: {width: 24,
|
|
93
|
+
height: 24}`, `padding: [0, 12, 0, 12]`, one record per row in lists)
|
|
94
|
+
instead of `serde_yaml`'s all-block rendering, via the new `yaml_out`
|
|
95
|
+
printer. Still standard YAML; a `node-info` view goes from 4,564 to 2,464
|
|
96
|
+
lines and 31.3k to 27.8k tokens. Non-ASCII keys are no longer escaped
|
|
97
|
+
(`💠 Before Icon`, not `\u{1f4a0} Before Icon`) and integral floats print
|
|
98
|
+
as `12`, not `12.0`. Multi-line text renders as a `|-` literal block.
|
|
99
|
+
Quoting is conservative enough for YAML 1.1 parsers (PyYAML, Psych):
|
|
100
|
+
`687:45` and `10:5` are quoted (base 60 would read them as integers),
|
|
101
|
+
`1,000` and `2026-9-5` too, large floats print as `1.5e+20`, a leading
|
|
102
|
+
`:`/`?` is quoted inside `{}`/`[]`, and U+2028/U+2029, NEL, DEL and the C1
|
|
103
|
+
range are `\uXXXX`-escaped rather than written raw (libyaml refuses the
|
|
104
|
+
whole document otherwise — Shift+Enter in a Figma text layer produces
|
|
105
|
+
U+2028). Applies to every command's YAML output.
|
|
106
|
+
- **`--json` is compact**, not pretty-printed. Pretty JSON was the most
|
|
107
|
+
token-expensive rendering of all (37% more than the YAML default on the
|
|
108
|
+
same view); `jq` does not care.
|
|
109
|
+
- `scripts/node_info_lossless.py` — checks a curated view against `--raw` for
|
|
110
|
+
the same target (node set, hidden listing, bounds reconstruction, paints,
|
|
111
|
+
layout, text, component props, variable handles).
|
|
112
|
+
|
|
113
|
+
## [0.2.2] - 2026-08-22
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- **npm package for 0.2.1 was never published** — the OIDC publish job used a
|
|
118
|
+
placeholder auth token written by `actions/setup-node`. Fixed; 0.2.2 is the
|
|
119
|
+
first release on npm via Trusted Publishing. No CLI changes.
|
|
120
|
+
|
|
121
|
+
## [0.2.1] - 2026-08-22
|
|
122
|
+
|
|
123
|
+
### Changed
|
|
124
|
+
|
|
125
|
+
- **npm releases now publish via npm Trusted Publishing (OIDC)** instead of a
|
|
126
|
+
long-lived `NPM_TOKEN`. Packages carry provenance attestations. No
|
|
127
|
+
user-facing changes to the CLI.
|
|
128
|
+
|
|
10
129
|
## [0.2.0] - 2026-07-29
|
|
11
130
|
|
|
12
131
|
### Added
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ A command-line tool for navigating, inspecting, and exporting from Figma files v
|
|
|
5
5
|
## What it does
|
|
6
6
|
|
|
7
7
|
- **`ls`** / **`find`** — navigate projects, files, and node trees by name or visible text without copy-pasting node ids. `find` speaks web-search syntax: `"exact phrases"`, uppercase `OR`, `-exclusion`.
|
|
8
|
-
- **`node-info`** — single-target view with layout, fills, strokes, effects, text, bound variables, comments, and a ready-made figma.com `url:`. Designed to be pasted into an agent prompt.
|
|
8
|
+
- **`node-info`** — single-target view with layout, fills, strokes, effects, text, bound variables, comments, and a ready-made figma.com `url:`. Hidden subtrees are pruned (listed as `hidden_children`), defaults elided, and variables referenced by short handles, so a full screen is a few dozen KB rather than hundreds. Designed to be pasted into an agent prompt.
|
|
9
9
|
- **`comments`** — list a file's comment threads (replies inline, newest first), threads under a node, or a single thread; filter with `--unresolved` / `--since` / `--grep`.
|
|
10
10
|
- **`mark`** — curated keyword→node bookmarks (`mark add key file:N:x:y --alias …`); `find` and `library search` surface matching marks ahead of their own hits, and `mark:key` resolves anywhere an id is accepted.
|
|
11
11
|
- **`library search`** — fuzzy search across a team's published component library (components, component sets, styles).
|
|
@@ -59,7 +59,7 @@ export FIGMA_TOKEN=figd_...
|
|
|
59
59
|
|
|
60
60
|
Optional environment variables:
|
|
61
61
|
|
|
62
|
-
- `FIGMA_PROJECTS_IDS` — comma-separated
|
|
62
|
+
- `FIGMA_PROJECTS_IDS` — comma-separated Figma folder ids (Figma renamed "projects" to "folders" in August 2026; the numeric ids are unchanged, so existing values keep working); needed by `cache prefetch`.
|
|
63
63
|
- `FIGMA_TEAM_ID` — needed by `library search` and for the catalog warm in `cache prefetch`.
|
|
64
64
|
- `FIGMA_EXPLORER_CACHE_DIR` — override the cache location (default: OS cache dir).
|
|
65
65
|
|
|
@@ -99,7 +99,7 @@ figma-explorer cache prefetch
|
|
|
99
99
|
|
|
100
100
|
## Output
|
|
101
101
|
|
|
102
|
-
YAML by default (terse, agent-friendly). Pass `--json` for
|
|
102
|
+
YAML by default (terse, agent-friendly: block style for the tree, flow style `{k: v}` for leaf maps and short lists). Pass `--json` for compact JSON suitable for `jq` pipelines.
|
|
103
103
|
|
|
104
104
|
## Cache
|
|
105
105
|
|
package/binary-install.js
CHANGED
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const {
|
|
2
|
+
createWriteStream,
|
|
3
|
+
existsSync,
|
|
4
|
+
mkdirSync,
|
|
5
|
+
mkdtemp,
|
|
6
|
+
rmSync,
|
|
7
|
+
} = require("fs");
|
|
2
8
|
const { join, sep } = require("path");
|
|
3
9
|
const { spawnSync } = require("child_process");
|
|
4
10
|
const { tmpdir } = require("os");
|
|
5
11
|
|
|
6
|
-
const
|
|
7
|
-
const
|
|
12
|
+
const https = require("node:https");
|
|
13
|
+
const http = require("node:http");
|
|
14
|
+
|
|
8
15
|
const tmpDir = tmpdir();
|
|
9
16
|
|
|
10
17
|
const error = (msg) => {
|
|
@@ -12,6 +19,135 @@ const error = (msg) => {
|
|
|
12
19
|
process.exit(1);
|
|
13
20
|
};
|
|
14
21
|
|
|
22
|
+
function getProxyForUrl(urlString) {
|
|
23
|
+
const url = new URL(urlString);
|
|
24
|
+
const isHttps = url.protocol === "https:";
|
|
25
|
+
|
|
26
|
+
const noProxy = process.env.NO_PROXY || process.env.no_proxy || "";
|
|
27
|
+
if (noProxy === "*") return null;
|
|
28
|
+
if (noProxy) {
|
|
29
|
+
const hostname = url.hostname.toLowerCase();
|
|
30
|
+
const noProxyList = noProxy.split(",").map((s) => s.trim().toLowerCase());
|
|
31
|
+
for (const entry of noProxyList) {
|
|
32
|
+
if (hostname === entry || hostname.endsWith("." + entry)) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const proxyEnv = isHttps
|
|
39
|
+
? process.env.HTTPS_PROXY || process.env.https_proxy
|
|
40
|
+
: process.env.HTTP_PROXY || process.env.http_proxy;
|
|
41
|
+
|
|
42
|
+
if (!proxyEnv) return null;
|
|
43
|
+
|
|
44
|
+
const proxyUrl = new URL(proxyEnv);
|
|
45
|
+
|
|
46
|
+
let auth = null;
|
|
47
|
+
if (proxyUrl.username || proxyUrl.password) {
|
|
48
|
+
auth = `${proxyUrl.username}:${proxyUrl.password}`;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
hostname: proxyUrl.hostname,
|
|
53
|
+
port: proxyUrl.port || (proxyUrl.protocol === "https:" ? 443 : 80),
|
|
54
|
+
auth: auth,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function connectThroughProxy(proxy, target) {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const headers = {};
|
|
61
|
+
if (proxy.auth) {
|
|
62
|
+
headers["Proxy-Authorization"] =
|
|
63
|
+
"Basic " + Buffer.from(proxy.auth).toString("base64");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const connectReq = http.request({
|
|
67
|
+
hostname: proxy.hostname,
|
|
68
|
+
port: proxy.port,
|
|
69
|
+
method: "CONNECT",
|
|
70
|
+
path: `${target.hostname}:${target.port || 443}`,
|
|
71
|
+
headers,
|
|
72
|
+
});
|
|
73
|
+
connectReq.on("connect", (res, socket) => {
|
|
74
|
+
if (res.statusCode === 200) {
|
|
75
|
+
resolve(socket);
|
|
76
|
+
} else {
|
|
77
|
+
reject(new Error(`Proxy CONNECT failed with status ${res.statusCode}`));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
connectReq.on("error", reject);
|
|
81
|
+
connectReq.end();
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function download(urlString, maxRedirects) {
|
|
86
|
+
if (maxRedirects === undefined) maxRedirects = 5;
|
|
87
|
+
return new Promise((resolve, reject) => {
|
|
88
|
+
if (maxRedirects < 0) {
|
|
89
|
+
return reject(new Error("Too many redirects"));
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const parsed = new URL(urlString);
|
|
93
|
+
const isHttps = parsed.protocol === "https:";
|
|
94
|
+
const mod = isHttps ? https : http;
|
|
95
|
+
const proxy = getProxyForUrl(urlString);
|
|
96
|
+
|
|
97
|
+
const doRequest = (extraOptions) => {
|
|
98
|
+
const options = Object.assign(
|
|
99
|
+
{
|
|
100
|
+
hostname: parsed.hostname,
|
|
101
|
+
port: parsed.port || (isHttps ? 443 : 80),
|
|
102
|
+
path: parsed.pathname + parsed.search,
|
|
103
|
+
method: "GET",
|
|
104
|
+
headers: { "User-Agent": "cargo-dist-npm-installer" },
|
|
105
|
+
},
|
|
106
|
+
extraOptions || {},
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
if (proxy && !isHttps) {
|
|
110
|
+
// HTTP through HTTP proxy: request the full URL via the proxy
|
|
111
|
+
options.hostname = proxy.hostname;
|
|
112
|
+
options.port = proxy.port;
|
|
113
|
+
options.path = urlString;
|
|
114
|
+
if (proxy.auth) {
|
|
115
|
+
options.headers["Proxy-Authorization"] =
|
|
116
|
+
"Basic " + Buffer.from(proxy.auth).toString("base64");
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const req = mod.request(options, (res) => {
|
|
121
|
+
if (
|
|
122
|
+
res.statusCode >= 300 &&
|
|
123
|
+
res.statusCode < 400 &&
|
|
124
|
+
res.headers.location
|
|
125
|
+
) {
|
|
126
|
+
res.resume();
|
|
127
|
+
const nextUrl = new URL(res.headers.location, urlString).toString();
|
|
128
|
+
return download(nextUrl, maxRedirects - 1).then(resolve, reject);
|
|
129
|
+
}
|
|
130
|
+
if (res.statusCode < 200 || res.statusCode >= 300) {
|
|
131
|
+
res.resume();
|
|
132
|
+
return reject(new Error(`HTTP ${res.statusCode} from ${urlString}`));
|
|
133
|
+
}
|
|
134
|
+
resolve(res);
|
|
135
|
+
});
|
|
136
|
+
req.on("error", reject);
|
|
137
|
+
req.end();
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
if (proxy && isHttps) {
|
|
141
|
+
connectThroughProxy(proxy, parsed).then(
|
|
142
|
+
(socket) => doRequest({ socket, agent: false }),
|
|
143
|
+
reject,
|
|
144
|
+
);
|
|
145
|
+
} else {
|
|
146
|
+
doRequest();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
|
|
15
151
|
class Package {
|
|
16
152
|
constructor(platform, name, url, filename, zipExt, binaries) {
|
|
17
153
|
let errors = [];
|
|
@@ -72,7 +208,7 @@ class Package {
|
|
|
72
208
|
return true;
|
|
73
209
|
}
|
|
74
210
|
|
|
75
|
-
install(
|
|
211
|
+
install(suppressLogs = false) {
|
|
76
212
|
if (this.exists()) {
|
|
77
213
|
if (!suppressLogs) {
|
|
78
214
|
console.error(
|
|
@@ -82,8 +218,10 @@ class Package {
|
|
|
82
218
|
return Promise.resolve();
|
|
83
219
|
}
|
|
84
220
|
|
|
85
|
-
|
|
86
|
-
|
|
221
|
+
try {
|
|
222
|
+
rmSync(this.installDirectory, { recursive: true, force: true });
|
|
223
|
+
} catch {
|
|
224
|
+
// ignore - directory may not exist
|
|
87
225
|
}
|
|
88
226
|
|
|
89
227
|
mkdirSync(this.installDirectory, { recursive: true });
|
|
@@ -92,12 +230,13 @@ class Package {
|
|
|
92
230
|
console.error(`Downloading release from ${this.url}`);
|
|
93
231
|
}
|
|
94
232
|
|
|
95
|
-
return
|
|
233
|
+
return download(this.url)
|
|
96
234
|
.then((res) => {
|
|
97
235
|
return new Promise((resolve, reject) => {
|
|
98
236
|
mkdtemp(`${tmpDir}${sep}`, (err, directory) => {
|
|
237
|
+
if (err) return reject(err);
|
|
99
238
|
let tempFile = join(directory, this.filename);
|
|
100
|
-
const sink = res.
|
|
239
|
+
const sink = res.pipe(createWriteStream(tempFile));
|
|
101
240
|
sink.on("error", (err) => reject(err));
|
|
102
241
|
sink.on("close", () => {
|
|
103
242
|
if (/\.tar\.*/.test(this.zipExt)) {
|
|
@@ -178,10 +317,8 @@ class Package {
|
|
|
178
317
|
});
|
|
179
318
|
}
|
|
180
319
|
|
|
181
|
-
run(binaryName
|
|
182
|
-
const promise = !this.exists()
|
|
183
|
-
? this.install(fetchOptions, true)
|
|
184
|
-
: Promise.resolve();
|
|
320
|
+
run(binaryName) {
|
|
321
|
+
const promise = !this.exists() ? this.install(true) : Promise.resolve();
|
|
185
322
|
|
|
186
323
|
promise
|
|
187
324
|
.then(() => {
|
|
@@ -204,7 +341,6 @@ class Package {
|
|
|
204
341
|
})
|
|
205
342
|
.catch((e) => {
|
|
206
343
|
error(e.message);
|
|
207
|
-
process.exit(1);
|
|
208
344
|
});
|
|
209
345
|
}
|
|
210
346
|
}
|
package/binary.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
const { Package } = require("./binary-install");
|
|
2
2
|
const os = require("os");
|
|
3
|
-
const cTable = require("console.table");
|
|
4
3
|
const libc = require("detect-libc");
|
|
5
|
-
const { configureProxy } = require("axios-proxy-builder");
|
|
6
4
|
|
|
7
5
|
const error = (msg) => {
|
|
8
6
|
console.error(msg);
|
|
@@ -108,17 +106,15 @@ const install = (suppressLogs) => {
|
|
|
108
106
|
console.warn("in demo mode, not installing binaries");
|
|
109
107
|
return;
|
|
110
108
|
}
|
|
111
|
-
const
|
|
112
|
-
const proxy = configureProxy(package.url);
|
|
109
|
+
const pkg = getPackage();
|
|
113
110
|
|
|
114
|
-
return
|
|
111
|
+
return pkg.install(suppressLogs);
|
|
115
112
|
};
|
|
116
113
|
|
|
117
114
|
const run = (binaryName) => {
|
|
118
|
-
const
|
|
119
|
-
const proxy = configureProxy(package.url);
|
|
115
|
+
const pkg = getPackage();
|
|
120
116
|
|
|
121
|
-
|
|
117
|
+
pkg.run(binaryName);
|
|
122
118
|
};
|
|
123
119
|
|
|
124
120
|
module.exports = {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -7,151 +7,19 @@
|
|
|
7
7
|
"figma-explorer": "run-figma-explorer.js"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"
|
|
11
|
-
"axios-proxy-builder": "^0.1.2",
|
|
12
|
-
"console.table": "^0.10.0",
|
|
13
|
-
"detect-libc": "^2.1.2",
|
|
14
|
-
"rimraf": "^6.1.3"
|
|
10
|
+
"detect-libc": "^2.1.2"
|
|
15
11
|
},
|
|
16
12
|
"devDependencies": {
|
|
17
|
-
"prettier": "^3.8.
|
|
13
|
+
"prettier": "^3.8.3"
|
|
18
14
|
},
|
|
19
15
|
"engines": {
|
|
20
|
-
"node": ">=14",
|
|
16
|
+
"node": ">=14.14",
|
|
21
17
|
"npm": ">=6"
|
|
22
18
|
},
|
|
23
19
|
"hasInstallScript": true,
|
|
24
20
|
"license": "MIT",
|
|
25
21
|
"name": "@akesson/figma-explorer",
|
|
26
|
-
"version": "0.2.
|
|
27
|
-
},
|
|
28
|
-
"node_modules/@isaacs/cliui": {
|
|
29
|
-
"engines": {
|
|
30
|
-
"node": ">=18"
|
|
31
|
-
},
|
|
32
|
-
"integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
|
|
33
|
-
"license": "BlueOak-1.0.0",
|
|
34
|
-
"resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
|
|
35
|
-
"version": "9.0.0"
|
|
36
|
-
},
|
|
37
|
-
"node_modules/asynckit": {
|
|
38
|
-
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
39
|
-
"license": "MIT",
|
|
40
|
-
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
41
|
-
"version": "0.4.0"
|
|
42
|
-
},
|
|
43
|
-
"node_modules/axios": {
|
|
44
|
-
"dependencies": {
|
|
45
|
-
"follow-redirects": "^1.15.11",
|
|
46
|
-
"form-data": "^4.0.5",
|
|
47
|
-
"proxy-from-env": "^1.1.0"
|
|
48
|
-
},
|
|
49
|
-
"integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==",
|
|
50
|
-
"license": "MIT",
|
|
51
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz",
|
|
52
|
-
"version": "1.13.5"
|
|
53
|
-
},
|
|
54
|
-
"node_modules/axios-proxy-builder": {
|
|
55
|
-
"dependencies": {
|
|
56
|
-
"tunnel": "^0.0.6"
|
|
57
|
-
},
|
|
58
|
-
"integrity": "sha512-6uBVsBZzkB3tCC8iyx59mCjQckhB8+GQrI9Cop8eC7ybIsvs/KtnNgEBfRMSEa7GqK2VBGUzgjNYMdPIfotyPA==",
|
|
59
|
-
"license": "MIT",
|
|
60
|
-
"resolved": "https://registry.npmjs.org/axios-proxy-builder/-/axios-proxy-builder-0.1.2.tgz",
|
|
61
|
-
"version": "0.1.2"
|
|
62
|
-
},
|
|
63
|
-
"node_modules/balanced-match": {
|
|
64
|
-
"dependencies": {
|
|
65
|
-
"jackspeak": "^4.2.3"
|
|
66
|
-
},
|
|
67
|
-
"engines": {
|
|
68
|
-
"node": "20 || >=22"
|
|
69
|
-
},
|
|
70
|
-
"integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==",
|
|
71
|
-
"license": "MIT",
|
|
72
|
-
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz",
|
|
73
|
-
"version": "4.0.2"
|
|
74
|
-
},
|
|
75
|
-
"node_modules/brace-expansion": {
|
|
76
|
-
"dependencies": {
|
|
77
|
-
"balanced-match": "^4.0.2"
|
|
78
|
-
},
|
|
79
|
-
"engines": {
|
|
80
|
-
"node": "20 || >=22"
|
|
81
|
-
},
|
|
82
|
-
"integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==",
|
|
83
|
-
"license": "MIT",
|
|
84
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz",
|
|
85
|
-
"version": "5.0.2"
|
|
86
|
-
},
|
|
87
|
-
"node_modules/call-bind-apply-helpers": {
|
|
88
|
-
"dependencies": {
|
|
89
|
-
"es-errors": "^1.3.0",
|
|
90
|
-
"function-bind": "^1.1.2"
|
|
91
|
-
},
|
|
92
|
-
"engines": {
|
|
93
|
-
"node": ">= 0.4"
|
|
94
|
-
},
|
|
95
|
-
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
|
96
|
-
"license": "MIT",
|
|
97
|
-
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
98
|
-
"version": "1.0.2"
|
|
99
|
-
},
|
|
100
|
-
"node_modules/clone": {
|
|
101
|
-
"engines": {
|
|
102
|
-
"node": ">=0.8"
|
|
103
|
-
},
|
|
104
|
-
"integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
|
|
105
|
-
"license": "MIT",
|
|
106
|
-
"optional": true,
|
|
107
|
-
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
|
|
108
|
-
"version": "1.0.4"
|
|
109
|
-
},
|
|
110
|
-
"node_modules/combined-stream": {
|
|
111
|
-
"dependencies": {
|
|
112
|
-
"delayed-stream": "~1.0.0"
|
|
113
|
-
},
|
|
114
|
-
"engines": {
|
|
115
|
-
"node": ">= 0.8"
|
|
116
|
-
},
|
|
117
|
-
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
118
|
-
"license": "MIT",
|
|
119
|
-
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
120
|
-
"version": "1.0.8"
|
|
121
|
-
},
|
|
122
|
-
"node_modules/console.table": {
|
|
123
|
-
"dependencies": {
|
|
124
|
-
"easy-table": "1.1.0"
|
|
125
|
-
},
|
|
126
|
-
"engines": {
|
|
127
|
-
"node": "> 0.10"
|
|
128
|
-
},
|
|
129
|
-
"integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==",
|
|
130
|
-
"license": "MIT",
|
|
131
|
-
"resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz",
|
|
132
|
-
"version": "0.10.0"
|
|
133
|
-
},
|
|
134
|
-
"node_modules/defaults": {
|
|
135
|
-
"dependencies": {
|
|
136
|
-
"clone": "^1.0.2"
|
|
137
|
-
},
|
|
138
|
-
"funding": {
|
|
139
|
-
"url": "https://github.com/sponsors/sindresorhus"
|
|
140
|
-
},
|
|
141
|
-
"integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
|
|
142
|
-
"license": "MIT",
|
|
143
|
-
"optional": true,
|
|
144
|
-
"resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
|
|
145
|
-
"version": "1.0.4"
|
|
146
|
-
},
|
|
147
|
-
"node_modules/delayed-stream": {
|
|
148
|
-
"engines": {
|
|
149
|
-
"node": ">=0.4.0"
|
|
150
|
-
},
|
|
151
|
-
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
152
|
-
"license": "MIT",
|
|
153
|
-
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
154
|
-
"version": "1.0.0"
|
|
22
|
+
"version": "0.2.3"
|
|
155
23
|
},
|
|
156
24
|
"node_modules/detect-libc": {
|
|
157
25
|
"engines": {
|
|
@@ -162,324 +30,6 @@
|
|
|
162
30
|
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
|
|
163
31
|
"version": "2.1.2"
|
|
164
32
|
},
|
|
165
|
-
"node_modules/dunder-proto": {
|
|
166
|
-
"dependencies": {
|
|
167
|
-
"call-bind-apply-helpers": "^1.0.1",
|
|
168
|
-
"es-errors": "^1.3.0",
|
|
169
|
-
"gopd": "^1.2.0"
|
|
170
|
-
},
|
|
171
|
-
"engines": {
|
|
172
|
-
"node": ">= 0.4"
|
|
173
|
-
},
|
|
174
|
-
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
|
175
|
-
"license": "MIT",
|
|
176
|
-
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
177
|
-
"version": "1.0.1"
|
|
178
|
-
},
|
|
179
|
-
"node_modules/easy-table": {
|
|
180
|
-
"integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==",
|
|
181
|
-
"license": "MIT",
|
|
182
|
-
"optionalDependencies": {
|
|
183
|
-
"wcwidth": ">=1.0.1"
|
|
184
|
-
},
|
|
185
|
-
"resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz",
|
|
186
|
-
"version": "1.1.0"
|
|
187
|
-
},
|
|
188
|
-
"node_modules/es-define-property": {
|
|
189
|
-
"engines": {
|
|
190
|
-
"node": ">= 0.4"
|
|
191
|
-
},
|
|
192
|
-
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
|
193
|
-
"license": "MIT",
|
|
194
|
-
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
195
|
-
"version": "1.0.1"
|
|
196
|
-
},
|
|
197
|
-
"node_modules/es-errors": {
|
|
198
|
-
"engines": {
|
|
199
|
-
"node": ">= 0.4"
|
|
200
|
-
},
|
|
201
|
-
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
|
202
|
-
"license": "MIT",
|
|
203
|
-
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
|
204
|
-
"version": "1.3.0"
|
|
205
|
-
},
|
|
206
|
-
"node_modules/es-object-atoms": {
|
|
207
|
-
"dependencies": {
|
|
208
|
-
"es-errors": "^1.3.0"
|
|
209
|
-
},
|
|
210
|
-
"engines": {
|
|
211
|
-
"node": ">= 0.4"
|
|
212
|
-
},
|
|
213
|
-
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
|
214
|
-
"license": "MIT",
|
|
215
|
-
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
|
216
|
-
"version": "1.1.1"
|
|
217
|
-
},
|
|
218
|
-
"node_modules/es-set-tostringtag": {
|
|
219
|
-
"dependencies": {
|
|
220
|
-
"es-errors": "^1.3.0",
|
|
221
|
-
"get-intrinsic": "^1.2.6",
|
|
222
|
-
"has-tostringtag": "^1.0.2",
|
|
223
|
-
"hasown": "^2.0.2"
|
|
224
|
-
},
|
|
225
|
-
"engines": {
|
|
226
|
-
"node": ">= 0.4"
|
|
227
|
-
},
|
|
228
|
-
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
229
|
-
"license": "MIT",
|
|
230
|
-
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
231
|
-
"version": "2.1.0"
|
|
232
|
-
},
|
|
233
|
-
"node_modules/follow-redirects": {
|
|
234
|
-
"engines": {
|
|
235
|
-
"node": ">=4.0"
|
|
236
|
-
},
|
|
237
|
-
"funding": [
|
|
238
|
-
{
|
|
239
|
-
"type": "individual",
|
|
240
|
-
"url": "https://github.com/sponsors/RubenVerborgh"
|
|
241
|
-
}
|
|
242
|
-
],
|
|
243
|
-
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
|
|
244
|
-
"license": "MIT",
|
|
245
|
-
"peerDependenciesMeta": {
|
|
246
|
-
"debug": {
|
|
247
|
-
"optional": true
|
|
248
|
-
}
|
|
249
|
-
},
|
|
250
|
-
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
|
|
251
|
-
"version": "1.15.11"
|
|
252
|
-
},
|
|
253
|
-
"node_modules/form-data": {
|
|
254
|
-
"dependencies": {
|
|
255
|
-
"asynckit": "^0.4.0",
|
|
256
|
-
"combined-stream": "^1.0.8",
|
|
257
|
-
"es-set-tostringtag": "^2.1.0",
|
|
258
|
-
"hasown": "^2.0.2",
|
|
259
|
-
"mime-types": "^2.1.12"
|
|
260
|
-
},
|
|
261
|
-
"engines": {
|
|
262
|
-
"node": ">= 6"
|
|
263
|
-
},
|
|
264
|
-
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
|
|
265
|
-
"license": "MIT",
|
|
266
|
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
|
|
267
|
-
"version": "4.0.5"
|
|
268
|
-
},
|
|
269
|
-
"node_modules/function-bind": {
|
|
270
|
-
"funding": {
|
|
271
|
-
"url": "https://github.com/sponsors/ljharb"
|
|
272
|
-
},
|
|
273
|
-
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
274
|
-
"license": "MIT",
|
|
275
|
-
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
276
|
-
"version": "1.1.2"
|
|
277
|
-
},
|
|
278
|
-
"node_modules/get-intrinsic": {
|
|
279
|
-
"dependencies": {
|
|
280
|
-
"call-bind-apply-helpers": "^1.0.2",
|
|
281
|
-
"es-define-property": "^1.0.1",
|
|
282
|
-
"es-errors": "^1.3.0",
|
|
283
|
-
"es-object-atoms": "^1.1.1",
|
|
284
|
-
"function-bind": "^1.1.2",
|
|
285
|
-
"get-proto": "^1.0.1",
|
|
286
|
-
"gopd": "^1.2.0",
|
|
287
|
-
"has-symbols": "^1.1.0",
|
|
288
|
-
"hasown": "^2.0.2",
|
|
289
|
-
"math-intrinsics": "^1.1.0"
|
|
290
|
-
},
|
|
291
|
-
"engines": {
|
|
292
|
-
"node": ">= 0.4"
|
|
293
|
-
},
|
|
294
|
-
"funding": {
|
|
295
|
-
"url": "https://github.com/sponsors/ljharb"
|
|
296
|
-
},
|
|
297
|
-
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
298
|
-
"license": "MIT",
|
|
299
|
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
|
300
|
-
"version": "1.3.0"
|
|
301
|
-
},
|
|
302
|
-
"node_modules/get-proto": {
|
|
303
|
-
"dependencies": {
|
|
304
|
-
"dunder-proto": "^1.0.1",
|
|
305
|
-
"es-object-atoms": "^1.0.0"
|
|
306
|
-
},
|
|
307
|
-
"engines": {
|
|
308
|
-
"node": ">= 0.4"
|
|
309
|
-
},
|
|
310
|
-
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
|
311
|
-
"license": "MIT",
|
|
312
|
-
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
|
313
|
-
"version": "1.0.1"
|
|
314
|
-
},
|
|
315
|
-
"node_modules/glob": {
|
|
316
|
-
"dependencies": {
|
|
317
|
-
"minimatch": "^10.2.0",
|
|
318
|
-
"minipass": "^7.1.2",
|
|
319
|
-
"path-scurry": "^2.0.0"
|
|
320
|
-
},
|
|
321
|
-
"engines": {
|
|
322
|
-
"node": "20 || >=22"
|
|
323
|
-
},
|
|
324
|
-
"funding": {
|
|
325
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
326
|
-
},
|
|
327
|
-
"integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==",
|
|
328
|
-
"license": "BlueOak-1.0.0",
|
|
329
|
-
"resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz",
|
|
330
|
-
"version": "13.0.3"
|
|
331
|
-
},
|
|
332
|
-
"node_modules/gopd": {
|
|
333
|
-
"engines": {
|
|
334
|
-
"node": ">= 0.4"
|
|
335
|
-
},
|
|
336
|
-
"funding": {
|
|
337
|
-
"url": "https://github.com/sponsors/ljharb"
|
|
338
|
-
},
|
|
339
|
-
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
|
340
|
-
"license": "MIT",
|
|
341
|
-
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
|
342
|
-
"version": "1.2.0"
|
|
343
|
-
},
|
|
344
|
-
"node_modules/has-symbols": {
|
|
345
|
-
"engines": {
|
|
346
|
-
"node": ">= 0.4"
|
|
347
|
-
},
|
|
348
|
-
"funding": {
|
|
349
|
-
"url": "https://github.com/sponsors/ljharb"
|
|
350
|
-
},
|
|
351
|
-
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
352
|
-
"license": "MIT",
|
|
353
|
-
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
|
354
|
-
"version": "1.1.0"
|
|
355
|
-
},
|
|
356
|
-
"node_modules/has-tostringtag": {
|
|
357
|
-
"dependencies": {
|
|
358
|
-
"has-symbols": "^1.0.3"
|
|
359
|
-
},
|
|
360
|
-
"engines": {
|
|
361
|
-
"node": ">= 0.4"
|
|
362
|
-
},
|
|
363
|
-
"funding": {
|
|
364
|
-
"url": "https://github.com/sponsors/ljharb"
|
|
365
|
-
},
|
|
366
|
-
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
367
|
-
"license": "MIT",
|
|
368
|
-
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
369
|
-
"version": "1.0.2"
|
|
370
|
-
},
|
|
371
|
-
"node_modules/hasown": {
|
|
372
|
-
"dependencies": {
|
|
373
|
-
"function-bind": "^1.1.2"
|
|
374
|
-
},
|
|
375
|
-
"engines": {
|
|
376
|
-
"node": ">= 0.4"
|
|
377
|
-
},
|
|
378
|
-
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
|
379
|
-
"license": "MIT",
|
|
380
|
-
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
|
381
|
-
"version": "2.0.2"
|
|
382
|
-
},
|
|
383
|
-
"node_modules/jackspeak": {
|
|
384
|
-
"dependencies": {
|
|
385
|
-
"@isaacs/cliui": "^9.0.0"
|
|
386
|
-
},
|
|
387
|
-
"engines": {
|
|
388
|
-
"node": "20 || >=22"
|
|
389
|
-
},
|
|
390
|
-
"funding": {
|
|
391
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
392
|
-
},
|
|
393
|
-
"integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
|
|
394
|
-
"license": "BlueOak-1.0.0",
|
|
395
|
-
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
|
|
396
|
-
"version": "4.2.3"
|
|
397
|
-
},
|
|
398
|
-
"node_modules/lru-cache": {
|
|
399
|
-
"engines": {
|
|
400
|
-
"node": "20 || >=22"
|
|
401
|
-
},
|
|
402
|
-
"integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
|
|
403
|
-
"license": "BlueOak-1.0.0",
|
|
404
|
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
|
|
405
|
-
"version": "11.2.6"
|
|
406
|
-
},
|
|
407
|
-
"node_modules/math-intrinsics": {
|
|
408
|
-
"engines": {
|
|
409
|
-
"node": ">= 0.4"
|
|
410
|
-
},
|
|
411
|
-
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
|
412
|
-
"license": "MIT",
|
|
413
|
-
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
414
|
-
"version": "1.1.0"
|
|
415
|
-
},
|
|
416
|
-
"node_modules/mime-db": {
|
|
417
|
-
"engines": {
|
|
418
|
-
"node": ">= 0.6"
|
|
419
|
-
},
|
|
420
|
-
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
421
|
-
"license": "MIT",
|
|
422
|
-
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
423
|
-
"version": "1.52.0"
|
|
424
|
-
},
|
|
425
|
-
"node_modules/mime-types": {
|
|
426
|
-
"dependencies": {
|
|
427
|
-
"mime-db": "1.52.0"
|
|
428
|
-
},
|
|
429
|
-
"engines": {
|
|
430
|
-
"node": ">= 0.6"
|
|
431
|
-
},
|
|
432
|
-
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
433
|
-
"license": "MIT",
|
|
434
|
-
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
|
435
|
-
"version": "2.1.35"
|
|
436
|
-
},
|
|
437
|
-
"node_modules/minimatch": {
|
|
438
|
-
"dependencies": {
|
|
439
|
-
"brace-expansion": "^5.0.2"
|
|
440
|
-
},
|
|
441
|
-
"engines": {
|
|
442
|
-
"node": "20 || >=22"
|
|
443
|
-
},
|
|
444
|
-
"funding": {
|
|
445
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
446
|
-
},
|
|
447
|
-
"integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==",
|
|
448
|
-
"license": "BlueOak-1.0.0",
|
|
449
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz",
|
|
450
|
-
"version": "10.2.0"
|
|
451
|
-
},
|
|
452
|
-
"node_modules/minipass": {
|
|
453
|
-
"engines": {
|
|
454
|
-
"node": ">=16 || 14 >=14.17"
|
|
455
|
-
},
|
|
456
|
-
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
|
457
|
-
"license": "ISC",
|
|
458
|
-
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
|
459
|
-
"version": "7.1.2"
|
|
460
|
-
},
|
|
461
|
-
"node_modules/package-json-from-dist": {
|
|
462
|
-
"integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
|
|
463
|
-
"license": "BlueOak-1.0.0",
|
|
464
|
-
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
|
|
465
|
-
"version": "1.0.1"
|
|
466
|
-
},
|
|
467
|
-
"node_modules/path-scurry": {
|
|
468
|
-
"dependencies": {
|
|
469
|
-
"lru-cache": "^11.0.0",
|
|
470
|
-
"minipass": "^7.1.2"
|
|
471
|
-
},
|
|
472
|
-
"engines": {
|
|
473
|
-
"node": "20 || >=22"
|
|
474
|
-
},
|
|
475
|
-
"funding": {
|
|
476
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
477
|
-
},
|
|
478
|
-
"integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
|
|
479
|
-
"license": "BlueOak-1.0.0",
|
|
480
|
-
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
|
|
481
|
-
"version": "2.0.1"
|
|
482
|
-
},
|
|
483
33
|
"node_modules/prettier": {
|
|
484
34
|
"bin": {
|
|
485
35
|
"prettier": "bin/prettier.cjs"
|
|
@@ -491,56 +41,12 @@
|
|
|
491
41
|
"funding": {
|
|
492
42
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
|
493
43
|
},
|
|
494
|
-
"integrity": "sha512-
|
|
495
|
-
"license": "MIT",
|
|
496
|
-
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
|
|
497
|
-
"version": "3.8.1"
|
|
498
|
-
},
|
|
499
|
-
"node_modules/proxy-from-env": {
|
|
500
|
-
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
|
501
|
-
"license": "MIT",
|
|
502
|
-
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
503
|
-
"version": "1.1.0"
|
|
504
|
-
},
|
|
505
|
-
"node_modules/rimraf": {
|
|
506
|
-
"bin": {
|
|
507
|
-
"rimraf": "dist/esm/bin.mjs"
|
|
508
|
-
},
|
|
509
|
-
"dependencies": {
|
|
510
|
-
"glob": "^13.0.3",
|
|
511
|
-
"package-json-from-dist": "^1.0.1"
|
|
512
|
-
},
|
|
513
|
-
"engines": {
|
|
514
|
-
"node": "20 || >=22"
|
|
515
|
-
},
|
|
516
|
-
"funding": {
|
|
517
|
-
"url": "https://github.com/sponsors/isaacs"
|
|
518
|
-
},
|
|
519
|
-
"integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==",
|
|
520
|
-
"license": "BlueOak-1.0.0",
|
|
521
|
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz",
|
|
522
|
-
"version": "6.1.3"
|
|
523
|
-
},
|
|
524
|
-
"node_modules/tunnel": {
|
|
525
|
-
"engines": {
|
|
526
|
-
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
|
527
|
-
},
|
|
528
|
-
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
|
529
|
-
"license": "MIT",
|
|
530
|
-
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
531
|
-
"version": "0.0.6"
|
|
532
|
-
},
|
|
533
|
-
"node_modules/wcwidth": {
|
|
534
|
-
"dependencies": {
|
|
535
|
-
"defaults": "^1.0.3"
|
|
536
|
-
},
|
|
537
|
-
"integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
|
|
44
|
+
"integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
|
|
538
45
|
"license": "MIT",
|
|
539
|
-
"
|
|
540
|
-
"
|
|
541
|
-
"version": "1.0.1"
|
|
46
|
+
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
|
|
47
|
+
"version": "3.8.3"
|
|
542
48
|
}
|
|
543
49
|
},
|
|
544
50
|
"requires": true,
|
|
545
|
-
"version": "0.2.
|
|
51
|
+
"version": "0.2.3"
|
|
546
52
|
}
|
package/package.json
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"artifactDownloadUrls": [
|
|
3
|
-
"https://github.com/akesson/figma-explorer/releases/download/v0.2.
|
|
3
|
+
"https://github.com/akesson/figma-explorer/releases/download/v0.2.3"
|
|
4
4
|
],
|
|
5
5
|
"bin": {
|
|
6
6
|
"figma-explorer": "run-figma-explorer.js"
|
|
7
7
|
},
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"
|
|
10
|
-
"axios-proxy-builder": "^0.1.2",
|
|
11
|
-
"console.table": "^0.10.0",
|
|
12
|
-
"detect-libc": "^2.1.2",
|
|
13
|
-
"rimraf": "^6.1.3"
|
|
9
|
+
"detect-libc": "^2.1.2"
|
|
14
10
|
},
|
|
15
11
|
"description": "High-level CLI on top of the Figma REST API: name-based navigation, asset extraction, design tokens, and bundled context export.",
|
|
16
12
|
"devDependencies": {
|
|
17
|
-
"prettier": "^3.8.
|
|
13
|
+
"prettier": "^3.8.3"
|
|
18
14
|
},
|
|
19
15
|
"engines": {
|
|
20
|
-
"node": ">=14",
|
|
16
|
+
"node": ">=14.14",
|
|
21
17
|
"npm": ">=6"
|
|
22
18
|
},
|
|
23
19
|
"glibcMinimum": {
|
|
@@ -99,7 +95,7 @@
|
|
|
99
95
|
"zipExt": ".tar.xz"
|
|
100
96
|
}
|
|
101
97
|
},
|
|
102
|
-
"version": "0.2.
|
|
98
|
+
"version": "0.2.3",
|
|
103
99
|
"volta": {
|
|
104
100
|
"node": "18.14.1",
|
|
105
101
|
"npm": "9.5.0"
|