@design-edito/tools 0.1.66 → 0.1.69

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.
Files changed (214) hide show
  1. package/agnostic/arrays/index.js +8 -8
  2. package/agnostic/arrays/random-pick/index.js +4 -4
  3. package/agnostic/colors/index.js +11 -11
  4. package/agnostic/colors/lighten-color/index.js +2 -2
  5. package/agnostic/colors/saturate-color/index.js +2 -2
  6. package/agnostic/css/index.js +11 -11
  7. package/agnostic/css/styles-set/index.js +4 -4
  8. package/agnostic/errors/index.js +2 -2
  9. package/agnostic/html/hyper-json/cast/index.js +4 -4
  10. package/agnostic/html/hyper-json/index.js +5 -5
  11. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +4 -4
  12. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +4 -4
  13. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +4 -4
  14. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +4 -4
  15. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +4 -4
  16. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +4 -4
  17. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +4 -4
  18. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +4 -4
  19. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +4 -4
  20. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +4 -4
  21. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +4 -4
  22. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +4 -4
  23. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +4 -4
  24. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +4 -4
  25. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +4 -4
  26. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +4 -4
  27. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +4 -4
  28. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +4 -4
  29. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +4 -4
  30. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +4 -4
  31. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +4 -4
  32. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +4 -4
  33. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +4 -4
  34. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +4 -4
  35. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +4 -4
  36. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +4 -4
  37. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +4 -4
  38. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +4 -4
  39. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +4 -4
  40. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +4 -4
  41. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +4 -4
  42. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +4 -4
  43. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +4 -4
  44. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +4 -4
  45. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +4 -4
  46. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +4 -4
  47. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +4 -4
  48. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +4 -4
  49. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +4 -4
  50. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +4 -4
  51. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +4 -4
  52. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +4 -4
  53. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +4 -4
  54. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +4 -4
  55. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +4 -4
  56. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +4 -4
  57. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +4 -4
  58. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +4 -4
  59. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +4 -4
  60. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +4 -4
  61. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +4 -4
  62. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +4 -4
  63. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +4 -4
  64. package/agnostic/html/hyper-json/smart-tags/isolated/global/index.js +4 -4
  65. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +4 -4
  66. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +4 -4
  67. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +4 -4
  68. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +4 -4
  69. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +4 -4
  70. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +4 -4
  71. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +4 -4
  72. package/agnostic/html/hyper-json/tree/index.js +4 -4
  73. package/agnostic/html/hyper-json/utils/index.js +4 -4
  74. package/agnostic/html/index.js +19 -19
  75. package/agnostic/html/sanitize/index.js +4 -4
  76. package/agnostic/html/selector-to-element/index.js +4 -4
  77. package/agnostic/html/string-to-nodes/index.js +5 -5
  78. package/agnostic/misc/assert/index.js +3 -3
  79. package/agnostic/misc/index.js +18 -18
  80. package/agnostic/misc/logs/index.js +2 -2
  81. package/agnostic/misc/lorem-ipsum/index.js +9 -9
  82. package/agnostic/numbers/index.js +5 -5
  83. package/agnostic/objects/index.js +8 -8
  84. package/agnostic/strings/index.js +8 -8
  85. package/agnostic/time/index.js +5 -5
  86. package/chunks/chunk-236C4IHT.js +98 -0
  87. package/chunks/chunk-2HU2AWWJ.js +35 -0
  88. package/chunks/chunk-2M5P5V6U.js +56 -0
  89. package/chunks/chunk-3CZNTEF7.js +151 -0
  90. package/chunks/chunk-4ARTWFW5.js +164 -0
  91. package/chunks/chunk-4PJWXOLA.js +16 -0
  92. package/chunks/chunk-4QHGUANF.js +19 -0
  93. package/chunks/chunk-4Y5XR6WC.js +2456 -0
  94. package/chunks/chunk-5B7VSD44.js +37 -0
  95. package/chunks/chunk-5OBHNGEH.js +20 -0
  96. package/chunks/chunk-65YZMVWZ.js +35 -0
  97. package/chunks/chunk-6Z6GDMOR.js +28 -0
  98. package/chunks/chunk-6ZBDBWLW.js +164 -0
  99. package/chunks/chunk-72NLUT3X.js +29 -0
  100. package/chunks/chunk-72U4TDEB.js +127 -0
  101. package/chunks/chunk-7JUKBN7P.js +54 -0
  102. package/chunks/chunk-7OK5NZTY.js +18 -0
  103. package/chunks/chunk-7U5NS3AR.js +151 -0
  104. package/chunks/chunk-7YW5HL6N.js +168 -0
  105. package/chunks/chunk-A6OSVHIK.js +20 -0
  106. package/chunks/chunk-B4XUXE7E.js +18 -0
  107. package/chunks/chunk-BPBWY4OT.js +191 -0
  108. package/chunks/chunk-BZHH4R64.js +20 -0
  109. package/chunks/chunk-C4Q4PC53.js +63 -0
  110. package/chunks/chunk-CHA42BGS.js +48 -0
  111. package/chunks/chunk-E6HDM2M4.js +191 -0
  112. package/chunks/chunk-ECGOI4MT.js +20 -0
  113. package/chunks/chunk-FFNIZRZU.js +31 -0
  114. package/chunks/chunk-FHHXI6WC.js +31 -0
  115. package/chunks/chunk-FRP47Y6H.js +2456 -0
  116. package/chunks/chunk-GD6Y5QJV.js +98 -0
  117. package/chunks/chunk-GE7DNPF6.js +63 -0
  118. package/chunks/chunk-GGT2PUZH.js +21 -0
  119. package/chunks/chunk-GOTTGEXI.js +23 -0
  120. package/chunks/chunk-GVS2ZPGJ.js +2456 -0
  121. package/chunks/chunk-HFH6DXXC.js +2456 -0
  122. package/chunks/chunk-HFIE4SBE.js +16 -0
  123. package/chunks/chunk-HV2AHV5R.js +164 -0
  124. package/chunks/chunk-IXM6DCIE.js +151 -0
  125. package/chunks/chunk-IYV3EEYX.js +20 -0
  126. package/chunks/chunk-J35QFU6O.js +21 -0
  127. package/chunks/chunk-JBUM5Q5C.js +48 -0
  128. package/chunks/chunk-JJ7PBKSG.js +37 -0
  129. package/chunks/chunk-JQRLQUMJ.js +16 -0
  130. package/chunks/chunk-JR76DLSV.js +151 -0
  131. package/chunks/chunk-JX45LILQ.js +164 -0
  132. package/chunks/chunk-K66UXFDQ.js +63 -0
  133. package/chunks/chunk-KBCULP7X.js +177 -0
  134. package/chunks/chunk-KC76PUJY.js +48 -0
  135. package/chunks/chunk-KL6EJPC3.js +35 -0
  136. package/chunks/chunk-LH6Z6NJY.js +191 -0
  137. package/chunks/chunk-MFK63FMI.js +31 -0
  138. package/chunks/chunk-MKHTR43Q.js +231 -0
  139. package/chunks/chunk-MTT7TVR3.js +127 -0
  140. package/chunks/chunk-MW3KNVTG.js +29 -0
  141. package/chunks/chunk-NA7PT2KE.js +21 -0
  142. package/chunks/chunk-NFIEXASV.js +164 -0
  143. package/chunks/chunk-Q2ZS3QNB.js +151 -0
  144. package/chunks/chunk-QHQPS7EU.js +31 -0
  145. package/chunks/chunk-REN2I723.js +98 -0
  146. package/chunks/chunk-RQECU6DI.js +56 -0
  147. package/chunks/chunk-SAFV7TBT.js +31 -0
  148. package/chunks/chunk-SARTUWB5.js +20 -0
  149. package/chunks/chunk-SDFTYOAK.js +20 -0
  150. package/chunks/chunk-SJLH36CH.js +26 -0
  151. package/chunks/chunk-SLCGLOYM.js +37 -0
  152. package/chunks/chunk-SUWMOLXI.js +191 -0
  153. package/chunks/chunk-SY65O2JU.js +98 -0
  154. package/chunks/chunk-T6IC7JVI.js +37 -0
  155. package/chunks/chunk-TDOBYMTK.js +56 -0
  156. package/chunks/chunk-TP6V6CBV.js +177 -0
  157. package/chunks/chunk-TPMYILTC.js +191 -0
  158. package/chunks/chunk-U3L3X27Q.js +177 -0
  159. package/chunks/chunk-U4UHXVMV.js +37 -0
  160. package/chunks/chunk-U5WEI3QA.js +18 -0
  161. package/chunks/chunk-UERX6XGZ.js +21 -0
  162. package/chunks/chunk-UFKH5WD2.js +21 -0
  163. package/chunks/chunk-UODICVLG.js +173 -0
  164. package/chunks/chunk-UUU6DWRQ.js +79 -0
  165. package/chunks/chunk-UZPXYAJR.js +177 -0
  166. package/chunks/chunk-VDT6ODFV.js +20 -0
  167. package/chunks/chunk-VHPX7UA3.js +177 -0
  168. package/chunks/chunk-VLC7LRED.js +191 -0
  169. package/chunks/chunk-VR5JHUKK.js +32 -0
  170. package/chunks/chunk-VSBRIQPH.js +48 -0
  171. package/chunks/chunk-WC2LQPQP.js +26 -0
  172. package/chunks/chunk-WH5V6GK7.js +56 -0
  173. package/chunks/chunk-WIJBRYJ6.js +20 -0
  174. package/chunks/chunk-WP7L5ZFP.js +173 -0
  175. package/chunks/chunk-WTILPGGX.js +69 -0
  176. package/chunks/chunk-X34YXAEL.js +31 -0
  177. package/chunks/chunk-X6WCMUOP.js +18 -0
  178. package/chunks/chunk-XB3ZOIHH.js +2456 -0
  179. package/chunks/chunk-XEMFIV2W.js +177 -0
  180. package/chunks/chunk-XQMUFSLU.js +16 -0
  181. package/chunks/chunk-XTOAQTLP.js +98 -0
  182. package/chunks/chunk-Y5GGIBPI.js +31 -0
  183. package/chunks/chunk-Y7YEYHRZ.js +69 -0
  184. package/chunks/chunk-YLJBKSLO.js +56 -0
  185. package/chunks/chunk-YMRGCRQ4.js +48 -0
  186. package/chunks/chunk-Z2CU55CF.js +20 -0
  187. package/chunks/chunk-ZNPRJEP5.js +28 -0
  188. package/chunks/chunk-ZQ7ZC7TZ.js +56 -0
  189. package/chunks/chunk-ZVBMPJLH.js +48 -0
  190. package/chunks/chunk-ZVZAGTIT.js +151 -0
  191. package/node/@aws-s3/index.js +3 -3
  192. package/node/@aws-s3/storage/file/index.js +4 -4
  193. package/node/@aws-s3/storage/index.js +3 -3
  194. package/node/@express/@multer/index.d.ts +6 -1
  195. package/node/@express/@multer/index.js +2 -1
  196. package/node/@express/index.js +2 -1
  197. package/node/@google-cloud/index.js +8 -8
  198. package/node/@google-cloud/storage/file/index.js +17 -17
  199. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +2 -2
  200. package/node/@google-cloud/storage/index.js +8 -8
  201. package/node/cloud-storage/index.js +15 -15
  202. package/node/cloud-storage/operations/download/index.js +3 -3
  203. package/node/cloud-storage/operations/index.js +10 -10
  204. package/node/cloud-storage/operations/upload/index.js +3 -3
  205. package/node/images/index.js +18 -18
  206. package/node/images/prepare/index.js +18 -18
  207. package/node/images/transform/frame/index.js +2 -2
  208. package/node/images/transform/index.js +17 -17
  209. package/node/images/transform/operations/_utils/frame/backgrounds/create-line-background/index.js +5 -5
  210. package/node/images/transform/operations/_utils/frame/create-color-palette/index.js +6 -6
  211. package/node/images/transform/operations/_utils/frame/index.js +8 -8
  212. package/node/sftp/file/index.js +4 -4
  213. package/node/sftp/index.js +2 -2
  214. package/package.json +2 -2
@@ -0,0 +1,164 @@
1
+ import {
2
+ createColorPalette
3
+ } from "./chunk-SY65O2JU.js";
4
+ import {
5
+ createLineBackground
6
+ } from "./chunk-C4Q4PC53.js";
7
+ import {
8
+ createTileBackground
9
+ } from "./chunk-CP454IJD.js";
10
+ import {
11
+ getRelativePxPositionsInWrapperFor
12
+ } from "./chunk-OCM3RLO6.js";
13
+ import {
14
+ clamp
15
+ } from "./chunk-OSAXBA7G.js";
16
+
17
+ // src/node/images/transform/operations/_utils/frame/index.ts
18
+ import sharp from "sharp";
19
+ async function frame(imageSharp, params) {
20
+ const imageMetadata = await imageSharp.metadata();
21
+ const imageDimensions = {
22
+ widthPx: imageMetadata.width ?? 0,
23
+ heightPx: imageMetadata.height ?? 0
24
+ };
25
+ const scaledImage = scaleImageToFrame(
26
+ imageSharp,
27
+ imageDimensions,
28
+ params.dimensions,
29
+ params.imageScale
30
+ );
31
+ imageSharp = scaledImage.sharpInstance;
32
+ imageDimensions.widthPx = scaledImage.widthPx;
33
+ imageDimensions.heightPx = scaledImage.heightPx;
34
+ const defaultBackgroundColorCreate = getDefaultBackgroundColor(params.background);
35
+ const imagePositions = getRelativePxPositionsInWrapperFor(imageDimensions, params.dimensions, params.positions);
36
+ const backgroundOverlays = await getBackgroundOverlays(
37
+ {
38
+ sharp: imageSharp,
39
+ dimensions: imageDimensions
40
+ },
41
+ params.background,
42
+ params.dimensions,
43
+ {
44
+ x: imagePositions.x,
45
+ y: imagePositions.y,
46
+ w: imageDimensions.widthPx,
47
+ h: imageDimensions.heightPx
48
+ }
49
+ );
50
+ const composition = [
51
+ ...backgroundOverlays,
52
+ {
53
+ input: await imageSharp.toFormat("png").png({ quality: 100 }).toBuffer(),
54
+ /* Make sure we work with the best quality of our file */
55
+ left: imagePositions.x,
56
+ top: imagePositions.y
57
+ }
58
+ ];
59
+ const frameSharpInstance = sharp({
60
+ create: {
61
+ background: defaultBackgroundColorCreate,
62
+ width: params.dimensions.widthPx,
63
+ height: params.dimensions.heightPx,
64
+ channels: 4
65
+ }
66
+ }).ensureAlpha(0).composite(composition).png({ quality: 100 });
67
+ return frameSharpInstance;
68
+ }
69
+ var scaleImageToFrame = (imageSharp, imageDimensions, frameDimensions, imageScale) => {
70
+ const scale = {
71
+ xRatio: 1,
72
+ yRatio: 1
73
+ };
74
+ const frameZoneDimensions = {
75
+ widthPx: frameDimensions.widthPx,
76
+ heightPx: frameDimensions.heightPx
77
+ };
78
+ if (imageScale) {
79
+ frameZoneDimensions.widthPx = frameDimensions.widthPx * (imageScale.xRatio || 1);
80
+ frameZoneDimensions.heightPx = frameDimensions.heightPx * (imageScale.yRatio || 1);
81
+ }
82
+ const containedRatiosPercents = getContainedRatios(
83
+ imageDimensions.widthPx,
84
+ imageDimensions.heightPx,
85
+ frameZoneDimensions.widthPx,
86
+ frameZoneDimensions.heightPx
87
+ );
88
+ if (imageScale || !imageScale && imageDimensions.widthPx < frameDimensions.widthPx && imageDimensions.heightPx < frameDimensions.heightPx) {
89
+ scale.xRatio = containedRatiosPercents.xPercent;
90
+ scale.yRatio = containedRatiosPercents.yPercent;
91
+ }
92
+ if (scale.xRatio !== 1 || scale.yRatio !== 1) {
93
+ imageDimensions.widthPx = clamp(Math.round(imageDimensions.widthPx * scale.xRatio), 0, frameDimensions.widthPx);
94
+ imageDimensions.heightPx = clamp(Math.round(imageDimensions.heightPx * scale.yRatio), 0, frameDimensions.heightPx);
95
+ imageSharp = imageSharp.resize({
96
+ width: imageDimensions.widthPx,
97
+ height: imageDimensions.heightPx,
98
+ fit: sharp.fit.inside,
99
+ position: "center",
100
+ fastShrinkOnLoad: false
101
+ });
102
+ }
103
+ return {
104
+ sharpInstance: imageSharp,
105
+ widthPx: imageDimensions.widthPx,
106
+ heightPx: imageDimensions.heightPx
107
+ };
108
+ };
109
+ var getDefaultBackgroundColor = (background) => {
110
+ if (background && (typeof background === "object" && "r" in background)) {
111
+ return {
112
+ r: background.r || 255,
113
+ g: background.g || 255,
114
+ b: background.b || 255,
115
+ alpha: background.alpha || 0
116
+ };
117
+ }
118
+ return { r: 255, g: 255, b: 255, alpha: 0 };
119
+ };
120
+ var getBackgroundOverlays = (imageInput, background, dimensions, imageCoordinates) => {
121
+ const backgroundOverlays = [];
122
+ return new Promise(async (resolve, reject) => {
123
+ if (!background || typeof background !== "object" || typeof background === "object" && !("type" in background)) {
124
+ resolve(backgroundOverlays);
125
+ return;
126
+ }
127
+ const imageBuffer = await imageInput.sharp.raw().toBuffer();
128
+ const nbImageChannels = (await imageInput.sharp.metadata()).channels || 3;
129
+ const colorPalette = createColorPalette(
130
+ {
131
+ buffer: imageBuffer,
132
+ nbChannels: nbImageChannels,
133
+ dimensions: imageInput.dimensions
134
+ },
135
+ background.colorPalette
136
+ );
137
+ switch (background.type) {
138
+ case "line":
139
+ return resolve(createLineBackground(background, dimensions, colorPalette));
140
+ case "tile":
141
+ return resolve(createTileBackground(background, dimensions, imageCoordinates, colorPalette));
142
+ default:
143
+ resolve(backgroundOverlays);
144
+ }
145
+ reject(new Error("Unknown background type"));
146
+ });
147
+ };
148
+ function getContainedRatios(widthPx, heightPx, wrapperWidthPx, wrapperHeightPx, withoutReduction) {
149
+ if (withoutReduction && widthPx <= wrapperWidthPx && heightPx <= wrapperHeightPx) {
150
+ return { xPercent: 100, yPercent: 100 };
151
+ }
152
+ const wrapperRatio = wrapperWidthPx / wrapperHeightPx;
153
+ const imgRatio = widthPx / heightPx;
154
+ const containRatio = clamp(imgRatio > wrapperRatio ? wrapperWidthPx / widthPx : wrapperHeightPx / heightPx, 0, 100);
155
+ return {
156
+ xPercent: containRatio,
157
+ yPercent: containRatio
158
+ };
159
+ }
160
+
161
+ export {
162
+ frame,
163
+ getContainedRatios
164
+ };
@@ -0,0 +1,63 @@
1
+ import {
2
+ lightenColor,
3
+ setColorLuminance
4
+ } from "./chunk-3LAWRHHB.js";
5
+ import {
6
+ saturateColor,
7
+ setColorSaturation
8
+ } from "./chunk-PXRLKO5Y.js";
9
+ import {
10
+ complementColor
11
+ } from "./chunk-2POD3TAX.js";
12
+
13
+ // src/node/images/transform/operations/_utils/frame/backgrounds/create-line-background/index.ts
14
+ async function createLineBackground(background, dimensions, palette) {
15
+ const lineDimensions = {
16
+ widthPx: dimensions.widthPx,
17
+ heightPx: Math.round(dimensions.heightPx / background.params.nbLines)
18
+ };
19
+ const sharpOverlays = [];
20
+ const maxPaletteLength = palette.length;
21
+ const selectedColorIndex = background.params.colors.selectColorPaletteIndex === "first" ? 0 : background.params.colors.selectColorPaletteIndex === "last" ? palette.length - 1 : background.params.colors.selectColorPaletteIndex;
22
+ for (let i = 0; i < background.params.nbLines; i++) {
23
+ const indexPalette = Math.min(Math.max(0, selectedColorIndex), maxPaletteLength);
24
+ const RGBColor = palette[indexPalette] || [0, 0, 0];
25
+ const primaryRGBColor = applyColorTransformations(RGBColor, background.params.colors.primaryTransformations);
26
+ const secondaryRGBColor = applyColorTransformations(RGBColor, background.params.colors.secondaryTransformations);
27
+ const outputRGBColor = i % 2 === 0 ? primaryRGBColor : secondaryRGBColor;
28
+ const topPx = Math.min(lineDimensions.heightPx * i, dimensions.heightPx);
29
+ sharpOverlays.push({
30
+ input: {
31
+ create: {
32
+ width: lineDimensions.widthPx,
33
+ height: i === background.params.nbLines - 1 ? dimensions.heightPx - topPx : lineDimensions.heightPx,
34
+ channels: 4,
35
+ background: { r: outputRGBColor[0], g: outputRGBColor[1], b: outputRGBColor[2], alpha: 1 }
36
+ }
37
+ },
38
+ left: 0,
39
+ top: topPx
40
+ });
41
+ }
42
+ return sharpOverlays;
43
+ }
44
+ function applyColorTransformations(RGBColor, transformations) {
45
+ transformations.forEach((transformation) => {
46
+ RGBColor = transformColor(RGBColor, transformation);
47
+ });
48
+ return RGBColor;
49
+ }
50
+ function transformColor(RGBColor, transformation) {
51
+ switch (transformation.type) {
52
+ case "saturate":
53
+ return transformation.intensityMode === "add" ? saturateColor(RGBColor, transformation.intensity) : setColorSaturation(RGBColor, transformation.intensity);
54
+ case "lighten":
55
+ return transformation.intensityMode === "add" ? lightenColor(RGBColor, transformation.intensity) : setColorLuminance(RGBColor, transformation.intensity);
56
+ case "complement":
57
+ return complementColor(RGBColor);
58
+ }
59
+ }
60
+
61
+ export {
62
+ createLineBackground
63
+ };
@@ -0,0 +1,177 @@
1
+ import {
2
+ frame
3
+ } from "./chunk-HV2AHV5R.js";
4
+ import {
5
+ frameSchema
6
+ } from "./chunk-Y7YEYHRZ.js";
7
+ import {
8
+ compose
9
+ } from "./chunk-AWVQJNGX.js";
10
+ import {
11
+ scale
12
+ } from "./chunk-JRYI4VBX.js";
13
+ import {
14
+ rotateSchema
15
+ } from "./chunk-X6WCMUOP.js";
16
+ import {
17
+ normalizeSchema
18
+ } from "./chunk-4QHGUANF.js";
19
+ import {
20
+ resizeSchema
21
+ } from "./chunk-VR5JHUKK.js";
22
+ import {
23
+ lineateLevelsSchema
24
+ } from "./chunk-KL6EJPC3.js";
25
+ import {
26
+ saturateSchema
27
+ } from "./chunk-XQMUFSLU.js";
28
+ import {
29
+ scaleSchema
30
+ } from "./chunk-GOTTGEXI.js";
31
+ import {
32
+ extendSchema
33
+ } from "./chunk-MFK63FMI.js";
34
+ import {
35
+ flattenSchema
36
+ } from "./chunk-UERX6XGZ.js";
37
+ import {
38
+ extractSchema
39
+ } from "./chunk-NA7PT2KE.js";
40
+ import {
41
+ flipSchema
42
+ } from "./chunk-7OK5NZTY.js";
43
+ import {
44
+ flopSchema
45
+ } from "./chunk-B4XUXE7E.js";
46
+ import {
47
+ hueRotateSchema
48
+ } from "./chunk-JQRLQUMJ.js";
49
+ import {
50
+ modulateSchema
51
+ } from "./chunk-J35QFU6O.js";
52
+ import {
53
+ lightenSchema
54
+ } from "./chunk-HFIE4SBE.js";
55
+ import {
56
+ blurSchema
57
+ } from "./chunk-U5WEI3QA.js";
58
+ import {
59
+ brightenSchema
60
+ } from "./chunk-4PJWXOLA.js";
61
+ import {
62
+ composeSchema
63
+ } from "./chunk-UUU6DWRQ.js";
64
+ import {
65
+ esm_default
66
+ } from "./chunk-YE67BQQN.js";
67
+ import {
68
+ OperationNames
69
+ } from "./chunk-MOVLLUDL.js";
70
+ import {
71
+ Outcome
72
+ } from "./chunk-JMU5PDBD.js";
73
+ import {
74
+ unknownToString
75
+ } from "./chunk-FENXVJYO.js";
76
+ import {
77
+ __export
78
+ } from "./chunk-NZLE2WMY.js";
79
+
80
+ // src/node/images/transform/index.ts
81
+ var transform_exports = {};
82
+ __export(transform_exports, {
83
+ apply: () => apply,
84
+ isOperation: () => isOperation,
85
+ transform: () => transform
86
+ });
87
+ import sharp from "sharp";
88
+ var operationSchema = esm_default.union([
89
+ // areaComposeSchema,
90
+ blurSchema,
91
+ brightenSchema,
92
+ composeSchema,
93
+ extendSchema,
94
+ extractSchema,
95
+ flattenSchema,
96
+ flipSchema,
97
+ flopSchema,
98
+ frameSchema,
99
+ hueRotateSchema,
100
+ lightenSchema,
101
+ lineateLevelsSchema,
102
+ modulateSchema,
103
+ normalizeSchema,
104
+ resizeSchema,
105
+ rotateSchema,
106
+ saturateSchema,
107
+ scaleSchema
108
+ ]);
109
+ function isOperation(operation) {
110
+ try {
111
+ return Outcome.makeSuccess(operationSchema.parse(operation));
112
+ } catch (err) {
113
+ return Outcome.makeFailure(unknownToString(err));
114
+ }
115
+ }
116
+ async function transform(imageBuffer, operations, checkValidOperations) {
117
+ let sharpInstance = sharp(imageBuffer);
118
+ const needsValidation = checkValidOperations ?? false;
119
+ for (const operation of operations) {
120
+ const _isOperation = isOperation(operation);
121
+ if (!needsValidation || _isOperation.success) {
122
+ console.log("Images:Transform:Operation:Start", operation.name);
123
+ sharpInstance = await apply(sharpInstance, operation);
124
+ console.log("Images:Transform:Operation:Done", operation.name);
125
+ }
126
+ }
127
+ return sharpInstance.toBuffer();
128
+ }
129
+ async function apply(sharpInstance, operation) {
130
+ switch (operation.name) {
131
+ case OperationNames.Blur:
132
+ return sharpInstance.blur(operation.params.sigma);
133
+ case OperationNames.Brighten:
134
+ return sharpInstance.blur(operation.params);
135
+ case OperationNames.Compose:
136
+ return compose(sharpInstance, operation.params);
137
+ case OperationNames.Extend:
138
+ return sharpInstance.extend(operation.params);
139
+ case OperationNames.Extract:
140
+ return sharpInstance.extract(operation.params);
141
+ case OperationNames.Flip:
142
+ return sharpInstance.flip(operation.params.flip);
143
+ case OperationNames.Flop:
144
+ return sharpInstance.flop(operation.params.flop);
145
+ case OperationNames.Frame:
146
+ return frame(sharpInstance, operation.params);
147
+ case OperationNames.Flatten:
148
+ return sharpInstance.flatten(operation.params);
149
+ case OperationNames.HueRotate:
150
+ return sharpInstance.modulate({ hue: operation.params });
151
+ case OperationNames.Lighten:
152
+ return sharpInstance.modulate({ lightness: operation.params });
153
+ case OperationNames.LineateLevels:
154
+ return sharpInstance.linear(operation.params.multiplier, operation.params.offset);
155
+ case OperationNames.Modulate:
156
+ return sharpInstance.modulate(operation.params);
157
+ case OperationNames.Normalize:
158
+ return sharpInstance.normalize(operation.params);
159
+ case OperationNames.Resize:
160
+ return sharpInstance.resize(operation.params);
161
+ case OperationNames.Rotate:
162
+ return sharpInstance.rotate(operation.params.angle);
163
+ case OperationNames.Saturate:
164
+ return sharpInstance.modulate({ saturation: operation.params });
165
+ case OperationNames.Scale:
166
+ return scale(sharpInstance, operation.params);
167
+ default:
168
+ return sharpInstance;
169
+ }
170
+ }
171
+
172
+ export {
173
+ isOperation,
174
+ transform,
175
+ apply,
176
+ transform_exports
177
+ };
@@ -0,0 +1,48 @@
1
+ import {
2
+ download as download2
3
+ } from "./chunk-26QQ56SS.js";
4
+ import {
5
+ download
6
+ } from "./chunk-IARWH6LC.js";
7
+ import {
8
+ download as download3
9
+ } from "./chunk-MFWKY3DT.js";
10
+ import {
11
+ download as download4
12
+ } from "./chunk-V4S34MIM.js";
13
+ import {
14
+ s3IdentifierData
15
+ } from "./chunk-MOBGB2PH.js";
16
+ import {
17
+ Outcome
18
+ } from "./chunk-JMU5PDBD.js";
19
+ import {
20
+ __export
21
+ } from "./chunk-NZLE2WMY.js";
22
+
23
+ // src/node/cloud-storage/operations/download/index.ts
24
+ var download_exports = {};
25
+ __export(download_exports, {
26
+ download: () => download5
27
+ });
28
+ import { Bucket } from "@google-cloud/storage";
29
+ import { S3 } from "aws-sdk";
30
+ import { Client as FtpClient } from "basic-ftp";
31
+ import SftpClient from "ssh2-sftp-client";
32
+ async function download5(targetPath, endpointType, endpointIdentifier, client) {
33
+ if (endpointType === "gcs-bucket" /* GCS */ && client instanceof Bucket) return await download(targetPath, client);
34
+ if (endpointType === "s3-bucket" /* S3 */ && client instanceof S3) {
35
+ const { bucketName } = s3IdentifierData(endpointIdentifier);
36
+ if (bucketName === null) return Outcome.makeFailure("Invalid S3 bucket name");
37
+ return await download2(targetPath, bucketName, client);
38
+ }
39
+ if (endpointType === "ftp" /* FTP */ && client instanceof FtpClient) return await download3(targetPath, client);
40
+ if (endpointType === "ftps" /* FTPS */ && client instanceof FtpClient) return await download3(targetPath, client);
41
+ if (endpointType === "sftp" /* SFTP */ && client instanceof SftpClient) return await download4(targetPath, client);
42
+ return Outcome.makeFailure("Invalid endpoint or client type");
43
+ }
44
+
45
+ export {
46
+ download5 as download,
47
+ download_exports
48
+ };
@@ -0,0 +1,35 @@
1
+ import {
2
+ esm_default
3
+ } from "./chunk-YE67BQQN.js";
4
+ import {
5
+ OperationNames
6
+ } from "./chunk-MOVLLUDL.js";
7
+
8
+ // src/node/images/transform/lineate-levels/index.ts
9
+ var lineateLevelsSchema = esm_default.object({
10
+ name: esm_default.literal(OperationNames.LineateLevels),
11
+ params: esm_default.object({
12
+ multiplier: esm_default.union([
13
+ esm_default.number(),
14
+ esm_default.tuple([
15
+ esm_default.number(),
16
+ esm_default.number(),
17
+ esm_default.number()
18
+ ])
19
+ ]),
20
+ offset: esm_default.optional(
21
+ esm_default.union([
22
+ esm_default.number(),
23
+ esm_default.tuple([
24
+ esm_default.number(),
25
+ esm_default.number(),
26
+ esm_default.number()
27
+ ])
28
+ ])
29
+ )
30
+ })
31
+ });
32
+
33
+ export {
34
+ lineateLevelsSchema
35
+ };
@@ -0,0 +1,191 @@
1
+ import {
2
+ Random
3
+ } from "./chunk-S32K7POB.js";
4
+ import {
5
+ Arrays
6
+ } from "./chunk-FHHXI6WC.js";
7
+
8
+ // src/agnostic/misc/lorem-ipsum/index.ts
9
+ var LoremIpsum;
10
+ ((LoremIpsum2) => {
11
+ LoremIpsum2.words = [
12
+ "a",
13
+ "ac",
14
+ "accumsan",
15
+ "adipiscing",
16
+ "aenean",
17
+ "aliquam",
18
+ "aliquet",
19
+ "amet",
20
+ "ante",
21
+ "arcu",
22
+ "at",
23
+ "auctor",
24
+ "augue",
25
+ "bibendum",
26
+ "blandit",
27
+ "condimentum",
28
+ "consectetur",
29
+ "consequat",
30
+ "convallis",
31
+ "cras",
32
+ "curabitur",
33
+ "cursus",
34
+ "dapibus",
35
+ "diam",
36
+ "dictum",
37
+ "dictumst",
38
+ "dignissim",
39
+ "dolor",
40
+ "donec",
41
+ "dui",
42
+ "duis",
43
+ "efficitur",
44
+ "egestas",
45
+ "eget",
46
+ "eleifend",
47
+ "elementum",
48
+ "elit",
49
+ "enim",
50
+ "erat",
51
+ "eros",
52
+ "est",
53
+ "et",
54
+ "eu",
55
+ "euismod",
56
+ "ex",
57
+ "facilisis",
58
+ "faucibus",
59
+ "felis",
60
+ "feugiat",
61
+ "finibus",
62
+ "fringilla",
63
+ "fusce",
64
+ "gravida",
65
+ "habitasse",
66
+ "hac",
67
+ "hendrerit",
68
+ "iaculis",
69
+ "id",
70
+ "imperdiet",
71
+ "in",
72
+ "integer",
73
+ "interdum",
74
+ "ipsum",
75
+ "justo",
76
+ "lacinia",
77
+ "lacus",
78
+ "laoreet",
79
+ "lectus",
80
+ "leo",
81
+ "libero",
82
+ "ligula",
83
+ "lobortis",
84
+ "lorem",
85
+ "luctus",
86
+ "maecenas",
87
+ "magna",
88
+ "malesuada",
89
+ "massa",
90
+ "mattis",
91
+ "mauris",
92
+ "maximus",
93
+ "metus",
94
+ "mi",
95
+ "molestie",
96
+ "mollis",
97
+ "morbi",
98
+ "nam",
99
+ "nec",
100
+ "neque",
101
+ "nibh",
102
+ "nisi",
103
+ "nisl",
104
+ "non",
105
+ "nulla",
106
+ "nullam",
107
+ "nunc",
108
+ "odio",
109
+ "orci",
110
+ "ornare",
111
+ "pellentesque",
112
+ "pharetra",
113
+ "phasellus",
114
+ "placerat",
115
+ "platea",
116
+ "porta",
117
+ "porttitor",
118
+ "posuere",
119
+ "praesent",
120
+ "pulvinar",
121
+ "purus",
122
+ "quam",
123
+ "quis",
124
+ "quisque",
125
+ "risus",
126
+ "rutrum",
127
+ "sagittis",
128
+ "sapien",
129
+ "sed",
130
+ "sem",
131
+ "semper",
132
+ "sit",
133
+ "sodales",
134
+ "sollicitudin",
135
+ "suscipit",
136
+ "suspendisse",
137
+ "tellus",
138
+ "tempor",
139
+ "tempus",
140
+ "tincidunt",
141
+ "tortor",
142
+ "tristique",
143
+ "turpis",
144
+ "ultrices",
145
+ "ultricies",
146
+ "urna",
147
+ "ut",
148
+ "vehicula",
149
+ "vel",
150
+ "velit",
151
+ "venenatis",
152
+ "vestibulum",
153
+ "vitae",
154
+ "vivamus",
155
+ "viverra",
156
+ "volutpat",
157
+ "vulputate"
158
+ ];
159
+ LoremIpsum2.generateSentence = (wordCount) => {
160
+ const resultArr = [];
161
+ let currentWordCound = wordCount;
162
+ for (let i = 0; i < currentWordCound; i++) {
163
+ const picked = Arrays.randomPick(LoremIpsum2.words);
164
+ if (typeof picked === "string") resultArr.push(picked);
165
+ else {
166
+ currentWordCound += 1;
167
+ }
168
+ }
169
+ const [firstWord, ...otherWords] = resultArr;
170
+ if (firstWord === void 0) return "";
171
+ const capFirstLetter = firstWord?.charAt(0).toUpperCase();
172
+ const restOfFirstWord = firstWord?.slice(1);
173
+ const sentence = [
174
+ `${capFirstLetter}${restOfFirstWord}`,
175
+ ...otherWords
176
+ ].join(" ");
177
+ return `${sentence}.`;
178
+ };
179
+ LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
180
+ const sentences = [];
181
+ for (let i = 0; i < sentencesCount; i++) {
182
+ const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
183
+ sentences.push((0, LoremIpsum2.generateSentence)(length));
184
+ }
185
+ return sentences;
186
+ };
187
+ })(LoremIpsum || (LoremIpsum = {}));
188
+
189
+ export {
190
+ LoremIpsum
191
+ };
@@ -0,0 +1,31 @@
1
+ import {
2
+ colorSchema
3
+ } from "./chunk-U7R6TPHR.js";
4
+ import {
5
+ esm_default
6
+ } from "./chunk-YE67BQQN.js";
7
+ import {
8
+ OperationNames
9
+ } from "./chunk-MOVLLUDL.js";
10
+
11
+ // src/node/images/transform/extend/index.ts
12
+ var extendSchema = esm_default.object({
13
+ name: esm_default.literal(OperationNames.Extend),
14
+ params: esm_default.object({
15
+ top: esm_default.number(),
16
+ left: esm_default.number(),
17
+ right: esm_default.number(),
18
+ bottom: esm_default.number(),
19
+ background: colorSchema,
20
+ extendWith: esm_default.optional(esm_default.enum([
21
+ "background",
22
+ "copy",
23
+ "repeat",
24
+ "mirror"
25
+ ]))
26
+ })
27
+ });
28
+
29
+ export {
30
+ extendSchema
31
+ };