@design-edito/tools 0.4.5 → 0.4.11
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/TODO.md +269 -0
- package/agnostic/arrays/dedupe/index.js +9 -7
- package/agnostic/arrays/dedupe/index.test.js +24 -0
- package/agnostic/arrays/find-duplicates/index.js +34 -22
- package/agnostic/arrays/find-duplicates/index.test.js +31 -0
- package/agnostic/arrays/index.d.ts +2 -2
- package/agnostic/arrays/index.js +2 -2
- package/agnostic/arrays/is-array-of/index.js +28 -26
- package/agnostic/arrays/is-array-of/index.test.js +56 -0
- package/agnostic/arrays/make/index.d.ts +1 -1
- package/agnostic/arrays/make/index.js +11 -6
- package/agnostic/arrays/make/index.test.js +10 -0
- package/agnostic/arrays/random-pick/index.js +38 -22
- package/agnostic/arrays/random-pick/index.test.js +23 -0
- package/agnostic/arrays/shuffle/index.js +15 -11
- package/agnostic/arrays/shuffle/index.test.js +14 -0
- package/agnostic/booleans/is-falsy/index.js +24 -15
- package/agnostic/booleans/is-falsy/index.test.js +26 -0
- package/agnostic/colors/channels/index.js +139 -936
- package/agnostic/colors/channels/index.test.js +64 -0
- package/agnostic/colors/contrast/index.js +24 -643
- package/agnostic/colors/contrast/index.test.js +21 -0
- package/agnostic/colors/convert/index.js +811 -837
- package/agnostic/colors/convert/index.test.js +98 -0
- package/agnostic/colors/cssColorsMap.js +153 -0
- package/agnostic/colors/distance/index.js +66 -538
- package/agnostic/colors/distance/index.test.js +21 -0
- package/agnostic/colors/grayscale/index.js +95 -872
- package/agnostic/colors/grayscale/index.test.js +34 -0
- package/agnostic/colors/index.d.ts +4 -4
- package/agnostic/colors/index.js +4 -4
- package/agnostic/colors/invert/index.js +34 -719
- package/agnostic/colors/invert/index.test.js +31 -0
- package/agnostic/colors/lerp/index.js +75 -804
- package/agnostic/colors/lerp/index.test.js +55 -0
- package/agnostic/colors/luminance/index.js +17 -625
- package/agnostic/colors/luminance/index.test.js +30 -0
- package/agnostic/colors/palette/index.js +83 -917
- package/agnostic/colors/palette/index.test.js +35 -0
- package/agnostic/colors/rotate/index.js +35 -835
- package/agnostic/colors/rotate/index.test.js +45 -0
- package/agnostic/colors/tidy/index.js +79 -530
- package/agnostic/colors/tidy/index.test.js +45 -0
- package/agnostic/colors/typechecks/index.js +188 -250
- package/agnostic/colors/typechecks/index.test.js +113 -0
- package/agnostic/colors/types.js +1 -0
- package/agnostic/css/bem/index.js +134 -171
- package/agnostic/css/clss/index.js +64 -29
- package/agnostic/css/clss/index.test.js +60 -0
- package/agnostic/css/generate-nice-color/index.js +26 -71
- package/agnostic/css/generate-nice-color/index.test.js +8 -0
- package/agnostic/css/index.d.ts +2 -2
- package/agnostic/css/index.js +2 -2
- package/agnostic/css/is-valid-css-class-name/index.js +14 -8
- package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
- package/agnostic/css/scale/index.d.ts +46 -16
- package/agnostic/css/scale/index.js +70 -54
- package/agnostic/css/scale/index.test.js +88 -0
- package/agnostic/css/styles-set/index.js +151 -178
- package/agnostic/errors/index.d.ts +1 -1
- package/agnostic/errors/index.js +1 -1
- package/agnostic/errors/register/index.js +45 -49
- package/agnostic/errors/unknown-to-string/index.js +17 -10
- package/agnostic/errors/unknown-to-string/index.test.js +35 -0
- package/agnostic/html/get-node-ancestors/index.js +29 -29
- package/agnostic/html/get-node-ancestors/index.test.js +58 -0
- package/agnostic/html/get-position-inside-parent/index.js +13 -8
- package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
- package/agnostic/html/hyper-json/cast/index.js +128 -2931
- package/agnostic/html/hyper-json/index.js +23 -2954
- package/agnostic/html/hyper-json/method/index.js +10 -14
- package/agnostic/html/hyper-json/serialize/index.js +88 -222
- package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +14 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +27 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +13 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +34 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +42 -2935
- package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +47 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +10 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +45 -2936
- package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +22 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +26 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +19 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +67 -2935
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +21 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +89 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +20 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +11 -11
- package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +37 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +16 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +21 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +31 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +10 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +33 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +13 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +17 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +59 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +23 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +10 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +26 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +10 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +53 -2935
- package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +27 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +31 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +55 -2940
- package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +29 -2935
- package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +29 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +53 -2935
- package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +232 -2936
- package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +89 -2936
- package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +20 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +23 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +17 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +27 -2937
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +10 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +11 -2939
- package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +84 -2938
- package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +14 -2938
- package/agnostic/html/hyper-json/smart-tags/index.js +28 -181
- package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +12 -195
- package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +12 -195
- package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +12 -2939
- package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +24 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +18 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +56 -2937
- package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/index.js +2 -2
- package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +18 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +9 -193
- package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +16 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +12 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +40 -2935
- package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +16 -2938
- package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +18 -2938
- package/agnostic/html/hyper-json/transformer/index.js +112 -148
- package/agnostic/html/hyper-json/tree/index.js +411 -2928
- package/agnostic/html/hyper-json/types/index.js +27 -18
- package/agnostic/html/hyper-json/utils/index.js +497 -2921
- package/agnostic/html/index.d.ts +2 -2
- package/agnostic/html/index.js +2 -2
- package/agnostic/html/insert-node/index.js +27 -16
- package/agnostic/html/insert-node/index.test.js +73 -0
- package/agnostic/html/placeholders/index.js +26 -29
- package/agnostic/html/replace-in-element/index.js +31 -48
- package/agnostic/html/replace-in-element/index.test.js +80 -0
- package/agnostic/html/selector-to-element/index.js +53 -39
- package/agnostic/html/selector-to-element/index.test.js +69 -0
- package/agnostic/html/string-to-nodes/index.js +24 -25
- package/agnostic/html/string-to-nodes/index.test.js +54 -0
- package/agnostic/index.d.ts +4 -4
- package/agnostic/index.js +4 -4
- package/agnostic/misc/assert/index.js +60 -66
- package/agnostic/misc/cast/index.js +123 -57
- package/agnostic/misc/cast/index.test.js +134 -0
- package/agnostic/misc/connection/index.js +55 -36
- package/agnostic/misc/connection/index.test.js +143 -0
- package/agnostic/misc/crawler/index.js +68 -46
- package/agnostic/misc/crawler/index.test.js +56 -0
- package/agnostic/misc/crossenv/detect-runtime/index.js +41 -13
- package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
- package/agnostic/misc/crossenv/types.js +21 -14
- package/agnostic/misc/crossenv/window/index.js +45 -24
- package/agnostic/misc/crossenv/window/index.test.js +24 -0
- package/agnostic/misc/data-size/index.js +182 -294
- package/agnostic/misc/data-size/index.test.js +100 -0
- package/agnostic/misc/data-size/types.js +1 -0
- package/agnostic/misc/index.d.ts +5 -5
- package/agnostic/misc/index.js +5 -5
- package/agnostic/misc/is-constructor-function/index.js +12 -6
- package/agnostic/misc/is-constructor-function/index.test.js +36 -0
- package/agnostic/misc/is-nullish/index.js +24 -11
- package/agnostic/misc/is-nullish/index.test.js +44 -0
- package/agnostic/misc/logs/index.d.ts +1 -1
- package/agnostic/misc/logs/index.js +1 -1
- package/agnostic/misc/logs/logger/index.js +115 -140
- package/agnostic/misc/logs/make-text-block/index.js +13 -13
- package/agnostic/misc/logs/styles/index.js +29 -48
- package/agnostic/misc/lorem-ipsum/index.js +51 -201
- package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
- package/agnostic/misc/normalize-extension/index.js +99 -88
- package/agnostic/misc/normalize-extension/index.test.js +40 -0
- package/agnostic/misc/outcome/index.js +20 -14
- package/agnostic/misc/outcome/index.test.js +40 -0
- package/agnostic/numbers/absolute-modulo/index.js +9 -6
- package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
- package/agnostic/numbers/approximate-rational/index.js +86 -69
- package/agnostic/numbers/approximate-rational/index.test.js +90 -0
- package/agnostic/numbers/clamp/index.js +12 -8
- package/agnostic/numbers/clamp/index.test.js +24 -0
- package/agnostic/numbers/geometric-progressions/index.js +25 -16
- package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
- package/agnostic/numbers/index.d.ts +2 -2
- package/agnostic/numbers/index.js +2 -2
- package/agnostic/numbers/interpolate/index.js +25 -10
- package/agnostic/numbers/interpolate/index.test.js +40 -0
- package/agnostic/numbers/round/index.js +30 -15
- package/agnostic/numbers/round/index.test.js +56 -0
- package/agnostic/objects/deep-get-property/index.js +30 -27
- package/agnostic/objects/deep-get-property/index.test.js +59 -0
- package/agnostic/objects/enums/is-in-enum/index.js +17 -11
- package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
- package/agnostic/objects/flatten-getters/index.js +15 -14
- package/agnostic/objects/flatten-getters/index.test.js +78 -0
- package/agnostic/objects/index.d.ts +4 -4
- package/agnostic/objects/index.js +4 -4
- package/agnostic/objects/is-object/index.js +16 -9
- package/agnostic/objects/is-object/index.test.js +60 -0
- package/agnostic/objects/is-record/index.js +12 -7
- package/agnostic/objects/is-record/index.test.js +48 -0
- package/agnostic/objects/record-format/index.js +18 -12
- package/agnostic/objects/record-format/index.test.js +92 -0
- package/agnostic/objects/record-map/index.js +16 -11
- package/agnostic/objects/record-map/index.test.js +56 -0
- package/agnostic/objects/sort-keys/index.js +15 -11
- package/agnostic/objects/sort-keys/index.test.js +37 -0
- package/agnostic/objects/validation/index.js +21 -8
- package/agnostic/objects/validation/index.test.js +72 -0
- package/agnostic/optim/memoize/index.js +24 -16
- package/agnostic/optim/memoize/index.test.js +30 -0
- package/agnostic/optim/throttle-debounce/index.js +120 -102
- package/agnostic/optim/throttle-debounce/index.test.js +44 -0
- package/agnostic/optim/throttle-debounce/types.js +1 -0
- package/agnostic/random/hex-char/index.js +8 -10
- package/agnostic/random/hex-char/index.test.js +20 -0
- package/agnostic/random/index.d.ts +1 -1
- package/agnostic/random/index.js +1 -1
- package/agnostic/random/random/index.js +17 -14
- package/agnostic/random/random/index.test.js +73 -0
- package/agnostic/random/uuid/index.js +28 -20
- package/agnostic/random/uuid/index.test.js +45 -0
- package/agnostic/regexps/index.js +126 -84
- package/agnostic/regexps/index.test.js +108 -0
- package/agnostic/sanitization/file-name/index.js +24 -8
- package/agnostic/sanitization/file-name/index.test.js +23 -0
- package/agnostic/sanitization/html/index.js +172 -122
- package/agnostic/sanitization/index.d.ts +1 -1
- package/agnostic/sanitization/index.js +1 -1
- package/agnostic/sanitization/path/index.js +23 -15
- package/agnostic/sanitization/path/index.test.js +18 -0
- package/agnostic/sanitization/types.js +1 -0
- package/agnostic/sanitization/user-input/index.js +36 -24
- package/agnostic/sanitization/user-input/index.test.js +31 -0
- package/agnostic/strings/char-codes/index.js +123 -55
- package/agnostic/strings/index.d.ts +1 -1
- package/agnostic/strings/index.js +1 -1
- package/agnostic/strings/matches/index.js +35 -16
- package/agnostic/strings/normalize-indent/index.js +34 -16
- package/agnostic/strings/parse-table/index.js +153 -86
- package/agnostic/strings/replace-all/index.js +36 -15
- package/agnostic/strings/to-alphanum/index.js +23 -8
- package/agnostic/strings/trim/index.js +22 -9
- package/agnostic/time/dates/format-date/index.js +140 -72
- package/agnostic/time/duration/index.js +106 -140
- package/agnostic/time/timeout/index.js +24 -16
- package/agnostic/time/transitions/index.js +200 -158
- package/agnostic/time/wait/index.js +10 -8
- package/agnostic/typescript/types.js +1 -0
- package/components/BeforeAfter/index.controlled.js +95 -0
- package/components/BeforeAfter/index.js +54 -189
- package/components/BeforeAfter/utils.js +9 -0
- package/components/Disclaimer/index.js +50 -110
- package/components/Drawer/index.js +81 -196
- package/components/EventListener/index.js +29 -80
- package/components/Gallery/index.js +146 -221
- package/components/Gallery/utils.js +12 -0
- package/components/Image/index.js +66 -293
- package/components/IntersectionObserver/index.js +62 -110
- package/components/Overlayer/index.js +59 -103
- package/components/Paginator/index.js +124 -155
- package/components/ResizeObserver/index.js +66 -119
- package/components/ResizeObserver/style.module.css +0 -0
- package/components/Scrllgngn/index.js +171 -468
- package/components/ScrollListener/index.js +97 -276
- package/components/ScrollListener/utils.js +51 -0
- package/components/Sequencer/index.controlled.js +67 -0
- package/components/Sequencer/index.js +105 -262
- package/components/ShadowRoot/index.js +42 -96
- package/components/Subtitles/index.js +107 -244
- package/components/Subtitles/types.js +1 -0
- package/components/Subtitles/utils.js +102 -0
- package/components/Theatre/index.js +88 -136
- package/components/UIModule/index.js +156 -199
- package/components/Video/index.js +292 -857
- package/components/Video/utils.js +137 -0
- package/components/_WIP_AudioQuote/index.js +1 -0
- package/components/_WIP_Icon/index.js +1 -0
- package/components/index.d.ts +4 -4
- package/components/index.js +4 -4
- package/components/public-classnames.js +18 -0
- package/components/utils/index.js +11 -11
- package/components/utils/types.js +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/node/@aws-s3/index.test.js +6 -0
- package/node/@aws-s3/storage/directory/copy-dir/index.js +66 -72
- package/node/@aws-s3/storage/directory/index.d.ts +1 -1
- package/node/@aws-s3/storage/directory/index.js +1 -1
- package/node/@aws-s3/storage/directory/list/index.js +32 -42
- package/node/@aws-s3/storage/directory/move-dir/index.js +68 -86
- package/node/@aws-s3/storage/directory/remove-dir/index.js +56 -67
- package/node/@aws-s3/storage/file/copy/index.js +41 -53
- package/node/@aws-s3/storage/file/download/index.js +29 -40
- package/node/@aws-s3/storage/file/exists/index.js +35 -43
- package/node/@aws-s3/storage/file/index.d.ts +1 -1
- package/node/@aws-s3/storage/file/index.js +1 -1
- package/node/@aws-s3/storage/file/move/index.js +57 -63
- package/node/@aws-s3/storage/file/remove/index.js +35 -43
- package/node/@aws-s3/storage/file/stat/index.js +33 -47
- package/node/@aws-s3/storage/file/upload/index.js +52 -63
- package/node/@design-edito/index.js +1 -0
- package/node/@express/@multer/index.js +61 -55
- package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -29
- package/node/@google-cloud/storage/directory/copy-dir/index.js +35 -41
- package/node/@google-cloud/storage/directory/index.d.ts +1 -1
- package/node/@google-cloud/storage/directory/index.js +1 -1
- package/node/@google-cloud/storage/directory/list/index.js +28 -35
- package/node/@google-cloud/storage/directory/move-dir/index.js +43 -42
- package/node/@google-cloud/storage/directory/remove-dir/index.js +34 -38
- package/node/@google-cloud/storage/file/copy/index.js +35 -40
- package/node/@google-cloud/storage/file/download/index.js +27 -34
- package/node/@google-cloud/storage/file/exists/index.js +25 -31
- package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -35
- package/node/@google-cloud/storage/file/get-metadata/index.js +28 -31
- package/node/@google-cloud/storage/file/get-permissions/index.js +25 -31
- package/node/@google-cloud/storage/file/index.d.ts +3 -3
- package/node/@google-cloud/storage/file/index.js +3 -3
- package/node/@google-cloud/storage/file/move/index.js +38 -42
- package/node/@google-cloud/storage/file/remove/index.js +34 -35
- package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -95
- package/node/@google-cloud/storage/file/stat/index.js +34 -38
- package/node/@google-cloud/storage/file/update-metadata/index.js +30 -31
- package/node/@google-cloud/storage/file/upload/index.js +44 -46
- package/node/@google-cloud/storage/index.d.ts +1 -1
- package/node/@google-cloud/storage/index.js +1 -1
- package/node/cloud-storage/clients/index.js +35 -15
- package/node/cloud-storage/operations/copy-dir/index.js +30 -203
- package/node/cloud-storage/operations/copy-file/index.js +30 -152
- package/node/cloud-storage/operations/download-file/index.js +30 -103
- package/node/cloud-storage/operations/exists-file/index.js +30 -103
- package/node/cloud-storage/operations/index.d.ts +2 -2
- package/node/cloud-storage/operations/index.js +2 -2
- package/node/cloud-storage/operations/list-dir/index.js +29 -98
- package/node/cloud-storage/operations/move-dir/index.js +30 -169
- package/node/cloud-storage/operations/move-file/index.js +30 -157
- package/node/cloud-storage/operations/remove-dir/index.js +29 -159
- package/node/cloud-storage/operations/remove-file/index.js +29 -121
- package/node/cloud-storage/operations/stat-file/index.js +29 -124
- package/node/cloud-storage/operations/upload-file/index.js +30 -162
- package/node/encryption/@aes-256-gcm/buffer/index.js +31 -72
- package/node/encryption/@aes-256-gcm/uint8-array/index.js +55 -55
- package/node/encryption/key/index.js +19 -12
- package/node/files/index.d.ts +1 -1
- package/node/files/index.js +1 -1
- package/node/files/is-in-directory/index.js +11 -8
- package/node/files/read-write/index.js +11 -15
- package/node/files/subpaths/index.js +156 -121
- package/node/ftps/directory/copy-dir/index.js +55 -62
- package/node/ftps/directory/list/index.js +24 -29
- package/node/ftps/directory/move-dir/index.js +38 -38
- package/node/ftps/directory/remove-dir/index.js +39 -42
- package/node/ftps/file/copy/index.js +42 -47
- package/node/ftps/file/download/index.js +29 -34
- package/node/ftps/file/exists/index.js +38 -36
- package/node/ftps/file/index.d.ts +2 -2
- package/node/ftps/file/index.js +2 -2
- package/node/ftps/file/move/index.js +46 -44
- package/node/ftps/file/remove/index.js +36 -39
- package/node/ftps/file/stat/index.js +30 -38
- package/node/ftps/file/upload/index.js +40 -44
- package/node/images/create/index.js +10 -562
- package/node/images/format/index.js +264 -815
- package/node/images/metadata/index.js +10 -571
- package/node/images/transform/index.js +169 -1022
- package/node/images/transform/operations/blur/index.js +11 -24
- package/node/images/transform/operations/brighten/index.js +11 -24
- package/node/images/transform/operations/extend/index.js +25 -589
- package/node/images/transform/operations/extract/index.js +15 -28
- package/node/images/transform/operations/flatten/index.js +20 -584
- package/node/images/transform/operations/flip/index.js +2 -6
- package/node/images/transform/operations/flop/index.js +2 -6
- package/node/images/transform/operations/hue/index.js +13 -26
- package/node/images/transform/operations/index.d.ts +3 -3
- package/node/images/transform/operations/index.js +3 -3
- package/node/images/transform/operations/level/index.js +14 -30
- package/node/images/transform/operations/lighten/index.js +13 -26
- package/node/images/transform/operations/normalize/index.js +14 -27
- package/node/images/transform/operations/overlay/index.js +89 -673
- package/node/images/transform/operations/resize/index.js +46 -610
- package/node/images/transform/operations/rotate/index.js +20 -584
- package/node/images/transform/operations/saturate/index.js +14 -27
- package/node/images/types.js +34 -31
- package/node/images/utils/index.js +84 -568
- package/node/index.d.ts +2 -2
- package/node/index.js +2 -2
- package/node/process/on-exit/index.js +45 -26
- package/node/process/prompt-continue/index.js +29 -14
- package/node/process/spawner/index.js +104 -134
- package/node/sftp/directory/copy-dir/index.js +52 -60
- package/node/sftp/directory/index.d.ts +1 -1
- package/node/sftp/directory/index.js +1 -1
- package/node/sftp/directory/list/index.js +22 -29
- package/node/sftp/directory/move-dir/index.js +35 -35
- package/node/sftp/directory/remove-dir/index.js +39 -42
- package/node/sftp/file/copy/index.js +37 -45
- package/node/sftp/file/download/index.js +26 -32
- package/node/sftp/file/exists/index.js +29 -29
- package/node/sftp/file/index.d.ts +2 -2
- package/node/sftp/file/index.js +2 -2
- package/node/sftp/file/move/index.js +39 -38
- package/node/sftp/file/remove/index.js +31 -34
- package/node/sftp/file/stat/index.js +26 -37
- package/node/sftp/file/upload/index.js +34 -38
- package/package.json +1 -1
|
@@ -1,37 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
async function remove(bucket, targetPath, options) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
|
|
2
|
+
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Removes a file from a specified Google Cloud Storage bucket.
|
|
5
|
+
*
|
|
6
|
+
* This function deletes the object located at `targetPath` in the given bucket.
|
|
7
|
+
* The operation can be customized using optional `fileOptions` (to reference the object)
|
|
8
|
+
* and `deleteOptions` (to influence GCS deletion behaviour).
|
|
9
|
+
* If the `ignoreMissing` option is **true**, the function treats a missing object as a
|
|
10
|
+
* successful outcome instead of returning an error.
|
|
11
|
+
*
|
|
12
|
+
* @param {Bucket} bucket - The Google Cloud Storage bucket instance.
|
|
13
|
+
* @param {string} targetPath - The path of the file to remove in the bucket.
|
|
14
|
+
* @param {RemoveOptions} [options] - Optional settings for configuring the removal process.
|
|
15
|
+
* @returns {Promise<Outcome.Either<true, string>>} A promise that resolves to an Outcome.Either.
|
|
16
|
+
* - On success: `Outcome.makeSuccess(true)` indicating the removal was successful.
|
|
17
|
+
* - On failure: `Outcome.makeFailure(errStr)` with an error message if the removal fails.
|
|
18
|
+
*/
|
|
19
|
+
export async function remove(bucket, targetPath, options) {
|
|
20
|
+
const { fileOptions, deleteOptions, ignoreMissing = true } = options ?? {};
|
|
21
|
+
try {
|
|
22
|
+
const file = bucket.file(targetPath, fileOptions);
|
|
23
|
+
const [exists] = await file.exists();
|
|
24
|
+
if (!exists) {
|
|
25
|
+
if (ignoreMissing)
|
|
26
|
+
return Outcome.makeSuccess(true);
|
|
27
|
+
return Outcome.makeFailure(`File not found at ${targetPath}.`);
|
|
28
|
+
}
|
|
29
|
+
await file.delete(deleteOptions);
|
|
30
|
+
return Outcome.makeSuccess(true);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const errStr = unknownToString(err);
|
|
34
|
+
return Outcome.makeFailure(errStr);
|
|
27
35
|
}
|
|
28
|
-
await file.delete(deleteOptions);
|
|
29
|
-
return makeSuccess(true);
|
|
30
|
-
} catch (err) {
|
|
31
|
-
const errStr = unknownToString(err);
|
|
32
|
-
return makeFailure(errStr);
|
|
33
|
-
}
|
|
34
36
|
}
|
|
35
|
-
export {
|
|
36
|
-
remove
|
|
37
|
-
};
|
|
@@ -1,96 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
2
|
+
import { download } from '../download/index.js';
|
|
3
|
+
import { remove } from '../remove/index.js';
|
|
4
|
+
import { upload } from '../upload/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Revokes the signed URLs for a file in Google Cloud Storage by downloading the file,
|
|
7
|
+
* deleting it, and re-uploading it to effectively invalidate any previously generated signed URLs.
|
|
8
|
+
*
|
|
9
|
+
* This function first attempts to download the file from the bucket, then removes the file,
|
|
10
|
+
* and finally re-uploads the file to the same path. The re-upload effectively revokes any signed URLs that
|
|
11
|
+
* were generated for the file, as they are tied to the file's existence and content.
|
|
12
|
+
*
|
|
13
|
+
* @param {Bucket} bucket - The Google Cloud Storage bucket containing the file.
|
|
14
|
+
* @param {string} targetPath - The path of the file for which the signed URLs are to be revoked.
|
|
15
|
+
* @param {RevokeSignedUrlsOptions} [options] - Optional configuration options for the file operations.
|
|
16
|
+
* @returns {Promise<Outcome.Either<true, string>>} A promise that resolves to an `Outcome.Either`.
|
|
17
|
+
* - On success: `Outcome.makeSuccess(true)` if the file has been successfully re-uploaded after deletion.
|
|
18
|
+
* - On failure: `Outcome.makeFailure(errStr)` with an error message if any of the steps (download, remove, or upload) fail.
|
|
19
|
+
*/
|
|
20
|
+
export async function revokeSignedUrls(bucket, targetPath, options) {
|
|
21
|
+
const { downloadOptions, removeOptions, uploadOptions } = options ?? {};
|
|
22
|
+
const downloadAttempt = await download(bucket, targetPath, downloadOptions);
|
|
23
|
+
if (!downloadAttempt.success)
|
|
24
|
+
return downloadAttempt;
|
|
25
|
+
const deletionAttempt = await remove(bucket, targetPath, removeOptions);
|
|
26
|
+
if (!deletionAttempt.success)
|
|
27
|
+
return deletionAttempt;
|
|
28
|
+
const downloaded = downloadAttempt.payload;
|
|
29
|
+
const reuploadAttempt = await upload(bucket, targetPath, downloaded, uploadOptions);
|
|
30
|
+
if (!reuploadAttempt.success)
|
|
31
|
+
return reuploadAttempt;
|
|
32
|
+
return Outcome.makeSuccess(true);
|
|
4
33
|
}
|
|
5
|
-
function makeFailure(error) {
|
|
6
|
-
return { success: false, error };
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// src/agnostic/errors/unknown-to-string/index.ts
|
|
10
|
-
function unknownToString(unk, encoding) {
|
|
11
|
-
if (unk instanceof Error) return unk.message;
|
|
12
|
-
if (unk instanceof Buffer) return unk.toString(encoding ?? "utf-8");
|
|
13
|
-
if (typeof unk === "string") return unk;
|
|
14
|
-
if (typeof unk === "object" && unk !== null) return JSON.stringify(unk);
|
|
15
|
-
return `${unk}`;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// src/node/@google-cloud/storage/file/download/index.ts
|
|
19
|
-
async function download(bucket, sourcePath, options) {
|
|
20
|
-
const { fileOptions, downloadOptions } = options ?? {};
|
|
21
|
-
try {
|
|
22
|
-
const file = bucket.file(sourcePath, fileOptions);
|
|
23
|
-
const stream = file.createReadStream(downloadOptions);
|
|
24
|
-
stream.on("error", (err) => {
|
|
25
|
-
throw err;
|
|
26
|
-
});
|
|
27
|
-
return makeSuccess(stream);
|
|
28
|
-
} catch (err) {
|
|
29
|
-
const errStr = unknownToString(err);
|
|
30
|
-
return makeFailure(errStr);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// src/node/@google-cloud/storage/file/remove/index.ts
|
|
35
|
-
async function remove(bucket, targetPath, options) {
|
|
36
|
-
const { fileOptions, deleteOptions, ignoreMissing = true } = options ?? {};
|
|
37
|
-
try {
|
|
38
|
-
const file = bucket.file(targetPath, fileOptions);
|
|
39
|
-
const [exists] = await file.exists();
|
|
40
|
-
if (!exists) {
|
|
41
|
-
if (ignoreMissing) return makeSuccess(true);
|
|
42
|
-
return makeFailure(`File not found at ${targetPath}.`);
|
|
43
|
-
}
|
|
44
|
-
await file.delete(deleteOptions);
|
|
45
|
-
return makeSuccess(true);
|
|
46
|
-
} catch (err) {
|
|
47
|
-
const errStr = unknownToString(err);
|
|
48
|
-
return makeFailure(errStr);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// src/node/@google-cloud/storage/file/upload/index.ts
|
|
53
|
-
async function upload(bucket, targetPath, fileStream, options) {
|
|
54
|
-
const { fileOptions, saveOptions, overwrite = false } = options ?? {};
|
|
55
|
-
const file = bucket.file(targetPath, fileOptions);
|
|
56
|
-
if (!overwrite) {
|
|
57
|
-
try {
|
|
58
|
-
const [exists] = await file.exists();
|
|
59
|
-
if (exists) {
|
|
60
|
-
return makeFailure(`File already exists at ${targetPath}.`);
|
|
61
|
-
}
|
|
62
|
-
} catch (err) {
|
|
63
|
-
const errStr = unknownToString(err);
|
|
64
|
-
return makeFailure(errStr);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
await new Promise((resolve, reject) => {
|
|
69
|
-
const writeStream = file.createWriteStream(saveOptions);
|
|
70
|
-
fileStream.pipe(writeStream);
|
|
71
|
-
fileStream.on("error", reject);
|
|
72
|
-
writeStream.on("finish", resolve);
|
|
73
|
-
writeStream.on("error", reject);
|
|
74
|
-
});
|
|
75
|
-
return makeSuccess(true);
|
|
76
|
-
} catch (err) {
|
|
77
|
-
const errStr = unknownToString(err);
|
|
78
|
-
return makeFailure(errStr);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
// src/node/@google-cloud/storage/file/revoke-signed-urls/index.ts
|
|
83
|
-
async function revokeSignedUrls(bucket, targetPath, options) {
|
|
84
|
-
const { downloadOptions, removeOptions, uploadOptions } = options ?? {};
|
|
85
|
-
const downloadAttempt = await download(bucket, targetPath, downloadOptions);
|
|
86
|
-
if (!downloadAttempt.success) return downloadAttempt;
|
|
87
|
-
const deletionAttempt = await remove(bucket, targetPath, removeOptions);
|
|
88
|
-
if (!deletionAttempt.success) return deletionAttempt;
|
|
89
|
-
const downloaded = downloadAttempt.payload;
|
|
90
|
-
const reuploadAttempt = await upload(bucket, targetPath, downloaded, uploadOptions);
|
|
91
|
-
if (!reuploadAttempt.success) return reuploadAttempt;
|
|
92
|
-
return makeSuccess(true);
|
|
93
|
-
}
|
|
94
|
-
export {
|
|
95
|
-
revokeSignedUrls
|
|
96
|
-
};
|
|
@@ -1,39 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
2
|
+
import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Retrieves metadata for a single GCS object.
|
|
5
|
+
*
|
|
6
|
+
* @param {Bucket} bucket – GCS bucket.
|
|
7
|
+
* @param {string} path – Object path.
|
|
8
|
+
* @param {StatOptions} [options] – Extra getMetadata options.
|
|
9
|
+
* @returns {Promise<Outcome.Either<Stat, string>>}
|
|
10
|
+
*/
|
|
11
|
+
export async function stat(bucket, path, options) {
|
|
12
|
+
const { fileOptions, getMetadataOptions } = options ?? {};
|
|
13
|
+
try {
|
|
14
|
+
const [meta] = await bucket
|
|
15
|
+
.file(path, fileOptions)
|
|
16
|
+
.getMetadata(getMetadataOptions);
|
|
17
|
+
const res = {
|
|
18
|
+
size: meta.size !== undefined
|
|
19
|
+
? Number(meta.size)
|
|
20
|
+
: undefined,
|
|
21
|
+
modifiedAt: meta.updated !== undefined
|
|
22
|
+
? new Date(meta.updated)
|
|
23
|
+
: undefined,
|
|
24
|
+
checksum: meta.md5Hash ?? meta.crc32c,
|
|
25
|
+
contentType: meta.contentType,
|
|
26
|
+
metadata: meta.metadata,
|
|
27
|
+
storageClass: meta.storageClass,
|
|
28
|
+
raw: meta
|
|
29
|
+
};
|
|
30
|
+
return Outcome.makeSuccess(res);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
return Outcome.makeFailure(unknownToString(err));
|
|
34
|
+
}
|
|
4
35
|
}
|
|
5
|
-
function makeFailure(error) {
|
|
6
|
-
return { success: false, error };
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// src/agnostic/errors/unknown-to-string/index.ts
|
|
10
|
-
function unknownToString(unk, encoding) {
|
|
11
|
-
if (unk instanceof Error) return unk.message;
|
|
12
|
-
if (unk instanceof Buffer) return unk.toString(encoding ?? "utf-8");
|
|
13
|
-
if (typeof unk === "string") return unk;
|
|
14
|
-
if (typeof unk === "object" && unk !== null) return JSON.stringify(unk);
|
|
15
|
-
return `${unk}`;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// src/node/@google-cloud/storage/file/stat/index.ts
|
|
19
|
-
async function stat(bucket, path, options) {
|
|
20
|
-
const { fileOptions, getMetadataOptions } = options ?? {};
|
|
21
|
-
try {
|
|
22
|
-
const [meta] = await bucket.file(path, fileOptions).getMetadata(getMetadataOptions);
|
|
23
|
-
const res = {
|
|
24
|
-
size: meta.size !== void 0 ? Number(meta.size) : void 0,
|
|
25
|
-
modifiedAt: meta.updated !== void 0 ? new Date(meta.updated) : void 0,
|
|
26
|
-
checksum: meta.md5Hash ?? meta.crc32c,
|
|
27
|
-
contentType: meta.contentType,
|
|
28
|
-
metadata: meta.metadata,
|
|
29
|
-
storageClass: meta.storageClass,
|
|
30
|
-
raw: meta
|
|
31
|
-
};
|
|
32
|
-
return makeSuccess(res);
|
|
33
|
-
} catch (err) {
|
|
34
|
-
return makeFailure(unknownToString(err));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export {
|
|
38
|
-
stat
|
|
39
|
-
};
|
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
|
|
2
|
+
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Updates the metadata of a file in a Google Cloud Storage bucket.
|
|
5
|
+
*
|
|
6
|
+
* This function allows updating the metadata of a file located at `targetPath` in the given bucket.
|
|
7
|
+
* The metadata is updated according to the provided `metadata` object, which contains the new metadata key-value pairs.
|
|
8
|
+
* It can be customized using optional `fileOptions` and `metadataOptions` to control the update behavior.
|
|
9
|
+
*
|
|
10
|
+
* @param {Bucket} bucket - The Google Cloud Storage bucket object containing the file whose metadata is being updated.
|
|
11
|
+
* @param {string} targetPath - The path of the file whose metadata is to be updated.
|
|
12
|
+
* @param {Record<string, any>} metadata - The metadata object containing key-value pairs to be set on the file.
|
|
13
|
+
* @param {UpdateFileMetadataOptions} [options] - Optional configuration options for the metadata update operation.
|
|
14
|
+
* @returns {Promise<Outcome.Either<true, string>>} A promise that resolves to an `Outcome.Either`.
|
|
15
|
+
* - On success: `Outcome.makeSuccess(true)` indicating the metadata was successfully updated.
|
|
16
|
+
* - On failure: `Outcome.makeFailure(errStr)` with an error message if the metadata update operation fails.
|
|
17
|
+
*
|
|
18
|
+
* @throws {Error} Throws an error if the metadata update operation fails (e.g., file not found, insufficient permissions, etc.).
|
|
19
|
+
*/
|
|
20
|
+
export async function updateFileMetadata(bucket, targetPath, metadata, options) {
|
|
21
|
+
const { fileOptions, metadataOptions } = options ?? {};
|
|
22
|
+
try {
|
|
23
|
+
const file = bucket.file(targetPath, fileOptions);
|
|
24
|
+
await file.setMetadata(metadata, metadataOptions);
|
|
25
|
+
return Outcome.makeSuccess(true);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const errStr = unknownToString(err);
|
|
29
|
+
return Outcome.makeFailure(errStr);
|
|
30
|
+
}
|
|
8
31
|
}
|
|
9
|
-
|
|
10
|
-
// src/agnostic/misc/outcome/index.ts
|
|
11
|
-
function makeSuccess(payload) {
|
|
12
|
-
return { success: true, payload };
|
|
13
|
-
}
|
|
14
|
-
function makeFailure(error) {
|
|
15
|
-
return { success: false, error };
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// src/node/@google-cloud/storage/file/update-metadata/index.ts
|
|
19
|
-
async function updateFileMetadata(bucket, targetPath, metadata, options) {
|
|
20
|
-
const { fileOptions, metadataOptions } = options ?? {};
|
|
21
|
-
try {
|
|
22
|
-
const file = bucket.file(targetPath, fileOptions);
|
|
23
|
-
await file.setMetadata(metadata, metadataOptions);
|
|
24
|
-
return makeSuccess(true);
|
|
25
|
-
} catch (err) {
|
|
26
|
-
const errStr = unknownToString(err);
|
|
27
|
-
return makeFailure(errStr);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export {
|
|
31
|
-
updateFileMetadata
|
|
32
|
-
};
|
|
@@ -1,49 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
1
|
+
import { unknownToString } from '../../../../../agnostic/errors/unknown-to-string/index.js';
|
|
2
|
+
import * as Outcome from '../../../../../agnostic/misc/outcome/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Uploads a file stream to a specified Google Cloud Storage bucket.
|
|
5
|
+
*
|
|
6
|
+
* This function uploads the provided file stream to the specified bucket at the given target path.
|
|
7
|
+
* The upload can be customized using optional `fileOptions` and `saveOptions`.
|
|
8
|
+
* If the `overwrite` option is false and a file already exists at the target path, the upload is aborted.
|
|
9
|
+
*
|
|
10
|
+
* @param {Bucket} bucket - The Google Cloud Storage bucket object.
|
|
11
|
+
* @param {string} targetPath - The target path where the file will be saved in the bucket.
|
|
12
|
+
* @param {Readable} fileStream - The file content to be uploaded.
|
|
13
|
+
* @param {UploadOptions} [options] - Optional options to configure the upload process.
|
|
14
|
+
* @returns {Promise<Outcome.Either<true, string>>} A promise that resolves to an Outcome.Either.
|
|
15
|
+
* - On success: Outcome.makeSuccess(true) indicating the upload was successful.
|
|
16
|
+
* - On failure: Outcome.makeFailure(errStr) with an error message if the upload fails.
|
|
17
|
+
*/
|
|
18
|
+
export async function upload(bucket, targetPath, fileStream, options) {
|
|
19
|
+
const { fileOptions, saveOptions, overwrite = false } = options ?? {};
|
|
20
|
+
const file = bucket.file(targetPath, fileOptions);
|
|
21
|
+
if (!overwrite) {
|
|
22
|
+
try {
|
|
23
|
+
const [exists] = await file.exists();
|
|
24
|
+
if (exists) {
|
|
25
|
+
return Outcome.makeFailure(`File already exists at ${targetPath}.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const errStr = unknownToString(err);
|
|
30
|
+
return Outcome.makeFailure(errStr);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
23
33
|
try {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
await new Promise((resolve, reject) => {
|
|
35
|
+
const writeStream = file.createWriteStream(saveOptions);
|
|
36
|
+
fileStream.pipe(writeStream);
|
|
37
|
+
fileStream.on('error', reject);
|
|
38
|
+
writeStream.on('finish', resolve);
|
|
39
|
+
writeStream.on('error', reject);
|
|
40
|
+
});
|
|
41
|
+
return Outcome.makeSuccess(true);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
const errStr = unknownToString(err);
|
|
45
|
+
return Outcome.makeFailure(errStr);
|
|
31
46
|
}
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
await new Promise((resolve, reject) => {
|
|
35
|
-
const writeStream = file.createWriteStream(saveOptions);
|
|
36
|
-
fileStream.pipe(writeStream);
|
|
37
|
-
fileStream.on("error", reject);
|
|
38
|
-
writeStream.on("finish", resolve);
|
|
39
|
-
writeStream.on("error", reject);
|
|
40
|
-
});
|
|
41
|
-
return makeSuccess(true);
|
|
42
|
-
} catch (err) {
|
|
43
|
-
const errStr = unknownToString(err);
|
|
44
|
-
return makeFailure(errStr);
|
|
45
|
-
}
|
|
46
47
|
}
|
|
47
|
-
export {
|
|
48
|
-
upload
|
|
49
|
-
};
|
|
@@ -1,15 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
1
|
+
import { Bucket as GCSBucket } from '@google-cloud/storage';
|
|
2
|
+
import { S3Client } from '@aws-sdk/client-s3';
|
|
3
|
+
import { Client as FtpClient } from 'basic-ftp';
|
|
4
|
+
import SftpClient from 'ssh2-sftp-client';
|
|
5
|
+
/**
|
|
6
|
+
* Type guard to check if a client is a Google Cloud Storage bucket.
|
|
7
|
+
*
|
|
8
|
+
* @param {AnyClient} client - The client to check.
|
|
9
|
+
* @returns {boolean} `true` if the client is a `GCSBucket`, `false` otherwise.
|
|
10
|
+
*/
|
|
11
|
+
export const isGcsBucket = (client) => client instanceof GCSBucket;
|
|
12
|
+
/**
|
|
13
|
+
* Type guard to check if a client is an S3 client with bucket configuration.
|
|
14
|
+
*
|
|
15
|
+
* @param {AnyClient} client - The client to check.
|
|
16
|
+
* @returns {boolean} `true` if the client is an `S3ClientWithBucket`, `false` otherwise.
|
|
17
|
+
*/
|
|
18
|
+
export const isS3ClientWithBucket = (client) => ('bucketName' in client)
|
|
19
|
+
&& typeof client.bucketName === 'string'
|
|
20
|
+
&& ('client' in client)
|
|
21
|
+
&& client.client instanceof S3Client;
|
|
22
|
+
/**
|
|
23
|
+
* Type guard to check if a client is an FTP client.
|
|
24
|
+
*
|
|
25
|
+
* @param {AnyClient} client - The client to check.
|
|
26
|
+
* @returns {boolean} `true` if the client is an `FtpClient`, `false` otherwise.
|
|
27
|
+
*/
|
|
28
|
+
export const isFtpClient = (client) => client instanceof FtpClient;
|
|
29
|
+
/**
|
|
30
|
+
* Type guard to check if a client is an SFTP client.
|
|
31
|
+
*
|
|
32
|
+
* @param {AnyClient} client - The client to check.
|
|
33
|
+
* @returns {boolean} `true` if the client is an `SftpClient`, `false` otherwise.
|
|
34
|
+
*/
|
|
35
|
+
export const isSftpClient = (client) => client instanceof SftpClient;
|