@iconify/tools 4.0.0-dev.1 → 4.0.1
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/lib/colors/attribs.d.cts +27 -0
- package/lib/colors/attribs.d.mts +27 -0
- package/lib/colors/attribs.d.ts +1 -1
- package/lib/colors/detect.cjs +2 -2
- package/lib/colors/detect.d.cts +16 -0
- package/lib/colors/detect.d.mts +16 -0
- package/lib/colors/detect.mjs +3 -3
- package/lib/colors/parse.cjs +132 -276
- package/lib/colors/parse.d.cts +60 -0
- package/lib/colors/parse.d.mts +60 -0
- package/lib/colors/parse.d.ts +7 -15
- package/lib/colors/parse.mjs +136 -279
- package/lib/colors/validate.cjs +2 -11
- package/lib/colors/validate.d.cts +20 -0
- package/lib/colors/validate.d.mts +20 -0
- package/lib/colors/validate.d.ts +4 -11
- package/lib/colors/validate.mjs +4 -12
- package/lib/css/parse.d.cts +6 -0
- package/lib/css/parse.d.mts +6 -0
- package/lib/css/parser/error.d.cts +13 -0
- package/lib/css/parser/error.d.mts +13 -0
- package/lib/css/parser/error.d.ts +1 -1
- package/lib/css/parser/export.d.cts +8 -0
- package/lib/css/parser/export.d.mts +8 -0
- package/lib/css/parser/strings.d.cts +16 -0
- package/lib/css/parser/strings.d.mts +16 -0
- package/lib/css/parser/text.d.cts +20 -0
- package/lib/css/parser/text.d.mts +20 -0
- package/lib/css/parser/tokens.d.cts +9 -0
- package/lib/css/parser/tokens.d.mts +9 -0
- package/lib/css/parser/tree.d.cts +8 -0
- package/lib/css/parser/tree.d.mts +8 -0
- package/lib/css/parser/types.d.cts +52 -0
- package/lib/css/parser/types.d.mts +52 -0
- package/lib/css/parser/types.d.ts +1 -1
- package/lib/download/api/cache.d.cts +20 -0
- package/lib/download/api/cache.d.mts +20 -0
- package/lib/download/api/config.cjs +11 -0
- package/lib/download/api/config.d.cts +18 -0
- package/lib/download/api/config.d.mts +18 -0
- package/lib/download/api/config.d.ts +18 -0
- package/lib/download/api/config.mjs +8 -0
- package/lib/download/api/download.cjs +15 -7
- package/lib/download/api/download.d.cts +8 -0
- package/lib/download/api/download.d.mts +8 -0
- package/lib/download/api/download.mjs +11 -7
- package/lib/download/api/index.cjs +23 -7
- package/lib/download/api/index.d.cts +8 -0
- package/lib/download/api/index.d.mts +8 -0
- package/lib/download/api/index.mjs +19 -7
- package/lib/download/api/queue.cjs +104 -0
- package/lib/download/api/queue.d.cts +32 -0
- package/lib/download/api/queue.d.mts +32 -0
- package/lib/download/api/queue.d.ts +32 -0
- package/lib/download/api/queue.mjs +101 -0
- package/lib/download/api/types.d.cts +17 -0
- package/lib/download/api/types.d.mts +17 -0
- package/lib/download/api/types.d.ts +1 -1
- package/lib/download/git/branch.d.cts +8 -0
- package/lib/download/git/branch.d.mts +8 -0
- package/lib/download/git/hash.d.cts +8 -0
- package/lib/download/git/hash.d.mts +8 -0
- package/lib/download/git/index.cjs +2 -4
- package/lib/download/git/index.d.cts +29 -0
- package/lib/download/git/index.d.mts +29 -0
- package/lib/download/git/index.d.ts +1 -1
- package/lib/download/git/index.mjs +2 -4
- package/lib/download/git/reset.cjs +2 -4
- package/lib/download/git/reset.d.cts +6 -0
- package/lib/download/git/reset.d.mts +6 -0
- package/lib/download/git/reset.mjs +2 -4
- package/lib/download/github/hash.cjs +2 -0
- package/lib/download/github/hash.d.cts +8 -0
- package/lib/download/github/hash.d.mts +8 -0
- package/lib/download/github/hash.mjs +2 -0
- package/lib/download/github/index.cjs +2 -2
- package/lib/download/github/index.d.cts +31 -0
- package/lib/download/github/index.d.mts +31 -0
- package/lib/download/github/index.d.ts +1 -1
- package/lib/download/github/index.mjs +2 -2
- package/lib/download/github/types.d.cts +11 -0
- package/lib/download/github/types.d.mts +11 -0
- package/lib/download/github/types.d.ts +1 -1
- package/lib/download/gitlab/hash.cjs +2 -0
- package/lib/download/gitlab/hash.d.cts +8 -0
- package/lib/download/gitlab/hash.d.mts +8 -0
- package/lib/download/gitlab/hash.mjs +2 -0
- package/lib/download/gitlab/index.cjs +2 -2
- package/lib/download/gitlab/index.d.cts +31 -0
- package/lib/download/gitlab/index.d.mts +31 -0
- package/lib/download/gitlab/index.d.ts +1 -1
- package/lib/download/gitlab/index.mjs +2 -2
- package/lib/download/gitlab/types.d.cts +15 -0
- package/lib/download/gitlab/types.d.mts +15 -0
- package/lib/download/gitlab/types.d.ts +1 -1
- package/lib/download/helpers/untar.d.cts +6 -0
- package/lib/download/helpers/untar.d.mts +6 -0
- package/lib/download/helpers/unzip.d.cts +6 -0
- package/lib/download/helpers/unzip.d.mts +6 -0
- package/lib/download/index.cjs +2 -2
- package/lib/download/index.d.cts +48 -0
- package/lib/download/index.d.mts +48 -0
- package/lib/download/index.d.ts +1 -1
- package/lib/download/index.mjs +2 -2
- package/lib/download/npm/index.cjs +2 -2
- package/lib/download/npm/index.d.cts +30 -0
- package/lib/download/npm/index.d.mts +30 -0
- package/lib/download/npm/index.d.ts +1 -1
- package/lib/download/npm/index.mjs +2 -2
- package/lib/download/npm/types.d.cts +9 -0
- package/lib/download/npm/types.d.mts +9 -0
- package/lib/download/npm/types.d.ts +1 -1
- package/lib/download/npm/version.d.cts +16 -0
- package/lib/download/npm/version.d.mts +16 -0
- package/lib/download/npm/version.d.ts +1 -1
- package/lib/download/types/modified.d.cts +6 -0
- package/lib/download/types/modified.d.mts +6 -0
- package/lib/download/types/modified.d.ts +1 -1
- package/lib/download/types/sources.d.cts +12 -0
- package/lib/download/types/sources.d.mts +12 -0
- package/lib/download/types/sources.d.ts +1 -1
- package/lib/export/directory.d.cts +26 -0
- package/lib/export/directory.d.mts +26 -0
- package/lib/export/directory.d.ts +1 -1
- package/lib/export/helpers/custom-files.d.cts +12 -0
- package/lib/export/helpers/custom-files.d.mts +12 -0
- package/lib/export/helpers/custom-files.d.ts +1 -1
- package/lib/export/helpers/prepare.d.cts +19 -0
- package/lib/export/helpers/prepare.d.mts +19 -0
- package/lib/export/helpers/prepare.d.ts +1 -1
- package/lib/export/helpers/types-version.d.cts +6 -0
- package/lib/export/helpers/types-version.d.mts +6 -0
- package/lib/export/icon-package.d.cts +26 -0
- package/lib/export/icon-package.d.mts +26 -0
- package/lib/export/icon-package.d.ts +2 -2
- package/lib/export/json-package.cjs +1 -0
- package/lib/export/json-package.d.cts +25 -0
- package/lib/export/json-package.d.mts +25 -0
- package/lib/export/json-package.d.ts +2 -1
- package/lib/export/json-package.mjs +1 -0
- package/lib/icon-set/index.cjs +25 -4
- package/lib/icon-set/index.d.cts +162 -0
- package/lib/icon-set/index.d.mts +162 -0
- package/lib/icon-set/index.mjs +25 -4
- package/lib/icon-set/match.d.cts +15 -0
- package/lib/icon-set/match.d.mts +15 -0
- package/lib/icon-set/merge.d.cts +14 -0
- package/lib/icon-set/merge.d.mts +14 -0
- package/lib/icon-set/modified.d.cts +16 -0
- package/lib/icon-set/modified.d.mts +16 -0
- package/lib/icon-set/props.d.cts +13 -0
- package/lib/icon-set/props.d.mts +13 -0
- package/lib/icon-set/tags.d.cts +23 -0
- package/lib/icon-set/tags.d.mts +23 -0
- package/lib/icon-set/types.d.cts +75 -0
- package/lib/icon-set/types.d.mts +75 -0
- package/lib/icon-set/types.d.ts +1 -1
- package/lib/import/directory.d.cts +52 -0
- package/lib/import/directory.d.mts +52 -0
- package/lib/import/directory.d.ts +1 -1
- package/lib/import/figma/index.cjs +3 -0
- package/lib/import/figma/index.d.cts +20 -0
- package/lib/import/figma/index.d.mts +20 -0
- package/lib/import/figma/index.mjs +3 -0
- package/lib/import/figma/nodes.cjs +1 -1
- package/lib/import/figma/nodes.d.cts +18 -0
- package/lib/import/figma/nodes.d.mts +18 -0
- package/lib/import/figma/nodes.mjs +1 -1
- package/lib/import/figma/query.cjs +104 -76
- package/lib/import/figma/query.d.cts +42 -0
- package/lib/import/figma/query.d.mts +42 -0
- package/lib/import/figma/query.d.ts +15 -2
- package/lib/import/figma/query.mjs +106 -78
- package/lib/import/figma/types/api.d.cts +53 -0
- package/lib/import/figma/types/api.d.mts +53 -0
- package/lib/import/figma/types/api.d.ts +1 -1
- package/lib/import/figma/types/nodes.d.cts +44 -0
- package/lib/import/figma/types/nodes.d.mts +44 -0
- package/lib/import/figma/types/nodes.d.ts +1 -1
- package/lib/import/figma/types/options.d.cts +59 -0
- package/lib/import/figma/types/options.d.mts +59 -0
- package/lib/import/figma/types/options.d.ts +1 -1
- package/lib/import/figma/types/result.d.cts +44 -0
- package/lib/import/figma/types/result.d.mts +44 -0
- package/lib/import/figma/types/result.d.ts +1 -1
- package/lib/index.cjs +15 -13
- package/lib/index.d.cts +78 -0
- package/lib/index.d.mts +78 -0
- package/lib/index.d.ts +8 -5
- package/lib/index.mjs +14 -12
- package/lib/misc/bump-version.d.cts +6 -0
- package/lib/misc/bump-version.d.mts +6 -0
- package/lib/misc/cheerio.d.cts +9 -0
- package/lib/misc/cheerio.d.mts +9 -0
- package/lib/misc/cheerio.d.ts +1 -1
- package/lib/misc/compare-dirs.cjs +3 -3
- package/lib/misc/compare-dirs.d.cts +11 -0
- package/lib/misc/compare-dirs.d.mts +11 -0
- package/lib/misc/compare-dirs.d.ts +1 -1
- package/lib/misc/compare-dirs.mjs +3 -3
- package/lib/misc/exec.d.cts +12 -0
- package/lib/misc/exec.d.mts +12 -0
- package/lib/misc/exec.d.ts +1 -1
- package/lib/misc/keyword.d.cts +6 -0
- package/lib/misc/keyword.d.mts +6 -0
- package/lib/misc/scan.d.cts +33 -0
- package/lib/misc/scan.d.mts +33 -0
- package/lib/misc/scan.d.ts +3 -3
- package/lib/misc/write-json.d.cts +6 -0
- package/lib/misc/write-json.d.mts +6 -0
- package/lib/optimise/figma.cjs +55 -33
- package/lib/optimise/figma.d.cts +13 -0
- package/lib/optimise/figma.d.mts +13 -0
- package/lib/optimise/figma.d.ts +3 -1
- package/lib/optimise/figma.mjs +55 -33
- package/lib/optimise/flags.cjs +3 -3
- package/lib/optimise/flags.d.cts +11 -0
- package/lib/optimise/flags.d.mts +11 -0
- package/lib/optimise/flags.d.ts +1 -1
- package/lib/optimise/flags.mjs +3 -3
- package/lib/optimise/global-style.cjs +7 -7
- package/lib/optimise/global-style.d.cts +11 -0
- package/lib/optimise/global-style.d.mts +11 -0
- package/lib/optimise/global-style.d.ts +1 -1
- package/lib/optimise/global-style.mjs +7 -7
- package/lib/optimise/mask.cjs +1 -1
- package/lib/optimise/mask.d.cts +24 -0
- package/lib/optimise/mask.d.mts +24 -0
- package/lib/optimise/mask.mjs +2 -2
- package/lib/optimise/origin.d.cts +11 -0
- package/lib/optimise/origin.d.mts +11 -0
- package/lib/optimise/scale.d.cts +11 -0
- package/lib/optimise/scale.d.mts +11 -0
- package/lib/optimise/svgo.cjs +1 -1
- package/lib/optimise/svgo.d.cts +37 -0
- package/lib/optimise/svgo.d.mts +37 -0
- package/lib/optimise/svgo.mjs +1 -1
- package/lib/optimise/unwrap.cjs +31 -0
- package/lib/optimise/unwrap.d.cts +11 -0
- package/lib/optimise/unwrap.d.mts +11 -0
- package/lib/optimise/unwrap.d.ts +11 -0
- package/lib/optimise/unwrap.mjs +29 -0
- package/lib/svg/analyse/error.d.cts +10 -0
- package/lib/svg/analyse/error.d.mts +10 -0
- package/lib/svg/analyse/error.d.ts +1 -0
- package/lib/svg/analyse/types.d.cts +92 -0
- package/lib/svg/analyse/types.d.mts +92 -0
- package/lib/svg/analyse/types.d.ts +4 -3
- package/lib/svg/analyse.cjs +2 -2
- package/lib/svg/analyse.d.cts +15 -0
- package/lib/svg/analyse.d.mts +15 -0
- package/lib/svg/analyse.d.ts +1 -0
- package/lib/svg/analyse.mjs +4 -4
- package/lib/svg/cleanup/attribs.cjs +1 -1
- package/lib/svg/cleanup/attribs.d.cts +11 -0
- package/lib/svg/cleanup/attribs.d.mts +11 -0
- package/lib/svg/cleanup/attribs.mjs +2 -2
- package/lib/svg/cleanup/bad-tags.cjs +1 -1
- package/lib/svg/cleanup/bad-tags.d.cts +17 -0
- package/lib/svg/cleanup/bad-tags.d.mts +17 -0
- package/lib/svg/cleanup/bad-tags.d.ts +1 -1
- package/lib/svg/cleanup/bad-tags.mjs +2 -2
- package/lib/svg/cleanup/inline-style.cjs +1 -1
- package/lib/svg/cleanup/inline-style.d.cts +11 -0
- package/lib/svg/cleanup/inline-style.d.mts +11 -0
- package/lib/svg/cleanup/inline-style.mjs +2 -2
- package/lib/svg/cleanup/root-style.cjs +1 -1
- package/lib/svg/cleanup/root-style.d.cts +17 -0
- package/lib/svg/cleanup/root-style.d.mts +17 -0
- package/lib/svg/cleanup/root-style.mjs +2 -2
- package/lib/svg/cleanup/root-svg.cjs +3 -3
- package/lib/svg/cleanup/root-svg.d.cts +11 -0
- package/lib/svg/cleanup/root-svg.d.mts +11 -0
- package/lib/svg/cleanup/root-svg.mjs +3 -3
- package/lib/svg/cleanup/svgo-style.cjs +2 -2
- package/lib/svg/cleanup/svgo-style.d.cts +11 -0
- package/lib/svg/cleanup/svgo-style.d.mts +11 -0
- package/lib/svg/cleanup/svgo-style.mjs +3 -3
- package/lib/svg/cleanup.d.cts +16 -0
- package/lib/svg/cleanup.d.mts +16 -0
- package/lib/svg/cleanup.d.ts +1 -1
- package/lib/svg/data/attributes.d.cts +77 -0
- package/lib/svg/data/attributes.d.mts +77 -0
- package/lib/svg/data/tags.d.cts +95 -0
- package/lib/svg/data/tags.d.mts +95 -0
- package/lib/svg/index.cjs +18 -1
- package/lib/svg/index.d.cts +52 -0
- package/lib/svg/index.d.mts +52 -0
- package/lib/svg/index.d.ts +5 -1
- package/lib/svg/index.mjs +19 -2
- package/lib/svg/parse-style.cjs +178 -235
- package/lib/svg/parse-style.d.cts +58 -0
- package/lib/svg/parse-style.d.mts +58 -0
- package/lib/svg/parse-style.d.ts +3 -9
- package/lib/svg/parse-style.mjs +180 -236
- package/lib/svg/parse.cjs +27 -59
- package/lib/svg/parse.d.cts +30 -0
- package/lib/svg/parse.d.mts +30 -0
- package/lib/svg/parse.d.ts +3 -10
- package/lib/svg/parse.mjs +28 -59
- package/package.json +34 -24
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { sendAPIQuery } from '../../download/api/index.mjs';
|
|
2
2
|
import { apiCacheKey, getAPICache, clearAPICache } from '../../download/api/cache.mjs';
|
|
3
|
+
import { runConcurrentQueries } from '../../download/api/queue.mjs';
|
|
4
|
+
import 'axios';
|
|
5
|
+
import '../../download/api/config.mjs';
|
|
3
6
|
import 'fs';
|
|
4
7
|
import 'crypto';
|
|
5
8
|
import '../../misc/scan.mjs';
|
|
@@ -111,78 +114,92 @@ async function figmaImagesQuery(options, nodes, cache) {
|
|
|
111
114
|
const uri = "https://api.figma.com/v1/images/" + options.file;
|
|
112
115
|
const maxLength = 2048 - uri.length;
|
|
113
116
|
const svgOptions = options.svgOptions || {};
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
117
|
+
const query = (ids2) => {
|
|
118
|
+
return new Promise((resolve, reject) => {
|
|
119
|
+
const params = new URLSearchParams({
|
|
120
|
+
ids: ids2.join(","),
|
|
121
|
+
format: "svg"
|
|
122
|
+
});
|
|
123
|
+
if (options.version) {
|
|
124
|
+
params.set("version", options.version);
|
|
125
|
+
}
|
|
126
|
+
if (svgOptions.includeID) {
|
|
127
|
+
params.set("svg_include_id", "true");
|
|
128
|
+
}
|
|
129
|
+
if (svgOptions.simplifyStroke) {
|
|
130
|
+
params.set("svg_simplify_stroke", "true");
|
|
131
|
+
}
|
|
132
|
+
if (svgOptions.useAbsoluteBounds) {
|
|
133
|
+
params.set("use_absolute_bounds", "true");
|
|
134
|
+
}
|
|
135
|
+
sendAPIQuery(
|
|
136
|
+
{
|
|
137
|
+
uri,
|
|
138
|
+
params,
|
|
139
|
+
headers: {
|
|
140
|
+
"X-FIGMA-TOKEN": options.token
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
cache
|
|
144
|
+
).then((data) => {
|
|
145
|
+
if (typeof data === "number") {
|
|
146
|
+
reject(data);
|
|
147
|
+
return;
|
|
141
148
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
149
|
-
try {
|
|
150
|
-
const parsedData = JSON.parse(data);
|
|
151
|
-
const images = parsedData.images;
|
|
152
|
-
for (const id in images) {
|
|
153
|
-
const node = nodes.icons[id];
|
|
154
|
-
const target = images[id];
|
|
155
|
-
if (node && target) {
|
|
156
|
-
node.url = target;
|
|
157
|
-
found++;
|
|
149
|
+
let parsedData;
|
|
150
|
+
try {
|
|
151
|
+
parsedData = JSON.parse(data);
|
|
152
|
+
} catch {
|
|
153
|
+
reject("Bad API response");
|
|
154
|
+
return;
|
|
158
155
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
156
|
+
resolve(parsedData);
|
|
157
|
+
}).catch(reject);
|
|
158
|
+
});
|
|
163
159
|
};
|
|
160
|
+
let ids = [];
|
|
161
|
+
let idsLength = 0;
|
|
164
162
|
const allKeys = Object.keys(nodes.icons);
|
|
163
|
+
const queue = [];
|
|
165
164
|
for (let i = 0; i < allKeys.length; i++) {
|
|
166
165
|
const id = allKeys[i];
|
|
167
166
|
ids.push(id);
|
|
168
167
|
idsLength += id.length + 1;
|
|
169
168
|
if (idsLength >= maxLength) {
|
|
170
|
-
|
|
169
|
+
queue.push(ids.slice(0));
|
|
171
170
|
ids = [];
|
|
172
171
|
idsLength = 0;
|
|
173
172
|
}
|
|
174
173
|
}
|
|
175
174
|
if (idsLength) {
|
|
176
|
-
|
|
175
|
+
queue.push(ids.slice(0));
|
|
177
176
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
177
|
+
const queryParams = {
|
|
178
|
+
// Params
|
|
179
|
+
total: queue.length,
|
|
180
|
+
callback: (index) => query(queue[index]),
|
|
181
|
+
// Payload to identify failed items in onfail callback
|
|
182
|
+
function: "figmaImagesQuery",
|
|
183
|
+
payload: queue
|
|
184
|
+
};
|
|
185
|
+
const results = await runConcurrentQueries(queryParams);
|
|
186
|
+
let found = 0;
|
|
187
|
+
results.forEach((data) => {
|
|
188
|
+
if (!data) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
const images = data.images;
|
|
192
|
+
for (const id in images) {
|
|
193
|
+
const node = nodes.icons[id];
|
|
194
|
+
const target = images[id];
|
|
195
|
+
if (node && target) {
|
|
196
|
+
node.url = target;
|
|
197
|
+
found++;
|
|
198
|
+
}
|
|
185
199
|
}
|
|
200
|
+
});
|
|
201
|
+
if (!found) {
|
|
202
|
+
throw new Error("No valid icon layers were found");
|
|
186
203
|
}
|
|
187
204
|
nodes.generatedIconsCount = found;
|
|
188
205
|
return nodes;
|
|
@@ -191,32 +208,43 @@ async function figmaDownloadImages(nodes, cache) {
|
|
|
191
208
|
const icons = nodes.icons;
|
|
192
209
|
const ids = Object.keys(icons);
|
|
193
210
|
let count = 0;
|
|
194
|
-
|
|
211
|
+
const filtered = [];
|
|
195
212
|
for (let i = 0; i < ids.length; i++) {
|
|
196
213
|
const id = ids[i];
|
|
197
214
|
const item = icons[id];
|
|
198
|
-
if (
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
215
|
+
if (item.url) {
|
|
216
|
+
filtered.push(item);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const params = {
|
|
220
|
+
// Params
|
|
221
|
+
total: filtered.length,
|
|
222
|
+
callback: (index) => {
|
|
223
|
+
return new Promise((resolve, reject) => {
|
|
224
|
+
const item = filtered[index];
|
|
225
|
+
sendAPIQuery(
|
|
226
|
+
{
|
|
227
|
+
uri: item.url
|
|
228
|
+
},
|
|
229
|
+
cache
|
|
230
|
+
).then((data) => {
|
|
231
|
+
if (typeof data === "string") {
|
|
232
|
+
count++;
|
|
233
|
+
item.content = data;
|
|
234
|
+
resolve(void 0);
|
|
235
|
+
} else {
|
|
236
|
+
reject(data);
|
|
237
|
+
}
|
|
238
|
+
}).catch(reject);
|
|
239
|
+
});
|
|
240
|
+
},
|
|
241
|
+
// Payload to identify failed items in onfail callback
|
|
242
|
+
function: "figmaDownloadImages",
|
|
243
|
+
payload: filtered
|
|
244
|
+
};
|
|
245
|
+
await runConcurrentQueries(params);
|
|
216
246
|
if (!count) {
|
|
217
|
-
throw new Error(
|
|
218
|
-
`Error retrieving images${lastError ? ": " + lastError.toString() : ""}`
|
|
219
|
-
);
|
|
247
|
+
throw new Error("Error retrieving images");
|
|
220
248
|
}
|
|
221
249
|
nodes.downloadedIconsCount = count;
|
|
222
250
|
return nodes;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Basic document structure
|
|
3
|
+
*/
|
|
4
|
+
interface FigmaBoundingBox {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
interface BaseFigmaNode {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
interface GenericFigmaNode extends BaseFigmaNode {
|
|
15
|
+
type: string;
|
|
16
|
+
children?: FigmaNode[];
|
|
17
|
+
}
|
|
18
|
+
interface IconFigmaNode extends BaseFigmaNode {
|
|
19
|
+
type: 'FRAME' | 'COMPONENT' | 'INSTANCE';
|
|
20
|
+
clipsContent?: boolean;
|
|
21
|
+
absoluteBoundingBox?: FigmaBoundingBox;
|
|
22
|
+
children: FigmaNode[];
|
|
23
|
+
}
|
|
24
|
+
interface FigmaDocumentNode extends BaseFigmaNode {
|
|
25
|
+
type: 'DOCUMENT';
|
|
26
|
+
children: FigmaNode[];
|
|
27
|
+
}
|
|
28
|
+
type FigmaNode = GenericFigmaNode | IconFigmaNode;
|
|
29
|
+
/**
|
|
30
|
+
* Document response from API
|
|
31
|
+
*/
|
|
32
|
+
interface FigmaDocument {
|
|
33
|
+
document: FigmaDocumentNode;
|
|
34
|
+
name: string;
|
|
35
|
+
version: string;
|
|
36
|
+
lastModified: string;
|
|
37
|
+
thumbnailUrl: string;
|
|
38
|
+
role: string;
|
|
39
|
+
editorType: 'figma' | 'figjam';
|
|
40
|
+
}
|
|
41
|
+
interface FigmaAPIError {
|
|
42
|
+
status: number;
|
|
43
|
+
err: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Result for retrieved icons
|
|
47
|
+
*/
|
|
48
|
+
interface FigmaAPIImagesResponse {
|
|
49
|
+
err?: string | null;
|
|
50
|
+
images: Record<string, string | null>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type { FigmaAPIError, FigmaAPIImagesResponse, FigmaDocument, FigmaDocumentNode, FigmaNode, IconFigmaNode };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Basic document structure
|
|
3
|
+
*/
|
|
4
|
+
interface FigmaBoundingBox {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
}
|
|
10
|
+
interface BaseFigmaNode {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
}
|
|
14
|
+
interface GenericFigmaNode extends BaseFigmaNode {
|
|
15
|
+
type: string;
|
|
16
|
+
children?: FigmaNode[];
|
|
17
|
+
}
|
|
18
|
+
interface IconFigmaNode extends BaseFigmaNode {
|
|
19
|
+
type: 'FRAME' | 'COMPONENT' | 'INSTANCE';
|
|
20
|
+
clipsContent?: boolean;
|
|
21
|
+
absoluteBoundingBox?: FigmaBoundingBox;
|
|
22
|
+
children: FigmaNode[];
|
|
23
|
+
}
|
|
24
|
+
interface FigmaDocumentNode extends BaseFigmaNode {
|
|
25
|
+
type: 'DOCUMENT';
|
|
26
|
+
children: FigmaNode[];
|
|
27
|
+
}
|
|
28
|
+
type FigmaNode = GenericFigmaNode | IconFigmaNode;
|
|
29
|
+
/**
|
|
30
|
+
* Document response from API
|
|
31
|
+
*/
|
|
32
|
+
interface FigmaDocument {
|
|
33
|
+
document: FigmaDocumentNode;
|
|
34
|
+
name: string;
|
|
35
|
+
version: string;
|
|
36
|
+
lastModified: string;
|
|
37
|
+
thumbnailUrl: string;
|
|
38
|
+
role: string;
|
|
39
|
+
editorType: 'figma' | 'figjam';
|
|
40
|
+
}
|
|
41
|
+
interface FigmaAPIError {
|
|
42
|
+
status: number;
|
|
43
|
+
err: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Result for retrieved icons
|
|
47
|
+
*/
|
|
48
|
+
interface FigmaAPIImagesResponse {
|
|
49
|
+
err?: string | null;
|
|
50
|
+
images: Record<string, string | null>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type { FigmaAPIError, FigmaAPIImagesResponse, FigmaDocument, FigmaDocumentNode, FigmaNode, IconFigmaNode };
|
|
@@ -50,4 +50,4 @@ interface FigmaAPIImagesResponse {
|
|
|
50
50
|
images: Record<string, string | null>;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
export { FigmaAPIError, FigmaAPIImagesResponse, FigmaDocument, FigmaDocumentNode, FigmaNode, IconFigmaNode };
|
|
53
|
+
export type { FigmaAPIError, FigmaAPIImagesResponse, FigmaDocument, FigmaDocumentNode, FigmaNode, IconFigmaNode };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IconFigmaNode, FigmaDocument } from './api.cjs';
|
|
2
|
+
import { FigmaNodesImportResult, FigmaIconNode } from './result.cjs';
|
|
3
|
+
import '../../../icon-set/index.cjs';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../../../icon-set/types.cjs';
|
|
7
|
+
import '../../../svg/index.cjs';
|
|
8
|
+
import 'cheerio';
|
|
9
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
10
|
+
|
|
11
|
+
type FigmaImportParentNodeType = 'CANVAS' | 'FRAME' | 'GROUP' | 'SECTION';
|
|
12
|
+
type FigmaImportIconNodeType = IconFigmaNode['type'];
|
|
13
|
+
/**
|
|
14
|
+
* Node information passed to callback
|
|
15
|
+
*/
|
|
16
|
+
interface FigmaParentNodeData {
|
|
17
|
+
id: string;
|
|
18
|
+
type: FigmaImportParentNodeType;
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
interface FigmaImportNodeData {
|
|
22
|
+
id: string;
|
|
23
|
+
type: FigmaImportIconNodeType;
|
|
24
|
+
name: string;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
parents: FigmaParentNodeData[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Callback to check if node needs to be checked for icons
|
|
31
|
+
*
|
|
32
|
+
* Used to speed up processing by eleminating pages, frames and groups that do not need processing
|
|
33
|
+
*/
|
|
34
|
+
type FigmaImportParentNodeFilter = (node: FigmaParentNodeData[], document: FigmaDocument) => boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Check if node is an icon.
|
|
37
|
+
*
|
|
38
|
+
* Returns icon name on success, null or undefined if not should be ignored.
|
|
39
|
+
* Function can also return FigmaIconNode object, where it can put extra properties that can be used later
|
|
40
|
+
*/
|
|
41
|
+
type FigmaIconNodeWithKeyword = Partial<FigmaIconNode> & Pick<FigmaIconNode, 'keyword'>;
|
|
42
|
+
type FigmaImportNodeFilter = (node: FigmaImportNodeData, nodes: FigmaNodesImportResult, document: FigmaDocument) => string | FigmaIconNodeWithKeyword | null | undefined;
|
|
43
|
+
|
|
44
|
+
export type { FigmaImportIconNodeType, FigmaImportNodeData, FigmaImportNodeFilter, FigmaImportParentNodeFilter, FigmaImportParentNodeType, FigmaParentNodeData };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IconFigmaNode, FigmaDocument } from './api.mjs';
|
|
2
|
+
import { FigmaNodesImportResult, FigmaIconNode } from './result.mjs';
|
|
3
|
+
import '../../../icon-set/index.mjs';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../../../icon-set/types.mjs';
|
|
7
|
+
import '../../../svg/index.mjs';
|
|
8
|
+
import 'cheerio';
|
|
9
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
10
|
+
|
|
11
|
+
type FigmaImportParentNodeType = 'CANVAS' | 'FRAME' | 'GROUP' | 'SECTION';
|
|
12
|
+
type FigmaImportIconNodeType = IconFigmaNode['type'];
|
|
13
|
+
/**
|
|
14
|
+
* Node information passed to callback
|
|
15
|
+
*/
|
|
16
|
+
interface FigmaParentNodeData {
|
|
17
|
+
id: string;
|
|
18
|
+
type: FigmaImportParentNodeType;
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
interface FigmaImportNodeData {
|
|
22
|
+
id: string;
|
|
23
|
+
type: FigmaImportIconNodeType;
|
|
24
|
+
name: string;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
parents: FigmaParentNodeData[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Callback to check if node needs to be checked for icons
|
|
31
|
+
*
|
|
32
|
+
* Used to speed up processing by eleminating pages, frames and groups that do not need processing
|
|
33
|
+
*/
|
|
34
|
+
type FigmaImportParentNodeFilter = (node: FigmaParentNodeData[], document: FigmaDocument) => boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Check if node is an icon.
|
|
37
|
+
*
|
|
38
|
+
* Returns icon name on success, null or undefined if not should be ignored.
|
|
39
|
+
* Function can also return FigmaIconNode object, where it can put extra properties that can be used later
|
|
40
|
+
*/
|
|
41
|
+
type FigmaIconNodeWithKeyword = Partial<FigmaIconNode> & Pick<FigmaIconNode, 'keyword'>;
|
|
42
|
+
type FigmaImportNodeFilter = (node: FigmaImportNodeData, nodes: FigmaNodesImportResult, document: FigmaDocument) => string | FigmaIconNodeWithKeyword | null | undefined;
|
|
43
|
+
|
|
44
|
+
export type { FigmaImportIconNodeType, FigmaImportNodeData, FigmaImportNodeFilter, FigmaImportParentNodeFilter, FigmaImportParentNodeType, FigmaParentNodeData };
|
|
@@ -41,4 +41,4 @@ type FigmaImportParentNodeFilter = (node: FigmaParentNodeData[], document: Figma
|
|
|
41
41
|
type FigmaIconNodeWithKeyword = Partial<FigmaIconNode> & Pick<FigmaIconNode, 'keyword'>;
|
|
42
42
|
type FigmaImportNodeFilter = (node: FigmaImportNodeData, nodes: FigmaNodesImportResult, document: FigmaDocument) => string | FigmaIconNodeWithKeyword | null | undefined;
|
|
43
43
|
|
|
44
|
-
export { FigmaImportIconNodeType, FigmaImportNodeData, FigmaImportNodeFilter, FigmaImportParentNodeFilter, FigmaImportParentNodeType, FigmaParentNodeData };
|
|
44
|
+
export type { FigmaImportIconNodeType, FigmaImportNodeData, FigmaImportNodeFilter, FigmaImportParentNodeFilter, FigmaImportParentNodeType, FigmaParentNodeData };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IconSet } from '../../../icon-set/index.cjs';
|
|
2
|
+
import { FigmaImportParentNodeFilter, FigmaImportNodeFilter } from './nodes.cjs';
|
|
3
|
+
import { FigmaIconNode } from './result.cjs';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../../../icon-set/types.cjs';
|
|
7
|
+
import '../../../svg/index.cjs';
|
|
8
|
+
import 'cheerio';
|
|
9
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
10
|
+
import './api.cjs';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Options for importing SVG
|
|
14
|
+
*/
|
|
15
|
+
interface FigmaImportSVGOptions {
|
|
16
|
+
includeID?: boolean;
|
|
17
|
+
simplifyStroke?: boolean;
|
|
18
|
+
useAbsoluteBounds?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Options
|
|
22
|
+
*/
|
|
23
|
+
interface FigmaImportCommonOptions {
|
|
24
|
+
token: string;
|
|
25
|
+
file: string;
|
|
26
|
+
version?: string;
|
|
27
|
+
}
|
|
28
|
+
interface FigmaIfModifiedSinceOption {
|
|
29
|
+
ifModifiedSince: string | Date | true;
|
|
30
|
+
}
|
|
31
|
+
interface FigmaFilesQueryOptions extends FigmaImportCommonOptions, Partial<FigmaIfModifiedSinceOption> {
|
|
32
|
+
ids?: string[];
|
|
33
|
+
depth?: number;
|
|
34
|
+
}
|
|
35
|
+
interface FigmaImagesQueryOptions extends FigmaImportCommonOptions {
|
|
36
|
+
svgOptions?: FigmaImportSVGOptions;
|
|
37
|
+
}
|
|
38
|
+
interface FigmaGetIconNodesOptions {
|
|
39
|
+
pages?: string[];
|
|
40
|
+
filterParentNode?: FigmaImportParentNodeFilter;
|
|
41
|
+
iconNameForNode: FigmaImportNodeFilter;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Callback to call before or after importing icon
|
|
45
|
+
*/
|
|
46
|
+
type FigmaImportedIconCallback = (node: FigmaIconNode, iconSet: IconSet) => void | Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Options for main import function
|
|
49
|
+
*/
|
|
50
|
+
interface FigmaImportOptions extends FigmaFilesQueryOptions, FigmaImagesQueryOptions, FigmaGetIconNodesOptions {
|
|
51
|
+
prefix: string;
|
|
52
|
+
cacheDir?: string;
|
|
53
|
+
cacheAPITTL?: number;
|
|
54
|
+
cacheSVGTTL?: number;
|
|
55
|
+
beforeImportingIcon?: FigmaImportedIconCallback;
|
|
56
|
+
afterImportingIcon?: FigmaImportedIconCallback;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type { FigmaFilesQueryOptions, FigmaGetIconNodesOptions, FigmaIfModifiedSinceOption, FigmaImagesQueryOptions, FigmaImportOptions, FigmaImportSVGOptions };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { IconSet } from '../../../icon-set/index.mjs';
|
|
2
|
+
import { FigmaImportParentNodeFilter, FigmaImportNodeFilter } from './nodes.mjs';
|
|
3
|
+
import { FigmaIconNode } from './result.mjs';
|
|
4
|
+
import '@iconify/types';
|
|
5
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
6
|
+
import '../../../icon-set/types.mjs';
|
|
7
|
+
import '../../../svg/index.mjs';
|
|
8
|
+
import 'cheerio';
|
|
9
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
10
|
+
import './api.mjs';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Options for importing SVG
|
|
14
|
+
*/
|
|
15
|
+
interface FigmaImportSVGOptions {
|
|
16
|
+
includeID?: boolean;
|
|
17
|
+
simplifyStroke?: boolean;
|
|
18
|
+
useAbsoluteBounds?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Options
|
|
22
|
+
*/
|
|
23
|
+
interface FigmaImportCommonOptions {
|
|
24
|
+
token: string;
|
|
25
|
+
file: string;
|
|
26
|
+
version?: string;
|
|
27
|
+
}
|
|
28
|
+
interface FigmaIfModifiedSinceOption {
|
|
29
|
+
ifModifiedSince: string | Date | true;
|
|
30
|
+
}
|
|
31
|
+
interface FigmaFilesQueryOptions extends FigmaImportCommonOptions, Partial<FigmaIfModifiedSinceOption> {
|
|
32
|
+
ids?: string[];
|
|
33
|
+
depth?: number;
|
|
34
|
+
}
|
|
35
|
+
interface FigmaImagesQueryOptions extends FigmaImportCommonOptions {
|
|
36
|
+
svgOptions?: FigmaImportSVGOptions;
|
|
37
|
+
}
|
|
38
|
+
interface FigmaGetIconNodesOptions {
|
|
39
|
+
pages?: string[];
|
|
40
|
+
filterParentNode?: FigmaImportParentNodeFilter;
|
|
41
|
+
iconNameForNode: FigmaImportNodeFilter;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Callback to call before or after importing icon
|
|
45
|
+
*/
|
|
46
|
+
type FigmaImportedIconCallback = (node: FigmaIconNode, iconSet: IconSet) => void | Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Options for main import function
|
|
49
|
+
*/
|
|
50
|
+
interface FigmaImportOptions extends FigmaFilesQueryOptions, FigmaImagesQueryOptions, FigmaGetIconNodesOptions {
|
|
51
|
+
prefix: string;
|
|
52
|
+
cacheDir?: string;
|
|
53
|
+
cacheAPITTL?: number;
|
|
54
|
+
cacheSVGTTL?: number;
|
|
55
|
+
beforeImportingIcon?: FigmaImportedIconCallback;
|
|
56
|
+
afterImportingIcon?: FigmaImportedIconCallback;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type { FigmaFilesQueryOptions, FigmaGetIconNodesOptions, FigmaIfModifiedSinceOption, FigmaImagesQueryOptions, FigmaImportOptions, FigmaImportSVGOptions };
|
|
@@ -56,4 +56,4 @@ interface FigmaImportOptions extends FigmaFilesQueryOptions, FigmaImagesQueryOpt
|
|
|
56
56
|
afterImportingIcon?: FigmaImportedIconCallback;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
export { FigmaFilesQueryOptions, FigmaGetIconNodesOptions, FigmaIfModifiedSinceOption, FigmaImagesQueryOptions, FigmaImportOptions, FigmaImportSVGOptions };
|
|
59
|
+
export type { FigmaFilesQueryOptions, FigmaGetIconNodesOptions, FigmaIfModifiedSinceOption, FigmaImagesQueryOptions, FigmaImportOptions, FigmaImportSVGOptions };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IconSet } from '../../../icon-set/index.cjs';
|
|
2
|
+
import '@iconify/types';
|
|
3
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
4
|
+
import '../../../icon-set/types.cjs';
|
|
5
|
+
import '../../../svg/index.cjs';
|
|
6
|
+
import 'cheerio';
|
|
7
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Result for found icons
|
|
11
|
+
*/
|
|
12
|
+
interface FigmaIconNode {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
keyword: string;
|
|
16
|
+
url?: string;
|
|
17
|
+
content?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Nodes count
|
|
21
|
+
*/
|
|
22
|
+
interface FigmaNodesCount {
|
|
23
|
+
nodesCount: number;
|
|
24
|
+
generatedIconsCount: number;
|
|
25
|
+
downloadedIconsCount: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Import result for icons
|
|
29
|
+
*/
|
|
30
|
+
interface FigmaNodesImportResult extends Partial<FigmaNodesCount> {
|
|
31
|
+
icons: Record<string, FigmaIconNode>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Import result
|
|
35
|
+
*/
|
|
36
|
+
interface FigmaImportResult extends FigmaNodesCount {
|
|
37
|
+
name: string;
|
|
38
|
+
version: string;
|
|
39
|
+
lastModified: string;
|
|
40
|
+
iconSet: IconSet;
|
|
41
|
+
missing: FigmaIconNode[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type { FigmaIconNode, FigmaImportResult, FigmaNodesCount, FigmaNodesImportResult };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { IconSet } from '../../../icon-set/index.mjs';
|
|
2
|
+
import '@iconify/types';
|
|
3
|
+
import '@iconify/utils/lib/customisations/defaults';
|
|
4
|
+
import '../../../icon-set/types.mjs';
|
|
5
|
+
import '../../../svg/index.mjs';
|
|
6
|
+
import 'cheerio';
|
|
7
|
+
import '@iconify/utils/lib/icon-set/tree';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Result for found icons
|
|
11
|
+
*/
|
|
12
|
+
interface FigmaIconNode {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
keyword: string;
|
|
16
|
+
url?: string;
|
|
17
|
+
content?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Nodes count
|
|
21
|
+
*/
|
|
22
|
+
interface FigmaNodesCount {
|
|
23
|
+
nodesCount: number;
|
|
24
|
+
generatedIconsCount: number;
|
|
25
|
+
downloadedIconsCount: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Import result for icons
|
|
29
|
+
*/
|
|
30
|
+
interface FigmaNodesImportResult extends Partial<FigmaNodesCount> {
|
|
31
|
+
icons: Record<string, FigmaIconNode>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Import result
|
|
35
|
+
*/
|
|
36
|
+
interface FigmaImportResult extends FigmaNodesCount {
|
|
37
|
+
name: string;
|
|
38
|
+
version: string;
|
|
39
|
+
lastModified: string;
|
|
40
|
+
iconSet: IconSet;
|
|
41
|
+
missing: FigmaIconNode[];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export type { FigmaIconNode, FigmaImportResult, FigmaNodesCount, FigmaNodesImportResult };
|
|
@@ -41,4 +41,4 @@ interface FigmaImportResult extends FigmaNodesCount {
|
|
|
41
41
|
missing: FigmaIconNode[];
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
export { FigmaIconNode, FigmaImportResult, FigmaNodesCount, FigmaNodesImportResult };
|
|
44
|
+
export type { FigmaIconNode, FigmaImportResult, FigmaNodesCount, FigmaNodesImportResult };
|