@iconify/tools 4.2.0 → 5.0.0-beta.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.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 +23 -35
- package/lib/import/figma/types/nodes.d.ts +12 -21
- package/lib/import/figma/types/options.d.ts +23 -32
- package/lib/import/figma/types/result.d.ts +16 -24
- 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
|
@@ -10,23 +10,22 @@ type GetConcurrentQueryCallback<T> = (index: number) => Promise<T>;
|
|
|
10
10
|
* Parameters
|
|
11
11
|
*/
|
|
12
12
|
interface ConcurrentQueriesCommonParams<T> {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
limit?: number;
|
|
14
|
+
retries?: number;
|
|
15
|
+
onError?: (index: number, error: unknown, params: ConcurrentQueriesParams<T>) => void | Promise<void>;
|
|
16
|
+
onSuccess?: (index: number, params: ConcurrentQueriesParams<T>, result: T) => void;
|
|
17
|
+
onStart?: (index: number, params: ConcurrentQueriesParams<T>) => void;
|
|
18
18
|
}
|
|
19
19
|
interface ConcurrentQueriesParamsWithCount<T> extends ConcurrentQueriesCommonParams<T> {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
total: number;
|
|
21
|
+
callback: (index: number) => Promise<T>;
|
|
22
22
|
}
|
|
23
23
|
interface ConcurrentQueriesParamsWithPromises<T> extends ConcurrentQueriesCommonParams<T> {
|
|
24
|
-
|
|
24
|
+
promises: Promise<T>[];
|
|
25
25
|
}
|
|
26
26
|
type ConcurrentQueriesParams<T> = ConcurrentQueriesParamsWithCount<T> | ConcurrentQueriesParamsWithPromises<T>;
|
|
27
27
|
/**
|
|
28
28
|
* Runs concurrent async operations
|
|
29
29
|
*/
|
|
30
30
|
declare function runConcurrentQueries<T>(params: ConcurrentQueriesParams<T>): Promise<T[]>;
|
|
31
|
-
|
|
32
|
-
export { type ConcurrentQueriesCommonParams, type ConcurrentQueriesParams, type ConcurrentQueriesParamsWithCount, type ConcurrentQueriesParamsWithPromises, type GetConcurrentQueryCallback, defaultQueueParams, runConcurrentQueries };
|
|
31
|
+
export { ConcurrentQueriesCommonParams, ConcurrentQueriesParams, ConcurrentQueriesParamsWithCount, ConcurrentQueriesParamsWithPromises, GetConcurrentQueryCallback, defaultQueueParams, runConcurrentQueries };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default parameters
|
|
3
|
+
*/
|
|
4
|
+
const defaultQueueParams = {
|
|
5
|
+
limit: 5,
|
|
6
|
+
retries: 3
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Runs concurrent async operations
|
|
10
|
+
*/
|
|
11
|
+
function runConcurrentQueries(params) {
|
|
12
|
+
const allParams = {
|
|
13
|
+
...defaultQueueParams,
|
|
14
|
+
...params
|
|
15
|
+
};
|
|
16
|
+
const paramsWithCount = allParams;
|
|
17
|
+
const paramsWithPromises = allParams;
|
|
18
|
+
const isCallback = typeof paramsWithCount.total === "number";
|
|
19
|
+
const count = isCallback ? paramsWithCount.total : paramsWithPromises.promises.length;
|
|
20
|
+
const limit = Math.max(1, Math.min(allParams.limit || 1, count));
|
|
21
|
+
const retries = Math.max(1, allParams.retries || 1);
|
|
22
|
+
const results = Array(count).fill(void 0);
|
|
23
|
+
let nextIndex = 0;
|
|
24
|
+
const resolving = /* @__PURE__ */ new Set();
|
|
25
|
+
let rejected = false;
|
|
26
|
+
let resolved = false;
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
function resolvedItem() {
|
|
29
|
+
if (rejected || resolved) return;
|
|
30
|
+
if (!resolving.size && nextIndex > count) {
|
|
31
|
+
resolved = true;
|
|
32
|
+
resolve(results);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (resolving.size < limit && nextIndex <= count) startNext();
|
|
36
|
+
}
|
|
37
|
+
function fail(index, err) {
|
|
38
|
+
function done(failed) {
|
|
39
|
+
resolving.delete(index);
|
|
40
|
+
if (failed) {
|
|
41
|
+
rejected = true;
|
|
42
|
+
reject(err);
|
|
43
|
+
} else resolvedItem();
|
|
44
|
+
}
|
|
45
|
+
if (allParams.onError) {
|
|
46
|
+
let retry;
|
|
47
|
+
try {
|
|
48
|
+
retry = allParams.onError(index, err, params);
|
|
49
|
+
} catch (err2) {
|
|
50
|
+
err = err2;
|
|
51
|
+
done(true);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (retry instanceof Promise) {
|
|
55
|
+
retry.then(() => {
|
|
56
|
+
done(false);
|
|
57
|
+
}).catch((err2) => {
|
|
58
|
+
err = err2;
|
|
59
|
+
done(true);
|
|
60
|
+
});
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
done(false);
|
|
64
|
+
} else done(true);
|
|
65
|
+
}
|
|
66
|
+
function run(index, retry) {
|
|
67
|
+
resolving.add(index);
|
|
68
|
+
const p = isCallback ? paramsWithCount.callback(index) : paramsWithPromises.promises[index];
|
|
69
|
+
allParams.onStart?.(index, params);
|
|
70
|
+
p.then((value) => {
|
|
71
|
+
resolving.delete(index);
|
|
72
|
+
results[index] = value;
|
|
73
|
+
allParams.onSuccess?.(index, params, value);
|
|
74
|
+
resolvedItem();
|
|
75
|
+
}).catch((err) => {
|
|
76
|
+
if (retry < retries) setTimeout(() => {
|
|
77
|
+
run(index, retry + 1);
|
|
78
|
+
});
|
|
79
|
+
else if (!rejected) fail(index, err);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function startNext() {
|
|
83
|
+
const index = nextIndex++;
|
|
84
|
+
if (index >= count) {
|
|
85
|
+
resolvedItem();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
run(index, 0);
|
|
89
|
+
}
|
|
90
|
+
for (let i = 0; i < limit; i++) startNext();
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { defaultQueueParams, runConcurrentQueries };
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
* API Cache
|
|
3
3
|
*/
|
|
4
4
|
interface APICacheOptions {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
dir: string;
|
|
6
|
+
ttl: number;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* Params
|
|
10
10
|
*/
|
|
11
11
|
interface APIQueryParams {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
uri: string;
|
|
13
|
+
params?: URLSearchParams;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
export type { APICacheOptions, APIQueryParams };
|
|
16
|
+
export { APICacheOptions, APIQueryParams };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { ExportTargetOptions } from
|
|
2
|
-
|
|
1
|
+
import { ExportTargetOptions } from "../../export/helpers/prepare.js";
|
|
3
2
|
/**
|
|
4
3
|
* Get current branch from cloned git repo
|
|
5
4
|
*/
|
|
6
5
|
declare function getGitRepoBranch(options: ExportTargetOptions, checkout?: string): Promise<string>;
|
|
7
|
-
|
|
8
|
-
export { getGitRepoBranch };
|
|
6
|
+
export { getGitRepoBranch };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { execAsync } from "../../misc/exec.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get current branch from cloned git repo
|
|
5
|
+
*/
|
|
6
|
+
async function getGitRepoBranch(options, checkout) {
|
|
7
|
+
const branch = (await execAsync("git branch --show-current", { cwd: options.target })).stdout.trim();
|
|
8
|
+
if (typeof checkout === "string" && branch !== checkout) {
|
|
9
|
+
await execAsync(`git checkout ${checkout} "${options.target}"`);
|
|
10
|
+
return await getGitRepoBranch(options);
|
|
11
|
+
}
|
|
12
|
+
return branch;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export { getGitRepoBranch };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { ExportTargetOptions } from
|
|
2
|
-
|
|
1
|
+
import { ExportTargetOptions } from "../../export/helpers/prepare.js";
|
|
3
2
|
/**
|
|
4
3
|
* Get latest hash from cloned git repo
|
|
5
4
|
*/
|
|
6
5
|
declare function getGitRepoHash(options: ExportTargetOptions): Promise<string>;
|
|
7
|
-
|
|
8
|
-
export { getGitRepoHash };
|
|
6
|
+
export { getGitRepoHash };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { execAsync } from "../../misc/exec.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get latest hash from cloned git repo
|
|
5
|
+
*/
|
|
6
|
+
async function getGitRepoHash(options) {
|
|
7
|
+
return (await execAsync("git rev-parse HEAD", { cwd: options.target })).stdout.trim();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { getGitRepoHash };
|
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
import { ExportTargetOptions } from
|
|
2
|
-
import { DocumentNotModified } from
|
|
3
|
-
import { DownloadSourceMixin } from
|
|
4
|
-
|
|
1
|
+
import { ExportTargetOptions } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { DocumentNotModified } from "../types/modified.js";
|
|
3
|
+
import { DownloadSourceMixin } from "../types/sources.js";
|
|
5
4
|
interface IfModifiedSinceOption {
|
|
6
|
-
|
|
5
|
+
ifModifiedSince: string | true | DownloadGitRepoResult;
|
|
7
6
|
}
|
|
8
7
|
/**
|
|
9
8
|
* Options for downloadGitRepo()
|
|
10
9
|
*/
|
|
11
10
|
interface DownloadGitRepoOptions extends ExportTargetOptions, Partial<IfModifiedSinceOption> {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
remote: string;
|
|
12
|
+
branch: string;
|
|
13
|
+
log?: boolean;
|
|
15
14
|
}
|
|
16
15
|
/**
|
|
17
16
|
* Result
|
|
18
17
|
*/
|
|
19
18
|
interface DownloadGitRepoResult extends DownloadSourceMixin<'git'> {
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
contentsDir: string;
|
|
20
|
+
hash: string;
|
|
22
21
|
}
|
|
23
22
|
/**
|
|
24
23
|
* Download Git repo
|
|
25
24
|
*/
|
|
26
25
|
declare function downloadGitRepo<T extends IfModifiedSinceOption & DownloadGitRepoOptions>(options: T): Promise<DownloadGitRepoResult | DocumentNotModified>;
|
|
27
26
|
declare function downloadGitRepo(options: DownloadGitRepoOptions): Promise<DownloadGitRepoResult>;
|
|
28
|
-
|
|
29
|
-
export { type DownloadGitRepoOptions, type DownloadGitRepoResult, downloadGitRepo };
|
|
27
|
+
export { DownloadGitRepoOptions, DownloadGitRepoResult, downloadGitRepo };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { prepareDirectoryForExport } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { execAsync } from "../../misc/exec.js";
|
|
3
|
+
import { getGitRepoBranch } from "./branch.js";
|
|
4
|
+
import { getGitRepoHash } from "./hash.js";
|
|
5
|
+
import { resetGitRepoContents } from "./reset.js";
|
|
6
|
+
|
|
7
|
+
async function downloadGitRepo(options) {
|
|
8
|
+
const { remote, branch } = options;
|
|
9
|
+
const hasHashInTarget = options.target.includes("{hash}");
|
|
10
|
+
const ifModifiedSince = options.ifModifiedSince;
|
|
11
|
+
if (ifModifiedSince || hasHashInTarget) {
|
|
12
|
+
const latestHash = (await execAsync(`git ls-remote ${remote} --branch ${branch}`)).stdout.split(/\s/).shift();
|
|
13
|
+
if (hasHashInTarget) options.target = options.target.replace("{hash}", latestHash);
|
|
14
|
+
try {
|
|
15
|
+
await getGitRepoBranch(options, branch);
|
|
16
|
+
if (ifModifiedSince) {
|
|
17
|
+
if (latestHash === (ifModifiedSince === true ? await getGitRepoHash(options) : typeof ifModifiedSince === "string" ? ifModifiedSince : ifModifiedSince.downloadType === "git" ? ifModifiedSince.hash : null)) {
|
|
18
|
+
await resetGitRepoContents(options.target);
|
|
19
|
+
return "not_modified";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
} catch {}
|
|
23
|
+
}
|
|
24
|
+
const target = options.target = await prepareDirectoryForExport({
|
|
25
|
+
...options,
|
|
26
|
+
cleanup: true
|
|
27
|
+
});
|
|
28
|
+
if (options.log) console.log(`Cloning ${remote}#${branch} to ${target}`);
|
|
29
|
+
await execAsync(`git clone --branch ${branch} --no-tags --depth 1 ${remote} "${target}"`);
|
|
30
|
+
const hash = await getGitRepoHash(options);
|
|
31
|
+
await getGitRepoBranch(options, branch);
|
|
32
|
+
return {
|
|
33
|
+
downloadType: "git",
|
|
34
|
+
contentsDir: target,
|
|
35
|
+
hash
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { downloadGitRepo };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { execAsync } from "../../misc/exec.js";
|
|
2
|
+
import "../../index.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Reset Git repo contents
|
|
6
|
+
*/
|
|
7
|
+
async function resetGitRepoContents(target) {
|
|
8
|
+
await execAsync("git add -A", { cwd: target });
|
|
9
|
+
await execAsync("git reset --hard --quiet", { cwd: target });
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { resetGitRepoContents };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { GitHubAPIOptions } from
|
|
2
|
-
|
|
1
|
+
import { GitHubAPIOptions } from "./types.js";
|
|
3
2
|
/**
|
|
4
3
|
* Get latest hash from GitHub using API
|
|
5
4
|
*/
|
|
6
5
|
declare function getGitHubRepoHash(options: GitHubAPIOptions): Promise<string>;
|
|
7
|
-
|
|
8
|
-
export { getGitHubRepoHash };
|
|
6
|
+
export { getGitHubRepoHash };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { sendAPIQuery } from "../api/index.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get latest hash from GitHub using API
|
|
5
|
+
*/
|
|
6
|
+
async function getGitHubRepoHash(options) {
|
|
7
|
+
const data = await sendAPIQuery({
|
|
8
|
+
uri: `https://api.github.com/repos/${options.user}/${options.repo}/branches/${options.branch}`,
|
|
9
|
+
headers: {
|
|
10
|
+
Accept: "application/vnd.github.v3+json",
|
|
11
|
+
Authorization: "token " + options.token
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
if (typeof data !== "string") throw new Error(`Error downloading data from GitHub API: ${data}`);
|
|
15
|
+
const hash = JSON.parse(data)?.commit?.sha;
|
|
16
|
+
if (typeof hash !== "string") throw new Error("Error parsing GitHub API response");
|
|
17
|
+
return hash;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { getGitHubRepoHash };
|
|
@@ -1,31 +1,29 @@
|
|
|
1
|
-
import { ExportTargetOptions } from
|
|
2
|
-
import { DocumentNotModified } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { ExportTargetOptions } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { DocumentNotModified } from "../types/modified.js";
|
|
3
|
+
import { DownloadSourceMixin } from "../types/sources.js";
|
|
4
|
+
import { GitHubAPIOptions } from "./types.js";
|
|
6
5
|
interface IfModifiedSinceOption {
|
|
7
|
-
|
|
6
|
+
ifModifiedSince: string | DownloadGitHubRepoResult;
|
|
8
7
|
}
|
|
9
8
|
/**
|
|
10
9
|
* Options for downloadGitHubRepo()
|
|
11
10
|
*/
|
|
12
11
|
interface DownloadGitHubRepoOptions extends ExportTargetOptions, GitHubAPIOptions, Partial<IfModifiedSinceOption> {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
cleanupOldFiles?: boolean;
|
|
13
|
+
cleanupOldDirectories?: boolean;
|
|
14
|
+
log?: boolean;
|
|
16
15
|
}
|
|
17
16
|
/**
|
|
18
17
|
* Result
|
|
19
18
|
*/
|
|
20
19
|
interface DownloadGitHubRepoResult extends DownloadSourceMixin<'github'> {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
rootDir: string;
|
|
21
|
+
contentsDir: string;
|
|
22
|
+
hash: string;
|
|
24
23
|
}
|
|
25
24
|
/**
|
|
26
25
|
* Download GitHub repo using API
|
|
27
26
|
*/
|
|
28
27
|
declare function downloadGitHubRepo<T extends IfModifiedSinceOption & DownloadGitHubRepoOptions>(options: T): Promise<DownloadGitHubRepoResult | DocumentNotModified>;
|
|
29
28
|
declare function downloadGitHubRepo(options: DownloadGitHubRepoOptions): Promise<DownloadGitHubRepoResult>;
|
|
30
|
-
|
|
31
|
-
export { type DownloadGitHubRepoOptions, type DownloadGitHubRepoResult, downloadGitHubRepo };
|
|
29
|
+
export { DownloadGitHubRepoOptions, DownloadGitHubRepoResult, downloadGitHubRepo };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { prepareDirectoryForExport } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { getGitHubRepoHash } from "./hash.js";
|
|
3
|
+
import { downloadFile } from "../api/download.js";
|
|
4
|
+
import { unzip } from "../helpers/unzip.js";
|
|
5
|
+
import { promises } from "fs";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Find matching directories
|
|
9
|
+
*/
|
|
10
|
+
async function findMatchingDirs(rootDir, hash) {
|
|
11
|
+
const matches = [];
|
|
12
|
+
const files = await promises.readdir(rootDir);
|
|
13
|
+
for (let i = 0; i < files.length; i++) {
|
|
14
|
+
const file = files[i];
|
|
15
|
+
const lastChunk = file.split("-").pop();
|
|
16
|
+
if (lastChunk.length < 4 || lastChunk !== hash.slice(0, lastChunk.length)) continue;
|
|
17
|
+
if ((await promises.stat(rootDir + "/" + file)).isDirectory()) matches.push(file);
|
|
18
|
+
}
|
|
19
|
+
return matches;
|
|
20
|
+
}
|
|
21
|
+
async function downloadGitHubRepo(options) {
|
|
22
|
+
const hash = await getGitHubRepoHash(options);
|
|
23
|
+
const ifModifiedSince = options.ifModifiedSince;
|
|
24
|
+
if (ifModifiedSince) {
|
|
25
|
+
if (hash === (typeof ifModifiedSince === "string" ? ifModifiedSince : ifModifiedSince.downloadType === "github" ? ifModifiedSince.hash : null)) return "not_modified";
|
|
26
|
+
}
|
|
27
|
+
options.target = options.target.replace("{hash}", hash);
|
|
28
|
+
const rootDir = options.target = await prepareDirectoryForExport(options);
|
|
29
|
+
const archiveTarget = rootDir + "/" + hash + ".zip";
|
|
30
|
+
let exists = false;
|
|
31
|
+
try {
|
|
32
|
+
exists = (await promises.stat(archiveTarget)).isFile();
|
|
33
|
+
} catch (err) {}
|
|
34
|
+
if (!exists) await downloadFile({
|
|
35
|
+
uri: `https://api.github.com/repos/${options.user}/${options.repo}/zipball/${hash}`,
|
|
36
|
+
headers: {
|
|
37
|
+
Accept: "application/vnd.github.v3+json",
|
|
38
|
+
Authorization: "token " + options.token
|
|
39
|
+
}
|
|
40
|
+
}, archiveTarget);
|
|
41
|
+
const files = await promises.readdir(rootDir);
|
|
42
|
+
const hashSearch = "-" + hash;
|
|
43
|
+
for (let i = 0; i < files.length; i++) {
|
|
44
|
+
if (files[i] === hash + ".zip") continue;
|
|
45
|
+
const filename = rootDir + "/" + files[i];
|
|
46
|
+
const stat = await promises.lstat(filename);
|
|
47
|
+
const isDir = stat.isDirectory();
|
|
48
|
+
if (stat.isSymbolicLink() || isDir && filename.slice(0 - hashSearch.length) === hashSearch || isDir && options.cleanupOldDirectories !== false || !isDir && options.cleanupOldFiles) try {
|
|
49
|
+
await promises.rm(filename, {
|
|
50
|
+
force: true,
|
|
51
|
+
recursive: true
|
|
52
|
+
});
|
|
53
|
+
} catch (err) {}
|
|
54
|
+
}
|
|
55
|
+
await unzip(archiveTarget, rootDir);
|
|
56
|
+
const matchingDirs = await findMatchingDirs(rootDir, hash);
|
|
57
|
+
if (matchingDirs.length !== 1) throw new Error(`Error unpacking ${hash}.zip`);
|
|
58
|
+
return {
|
|
59
|
+
downloadType: "github",
|
|
60
|
+
rootDir,
|
|
61
|
+
contentsDir: rootDir + "/" + matchingDirs[0],
|
|
62
|
+
hash
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { downloadGitHubRepo };
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
* API options
|
|
3
3
|
*/
|
|
4
4
|
interface GitHubAPIOptions {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
token: string;
|
|
6
|
+
user: string;
|
|
7
|
+
repo: string;
|
|
8
|
+
branch: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
export type { GitHubAPIOptions };
|
|
10
|
+
export { GitHubAPIOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { GitLabAPIOptions } from
|
|
2
|
-
|
|
1
|
+
import { GitLabAPIOptions } from "./types.js";
|
|
3
2
|
/**
|
|
4
3
|
* Get latest hash from GitHub using API
|
|
5
4
|
*/
|
|
6
5
|
declare function getGitLabRepoHash(options: GitLabAPIOptions): Promise<string>;
|
|
7
|
-
|
|
8
|
-
export { getGitLabRepoHash };
|
|
6
|
+
export { getGitLabRepoHash };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { sendAPIQuery } from "../api/index.js";
|
|
2
|
+
import { defaultGitLabBaseURI } from "./types.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get latest hash from GitHub using API
|
|
6
|
+
*/
|
|
7
|
+
async function getGitLabRepoHash(options) {
|
|
8
|
+
const data = await sendAPIQuery({
|
|
9
|
+
uri: `${options.uri || defaultGitLabBaseURI}/${options.project}/repository/branches/${options.branch}/`,
|
|
10
|
+
headers: { Authorization: "token " + options.token }
|
|
11
|
+
});
|
|
12
|
+
if (typeof data !== "string") throw new Error(`Error downloading data from GitLab API: ${data}`);
|
|
13
|
+
const content = JSON.parse(data);
|
|
14
|
+
const item = (content instanceof Array ? content : [content]).find((item$1) => item$1.name === options.branch && typeof item$1.commit.id === "string");
|
|
15
|
+
if (!item) throw new Error("Error parsing GitLab API response");
|
|
16
|
+
return item.commit.id;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { getGitLabRepoHash };
|
|
@@ -1,31 +1,29 @@
|
|
|
1
|
-
import { ExportTargetOptions } from
|
|
2
|
-
import { DocumentNotModified } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
import { ExportTargetOptions } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { DocumentNotModified } from "../types/modified.js";
|
|
3
|
+
import { DownloadSourceMixin } from "../types/sources.js";
|
|
4
|
+
import { GitLabAPIOptions } from "./types.js";
|
|
6
5
|
interface IfModifiedSinceOption {
|
|
7
|
-
|
|
6
|
+
ifModifiedSince: string | DownloadGitLabRepoResult;
|
|
8
7
|
}
|
|
9
8
|
/**
|
|
10
9
|
* Options for downloadGitLabRepo()
|
|
11
10
|
*/
|
|
12
11
|
interface DownloadGitLabRepoOptions extends ExportTargetOptions, GitLabAPIOptions, Partial<IfModifiedSinceOption> {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
cleanupOldFiles?: boolean;
|
|
13
|
+
cleanupOldDirectories?: boolean;
|
|
14
|
+
log?: boolean;
|
|
16
15
|
}
|
|
17
16
|
/**
|
|
18
17
|
* Result
|
|
19
18
|
*/
|
|
20
19
|
interface DownloadGitLabRepoResult extends DownloadSourceMixin<'gitlab'> {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
rootDir: string;
|
|
21
|
+
contentsDir: string;
|
|
22
|
+
hash: string;
|
|
24
23
|
}
|
|
25
24
|
/**
|
|
26
25
|
* Download GitLab repo using API
|
|
27
26
|
*/
|
|
28
27
|
declare function downloadGitLabRepo<T extends IfModifiedSinceOption & DownloadGitLabRepoOptions>(options: T): Promise<DownloadGitLabRepoResult | DocumentNotModified>;
|
|
29
28
|
declare function downloadGitLabRepo(options: DownloadGitLabRepoOptions): Promise<DownloadGitLabRepoResult>;
|
|
30
|
-
|
|
31
|
-
export { type DownloadGitLabRepoOptions, type DownloadGitLabRepoResult, downloadGitLabRepo };
|
|
29
|
+
export { DownloadGitLabRepoOptions, DownloadGitLabRepoResult, downloadGitLabRepo };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { prepareDirectoryForExport } from "../../export/helpers/prepare.js";
|
|
2
|
+
import { downloadFile } from "../api/download.js";
|
|
3
|
+
import { unzip } from "../helpers/unzip.js";
|
|
4
|
+
import { defaultGitLabBaseURI } from "./types.js";
|
|
5
|
+
import { getGitLabRepoHash } from "./hash.js";
|
|
6
|
+
import { promises } from "fs";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Find matching directories
|
|
10
|
+
*/
|
|
11
|
+
async function findMatchingDirs(rootDir, hash) {
|
|
12
|
+
const matches = [];
|
|
13
|
+
const files = await promises.readdir(rootDir);
|
|
14
|
+
for (let i = 0; i < files.length; i++) {
|
|
15
|
+
const file = files[i];
|
|
16
|
+
const lastChunk = file.split("-").pop();
|
|
17
|
+
if (lastChunk.length < 4 || lastChunk !== hash.slice(0, lastChunk.length)) continue;
|
|
18
|
+
if ((await promises.stat(rootDir + "/" + file)).isDirectory()) matches.push(file);
|
|
19
|
+
}
|
|
20
|
+
return matches;
|
|
21
|
+
}
|
|
22
|
+
async function downloadGitLabRepo(options) {
|
|
23
|
+
const hash = await getGitLabRepoHash(options);
|
|
24
|
+
const ifModifiedSince = options.ifModifiedSince;
|
|
25
|
+
if (ifModifiedSince) {
|
|
26
|
+
if (hash === (typeof ifModifiedSince === "string" ? ifModifiedSince : ifModifiedSince.downloadType === "gitlab" ? ifModifiedSince.hash : null)) return "not_modified";
|
|
27
|
+
}
|
|
28
|
+
options.target = options.target.replace("{hash}", hash);
|
|
29
|
+
const rootDir = options.target = await prepareDirectoryForExport(options);
|
|
30
|
+
const archiveTarget = rootDir + "/" + hash + ".zip";
|
|
31
|
+
let exists = false;
|
|
32
|
+
try {
|
|
33
|
+
exists = (await promises.stat(archiveTarget)).isFile();
|
|
34
|
+
} catch (err) {}
|
|
35
|
+
if (!exists) await downloadFile({
|
|
36
|
+
uri: `${options.uri || defaultGitLabBaseURI}/${options.project}/repository/archive.zip?sha=${hash}`,
|
|
37
|
+
headers: { Authorization: "token " + options.token }
|
|
38
|
+
}, archiveTarget);
|
|
39
|
+
const files = await promises.readdir(rootDir);
|
|
40
|
+
const hashSearch = "-" + hash;
|
|
41
|
+
for (let i = 0; i < files.length; i++) {
|
|
42
|
+
if (files[i] === hash + ".zip") continue;
|
|
43
|
+
const filename = rootDir + "/" + files[i];
|
|
44
|
+
const stat = await promises.lstat(filename);
|
|
45
|
+
const isDir = stat.isDirectory();
|
|
46
|
+
if (stat.isSymbolicLink() || isDir && filename.slice(0 - hashSearch.length) === hashSearch || isDir && options.cleanupOldDirectories !== false || !isDir && options.cleanupOldFiles) try {
|
|
47
|
+
await promises.rm(filename, {
|
|
48
|
+
force: true,
|
|
49
|
+
recursive: true
|
|
50
|
+
});
|
|
51
|
+
} catch (err) {}
|
|
52
|
+
}
|
|
53
|
+
await unzip(archiveTarget, rootDir);
|
|
54
|
+
const matchingDirs = await findMatchingDirs(rootDir, hash);
|
|
55
|
+
if (matchingDirs.length !== 1) throw new Error(`Error unpacking ${hash}.zip`);
|
|
56
|
+
return {
|
|
57
|
+
downloadType: "gitlab",
|
|
58
|
+
rootDir,
|
|
59
|
+
contentsDir: rootDir + "/" + matchingDirs[0],
|
|
60
|
+
hash
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export { downloadGitLabRepo };
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
* API options
|
|
3
3
|
*/
|
|
4
4
|
interface GitLabAPIOptions {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
uri?: string;
|
|
6
|
+
token: string;
|
|
7
|
+
project: string;
|
|
8
|
+
branch: string;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Default base URI for GitLab API
|
|
12
12
|
*/
|
|
13
13
|
declare const defaultGitLabBaseURI = "https://gitlab.com/api/v4/projects";
|
|
14
|
-
|
|
15
|
-
export { type GitLabAPIOptions, defaultGitLabBaseURI };
|
|
14
|
+
export { GitLabAPIOptions, defaultGitLabBaseURI };
|