@iconify/tools 4.2.0 → 5.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/colors/attribs.d.ts +2 -4
- package/lib/colors/attribs.js +33 -0
- package/lib/colors/detect.d.ts +2 -10
- package/lib/colors/detect.js +36 -0
- package/lib/colors/parse.d.ts +12 -19
- package/lib/colors/parse.js +241 -0
- package/lib/colors/validate.d.ts +3 -13
- package/lib/colors/validate.js +31 -0
- package/lib/css/parse.d.ts +1 -2
- package/lib/css/parse.js +18 -0
- package/lib/css/parser/error.d.ts +6 -7
- package/lib/css/parser/error.js +24 -0
- package/lib/css/parser/export.d.ts +2 -4
- package/lib/css/parser/export.js +34 -0
- package/lib/css/parser/strings.d.ts +2 -4
- package/lib/css/parser/strings.js +66 -0
- package/lib/css/parser/text.d.ts +2 -4
- package/lib/css/parser/text.js +103 -0
- package/lib/css/parser/tokens.d.ts +3 -5
- package/lib/css/parser/tokens.js +169 -0
- package/lib/css/parser/tree.d.ts +2 -4
- package/lib/css/parser/tree.js +35 -0
- package/lib/css/parser/types.d.ts +21 -22
- package/lib/css/parser/types.js +1 -0
- package/lib/download/api/cache.d.ts +2 -4
- package/lib/download/api/cache.js +84 -0
- package/lib/download/api/config.d.ts +6 -8
- package/lib/download/api/config.js +10 -0
- package/lib/download/api/download.d.ts +2 -4
- package/lib/download/api/download.js +26 -0
- package/lib/download/api/fetch.d.ts +1 -2
- package/lib/download/api/fetch.js +15 -0
- package/lib/download/api/index.d.ts +2 -4
- package/lib/download/api/index.js +50 -0
- package/lib/download/api/queue.d.ts +9 -10
- package/lib/download/api/queue.js +94 -0
- package/lib/download/api/types.d.ts +6 -7
- package/lib/download/api/types.js +1 -0
- package/lib/download/git/branch.d.ts +2 -4
- package/lib/download/git/branch.js +15 -0
- package/lib/download/git/hash.d.ts +2 -4
- package/lib/download/git/hash.js +10 -0
- package/lib/download/git/index.d.ts +10 -12
- package/lib/download/git/index.js +39 -0
- package/lib/download/git/reset.d.ts +1 -2
- package/lib/download/git/reset.js +12 -0
- package/lib/download/github/hash.d.ts +2 -4
- package/lib/download/github/hash.js +20 -0
- package/lib/download/github/index.d.ts +12 -14
- package/lib/download/github/index.js +66 -0
- package/lib/download/github/types.d.ts +5 -6
- package/lib/download/github/types.js +1 -0
- package/lib/download/gitlab/hash.d.ts +2 -4
- package/lib/download/gitlab/hash.js +19 -0
- package/lib/download/gitlab/index.d.ts +12 -14
- package/lib/download/gitlab/index.js +64 -0
- package/lib/download/gitlab/types.d.ts +5 -6
- package/lib/download/gitlab/types.js +6 -0
- package/lib/download/helpers/untar.d.ts +1 -2
- package/lib/download/helpers/untar.js +13 -0
- package/lib/download/helpers/unzip.d.ts +1 -2
- package/lib/download/helpers/unzip.js +39 -0
- package/lib/download/index.d.ts +15 -20
- package/lib/download/index.js +19 -0
- package/lib/download/npm/index.d.ts +11 -13
- package/lib/download/npm/index.js +51 -0
- package/lib/download/npm/types.d.ts +3 -4
- package/lib/download/npm/types.js +1 -0
- package/lib/download/npm/version.d.ts +4 -6
- package/lib/download/npm/version.js +23 -0
- package/lib/download/types/modified.d.ts +1 -2
- package/lib/download/types/modified.js +1 -0
- package/lib/download/types/sources.d.ts +2 -3
- package/lib/download/types/sources.js +1 -0
- package/lib/export/directory.d.ts +7 -15
- package/lib/export/directory.js +37 -0
- package/lib/export/helpers/custom-files.d.ts +2 -3
- package/lib/export/helpers/custom-files.js +23 -0
- package/lib/export/helpers/prepare.d.ts +3 -4
- package/lib/export/helpers/prepare.js +31 -0
- package/lib/export/helpers/types-version.d.ts +1 -2
- package/lib/export/helpers/types-version.js +19 -0
- package/lib/export/icon-package.d.ts +8 -15
- package/lib/export/icon-package.js +55 -0
- package/lib/export/json-package.d.ts +7 -14
- package/lib/export/json-package.js +129 -0
- package/lib/icon-set/index.d.ts +144 -147
- package/lib/icon-set/index.js +595 -0
- package/lib/icon-set/match.d.ts +3 -11
- package/lib/icon-set/match.js +45 -0
- package/lib/icon-set/merge.d.ts +2 -10
- package/lib/icon-set/merge.js +68 -0
- package/lib/icon-set/modified.d.ts +2 -10
- package/lib/icon-set/modified.js +20 -0
- package/lib/icon-set/props.d.ts +2 -5
- package/lib/icon-set/props.js +19 -0
- package/lib/icon-set/tags.d.ts +7 -15
- package/lib/icon-set/tags.js +53 -0
- package/lib/icon-set/types.d.ts +16 -21
- package/lib/icon-set/types.js +1 -0
- package/lib/import/directory.d.ts +11 -20
- package/lib/import/directory.js +101 -0
- package/lib/import/figma/index.d.ts +4 -15
- package/lib/import/figma/index.js +61 -0
- package/lib/import/figma/nodes.d.ts +4 -14
- package/lib/import/figma/nodes.js +80 -0
- package/lib/import/figma/query.d.ts +9 -19
- package/lib/import/figma/query.js +183 -0
- package/lib/import/figma/types/api.d.ts +26 -27
- package/lib/import/figma/types/api.js +1 -0
- package/lib/import/figma/types/nodes.d.ts +12 -21
- package/lib/import/figma/types/nodes.js +1 -0
- package/lib/import/figma/types/options.d.ts +23 -32
- package/lib/import/figma/types/options.js +1 -0
- package/lib/import/figma/types/result.d.ts +16 -24
- package/lib/import/figma/types/result.js +1 -0
- package/lib/index.d.ts +55 -80
- package/lib/index.js +56 -0
- package/lib/misc/bump-version.d.ts +1 -2
- package/lib/misc/bump-version.js +13 -0
- package/lib/misc/compare-dirs.d.ts +4 -5
- package/lib/misc/compare-dirs.js +65 -0
- package/lib/misc/exec.d.ts +4 -6
- package/lib/misc/exec.js +23 -0
- package/lib/misc/keyword.d.ts +1 -2
- package/lib/misc/keyword.js +12 -0
- package/lib/misc/scan.d.ts +2 -4
- package/lib/misc/scan.js +87 -0
- package/lib/misc/write-json.d.ts +1 -2
- package/lib/misc/write-json.js +10 -0
- package/lib/optimise/figma.d.ts +2 -7
- package/lib/optimise/figma.js +189 -0
- package/lib/optimise/flags.d.ts +2 -7
- package/lib/optimise/flags.js +231 -0
- package/lib/optimise/global-style.d.ts +2 -7
- package/lib/optimise/global-style.js +114 -0
- package/lib/optimise/mask.d.ts +9 -14
- package/lib/optimise/mask.js +83 -0
- package/lib/optimise/origin.d.ts +2 -7
- package/lib/optimise/origin.js +22 -0
- package/lib/optimise/scale.d.ts +2 -7
- package/lib/optimise/scale.js +24 -0
- package/lib/optimise/svgo.d.ts +10 -15
- package/lib/optimise/svgo.js +90 -0
- package/lib/optimise/unwrap.d.ts +2 -7
- package/lib/optimise/unwrap.js +25 -0
- package/lib/svg/analyse/error.d.ts +2 -7
- package/lib/svg/analyse/error.js +12 -0
- package/lib/svg/analyse/types.d.ts +31 -35
- package/lib/svg/analyse/types.js +1 -0
- package/lib/svg/analyse.d.ts +3 -10
- package/lib/svg/analyse.js +256 -0
- package/lib/svg/cleanup/attribs.d.ts +2 -7
- package/lib/svg/cleanup/attribs.js +37 -0
- package/lib/svg/cleanup/bad-tags.d.ts +3 -8
- package/lib/svg/cleanup/bad-tags.js +57 -0
- package/lib/svg/cleanup/inline-style.d.ts +2 -7
- package/lib/svg/cleanup/inline-style.js +80 -0
- package/lib/svg/cleanup/root-style.d.ts +4 -9
- package/lib/svg/cleanup/root-style.js +27 -0
- package/lib/svg/cleanup/root-svg.d.ts +2 -7
- package/lib/svg/cleanup/root-svg.js +73 -0
- package/lib/svg/cleanup/svgo-style.d.ts +2 -7
- package/lib/svg/cleanup/svgo-style.js +24 -0
- package/lib/svg/cleanup.d.ts +3 -8
- package/lib/svg/cleanup.js +20 -0
- package/lib/svg/data/attributes.d.ts +1 -2
- package/lib/svg/data/attributes.js +451 -0
- package/lib/svg/data/tags.d.ts +1 -2
- package/lib/svg/data/tags.js +182 -0
- package/lib/svg/index.d.ts +38 -47
- package/lib/svg/index.js +117 -0
- package/lib/svg/parse-style.d.ts +21 -28
- package/lib/svg/parse-style.js +199 -0
- package/lib/svg/parse.d.ts +8 -16
- package/lib/svg/parse.js +32 -0
- package/package.json +116 -222
- package/lib/colors/attribs.cjs +0 -33
- package/lib/colors/attribs.d.cts +0 -27
- package/lib/colors/attribs.d.mts +0 -27
- package/lib/colors/attribs.mjs +0 -26
- package/lib/colors/detect.cjs +0 -66
- package/lib/colors/detect.d.cts +0 -16
- package/lib/colors/detect.d.mts +0 -16
- package/lib/colors/detect.mjs +0 -64
- package/lib/colors/parse.cjs +0 -300
- package/lib/colors/parse.d.cts +0 -61
- package/lib/colors/parse.d.mts +0 -61
- package/lib/colors/parse.mjs +0 -297
- package/lib/colors/validate.cjs +0 -56
- package/lib/colors/validate.d.cts +0 -21
- package/lib/colors/validate.d.mts +0 -21
- package/lib/colors/validate.mjs +0 -54
- package/lib/css/parse.cjs +0 -24
- package/lib/css/parse.d.cts +0 -6
- package/lib/css/parse.d.mts +0 -6
- package/lib/css/parse.mjs +0 -22
- package/lib/css/parser/error.cjs +0 -23
- package/lib/css/parser/error.d.cts +0 -13
- package/lib/css/parser/error.d.mts +0 -13
- package/lib/css/parser/error.mjs +0 -21
- package/lib/css/parser/export.cjs +0 -37
- package/lib/css/parser/export.d.cts +0 -8
- package/lib/css/parser/export.d.mts +0 -8
- package/lib/css/parser/export.mjs +0 -35
- package/lib/css/parser/strings.cjs +0 -83
- package/lib/css/parser/strings.d.cts +0 -16
- package/lib/css/parser/strings.d.mts +0 -16
- package/lib/css/parser/strings.mjs +0 -80
- package/lib/css/parser/text.cjs +0 -114
- package/lib/css/parser/text.d.cts +0 -20
- package/lib/css/parser/text.d.mts +0 -20
- package/lib/css/parser/text.mjs +0 -109
- package/lib/css/parser/tokens.cjs +0 -206
- package/lib/css/parser/tokens.d.cts +0 -9
- package/lib/css/parser/tokens.d.mts +0 -9
- package/lib/css/parser/tokens.mjs +0 -204
- package/lib/css/parser/tree.cjs +0 -40
- package/lib/css/parser/tree.d.cts +0 -8
- package/lib/css/parser/tree.d.mts +0 -8
- package/lib/css/parser/tree.mjs +0 -38
- package/lib/css/parser/types.cjs +0 -2
- package/lib/css/parser/types.d.cts +0 -52
- package/lib/css/parser/types.d.mts +0 -52
- package/lib/css/parser/types.mjs +0 -1
- package/lib/download/api/cache.cjs +0 -91
- package/lib/download/api/cache.d.cts +0 -20
- package/lib/download/api/cache.d.mts +0 -20
- package/lib/download/api/cache.mjs +0 -86
- package/lib/download/api/config.cjs +0 -11
- package/lib/download/api/config.d.cts +0 -18
- package/lib/download/api/config.d.mts +0 -18
- package/lib/download/api/config.mjs +0 -8
- package/lib/download/api/download.cjs +0 -26
- package/lib/download/api/download.d.cts +0 -8
- package/lib/download/api/download.d.mts +0 -8
- package/lib/download/api/download.mjs +0 -24
- package/lib/download/api/fetch.cjs +0 -12
- package/lib/download/api/fetch.d.cts +0 -10
- package/lib/download/api/fetch.d.mts +0 -10
- package/lib/download/api/fetch.mjs +0 -9
- package/lib/download/api/index.cjs +0 -57
- package/lib/download/api/index.d.cts +0 -8
- package/lib/download/api/index.d.mts +0 -8
- package/lib/download/api/index.mjs +0 -55
- package/lib/download/api/queue.cjs +0 -104
- package/lib/download/api/queue.d.cts +0 -32
- package/lib/download/api/queue.d.mts +0 -32
- package/lib/download/api/queue.mjs +0 -101
- package/lib/download/api/types.cjs +0 -2
- package/lib/download/api/types.d.cts +0 -17
- package/lib/download/api/types.d.mts +0 -17
- package/lib/download/api/types.mjs +0 -1
- package/lib/download/git/branch.cjs +0 -19
- package/lib/download/git/branch.d.cts +0 -8
- package/lib/download/git/branch.d.mts +0 -8
- package/lib/download/git/branch.mjs +0 -17
- package/lib/download/git/hash.cjs +0 -14
- package/lib/download/git/hash.d.cts +0 -8
- package/lib/download/git/hash.d.mts +0 -8
- package/lib/download/git/hash.mjs +0 -12
- package/lib/download/git/index.cjs +0 -76
- package/lib/download/git/index.d.cts +0 -29
- package/lib/download/git/index.d.mts +0 -29
- package/lib/download/git/index.mjs +0 -74
- package/lib/download/git/reset.cjs +0 -36
- package/lib/download/git/reset.d.cts +0 -6
- package/lib/download/git/reset.d.mts +0 -6
- package/lib/download/git/reset.mjs +0 -34
- package/lib/download/github/hash.cjs +0 -31
- package/lib/download/github/hash.d.cts +0 -8
- package/lib/download/github/hash.d.mts +0 -8
- package/lib/download/github/hash.mjs +0 -29
- package/lib/download/github/index.cjs +0 -105
- package/lib/download/github/index.d.cts +0 -31
- package/lib/download/github/index.d.mts +0 -31
- package/lib/download/github/index.mjs +0 -103
- package/lib/download/github/types.cjs +0 -2
- package/lib/download/github/types.d.cts +0 -11
- package/lib/download/github/types.d.mts +0 -11
- package/lib/download/github/types.mjs +0 -1
- package/lib/download/gitlab/hash.cjs +0 -33
- package/lib/download/gitlab/hash.d.cts +0 -8
- package/lib/download/gitlab/hash.d.mts +0 -8
- package/lib/download/gitlab/hash.mjs +0 -31
- package/lib/download/gitlab/index.cjs +0 -105
- package/lib/download/gitlab/index.d.cts +0 -31
- package/lib/download/gitlab/index.d.mts +0 -31
- package/lib/download/gitlab/index.mjs +0 -103
- package/lib/download/gitlab/types.cjs +0 -5
- package/lib/download/gitlab/types.d.cts +0 -15
- package/lib/download/gitlab/types.d.mts +0 -15
- package/lib/download/gitlab/types.mjs +0 -3
- package/lib/download/helpers/untar.cjs +0 -12
- package/lib/download/helpers/untar.d.cts +0 -6
- package/lib/download/helpers/untar.d.mts +0 -6
- package/lib/download/helpers/untar.mjs +0 -10
- package/lib/download/helpers/unzip.cjs +0 -17
- package/lib/download/helpers/unzip.d.cts +0 -6
- package/lib/download/helpers/unzip.d.mts +0 -6
- package/lib/download/helpers/unzip.mjs +0 -11
- package/lib/download/index.cjs +0 -64
- package/lib/download/index.d.cts +0 -48
- package/lib/download/index.d.mts +0 -48
- package/lib/download/index.mjs +0 -62
- package/lib/download/npm/index.cjs +0 -85
- package/lib/download/npm/index.d.cts +0 -30
- package/lib/download/npm/index.d.mts +0 -30
- package/lib/download/npm/index.mjs +0 -83
- package/lib/download/npm/types.cjs +0 -2
- package/lib/download/npm/types.d.cts +0 -9
- package/lib/download/npm/types.d.mts +0 -9
- package/lib/download/npm/types.mjs +0 -1
- package/lib/download/npm/version.cjs +0 -29
- package/lib/download/npm/version.d.cts +0 -16
- package/lib/download/npm/version.d.mts +0 -16
- package/lib/download/npm/version.mjs +0 -26
- package/lib/download/types/modified.cjs +0 -2
- package/lib/download/types/modified.d.cts +0 -6
- package/lib/download/types/modified.d.mts +0 -6
- package/lib/download/types/modified.mjs +0 -1
- package/lib/download/types/sources.cjs +0 -2
- package/lib/download/types/sources.d.cts +0 -12
- package/lib/download/types/sources.d.mts +0 -12
- package/lib/download/types/sources.mjs +0 -1
- package/lib/export/directory.cjs +0 -43
- package/lib/export/directory.d.cts +0 -26
- package/lib/export/directory.d.mts +0 -26
- package/lib/export/directory.mjs +0 -41
- package/lib/export/helpers/custom-files.cjs +0 -26
- package/lib/export/helpers/custom-files.d.cts +0 -12
- package/lib/export/helpers/custom-files.d.mts +0 -12
- package/lib/export/helpers/custom-files.mjs +0 -24
- package/lib/export/helpers/prepare.cjs +0 -34
- package/lib/export/helpers/prepare.d.cts +0 -19
- package/lib/export/helpers/prepare.d.mts +0 -19
- package/lib/export/helpers/prepare.mjs +0 -31
- package/lib/export/helpers/types-version.cjs +0 -12
- package/lib/export/helpers/types-version.d.cts +0 -6
- package/lib/export/helpers/types-version.d.mts +0 -6
- package/lib/export/helpers/types-version.mjs +0 -10
- package/lib/export/icon-package.cjs +0 -56
- package/lib/export/icon-package.d.cts +0 -26
- package/lib/export/icon-package.d.mts +0 -26
- package/lib/export/icon-package.mjs +0 -54
- package/lib/export/json-package.cjs +0 -144
- package/lib/export/json-package.d.cts +0 -25
- package/lib/export/json-package.d.mts +0 -25
- package/lib/export/json-package.mjs +0 -142
- package/lib/icon-set/index.cjs +0 -720
- package/lib/icon-set/index.d.cts +0 -162
- package/lib/icon-set/index.d.mts +0 -162
- package/lib/icon-set/index.mjs +0 -716
- package/lib/icon-set/match.cjs +0 -56
- package/lib/icon-set/match.d.cts +0 -15
- package/lib/icon-set/match.d.mts +0 -15
- package/lib/icon-set/match.mjs +0 -54
- package/lib/icon-set/merge.cjs +0 -87
- package/lib/icon-set/merge.d.cts +0 -14
- package/lib/icon-set/merge.d.mts +0 -14
- package/lib/icon-set/merge.mjs +0 -85
- package/lib/icon-set/modified.cjs +0 -25
- package/lib/icon-set/modified.d.cts +0 -16
- package/lib/icon-set/modified.d.mts +0 -16
- package/lib/icon-set/modified.mjs +0 -23
- package/lib/icon-set/props.cjs +0 -16
- package/lib/icon-set/props.d.cts +0 -13
- package/lib/icon-set/props.d.mts +0 -13
- package/lib/icon-set/props.mjs +0 -13
- package/lib/icon-set/tags.cjs +0 -95
- package/lib/icon-set/tags.d.cts +0 -25
- package/lib/icon-set/tags.d.mts +0 -25
- package/lib/icon-set/tags.mjs +0 -91
- package/lib/icon-set/types.cjs +0 -2
- package/lib/icon-set/types.d.cts +0 -75
- package/lib/icon-set/types.d.mts +0 -75
- package/lib/icon-set/types.mjs +0 -1
- package/lib/import/directory.cjs +0 -169
- package/lib/import/directory.d.cts +0 -52
- package/lib/import/directory.d.mts +0 -52
- package/lib/import/directory.mjs +0 -166
- package/lib/import/figma/index.cjs +0 -115
- package/lib/import/figma/index.d.cts +0 -20
- package/lib/import/figma/index.d.mts +0 -20
- package/lib/import/figma/index.mjs +0 -113
- package/lib/import/figma/nodes.cjs +0 -90
- package/lib/import/figma/nodes.d.cts +0 -18
- package/lib/import/figma/nodes.d.mts +0 -18
- package/lib/import/figma/nodes.mjs +0 -88
- package/lib/import/figma/query.cjs +0 -260
- package/lib/import/figma/query.d.cts +0 -42
- package/lib/import/figma/query.d.mts +0 -42
- package/lib/import/figma/query.mjs +0 -256
- package/lib/import/figma/types/api.cjs +0 -2
- package/lib/import/figma/types/api.d.cts +0 -53
- package/lib/import/figma/types/api.d.mts +0 -53
- package/lib/import/figma/types/api.mjs +0 -1
- package/lib/import/figma/types/nodes.cjs +0 -2
- package/lib/import/figma/types/nodes.d.cts +0 -44
- package/lib/import/figma/types/nodes.d.mts +0 -44
- package/lib/import/figma/types/nodes.mjs +0 -1
- package/lib/import/figma/types/options.cjs +0 -2
- package/lib/import/figma/types/options.d.cts +0 -59
- package/lib/import/figma/types/options.d.mts +0 -59
- package/lib/import/figma/types/options.mjs +0 -1
- package/lib/import/figma/types/result.cjs +0 -2
- package/lib/import/figma/types/result.d.cts +0 -44
- package/lib/import/figma/types/result.d.mts +0 -44
- package/lib/import/figma/types/result.mjs +0 -1
- package/lib/index.cjs +0 -157
- package/lib/index.d.cts +0 -80
- package/lib/index.d.mts +0 -80
- package/lib/index.mjs +0 -91
- package/lib/misc/bump-version.cjs +0 -15
- package/lib/misc/bump-version.d.cts +0 -6
- package/lib/misc/bump-version.d.mts +0 -6
- package/lib/misc/bump-version.mjs +0 -13
- package/lib/misc/cheerio.cjs +0 -2
- package/lib/misc/cheerio.d.cts +0 -10
- package/lib/misc/cheerio.d.mts +0 -10
- package/lib/misc/cheerio.d.ts +0 -10
- package/lib/misc/cheerio.mjs +0 -1
- package/lib/misc/compare-dirs.cjs +0 -75
- package/lib/misc/compare-dirs.d.cts +0 -11
- package/lib/misc/compare-dirs.d.mts +0 -11
- package/lib/misc/compare-dirs.mjs +0 -73
- package/lib/misc/exec.cjs +0 -27
- package/lib/misc/exec.d.cts +0 -12
- package/lib/misc/exec.d.mts +0 -12
- package/lib/misc/exec.mjs +0 -25
- package/lib/misc/keyword.cjs +0 -20
- package/lib/misc/keyword.d.cts +0 -6
- package/lib/misc/keyword.d.mts +0 -6
- package/lib/misc/keyword.mjs +0 -18
- package/lib/misc/scan.cjs +0 -114
- package/lib/misc/scan.d.cts +0 -33
- package/lib/misc/scan.d.mts +0 -33
- package/lib/misc/scan.mjs +0 -111
- package/lib/misc/write-json.cjs +0 -9
- package/lib/misc/write-json.d.cts +0 -6
- package/lib/misc/write-json.d.mts +0 -6
- package/lib/misc/write-json.mjs +0 -7
- package/lib/optimise/figma.cjs +0 -232
- package/lib/optimise/figma.d.cts +0 -14
- package/lib/optimise/figma.d.mts +0 -14
- package/lib/optimise/figma.mjs +0 -230
- package/lib/optimise/flags.cjs +0 -256
- package/lib/optimise/flags.d.cts +0 -11
- package/lib/optimise/flags.d.mts +0 -11
- package/lib/optimise/flags.mjs +0 -254
- package/lib/optimise/global-style.cjs +0 -158
- package/lib/optimise/global-style.d.cts +0 -11
- package/lib/optimise/global-style.d.mts +0 -11
- package/lib/optimise/global-style.mjs +0 -156
- package/lib/optimise/mask.cjs +0 -110
- package/lib/optimise/mask.d.cts +0 -24
- package/lib/optimise/mask.d.mts +0 -24
- package/lib/optimise/mask.mjs +0 -108
- package/lib/optimise/origin.cjs +0 -23
- package/lib/optimise/origin.d.cts +0 -11
- package/lib/optimise/origin.d.mts +0 -11
- package/lib/optimise/origin.mjs +0 -21
- package/lib/optimise/scale.cjs +0 -27
- package/lib/optimise/scale.d.cts +0 -11
- package/lib/optimise/scale.d.mts +0 -11
- package/lib/optimise/scale.mjs +0 -25
- package/lib/optimise/svgo.cjs +0 -107
- package/lib/optimise/svgo.d.cts +0 -37
- package/lib/optimise/svgo.d.mts +0 -37
- package/lib/optimise/svgo.mjs +0 -104
- package/lib/optimise/unwrap.cjs +0 -31
- package/lib/optimise/unwrap.d.cts +0 -11
- package/lib/optimise/unwrap.d.mts +0 -11
- package/lib/optimise/unwrap.mjs +0 -29
- package/lib/svg/analyse/error.cjs +0 -16
- package/lib/svg/analyse/error.d.cts +0 -11
- package/lib/svg/analyse/error.d.mts +0 -11
- package/lib/svg/analyse/error.mjs +0 -14
- package/lib/svg/analyse/types.cjs +0 -2
- package/lib/svg/analyse/types.d.cts +0 -93
- package/lib/svg/analyse/types.d.mts +0 -93
- package/lib/svg/analyse/types.mjs +0 -1
- package/lib/svg/analyse.cjs +0 -303
- package/lib/svg/analyse.d.cts +0 -16
- package/lib/svg/analyse.d.mts +0 -16
- package/lib/svg/analyse.mjs +0 -301
- package/lib/svg/cleanup/attribs.cjs +0 -39
- package/lib/svg/cleanup/attribs.d.cts +0 -11
- package/lib/svg/cleanup/attribs.d.mts +0 -11
- package/lib/svg/cleanup/attribs.mjs +0 -37
- package/lib/svg/cleanup/bad-tags.cjs +0 -69
- package/lib/svg/cleanup/bad-tags.d.cts +0 -17
- package/lib/svg/cleanup/bad-tags.d.mts +0 -17
- package/lib/svg/cleanup/bad-tags.mjs +0 -67
- package/lib/svg/cleanup/inline-style.cjs +0 -97
- package/lib/svg/cleanup/inline-style.d.cts +0 -11
- package/lib/svg/cleanup/inline-style.d.mts +0 -11
- package/lib/svg/cleanup/inline-style.mjs +0 -95
- package/lib/svg/cleanup/root-style.cjs +0 -34
- package/lib/svg/cleanup/root-style.d.cts +0 -17
- package/lib/svg/cleanup/root-style.d.mts +0 -17
- package/lib/svg/cleanup/root-style.mjs +0 -32
- package/lib/svg/cleanup/root-svg.cjs +0 -84
- package/lib/svg/cleanup/root-svg.d.cts +0 -11
- package/lib/svg/cleanup/root-svg.d.mts +0 -11
- package/lib/svg/cleanup/root-svg.mjs +0 -82
- package/lib/svg/cleanup/svgo-style.cjs +0 -43
- package/lib/svg/cleanup/svgo-style.d.cts +0 -11
- package/lib/svg/cleanup/svgo-style.d.mts +0 -11
- package/lib/svg/cleanup/svgo-style.mjs +0 -41
- package/lib/svg/cleanup.cjs +0 -33
- package/lib/svg/cleanup.d.cts +0 -16
- package/lib/svg/cleanup.d.mts +0 -16
- package/lib/svg/cleanup.mjs +0 -31
- package/lib/svg/data/attributes.cjs +0 -373
- package/lib/svg/data/attributes.d.cts +0 -77
- package/lib/svg/data/attributes.d.mts +0 -77
- package/lib/svg/data/attributes.mjs +0 -346
- package/lib/svg/data/tags.cjs +0 -141
- package/lib/svg/data/tags.d.cts +0 -95
- package/lib/svg/data/tags.d.mts +0 -95
- package/lib/svg/data/tags.mjs +0 -117
- package/lib/svg/index.cjs +0 -178
- package/lib/svg/index.d.cts +0 -52
- package/lib/svg/index.d.mts +0 -52
- package/lib/svg/index.mjs +0 -162
- package/lib/svg/parse-style.cjs +0 -243
- package/lib/svg/parse-style.d.cts +0 -59
- package/lib/svg/parse-style.d.mts +0 -59
- package/lib/svg/parse-style.mjs +0 -241
- package/lib/svg/parse.cjs +0 -46
- package/lib/svg/parse.d.cts +0 -31
- package/lib/svg/parse.d.mts +0 -31
- package/lib/svg/parse.mjs +0 -44
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const download_api_index = require('../../download/api/index.cjs');
|
|
4
|
-
const download_api_cache = require('../../download/api/cache.cjs');
|
|
5
|
-
const download_api_queue = require('../../download/api/queue.cjs');
|
|
6
|
-
require('../../download/api/config.cjs');
|
|
7
|
-
require('../../download/api/fetch.cjs');
|
|
8
|
-
require('fs');
|
|
9
|
-
require('crypto');
|
|
10
|
-
require('../../misc/scan.cjs');
|
|
11
|
-
|
|
12
|
-
function identicalDates(actual, expected) {
|
|
13
|
-
if (typeof actual !== "string") {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
if (actual === expected) {
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
return new Date(actual).toString() === new Date(expected).toString();
|
|
20
|
-
}
|
|
21
|
-
async function figmaFilesQuery(options, cache) {
|
|
22
|
-
if (!options.token) {
|
|
23
|
-
throw new Error("Missing Figma API token");
|
|
24
|
-
}
|
|
25
|
-
const params = new URLSearchParams();
|
|
26
|
-
if (options.ids) {
|
|
27
|
-
params.set("ids", options.ids.join(","));
|
|
28
|
-
}
|
|
29
|
-
if (options.version) {
|
|
30
|
-
params.set("version", options.version);
|
|
31
|
-
}
|
|
32
|
-
if (options.depth) {
|
|
33
|
-
params.set("depth", options.depth.toString());
|
|
34
|
-
}
|
|
35
|
-
const queryParams = {
|
|
36
|
-
uri: "https://api.figma.com/v1/files/" + options.file,
|
|
37
|
-
params,
|
|
38
|
-
headers: {
|
|
39
|
-
"X-FIGMA-TOKEN": options.token
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
const isModified = async () => {
|
|
43
|
-
if (!cache || !options.ifModifiedSince) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
const cacheKey = download_api_cache.apiCacheKey(queryParams);
|
|
47
|
-
const cachedData = await download_api_cache.getAPICache(cache.dir, cacheKey);
|
|
48
|
-
if (!cachedData) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
let ifModifiedSince;
|
|
52
|
-
if (options.ifModifiedSince === true) {
|
|
53
|
-
try {
|
|
54
|
-
const parsedData2 = JSON.parse(cachedData);
|
|
55
|
-
if (typeof parsedData2.lastModified !== "string") {
|
|
56
|
-
await download_api_cache.clearAPICache(cache.dir);
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
ifModifiedSince = parsedData2.lastModified;
|
|
60
|
-
} catch (err) {
|
|
61
|
-
await download_api_cache.clearAPICache(cache.dir);
|
|
62
|
-
return true;
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
ifModifiedSince = options.ifModifiedSince;
|
|
66
|
-
}
|
|
67
|
-
const versionCheckParams = {
|
|
68
|
-
...queryParams,
|
|
69
|
-
params: new URLSearchParams(params)
|
|
70
|
-
};
|
|
71
|
-
versionCheckParams.params.set("depth", "1");
|
|
72
|
-
const data2 = await download_api_index.sendAPIQuery(versionCheckParams);
|
|
73
|
-
try {
|
|
74
|
-
if (typeof data2 === "string") {
|
|
75
|
-
const parsedData2 = JSON.parse(data2);
|
|
76
|
-
if (identicalDates(parsedData2.lastModified, ifModifiedSince)) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
} catch (err) {
|
|
81
|
-
}
|
|
82
|
-
await download_api_cache.clearAPICache(cache.dir);
|
|
83
|
-
return true;
|
|
84
|
-
};
|
|
85
|
-
if (!await isModified()) {
|
|
86
|
-
return "not_modified";
|
|
87
|
-
}
|
|
88
|
-
const data = await download_api_index.sendAPIQuery(queryParams, cache);
|
|
89
|
-
if (typeof data === "number") {
|
|
90
|
-
throw new Error(`Error retrieving document from API: ${data}`);
|
|
91
|
-
}
|
|
92
|
-
let parsedData;
|
|
93
|
-
try {
|
|
94
|
-
parsedData = JSON.parse(data);
|
|
95
|
-
} catch (err) {
|
|
96
|
-
throw new Error(`Error retrieving document from API: invalid data`);
|
|
97
|
-
}
|
|
98
|
-
if (typeof parsedData.status === "number") {
|
|
99
|
-
const figmaError = parsedData;
|
|
100
|
-
throw new Error(
|
|
101
|
-
`Error retrieving document from API: ${figmaError.err}`
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
const document = parsedData;
|
|
105
|
-
if (document.editorType !== "figma") {
|
|
106
|
-
throw new Error(
|
|
107
|
-
`Error retrieving document from API: document is for ${document.editorType}`
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
if (identicalDates(options.ifModifiedSince, document.lastModified)) {
|
|
111
|
-
return "not_modified";
|
|
112
|
-
}
|
|
113
|
-
return document;
|
|
114
|
-
}
|
|
115
|
-
async function figmaImagesQuery(options, nodes, cache) {
|
|
116
|
-
const uri = "https://api.figma.com/v1/images/" + options.file;
|
|
117
|
-
const maxLength = 2048 - uri.length;
|
|
118
|
-
const svgOptions = options.svgOptions || {};
|
|
119
|
-
const query = (ids2) => {
|
|
120
|
-
return new Promise((resolve, reject) => {
|
|
121
|
-
const params = new URLSearchParams({
|
|
122
|
-
ids: ids2.join(","),
|
|
123
|
-
format: "svg"
|
|
124
|
-
});
|
|
125
|
-
if (options.version) {
|
|
126
|
-
params.set("version", options.version);
|
|
127
|
-
}
|
|
128
|
-
params.set(
|
|
129
|
-
"svg_include_id",
|
|
130
|
-
svgOptions.includeID ? "true" : "false"
|
|
131
|
-
);
|
|
132
|
-
params.set(
|
|
133
|
-
"svg_simplify_stroke",
|
|
134
|
-
svgOptions.simplifyStroke ? "true" : "false"
|
|
135
|
-
);
|
|
136
|
-
params.set(
|
|
137
|
-
"use_absolute_bounds",
|
|
138
|
-
svgOptions.useAbsoluteBounds ? "true" : "false"
|
|
139
|
-
);
|
|
140
|
-
download_api_index.sendAPIQuery(
|
|
141
|
-
{
|
|
142
|
-
uri,
|
|
143
|
-
params,
|
|
144
|
-
headers: {
|
|
145
|
-
"X-FIGMA-TOKEN": options.token
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
cache
|
|
149
|
-
).then((data) => {
|
|
150
|
-
if (typeof data === "number") {
|
|
151
|
-
reject(data);
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
let parsedData;
|
|
155
|
-
try {
|
|
156
|
-
parsedData = JSON.parse(data);
|
|
157
|
-
} catch {
|
|
158
|
-
reject("Bad API response");
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
resolve(parsedData);
|
|
162
|
-
}).catch(reject);
|
|
163
|
-
});
|
|
164
|
-
};
|
|
165
|
-
let ids = [];
|
|
166
|
-
let idsLength = 0;
|
|
167
|
-
const allKeys = Object.keys(nodes.icons);
|
|
168
|
-
const queue = [];
|
|
169
|
-
for (let i = 0; i < allKeys.length; i++) {
|
|
170
|
-
const id = allKeys[i];
|
|
171
|
-
ids.push(id);
|
|
172
|
-
idsLength += id.length + 1;
|
|
173
|
-
if (idsLength >= maxLength) {
|
|
174
|
-
queue.push(ids.slice(0));
|
|
175
|
-
ids = [];
|
|
176
|
-
idsLength = 0;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (idsLength) {
|
|
180
|
-
queue.push(ids.slice(0));
|
|
181
|
-
}
|
|
182
|
-
const queryParams = {
|
|
183
|
-
// Params
|
|
184
|
-
total: queue.length,
|
|
185
|
-
callback: (index) => query(queue[index]),
|
|
186
|
-
// Payload to identify failed items in onfail callback
|
|
187
|
-
function: "figmaImagesQuery",
|
|
188
|
-
payload: queue
|
|
189
|
-
};
|
|
190
|
-
const results = await download_api_queue.runConcurrentQueries(queryParams);
|
|
191
|
-
let found = 0;
|
|
192
|
-
results.forEach((data) => {
|
|
193
|
-
if (!data) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
const images = data.images;
|
|
197
|
-
for (const id in images) {
|
|
198
|
-
const node = nodes.icons[id];
|
|
199
|
-
const target = images[id];
|
|
200
|
-
if (node && target) {
|
|
201
|
-
node.url = target;
|
|
202
|
-
found++;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
if (!found) {
|
|
207
|
-
throw new Error("No valid icon layers were found");
|
|
208
|
-
}
|
|
209
|
-
nodes.generatedIconsCount = found;
|
|
210
|
-
return nodes;
|
|
211
|
-
}
|
|
212
|
-
async function figmaDownloadImages(nodes, cache) {
|
|
213
|
-
const icons = nodes.icons;
|
|
214
|
-
const ids = Object.keys(icons);
|
|
215
|
-
let count = 0;
|
|
216
|
-
const filtered = [];
|
|
217
|
-
for (let i = 0; i < ids.length; i++) {
|
|
218
|
-
const id = ids[i];
|
|
219
|
-
const item = icons[id];
|
|
220
|
-
if (item.url) {
|
|
221
|
-
filtered.push(item);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
const params = {
|
|
225
|
-
// Params
|
|
226
|
-
total: filtered.length,
|
|
227
|
-
callback: (index) => {
|
|
228
|
-
return new Promise((resolve, reject) => {
|
|
229
|
-
const item = filtered[index];
|
|
230
|
-
download_api_index.sendAPIQuery(
|
|
231
|
-
{
|
|
232
|
-
uri: item.url
|
|
233
|
-
},
|
|
234
|
-
cache
|
|
235
|
-
).then((data) => {
|
|
236
|
-
if (typeof data === "string") {
|
|
237
|
-
count++;
|
|
238
|
-
item.content = data;
|
|
239
|
-
resolve(void 0);
|
|
240
|
-
} else {
|
|
241
|
-
reject(data);
|
|
242
|
-
}
|
|
243
|
-
}).catch(reject);
|
|
244
|
-
});
|
|
245
|
-
},
|
|
246
|
-
// Payload to identify failed items in onfail callback
|
|
247
|
-
function: "figmaDownloadImages",
|
|
248
|
-
payload: filtered
|
|
249
|
-
};
|
|
250
|
-
await download_api_queue.runConcurrentQueries(params);
|
|
251
|
-
if (!count) {
|
|
252
|
-
throw new Error("Error retrieving images");
|
|
253
|
-
}
|
|
254
|
-
nodes.downloadedIconsCount = count;
|
|
255
|
-
return nodes;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
exports.figmaDownloadImages = figmaDownloadImages;
|
|
259
|
-
exports.figmaFilesQuery = figmaFilesQuery;
|
|
260
|
-
exports.figmaImagesQuery = figmaImagesQuery;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { APICacheOptions } from '../../download/api/types.cjs';
|
|
2
|
-
import { DocumentNotModified } from '../../download/types/modified.cjs';
|
|
3
|
-
import { FigmaDocument } from './types/api.cjs';
|
|
4
|
-
import { FigmaIfModifiedSinceOption, FigmaFilesQueryOptions, FigmaImagesQueryOptions } from './types/options.cjs';
|
|
5
|
-
import { FigmaNodesImportResult, FigmaIconNode } from './types/result.cjs';
|
|
6
|
-
import '../../icon-set/index.cjs';
|
|
7
|
-
import '@iconify/types';
|
|
8
|
-
import '@iconify/utils/lib/customisations/defaults';
|
|
9
|
-
import '../../icon-set/types.cjs';
|
|
10
|
-
import '../../svg/index.cjs';
|
|
11
|
-
import 'cheerio';
|
|
12
|
-
import '@iconify/utils/lib/icon-set/tree';
|
|
13
|
-
import './types/nodes.cjs';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Extra parameters added to runConcurrentQueries()
|
|
17
|
-
*
|
|
18
|
-
* Can be used to identify failed items in onfail callback
|
|
19
|
-
*/
|
|
20
|
-
interface FigmaIconNodeWithURL extends FigmaIconNode {
|
|
21
|
-
url: string;
|
|
22
|
-
}
|
|
23
|
-
type FigmaConcurrentQueriesParamsFunction = 'figmaImagesQuery' | 'figmaDownloadImages';
|
|
24
|
-
interface FigmaConcurrentQueriesParams<T extends FigmaConcurrentQueriesParamsFunction> {
|
|
25
|
-
function: T;
|
|
26
|
-
payload: T extends 'figmaImagesQuery' ? string[][] : FigmaIconNodeWithURL[];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Get Figma files
|
|
30
|
-
*/
|
|
31
|
-
declare function figmaFilesQuery<T extends FigmaIfModifiedSinceOption & FigmaFilesQueryOptions>(options: T, cache?: APICacheOptions): Promise<FigmaDocument | DocumentNotModified>;
|
|
32
|
-
declare function figmaFilesQuery(options: FigmaFilesQueryOptions, cache?: APICacheOptions): Promise<FigmaDocument>;
|
|
33
|
-
/**
|
|
34
|
-
* Generate all images
|
|
35
|
-
*/
|
|
36
|
-
declare function figmaImagesQuery(options: FigmaImagesQueryOptions, nodes: FigmaNodesImportResult, cache?: APICacheOptions): Promise<FigmaNodesImportResult>;
|
|
37
|
-
/**
|
|
38
|
-
* Download all images
|
|
39
|
-
*/
|
|
40
|
-
declare function figmaDownloadImages(nodes: FigmaNodesImportResult, cache?: APICacheOptions): Promise<FigmaNodesImportResult>;
|
|
41
|
-
|
|
42
|
-
export { type FigmaConcurrentQueriesParams, type FigmaConcurrentQueriesParamsFunction, figmaDownloadImages, figmaFilesQuery, figmaImagesQuery };
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { APICacheOptions } from '../../download/api/types.mjs';
|
|
2
|
-
import { DocumentNotModified } from '../../download/types/modified.mjs';
|
|
3
|
-
import { FigmaDocument } from './types/api.mjs';
|
|
4
|
-
import { FigmaIfModifiedSinceOption, FigmaFilesQueryOptions, FigmaImagesQueryOptions } from './types/options.mjs';
|
|
5
|
-
import { FigmaNodesImportResult, FigmaIconNode } from './types/result.mjs';
|
|
6
|
-
import '../../icon-set/index.mjs';
|
|
7
|
-
import '@iconify/types';
|
|
8
|
-
import '@iconify/utils/lib/customisations/defaults';
|
|
9
|
-
import '../../icon-set/types.mjs';
|
|
10
|
-
import '../../svg/index.mjs';
|
|
11
|
-
import 'cheerio';
|
|
12
|
-
import '@iconify/utils/lib/icon-set/tree';
|
|
13
|
-
import './types/nodes.mjs';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Extra parameters added to runConcurrentQueries()
|
|
17
|
-
*
|
|
18
|
-
* Can be used to identify failed items in onfail callback
|
|
19
|
-
*/
|
|
20
|
-
interface FigmaIconNodeWithURL extends FigmaIconNode {
|
|
21
|
-
url: string;
|
|
22
|
-
}
|
|
23
|
-
type FigmaConcurrentQueriesParamsFunction = 'figmaImagesQuery' | 'figmaDownloadImages';
|
|
24
|
-
interface FigmaConcurrentQueriesParams<T extends FigmaConcurrentQueriesParamsFunction> {
|
|
25
|
-
function: T;
|
|
26
|
-
payload: T extends 'figmaImagesQuery' ? string[][] : FigmaIconNodeWithURL[];
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Get Figma files
|
|
30
|
-
*/
|
|
31
|
-
declare function figmaFilesQuery<T extends FigmaIfModifiedSinceOption & FigmaFilesQueryOptions>(options: T, cache?: APICacheOptions): Promise<FigmaDocument | DocumentNotModified>;
|
|
32
|
-
declare function figmaFilesQuery(options: FigmaFilesQueryOptions, cache?: APICacheOptions): Promise<FigmaDocument>;
|
|
33
|
-
/**
|
|
34
|
-
* Generate all images
|
|
35
|
-
*/
|
|
36
|
-
declare function figmaImagesQuery(options: FigmaImagesQueryOptions, nodes: FigmaNodesImportResult, cache?: APICacheOptions): Promise<FigmaNodesImportResult>;
|
|
37
|
-
/**
|
|
38
|
-
* Download all images
|
|
39
|
-
*/
|
|
40
|
-
declare function figmaDownloadImages(nodes: FigmaNodesImportResult, cache?: APICacheOptions): Promise<FigmaNodesImportResult>;
|
|
41
|
-
|
|
42
|
-
export { type FigmaConcurrentQueriesParams, type FigmaConcurrentQueriesParamsFunction, figmaDownloadImages, figmaFilesQuery, figmaImagesQuery };
|
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
import { sendAPIQuery } from '../../download/api/index.mjs';
|
|
2
|
-
import { apiCacheKey, getAPICache, clearAPICache } from '../../download/api/cache.mjs';
|
|
3
|
-
import { runConcurrentQueries } from '../../download/api/queue.mjs';
|
|
4
|
-
import '../../download/api/config.mjs';
|
|
5
|
-
import '../../download/api/fetch.mjs';
|
|
6
|
-
import 'fs';
|
|
7
|
-
import 'crypto';
|
|
8
|
-
import '../../misc/scan.mjs';
|
|
9
|
-
|
|
10
|
-
function identicalDates(actual, expected) {
|
|
11
|
-
if (typeof actual !== "string") {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
if (actual === expected) {
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
return new Date(actual).toString() === new Date(expected).toString();
|
|
18
|
-
}
|
|
19
|
-
async function figmaFilesQuery(options, cache) {
|
|
20
|
-
if (!options.token) {
|
|
21
|
-
throw new Error("Missing Figma API token");
|
|
22
|
-
}
|
|
23
|
-
const params = new URLSearchParams();
|
|
24
|
-
if (options.ids) {
|
|
25
|
-
params.set("ids", options.ids.join(","));
|
|
26
|
-
}
|
|
27
|
-
if (options.version) {
|
|
28
|
-
params.set("version", options.version);
|
|
29
|
-
}
|
|
30
|
-
if (options.depth) {
|
|
31
|
-
params.set("depth", options.depth.toString());
|
|
32
|
-
}
|
|
33
|
-
const queryParams = {
|
|
34
|
-
uri: "https://api.figma.com/v1/files/" + options.file,
|
|
35
|
-
params,
|
|
36
|
-
headers: {
|
|
37
|
-
"X-FIGMA-TOKEN": options.token
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
const isModified = async () => {
|
|
41
|
-
if (!cache || !options.ifModifiedSince) {
|
|
42
|
-
return true;
|
|
43
|
-
}
|
|
44
|
-
const cacheKey = apiCacheKey(queryParams);
|
|
45
|
-
const cachedData = await getAPICache(cache.dir, cacheKey);
|
|
46
|
-
if (!cachedData) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
let ifModifiedSince;
|
|
50
|
-
if (options.ifModifiedSince === true) {
|
|
51
|
-
try {
|
|
52
|
-
const parsedData2 = JSON.parse(cachedData);
|
|
53
|
-
if (typeof parsedData2.lastModified !== "string") {
|
|
54
|
-
await clearAPICache(cache.dir);
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
ifModifiedSince = parsedData2.lastModified;
|
|
58
|
-
} catch (err) {
|
|
59
|
-
await clearAPICache(cache.dir);
|
|
60
|
-
return true;
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
ifModifiedSince = options.ifModifiedSince;
|
|
64
|
-
}
|
|
65
|
-
const versionCheckParams = {
|
|
66
|
-
...queryParams,
|
|
67
|
-
params: new URLSearchParams(params)
|
|
68
|
-
};
|
|
69
|
-
versionCheckParams.params.set("depth", "1");
|
|
70
|
-
const data2 = await sendAPIQuery(versionCheckParams);
|
|
71
|
-
try {
|
|
72
|
-
if (typeof data2 === "string") {
|
|
73
|
-
const parsedData2 = JSON.parse(data2);
|
|
74
|
-
if (identicalDates(parsedData2.lastModified, ifModifiedSince)) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
} catch (err) {
|
|
79
|
-
}
|
|
80
|
-
await clearAPICache(cache.dir);
|
|
81
|
-
return true;
|
|
82
|
-
};
|
|
83
|
-
if (!await isModified()) {
|
|
84
|
-
return "not_modified";
|
|
85
|
-
}
|
|
86
|
-
const data = await sendAPIQuery(queryParams, cache);
|
|
87
|
-
if (typeof data === "number") {
|
|
88
|
-
throw new Error(`Error retrieving document from API: ${data}`);
|
|
89
|
-
}
|
|
90
|
-
let parsedData;
|
|
91
|
-
try {
|
|
92
|
-
parsedData = JSON.parse(data);
|
|
93
|
-
} catch (err) {
|
|
94
|
-
throw new Error(`Error retrieving document from API: invalid data`);
|
|
95
|
-
}
|
|
96
|
-
if (typeof parsedData.status === "number") {
|
|
97
|
-
const figmaError = parsedData;
|
|
98
|
-
throw new Error(
|
|
99
|
-
`Error retrieving document from API: ${figmaError.err}`
|
|
100
|
-
);
|
|
101
|
-
}
|
|
102
|
-
const document = parsedData;
|
|
103
|
-
if (document.editorType !== "figma") {
|
|
104
|
-
throw new Error(
|
|
105
|
-
`Error retrieving document from API: document is for ${document.editorType}`
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
if (identicalDates(options.ifModifiedSince, document.lastModified)) {
|
|
109
|
-
return "not_modified";
|
|
110
|
-
}
|
|
111
|
-
return document;
|
|
112
|
-
}
|
|
113
|
-
async function figmaImagesQuery(options, nodes, cache) {
|
|
114
|
-
const uri = "https://api.figma.com/v1/images/" + options.file;
|
|
115
|
-
const maxLength = 2048 - uri.length;
|
|
116
|
-
const svgOptions = options.svgOptions || {};
|
|
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
|
-
params.set(
|
|
127
|
-
"svg_include_id",
|
|
128
|
-
svgOptions.includeID ? "true" : "false"
|
|
129
|
-
);
|
|
130
|
-
params.set(
|
|
131
|
-
"svg_simplify_stroke",
|
|
132
|
-
svgOptions.simplifyStroke ? "true" : "false"
|
|
133
|
-
);
|
|
134
|
-
params.set(
|
|
135
|
-
"use_absolute_bounds",
|
|
136
|
-
svgOptions.useAbsoluteBounds ? "true" : "false"
|
|
137
|
-
);
|
|
138
|
-
sendAPIQuery(
|
|
139
|
-
{
|
|
140
|
-
uri,
|
|
141
|
-
params,
|
|
142
|
-
headers: {
|
|
143
|
-
"X-FIGMA-TOKEN": options.token
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
cache
|
|
147
|
-
).then((data) => {
|
|
148
|
-
if (typeof data === "number") {
|
|
149
|
-
reject(data);
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
let parsedData;
|
|
153
|
-
try {
|
|
154
|
-
parsedData = JSON.parse(data);
|
|
155
|
-
} catch {
|
|
156
|
-
reject("Bad API response");
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
resolve(parsedData);
|
|
160
|
-
}).catch(reject);
|
|
161
|
-
});
|
|
162
|
-
};
|
|
163
|
-
let ids = [];
|
|
164
|
-
let idsLength = 0;
|
|
165
|
-
const allKeys = Object.keys(nodes.icons);
|
|
166
|
-
const queue = [];
|
|
167
|
-
for (let i = 0; i < allKeys.length; i++) {
|
|
168
|
-
const id = allKeys[i];
|
|
169
|
-
ids.push(id);
|
|
170
|
-
idsLength += id.length + 1;
|
|
171
|
-
if (idsLength >= maxLength) {
|
|
172
|
-
queue.push(ids.slice(0));
|
|
173
|
-
ids = [];
|
|
174
|
-
idsLength = 0;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (idsLength) {
|
|
178
|
-
queue.push(ids.slice(0));
|
|
179
|
-
}
|
|
180
|
-
const queryParams = {
|
|
181
|
-
// Params
|
|
182
|
-
total: queue.length,
|
|
183
|
-
callback: (index) => query(queue[index]),
|
|
184
|
-
// Payload to identify failed items in onfail callback
|
|
185
|
-
function: "figmaImagesQuery",
|
|
186
|
-
payload: queue
|
|
187
|
-
};
|
|
188
|
-
const results = await runConcurrentQueries(queryParams);
|
|
189
|
-
let found = 0;
|
|
190
|
-
results.forEach((data) => {
|
|
191
|
-
if (!data) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
const images = data.images;
|
|
195
|
-
for (const id in images) {
|
|
196
|
-
const node = nodes.icons[id];
|
|
197
|
-
const target = images[id];
|
|
198
|
-
if (node && target) {
|
|
199
|
-
node.url = target;
|
|
200
|
-
found++;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
});
|
|
204
|
-
if (!found) {
|
|
205
|
-
throw new Error("No valid icon layers were found");
|
|
206
|
-
}
|
|
207
|
-
nodes.generatedIconsCount = found;
|
|
208
|
-
return nodes;
|
|
209
|
-
}
|
|
210
|
-
async function figmaDownloadImages(nodes, cache) {
|
|
211
|
-
const icons = nodes.icons;
|
|
212
|
-
const ids = Object.keys(icons);
|
|
213
|
-
let count = 0;
|
|
214
|
-
const filtered = [];
|
|
215
|
-
for (let i = 0; i < ids.length; i++) {
|
|
216
|
-
const id = ids[i];
|
|
217
|
-
const item = icons[id];
|
|
218
|
-
if (item.url) {
|
|
219
|
-
filtered.push(item);
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
const params = {
|
|
223
|
-
// Params
|
|
224
|
-
total: filtered.length,
|
|
225
|
-
callback: (index) => {
|
|
226
|
-
return new Promise((resolve, reject) => {
|
|
227
|
-
const item = filtered[index];
|
|
228
|
-
sendAPIQuery(
|
|
229
|
-
{
|
|
230
|
-
uri: item.url
|
|
231
|
-
},
|
|
232
|
-
cache
|
|
233
|
-
).then((data) => {
|
|
234
|
-
if (typeof data === "string") {
|
|
235
|
-
count++;
|
|
236
|
-
item.content = data;
|
|
237
|
-
resolve(void 0);
|
|
238
|
-
} else {
|
|
239
|
-
reject(data);
|
|
240
|
-
}
|
|
241
|
-
}).catch(reject);
|
|
242
|
-
});
|
|
243
|
-
},
|
|
244
|
-
// Payload to identify failed items in onfail callback
|
|
245
|
-
function: "figmaDownloadImages",
|
|
246
|
-
payload: filtered
|
|
247
|
-
};
|
|
248
|
-
await runConcurrentQueries(params);
|
|
249
|
-
if (!count) {
|
|
250
|
-
throw new Error("Error retrieving images");
|
|
251
|
-
}
|
|
252
|
-
nodes.downloadedIconsCount = count;
|
|
253
|
-
return nodes;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
export { figmaDownloadImages, figmaFilesQuery, figmaImagesQuery };
|
|
@@ -1,53 +0,0 @@
|
|
|
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 };
|
|
@@ -1,53 +0,0 @@
|
|
|
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 };
|