@sqaitech/shared 0.5.0

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 (169) hide show
  1. package/README.md +9 -0
  2. package/dist/es/baseDB.mjs +109 -0
  3. package/dist/es/build/copy-static.mjs +29 -0
  4. package/dist/es/common.mjs +37 -0
  5. package/dist/es/constants/example-code.mjs +202 -0
  6. package/dist/es/constants/index.mjs +24 -0
  7. package/dist/es/env/basic.mjs +6 -0
  8. package/dist/es/env/constants.mjs +97 -0
  9. package/dist/es/env/decide-model-config.mjs +172 -0
  10. package/dist/es/env/global-config-manager.mjs +91 -0
  11. package/dist/es/env/helper.mjs +48 -0
  12. package/dist/es/env/index.mjs +5 -0
  13. package/dist/es/env/init-debug.mjs +18 -0
  14. package/dist/es/env/model-config-manager.mjs +99 -0
  15. package/dist/es/env/parse.mjs +69 -0
  16. package/dist/es/env/types.mjs +253 -0
  17. package/dist/es/env/utils.mjs +18 -0
  18. package/dist/es/extractor/constants.mjs +2 -0
  19. package/dist/es/extractor/debug.mjs +6 -0
  20. package/dist/es/extractor/dom-util.mjs +92 -0
  21. package/dist/es/extractor/index.mjs +6 -0
  22. package/dist/es/extractor/locator.mjs +95 -0
  23. package/dist/es/extractor/tree.mjs +81 -0
  24. package/dist/es/extractor/util.mjs +244 -0
  25. package/dist/es/extractor/web-extractor.mjs +310 -0
  26. package/dist/es/img/box-select.mjs +184 -0
  27. package/dist/es/img/draw-box.mjs +42 -0
  28. package/dist/es/img/get-jimp.mjs +10 -0
  29. package/dist/es/img/get-photon.mjs +19 -0
  30. package/dist/es/img/get-sharp.mjs +11 -0
  31. package/dist/es/img/index.mjs +5 -0
  32. package/dist/es/img/info.mjs +32 -0
  33. package/dist/es/img/transform.mjs +192 -0
  34. package/dist/es/index.mjs +3 -0
  35. package/dist/es/logger.mjs +61 -0
  36. package/dist/es/node/fs.mjs +44 -0
  37. package/dist/es/node/index.mjs +1 -0
  38. package/dist/es/polyfills/async-hooks.mjs +2 -0
  39. package/dist/es/polyfills/index.mjs +1 -0
  40. package/dist/es/types/index.mjs +3 -0
  41. package/dist/es/us-keyboard-layout.mjs +1414 -0
  42. package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
  43. package/dist/es/utils.mjs +66 -0
  44. package/dist/lib/baseDB.js +149 -0
  45. package/dist/lib/build/copy-static.js +77 -0
  46. package/dist/lib/common.js +93 -0
  47. package/dist/lib/constants/example-code.js +239 -0
  48. package/dist/lib/constants/index.js +100 -0
  49. package/dist/lib/env/basic.js +40 -0
  50. package/dist/lib/env/constants.js +143 -0
  51. package/dist/lib/env/decide-model-config.js +212 -0
  52. package/dist/lib/env/global-config-manager.js +125 -0
  53. package/dist/lib/env/helper.js +89 -0
  54. package/dist/lib/env/index.js +94 -0
  55. package/dist/lib/env/init-debug.js +52 -0
  56. package/dist/lib/env/model-config-manager.js +133 -0
  57. package/dist/lib/env/parse.js +106 -0
  58. package/dist/lib/env/types.js +635 -0
  59. package/dist/lib/env/utils.js +61 -0
  60. package/dist/lib/extractor/constants.js +42 -0
  61. package/dist/lib/extractor/debug.js +12 -0
  62. package/dist/lib/extractor/dom-util.js +150 -0
  63. package/dist/lib/extractor/index.js +88 -0
  64. package/dist/lib/extractor/locator.js +141 -0
  65. package/dist/lib/extractor/tree.js +127 -0
  66. package/dist/lib/extractor/util.js +335 -0
  67. package/dist/lib/extractor/web-extractor.js +356 -0
  68. package/dist/lib/img/box-select.js +232 -0
  69. package/dist/lib/img/draw-box.js +89 -0
  70. package/dist/lib/img/get-jimp.js +72 -0
  71. package/dist/lib/img/get-photon.js +76 -0
  72. package/dist/lib/img/get-sharp.js +63 -0
  73. package/dist/lib/img/index.js +102 -0
  74. package/dist/lib/img/info.js +86 -0
  75. package/dist/lib/img/transform.js +279 -0
  76. package/dist/lib/index.js +43 -0
  77. package/dist/lib/logger.js +114 -0
  78. package/dist/lib/node/fs.js +97 -0
  79. package/dist/lib/node/index.js +60 -0
  80. package/dist/lib/polyfills/async-hooks.js +36 -0
  81. package/dist/lib/polyfills/index.js +60 -0
  82. package/dist/lib/types/index.js +37 -0
  83. package/dist/lib/us-keyboard-layout.js +1457 -0
  84. package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
  85. package/dist/lib/utils.js +136 -0
  86. package/dist/types/baseDB.d.ts +25 -0
  87. package/dist/types/build/copy-static.d.ts +31 -0
  88. package/dist/types/common.d.ts +12 -0
  89. package/dist/types/constants/example-code.d.ts +2 -0
  90. package/dist/types/constants/index.d.ts +22 -0
  91. package/dist/types/env/basic.d.ts +6 -0
  92. package/dist/types/env/constants.d.ts +40 -0
  93. package/dist/types/env/decide-model-config.d.ts +14 -0
  94. package/dist/types/env/global-config-manager.d.ts +32 -0
  95. package/dist/types/env/helper.d.ts +6 -0
  96. package/dist/types/env/index.d.ts +4 -0
  97. package/dist/types/env/init-debug.d.ts +1 -0
  98. package/dist/types/env/model-config-manager.d.ts +24 -0
  99. package/dist/types/env/parse.d.ts +12 -0
  100. package/dist/types/env/types.d.ts +294 -0
  101. package/dist/types/env/utils.d.ts +7 -0
  102. package/dist/types/extractor/constants.d.ts +1 -0
  103. package/dist/types/extractor/debug.d.ts +1 -0
  104. package/dist/types/extractor/dom-util.d.ts +26 -0
  105. package/dist/types/extractor/index.d.ts +33 -0
  106. package/dist/types/extractor/locator.d.ts +7 -0
  107. package/dist/types/extractor/tree.d.ts +9 -0
  108. package/dist/types/extractor/util.d.ts +43 -0
  109. package/dist/types/extractor/web-extractor.d.ts +19 -0
  110. package/dist/types/img/box-select.d.ts +25 -0
  111. package/dist/types/img/draw-box.d.ts +15 -0
  112. package/dist/types/img/get-jimp.d.ts +2 -0
  113. package/dist/types/img/get-photon.d.ts +8 -0
  114. package/dist/types/img/get-sharp.d.ts +3 -0
  115. package/dist/types/img/index.d.ts +4 -0
  116. package/dist/types/img/info.d.ts +29 -0
  117. package/dist/types/img/transform.d.ts +88 -0
  118. package/dist/types/index.d.ts +3 -0
  119. package/dist/types/logger.d.ts +4 -0
  120. package/dist/types/node/fs.d.ts +15 -0
  121. package/dist/types/node/index.d.ts +1 -0
  122. package/dist/types/polyfills/async-hooks.d.ts +6 -0
  123. package/dist/types/polyfills/index.d.ts +4 -0
  124. package/dist/types/types/index.d.ts +34 -0
  125. package/dist/types/us-keyboard-layout.d.ts +32 -0
  126. package/dist/types/utils.d.ts +22 -0
  127. package/package.json +106 -0
  128. package/src/baseDB.ts +158 -0
  129. package/src/build/copy-static.ts +62 -0
  130. package/src/common.ts +67 -0
  131. package/src/constants/example-code.ts +202 -0
  132. package/src/constants/index.ts +30 -0
  133. package/src/env/basic.ts +12 -0
  134. package/src/env/constants.ts +291 -0
  135. package/src/env/decide-model-config.ts +319 -0
  136. package/src/env/global-config-manager.ts +174 -0
  137. package/src/env/helper.ts +79 -0
  138. package/src/env/index.ts +4 -0
  139. package/src/env/init-debug.ts +29 -0
  140. package/src/env/model-config-manager.ts +145 -0
  141. package/src/env/parse.ts +131 -0
  142. package/src/env/types.ts +560 -0
  143. package/src/env/utils.ts +39 -0
  144. package/src/extractor/constants.ts +5 -0
  145. package/src/extractor/debug.ts +10 -0
  146. package/src/extractor/dom-util.ts +152 -0
  147. package/src/extractor/index.ts +50 -0
  148. package/src/extractor/locator.ts +179 -0
  149. package/src/extractor/tree.ts +179 -0
  150. package/src/extractor/util.ts +468 -0
  151. package/src/extractor/web-extractor.ts +481 -0
  152. package/src/img/box-select.ts +346 -0
  153. package/src/img/draw-box.ts +60 -0
  154. package/src/img/get-jimp.ts +12 -0
  155. package/src/img/get-photon.ts +48 -0
  156. package/src/img/get-sharp.ts +18 -0
  157. package/src/img/index.ts +24 -0
  158. package/src/img/info.ts +79 -0
  159. package/src/img/jimp.d.ts +4 -0
  160. package/src/img/transform.ts +396 -0
  161. package/src/index.ts +6 -0
  162. package/src/logger.ts +93 -0
  163. package/src/node/fs.ts +84 -0
  164. package/src/node/index.ts +1 -0
  165. package/src/polyfills/async-hooks.ts +6 -0
  166. package/src/polyfills/index.ts +4 -0
  167. package/src/types/index.ts +47 -0
  168. package/src/us-keyboard-layout.ts +723 -0
  169. package/src/utils.ts +127 -0
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ processImageElementInfo: ()=>processImageElementInfo,
37
+ compositeElementInfoImg: ()=>compositeElementInfoImg
38
+ });
39
+ const external_node_assert_namespaceObject = require("node:assert");
40
+ var external_node_assert_default = /*#__PURE__*/ __webpack_require__.n(external_node_assert_namespaceObject);
41
+ const external_get_jimp_js_namespaceObject = require("./get-jimp.js");
42
+ var external_get_jimp_js_default = /*#__PURE__*/ __webpack_require__.n(external_get_jimp_js_namespaceObject);
43
+ const external_index_js_namespaceObject = require("./index.js");
44
+ let cachedFont = null;
45
+ const loadFonts = async ()=>{
46
+ const Jimp = await external_get_jimp_js_default()();
47
+ try {
48
+ const fonts = await Jimp.loadFont(Jimp.FONT_SANS_16_WHITE);
49
+ return fonts;
50
+ } catch (error) {
51
+ console.warn('Error loading font, will try to load online fonts', error);
52
+ const onlineFonts = 'https://cdn.jsdelivr.net/npm/jimp-compact@0.16.1-2/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt';
53
+ const fonts = await Jimp.loadFont(onlineFonts);
54
+ return fonts;
55
+ }
56
+ };
57
+ const createSvgOverlay = async (elements, imageWidth, imageHeight, boxPadding = 5, borderThickness = 2, prompt)=>{
58
+ const Jimp = await external_get_jimp_js_default()();
59
+ const image = new Jimp(imageWidth, imageHeight, 0x00000000);
60
+ const colors = [
61
+ {
62
+ rect: 0xc62300ff,
63
+ text: 0xffffffff
64
+ },
65
+ {
66
+ rect: 0x0000ffff,
67
+ text: 0xffffffff
68
+ },
69
+ {
70
+ rect: 0x8b4513ff,
71
+ text: 0xffffffff
72
+ },
73
+ {
74
+ rect: 0x3e7b27ff,
75
+ text: 0xffffffff
76
+ },
77
+ {
78
+ rect: 0x500073ff,
79
+ text: 0xffffffff
80
+ }
81
+ ];
82
+ if (prompt) try {
83
+ cachedFont = cachedFont || await loadFonts();
84
+ const promptPadding = 10;
85
+ const promptMargin = 20;
86
+ const promptHeight = 30;
87
+ const promptY = imageHeight - promptHeight - promptMargin;
88
+ image.scan(0, promptY, imageWidth, promptHeight, (x, y, idx)=>{
89
+ image.bitmap.data[idx + 0] = 0x00;
90
+ image.bitmap.data[idx + 1] = 0x00;
91
+ image.bitmap.data[idx + 2] = 0x00;
92
+ image.bitmap.data[idx + 3] = 0xcc;
93
+ });
94
+ image.print(cachedFont, promptPadding, promptY, {
95
+ text: prompt,
96
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
97
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE
98
+ }, imageWidth - 2 * promptPadding, promptHeight);
99
+ } catch (error) {
100
+ console.error('Error drawing prompt text', error);
101
+ }
102
+ for(let index = 0; index < elements.length; index++){
103
+ const element = elements[index];
104
+ const color = colors[index % colors.length];
105
+ const paddedLeft = Math.max(0, element.rect.left - boxPadding);
106
+ const paddedTop = Math.max(0, element.rect.top - boxPadding);
107
+ const paddedWidth = Math.min(imageWidth - paddedLeft, element.rect.width + 2 * boxPadding);
108
+ const paddedHeight = Math.min(imageHeight - paddedTop, element.rect.height + 2 * boxPadding);
109
+ const paddedRect = {
110
+ left: paddedLeft,
111
+ top: paddedTop,
112
+ width: paddedWidth,
113
+ height: paddedHeight
114
+ };
115
+ image.scan(paddedRect.left, paddedRect.top, paddedRect.width, paddedRect.height, (x, y, idx)=>{
116
+ if (x >= paddedRect.left && x < paddedRect.left + borderThickness || x <= paddedRect.left + paddedRect.width - 1 && x > paddedRect.left + paddedRect.width - borderThickness || y >= paddedRect.top && y < paddedRect.top + borderThickness || y <= paddedRect.top + paddedRect.height - 1 && y > paddedRect.top + paddedRect.height - borderThickness) {
117
+ image.bitmap.data[idx + 0] = color.rect >> 24 & 0xff;
118
+ image.bitmap.data[idx + 1] = color.rect >> 16 & 0xff;
119
+ image.bitmap.data[idx + 2] = color.rect >> 8 & 0xff;
120
+ image.bitmap.data[idx + 3] = 0xff & color.rect;
121
+ }
122
+ });
123
+ const indexId = element.indexId;
124
+ if ('number' != typeof indexId) continue;
125
+ const textWidth = 8 * indexId.toString().length;
126
+ const textHeight = 12;
127
+ const rectWidth = textWidth + 5;
128
+ const rectHeight = textHeight + 4;
129
+ let rectX = paddedRect.left - rectWidth;
130
+ let rectY = paddedRect.top + paddedRect.height / 2 - textHeight / 2 - 2;
131
+ const checkOverlap = (x, y)=>elements.slice(0, index).some((otherElement)=>x < otherElement.rect.left + otherElement.rect.width && x + rectWidth > otherElement.rect.left && y < otherElement.rect.top + otherElement.rect.height && y + rectHeight > otherElement.rect.top);
132
+ const isWithinBounds = (x, y)=>x >= 0 && x + rectWidth <= imageWidth && y >= 0 && y + rectHeight <= imageHeight;
133
+ if (checkOverlap(rectX, rectY) || !isWithinBounds(rectX, rectY)) if (!checkOverlap(paddedRect.left, paddedRect.top - rectHeight - 2) && isWithinBounds(paddedRect.left, paddedRect.top - rectHeight - 2)) {
134
+ rectX = paddedRect.left;
135
+ rectY = paddedRect.top - rectHeight - 2;
136
+ } else if (!checkOverlap(paddedRect.left, paddedRect.top + paddedRect.height + 2) && isWithinBounds(paddedRect.left, paddedRect.top + paddedRect.height + 2)) {
137
+ rectX = paddedRect.left;
138
+ rectY = paddedRect.top + paddedRect.height + 2;
139
+ } else if (!checkOverlap(paddedRect.left + paddedRect.width + 2, paddedRect.top) && isWithinBounds(paddedRect.left + paddedRect.width + 2, paddedRect.top)) {
140
+ rectX = paddedRect.left + paddedRect.width + 2;
141
+ rectY = paddedRect.top;
142
+ } else {
143
+ rectX = paddedRect.left;
144
+ rectY = paddedRect.top + 2;
145
+ }
146
+ image.scan(rectX, rectY, rectWidth, rectHeight, (x, y, idx)=>{
147
+ image.bitmap.data[idx + 0] = color.rect >> 24 & 0xff;
148
+ image.bitmap.data[idx + 1] = color.rect >> 16 & 0xff;
149
+ image.bitmap.data[idx + 2] = color.rect >> 8 & 0xff;
150
+ image.bitmap.data[idx + 3] = 0xff & color.rect;
151
+ });
152
+ try {
153
+ cachedFont = cachedFont || await loadFonts();
154
+ } catch (error) {
155
+ console.error('Error loading font', error);
156
+ }
157
+ image.print(cachedFont, rectX, rectY, {
158
+ text: indexId.toString(),
159
+ alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,
160
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE
161
+ }, rectWidth, rectHeight);
162
+ }
163
+ return image;
164
+ };
165
+ const compositeElementInfoImg = async (options)=>{
166
+ external_node_assert_default()(options.inputImgBase64, 'inputImgBase64 is required');
167
+ let width = 0;
168
+ let height = 0;
169
+ let jimpImage;
170
+ const Jimp = await external_get_jimp_js_default()();
171
+ if (options.size) {
172
+ width = options.size.width;
173
+ height = options.size.height;
174
+ }
175
+ if (width && height) {
176
+ const imageBuffer = await (0, external_index_js_namespaceObject.bufferFromBase64)(options.inputImgBase64);
177
+ jimpImage = await Jimp.read(imageBuffer);
178
+ const imageBitmap = jimpImage.bitmap;
179
+ if (imageBitmap.width !== width || imageBitmap.height !== height) jimpImage.resize(width, height, Jimp.RESIZE_NEAREST_NEIGHBOR);
180
+ } else {
181
+ const info = await (0, external_index_js_namespaceObject.imageInfoOfBase64)(options.inputImgBase64);
182
+ width = info.width;
183
+ height = info.height;
184
+ jimpImage = info.jimpImage;
185
+ }
186
+ if (!width || !height) throw Error('Image processing failed because width or height is undefined');
187
+ const { elementsPositionInfo, prompt } = options;
188
+ const result = await Promise.resolve(jimpImage).then(async (image)=>{
189
+ const svgOverlay = await createSvgOverlay(elementsPositionInfo, width, height, options.annotationPadding, options.borderThickness, prompt);
190
+ const svgImage = await Jimp.read(svgOverlay);
191
+ const compositeImage = await image.composite(svgImage, 0, 0, {
192
+ mode: Jimp.BLEND_SOURCE_OVER,
193
+ opacitySource: 1,
194
+ opacityDest: 1
195
+ });
196
+ return compositeImage;
197
+ }).then(async (compositeImage)=>{
198
+ compositeImage.quality(90);
199
+ const base64 = await compositeImage.getBase64Async(Jimp.MIME_JPEG);
200
+ return base64;
201
+ }).catch((error)=>{
202
+ throw error;
203
+ });
204
+ return result;
205
+ };
206
+ const processImageElementInfo = async (options)=>{
207
+ const base64Image = options.inputImgBase64.split(';base64,').pop();
208
+ external_node_assert_default()(base64Image, 'base64Image is undefined');
209
+ const [compositeElementInfoImgBase64, compositeElementInfoImgWithoutTextBase64] = await Promise.all([
210
+ compositeElementInfoImg({
211
+ inputImgBase64: options.inputImgBase64,
212
+ elementsPositionInfo: options.elementsPositionInfo
213
+ }),
214
+ compositeElementInfoImg({
215
+ inputImgBase64: options.inputImgBase64,
216
+ elementsPositionInfo: options.elementsPositionInfoWithoutText
217
+ })
218
+ ]);
219
+ return {
220
+ compositeElementInfoImgBase64,
221
+ compositeElementInfoImgWithoutTextBase64
222
+ };
223
+ };
224
+ exports.compositeElementInfoImg = __webpack_exports__.compositeElementInfoImg;
225
+ exports.processImageElementInfo = __webpack_exports__.processImageElementInfo;
226
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
227
+ "compositeElementInfoImg",
228
+ "processImageElementInfo"
229
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
230
+ Object.defineProperty(exports, '__esModule', {
231
+ value: true
232
+ });
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ drawBoxOnImage: ()=>drawBoxOnImage,
37
+ savePositionImg: ()=>savePositionImg
38
+ });
39
+ const external_get_jimp_js_namespaceObject = require("./get-jimp.js");
40
+ var external_get_jimp_js_default = /*#__PURE__*/ __webpack_require__.n(external_get_jimp_js_namespaceObject);
41
+ const external_info_js_namespaceObject = require("./info.js");
42
+ const external_transform_js_namespaceObject = require("./transform.js");
43
+ async function drawBoxOnImage(options) {
44
+ const { inputImgBase64, rect } = options;
45
+ const color = {
46
+ r: 255,
47
+ g: 0,
48
+ b: 0,
49
+ a: 255
50
+ };
51
+ const Jimp = await external_get_jimp_js_default()();
52
+ const imageBuffer = await (0, external_info_js_namespaceObject.bufferFromBase64)(inputImgBase64);
53
+ const image = await Jimp.read(imageBuffer);
54
+ const centerX = rect.x;
55
+ const centerY = rect.y;
56
+ const radius = 5;
57
+ image.scan(Math.floor(centerX - radius), Math.floor(centerY - radius), 2 * radius, 2 * radius, (x, y, idx)=>{
58
+ const distance = Math.sqrt((x - centerX) ** 2 + (y - centerY) ** 2);
59
+ if (distance <= radius) {
60
+ image.bitmap.data[idx + 0] = color.r;
61
+ image.bitmap.data[idx + 1] = color.g;
62
+ image.bitmap.data[idx + 2] = color.b;
63
+ image.bitmap.data[idx + 3] = color.a;
64
+ }
65
+ });
66
+ image.quality(90);
67
+ const resultBase64 = await image.getBase64Async(Jimp.MIME_JPEG);
68
+ return resultBase64;
69
+ }
70
+ async function savePositionImg(options) {
71
+ const { inputImgBase64, rect, outputPath } = options;
72
+ const imgBase64 = await drawBoxOnImage({
73
+ inputImgBase64,
74
+ rect
75
+ });
76
+ await (0, external_transform_js_namespaceObject.saveBase64Image)({
77
+ base64Data: imgBase64,
78
+ outputPath
79
+ });
80
+ }
81
+ exports.drawBoxOnImage = __webpack_exports__.drawBoxOnImage;
82
+ exports.savePositionImg = __webpack_exports__.savePositionImg;
83
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
84
+ "drawBoxOnImage",
85
+ "savePositionImg"
86
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
87
+ Object.defineProperty(exports, '__esModule', {
88
+ value: true
89
+ });
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "jimp/browser/lib/jimp.js": function(module) {
4
+ module.exports = import("jimp/browser/lib/jimp.js").then(function(module) {
5
+ return module;
6
+ });
7
+ }
8
+ };
9
+ var __webpack_module_cache__ = {};
10
+ function __webpack_require__(moduleId) {
11
+ var cachedModule = __webpack_module_cache__[moduleId];
12
+ if (void 0 !== cachedModule) return cachedModule.exports;
13
+ var module = __webpack_module_cache__[moduleId] = {
14
+ exports: {}
15
+ };
16
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
17
+ return module.exports;
18
+ }
19
+ (()=>{
20
+ __webpack_require__.n = (module)=>{
21
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
22
+ __webpack_require__.d(getter, {
23
+ a: getter
24
+ });
25
+ return getter;
26
+ };
27
+ })();
28
+ (()=>{
29
+ __webpack_require__.d = (exports1, definition)=>{
30
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
31
+ enumerable: true,
32
+ get: definition[key]
33
+ });
34
+ };
35
+ })();
36
+ (()=>{
37
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
38
+ })();
39
+ (()=>{
40
+ __webpack_require__.r = (exports1)=>{
41
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
42
+ value: 'Module'
43
+ });
44
+ Object.defineProperty(exports1, '__esModule', {
45
+ value: true
46
+ });
47
+ };
48
+ })();
49
+ var __webpack_exports__ = {};
50
+ (()=>{
51
+ __webpack_require__.r(__webpack_exports__);
52
+ __webpack_require__.d(__webpack_exports__, {
53
+ default: ()=>getJimp
54
+ });
55
+ const external_jimp_namespaceObject = require("jimp");
56
+ var external_jimp_default = /*#__PURE__*/ __webpack_require__.n(external_jimp_namespaceObject);
57
+ const external_utils_js_namespaceObject = require("../utils.js");
58
+ async function getJimp() {
59
+ if (external_utils_js_namespaceObject.ifInBrowser || external_utils_js_namespaceObject.ifInWorker) {
60
+ await Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "jimp/browser/lib/jimp.js"));
61
+ return ('undefined' != typeof window ? window : self).Jimp;
62
+ }
63
+ return external_jimp_default();
64
+ }
65
+ })();
66
+ exports["default"] = __webpack_exports__["default"];
67
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
68
+ "default"
69
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
70
+ Object.defineProperty(exports, '__esModule', {
71
+ value: true
72
+ });
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ "@silvia-odwyer/photon": function(module) {
4
+ module.exports = import("@silvia-odwyer/photon").then(function(module) {
5
+ return module;
6
+ });
7
+ },
8
+ "@silvia-odwyer/photon-node": function(module) {
9
+ module.exports = import("@silvia-odwyer/photon-node").then(function(module) {
10
+ return module;
11
+ });
12
+ }
13
+ };
14
+ var __webpack_module_cache__ = {};
15
+ function __webpack_require__(moduleId) {
16
+ var cachedModule = __webpack_module_cache__[moduleId];
17
+ if (void 0 !== cachedModule) return cachedModule.exports;
18
+ var module = __webpack_module_cache__[moduleId] = {
19
+ exports: {}
20
+ };
21
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
22
+ return module.exports;
23
+ }
24
+ (()=>{
25
+ __webpack_require__.d = (exports1, definition)=>{
26
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
27
+ enumerable: true,
28
+ get: definition[key]
29
+ });
30
+ };
31
+ })();
32
+ (()=>{
33
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
34
+ })();
35
+ (()=>{
36
+ __webpack_require__.r = (exports1)=>{
37
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
38
+ value: 'Module'
39
+ });
40
+ Object.defineProperty(exports1, '__esModule', {
41
+ value: true
42
+ });
43
+ };
44
+ })();
45
+ var __webpack_exports__ = {};
46
+ (()=>{
47
+ __webpack_require__.r(__webpack_exports__);
48
+ __webpack_require__.d(__webpack_exports__, {
49
+ default: ()=>getPhoton
50
+ });
51
+ const external_utils_js_namespaceObject = require("../utils.js");
52
+ let photonModule = null;
53
+ let isInitialized = false;
54
+ async function getPhoton() {
55
+ if (photonModule && isInitialized) return photonModule;
56
+ try {
57
+ if (external_utils_js_namespaceObject.ifInBrowser || external_utils_js_namespaceObject.ifInWorker) {
58
+ const photon = await Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "@silvia-odwyer/photon"));
59
+ if ('function' == typeof photon.default) await photon.default();
60
+ photonModule = photon;
61
+ } else if (external_utils_js_namespaceObject.ifInNode) photonModule = await Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "@silvia-odwyer/photon-node"));
62
+ if (!photonModule.PhotonImage || !photonModule.PhotonImage.new_from_byteslice) throw new Error('PhotonImage.new_from_byteslice is not available');
63
+ isInitialized = true;
64
+ return photonModule;
65
+ } catch (error) {
66
+ throw new Error(`Failed to load photon module: ${error instanceof Error ? error.message : String(error)}`);
67
+ }
68
+ }
69
+ })();
70
+ exports["default"] = __webpack_exports__["default"];
71
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
72
+ "default"
73
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
74
+ Object.defineProperty(exports, '__esModule', {
75
+ value: true
76
+ });
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __webpack_modules__ = {
3
+ sharp: function(module) {
4
+ module.exports = import("sharp").then(function(module) {
5
+ return module;
6
+ });
7
+ }
8
+ };
9
+ var __webpack_module_cache__ = {};
10
+ function __webpack_require__(moduleId) {
11
+ var cachedModule = __webpack_module_cache__[moduleId];
12
+ if (void 0 !== cachedModule) return cachedModule.exports;
13
+ var module = __webpack_module_cache__[moduleId] = {
14
+ exports: {}
15
+ };
16
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
17
+ return module.exports;
18
+ }
19
+ (()=>{
20
+ __webpack_require__.d = (exports1, definition)=>{
21
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
22
+ enumerable: true,
23
+ get: definition[key]
24
+ });
25
+ };
26
+ })();
27
+ (()=>{
28
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
29
+ })();
30
+ (()=>{
31
+ __webpack_require__.r = (exports1)=>{
32
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
33
+ value: 'Module'
34
+ });
35
+ Object.defineProperty(exports1, '__esModule', {
36
+ value: true
37
+ });
38
+ };
39
+ })();
40
+ var __webpack_exports__ = {};
41
+ (()=>{
42
+ __webpack_require__.r(__webpack_exports__);
43
+ __webpack_require__.d(__webpack_exports__, {
44
+ default: ()=>getSharp
45
+ });
46
+ const external_utils_js_namespaceObject = require("../utils.js");
47
+ async function getSharp() {
48
+ if (!external_utils_js_namespaceObject.ifInNode) throw new Error('Sharp is only available in Node.js environment');
49
+ try {
50
+ const sharp = await Promise.resolve().then(__webpack_require__.bind(__webpack_require__, "sharp"));
51
+ return sharp.default;
52
+ } catch (error) {
53
+ throw new Error(`Failed to load sharp module: ${error instanceof Error ? error.message : String(error)}`);
54
+ }
55
+ }
56
+ })();
57
+ exports["default"] = __webpack_exports__["default"];
58
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
59
+ "default"
60
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
61
+ Object.defineProperty(exports, '__esModule', {
62
+ value: true
63
+ });
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ localImg2Base64: ()=>external_transform_js_namespaceObject.localImg2Base64,
28
+ compositeElementInfoImg: ()=>external_box_select_js_namespaceObject.compositeElementInfoImg,
29
+ isValidPNGImageBuffer: ()=>external_info_js_namespaceObject.isValidPNGImageBuffer,
30
+ saveBase64Image: ()=>external_transform_js_namespaceObject.saveBase64Image,
31
+ zoomForGPT4o: ()=>external_transform_js_namespaceObject.zoomForGPT4o,
32
+ jimpToBase64: ()=>external_transform_js_namespaceObject.jimpToBase64,
33
+ bufferFromBase64: ()=>external_info_js_namespaceObject.bufferFromBase64,
34
+ drawBoxOnImage: ()=>external_draw_box_js_namespaceObject.drawBoxOnImage,
35
+ paddingToMatchBlockByBase64: ()=>external_transform_js_namespaceObject.paddingToMatchBlockByBase64,
36
+ resizeImgBase64: ()=>external_transform_js_namespaceObject.resizeImgBase64,
37
+ paddingToMatchBlock: ()=>external_transform_js_namespaceObject.paddingToMatchBlock,
38
+ savePositionImg: ()=>external_draw_box_js_namespaceObject.savePositionImg,
39
+ imageInfoOfBase64: ()=>external_info_js_namespaceObject.imageInfoOfBase64,
40
+ cropByRect: ()=>external_transform_js_namespaceObject.cropByRect,
41
+ resizeAndConvertImgBuffer: ()=>external_transform_js_namespaceObject.resizeAndConvertImgBuffer,
42
+ createImgBase64ByFormat: ()=>external_transform_js_namespaceObject.createImgBase64ByFormat,
43
+ httpImg2Base64: ()=>external_transform_js_namespaceObject.httpImg2Base64,
44
+ parseBase64: ()=>external_transform_js_namespaceObject.parseBase64,
45
+ processImageElementInfo: ()=>external_box_select_js_namespaceObject.processImageElementInfo,
46
+ jimpFromBase64: ()=>external_transform_js_namespaceObject.jimpFromBase64,
47
+ imageInfo: ()=>external_info_js_namespaceObject.imageInfo,
48
+ preProcessImageUrl: ()=>external_transform_js_namespaceObject.preProcessImageUrl
49
+ });
50
+ const external_info_js_namespaceObject = require("./info.js");
51
+ const external_transform_js_namespaceObject = require("./transform.js");
52
+ const external_box_select_js_namespaceObject = require("./box-select.js");
53
+ const external_draw_box_js_namespaceObject = require("./draw-box.js");
54
+ exports.bufferFromBase64 = __webpack_exports__.bufferFromBase64;
55
+ exports.compositeElementInfoImg = __webpack_exports__.compositeElementInfoImg;
56
+ exports.createImgBase64ByFormat = __webpack_exports__.createImgBase64ByFormat;
57
+ exports.cropByRect = __webpack_exports__.cropByRect;
58
+ exports.drawBoxOnImage = __webpack_exports__.drawBoxOnImage;
59
+ exports.httpImg2Base64 = __webpack_exports__.httpImg2Base64;
60
+ exports.imageInfo = __webpack_exports__.imageInfo;
61
+ exports.imageInfoOfBase64 = __webpack_exports__.imageInfoOfBase64;
62
+ exports.isValidPNGImageBuffer = __webpack_exports__.isValidPNGImageBuffer;
63
+ exports.jimpFromBase64 = __webpack_exports__.jimpFromBase64;
64
+ exports.jimpToBase64 = __webpack_exports__.jimpToBase64;
65
+ exports.localImg2Base64 = __webpack_exports__.localImg2Base64;
66
+ exports.paddingToMatchBlock = __webpack_exports__.paddingToMatchBlock;
67
+ exports.paddingToMatchBlockByBase64 = __webpack_exports__.paddingToMatchBlockByBase64;
68
+ exports.parseBase64 = __webpack_exports__.parseBase64;
69
+ exports.preProcessImageUrl = __webpack_exports__.preProcessImageUrl;
70
+ exports.processImageElementInfo = __webpack_exports__.processImageElementInfo;
71
+ exports.resizeAndConvertImgBuffer = __webpack_exports__.resizeAndConvertImgBuffer;
72
+ exports.resizeImgBase64 = __webpack_exports__.resizeImgBase64;
73
+ exports.saveBase64Image = __webpack_exports__.saveBase64Image;
74
+ exports.savePositionImg = __webpack_exports__.savePositionImg;
75
+ exports.zoomForGPT4o = __webpack_exports__.zoomForGPT4o;
76
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
77
+ "bufferFromBase64",
78
+ "compositeElementInfoImg",
79
+ "createImgBase64ByFormat",
80
+ "cropByRect",
81
+ "drawBoxOnImage",
82
+ "httpImg2Base64",
83
+ "imageInfo",
84
+ "imageInfoOfBase64",
85
+ "isValidPNGImageBuffer",
86
+ "jimpFromBase64",
87
+ "jimpToBase64",
88
+ "localImg2Base64",
89
+ "paddingToMatchBlock",
90
+ "paddingToMatchBlockByBase64",
91
+ "parseBase64",
92
+ "preProcessImageUrl",
93
+ "processImageElementInfo",
94
+ "resizeAndConvertImgBuffer",
95
+ "resizeImgBase64",
96
+ "saveBase64Image",
97
+ "savePositionImg",
98
+ "zoomForGPT4o"
99
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
100
+ Object.defineProperty(exports, '__esModule', {
101
+ value: true
102
+ });