@xyo-network/image-thumbnail-plugin 2.99.5 → 3.0.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 (205) hide show
  1. package/dist/node/index.d.ts +91 -3
  2. package/dist/node/index.mjs +98 -135
  3. package/dist/node/index.mjs.map +1 -1
  4. package/package.json +25 -32
  5. package/src/Witness/Witness.ts +44 -45
  6. package/src/Witness/lib/resolveDynamicSvg.ts +1 -1
  7. package/src/index.ts +1 -1
  8. package/xy.config.ts +2 -1
  9. package/dist/neutral/Plugin.d.cts +0 -32
  10. package/dist/neutral/Plugin.d.cts.map +0 -1
  11. package/dist/neutral/Plugin.d.mts +0 -32
  12. package/dist/neutral/Plugin.d.mts.map +0 -1
  13. package/dist/neutral/Plugin.d.ts +0 -32
  14. package/dist/neutral/Plugin.d.ts.map +0 -1
  15. package/dist/neutral/Witness/Config.d.cts +0 -18
  16. package/dist/neutral/Witness/Config.d.cts.map +0 -1
  17. package/dist/neutral/Witness/Config.d.mts +0 -18
  18. package/dist/neutral/Witness/Config.d.mts.map +0 -1
  19. package/dist/neutral/Witness/Config.d.ts +0 -18
  20. package/dist/neutral/Witness/Config.d.ts.map +0 -1
  21. package/dist/neutral/Witness/Params.d.cts +0 -7
  22. package/dist/neutral/Witness/Params.d.cts.map +0 -1
  23. package/dist/neutral/Witness/Params.d.mts +0 -7
  24. package/dist/neutral/Witness/Params.d.mts.map +0 -1
  25. package/dist/neutral/Witness/Params.d.ts +0 -7
  26. package/dist/neutral/Witness/Params.d.ts.map +0 -1
  27. package/dist/neutral/Witness/Witness.d.cts +0 -32
  28. package/dist/neutral/Witness/Witness.d.cts.map +0 -1
  29. package/dist/neutral/Witness/Witness.d.mts +0 -32
  30. package/dist/neutral/Witness/Witness.d.mts.map +0 -1
  31. package/dist/neutral/Witness/Witness.d.ts +0 -32
  32. package/dist/neutral/Witness/Witness.d.ts.map +0 -1
  33. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.cts +0 -2
  34. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.cts.map +0 -1
  35. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.mts +0 -2
  36. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.mts.map +0 -1
  37. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.ts +0 -2
  38. package/dist/neutral/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.ts.map +0 -1
  39. package/dist/neutral/Witness/ffmpeg/fluent/index.d.cts +0 -2
  40. package/dist/neutral/Witness/ffmpeg/fluent/index.d.cts.map +0 -1
  41. package/dist/neutral/Witness/ffmpeg/fluent/index.d.mts +0 -2
  42. package/dist/neutral/Witness/ffmpeg/fluent/index.d.mts.map +0 -1
  43. package/dist/neutral/Witness/ffmpeg/fluent/index.d.ts +0 -2
  44. package/dist/neutral/Witness/ffmpeg/fluent/index.d.ts.map +0 -1
  45. package/dist/neutral/Witness/ffmpeg/index.d.cts +0 -3
  46. package/dist/neutral/Witness/ffmpeg/index.d.cts.map +0 -1
  47. package/dist/neutral/Witness/ffmpeg/index.d.mts +0 -3
  48. package/dist/neutral/Witness/ffmpeg/index.d.mts.map +0 -1
  49. package/dist/neutral/Witness/ffmpeg/index.d.ts +0 -3
  50. package/dist/neutral/Witness/ffmpeg/index.d.ts.map +0 -1
  51. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.cts +0 -2
  52. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.cts.map +0 -1
  53. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.mts +0 -2
  54. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.mts.map +0 -1
  55. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.ts +0 -2
  56. package/dist/neutral/Witness/ffmpeg/spawn/executeFfmpeg.d.ts.map +0 -1
  57. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.cts +0 -2
  58. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.cts.map +0 -1
  59. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.mts +0 -2
  60. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.mts.map +0 -1
  61. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.ts +0 -2
  62. package/dist/neutral/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.ts.map +0 -1
  63. package/dist/neutral/Witness/ffmpeg/spawn/index.d.cts +0 -3
  64. package/dist/neutral/Witness/ffmpeg/spawn/index.d.cts.map +0 -1
  65. package/dist/neutral/Witness/ffmpeg/spawn/index.d.mts +0 -3
  66. package/dist/neutral/Witness/ffmpeg/spawn/index.d.mts.map +0 -1
  67. package/dist/neutral/Witness/ffmpeg/spawn/index.d.ts +0 -3
  68. package/dist/neutral/Witness/ffmpeg/spawn/index.d.ts.map +0 -1
  69. package/dist/neutral/Witness/index.d.cts +0 -4
  70. package/dist/neutral/Witness/index.d.cts.map +0 -1
  71. package/dist/neutral/Witness/index.d.mts +0 -4
  72. package/dist/neutral/Witness/index.d.mts.map +0 -1
  73. package/dist/neutral/Witness/index.d.ts +0 -4
  74. package/dist/neutral/Witness/index.d.ts.map +0 -1
  75. package/dist/neutral/Witness/lib/checkIpfsUrl.d.cts +0 -2
  76. package/dist/neutral/Witness/lib/checkIpfsUrl.d.cts.map +0 -1
  77. package/dist/neutral/Witness/lib/checkIpfsUrl.d.mts +0 -2
  78. package/dist/neutral/Witness/lib/checkIpfsUrl.d.mts.map +0 -1
  79. package/dist/neutral/Witness/lib/checkIpfsUrl.d.ts +0 -2
  80. package/dist/neutral/Witness/lib/checkIpfsUrl.d.ts.map +0 -1
  81. package/dist/neutral/Witness/lib/createDataUrl.d.cts +0 -2
  82. package/dist/neutral/Witness/lib/createDataUrl.d.cts.map +0 -1
  83. package/dist/neutral/Witness/lib/createDataUrl.d.mts +0 -2
  84. package/dist/neutral/Witness/lib/createDataUrl.d.mts.map +0 -1
  85. package/dist/neutral/Witness/lib/createDataUrl.d.ts +0 -2
  86. package/dist/neutral/Witness/lib/createDataUrl.d.ts.map +0 -1
  87. package/dist/neutral/Witness/lib/index.d.cts +0 -4
  88. package/dist/neutral/Witness/lib/index.d.cts.map +0 -1
  89. package/dist/neutral/Witness/lib/index.d.mts +0 -4
  90. package/dist/neutral/Witness/lib/index.d.mts.map +0 -1
  91. package/dist/neutral/Witness/lib/index.d.ts +0 -4
  92. package/dist/neutral/Witness/lib/index.d.ts.map +0 -1
  93. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.cts +0 -2
  94. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.cts.map +0 -1
  95. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.mts +0 -2
  96. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.mts.map +0 -1
  97. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.ts +0 -2
  98. package/dist/neutral/Witness/lib/resolveDynamicSvg.d.ts.map +0 -1
  99. package/dist/neutral/index.cjs +0 -477
  100. package/dist/neutral/index.cjs.map +0 -1
  101. package/dist/neutral/index.d.cts +0 -4
  102. package/dist/neutral/index.d.cts.map +0 -1
  103. package/dist/neutral/index.d.mts +0 -4
  104. package/dist/neutral/index.d.mts.map +0 -1
  105. package/dist/neutral/index.d.ts +0 -4
  106. package/dist/neutral/index.d.ts.map +0 -1
  107. package/dist/neutral/index.mjs +0 -445
  108. package/dist/neutral/index.mjs.map +0 -1
  109. package/dist/node/Plugin.d.cts +0 -32
  110. package/dist/node/Plugin.d.cts.map +0 -1
  111. package/dist/node/Plugin.d.mts +0 -32
  112. package/dist/node/Plugin.d.mts.map +0 -1
  113. package/dist/node/Plugin.d.ts +0 -32
  114. package/dist/node/Plugin.d.ts.map +0 -1
  115. package/dist/node/Witness/Config.d.cts +0 -18
  116. package/dist/node/Witness/Config.d.cts.map +0 -1
  117. package/dist/node/Witness/Config.d.mts +0 -18
  118. package/dist/node/Witness/Config.d.mts.map +0 -1
  119. package/dist/node/Witness/Config.d.ts +0 -18
  120. package/dist/node/Witness/Config.d.ts.map +0 -1
  121. package/dist/node/Witness/Params.d.cts +0 -7
  122. package/dist/node/Witness/Params.d.cts.map +0 -1
  123. package/dist/node/Witness/Params.d.mts +0 -7
  124. package/dist/node/Witness/Params.d.mts.map +0 -1
  125. package/dist/node/Witness/Params.d.ts +0 -7
  126. package/dist/node/Witness/Params.d.ts.map +0 -1
  127. package/dist/node/Witness/Witness.d.cts +0 -32
  128. package/dist/node/Witness/Witness.d.cts.map +0 -1
  129. package/dist/node/Witness/Witness.d.mts +0 -32
  130. package/dist/node/Witness/Witness.d.mts.map +0 -1
  131. package/dist/node/Witness/Witness.d.ts +0 -32
  132. package/dist/node/Witness/Witness.d.ts.map +0 -1
  133. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.cts +0 -2
  134. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.cts.map +0 -1
  135. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.mts +0 -2
  136. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.mts.map +0 -1
  137. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.ts +0 -2
  138. package/dist/node/Witness/ffmpeg/fluent/getVideoFrameAsImageFluent.d.ts.map +0 -1
  139. package/dist/node/Witness/ffmpeg/fluent/index.d.cts +0 -2
  140. package/dist/node/Witness/ffmpeg/fluent/index.d.cts.map +0 -1
  141. package/dist/node/Witness/ffmpeg/fluent/index.d.mts +0 -2
  142. package/dist/node/Witness/ffmpeg/fluent/index.d.mts.map +0 -1
  143. package/dist/node/Witness/ffmpeg/fluent/index.d.ts +0 -2
  144. package/dist/node/Witness/ffmpeg/fluent/index.d.ts.map +0 -1
  145. package/dist/node/Witness/ffmpeg/index.d.cts +0 -3
  146. package/dist/node/Witness/ffmpeg/index.d.cts.map +0 -1
  147. package/dist/node/Witness/ffmpeg/index.d.mts +0 -3
  148. package/dist/node/Witness/ffmpeg/index.d.mts.map +0 -1
  149. package/dist/node/Witness/ffmpeg/index.d.ts +0 -3
  150. package/dist/node/Witness/ffmpeg/index.d.ts.map +0 -1
  151. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.cts +0 -2
  152. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.cts.map +0 -1
  153. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.mts +0 -2
  154. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.mts.map +0 -1
  155. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.ts +0 -2
  156. package/dist/node/Witness/ffmpeg/spawn/executeFfmpeg.d.ts.map +0 -1
  157. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.cts +0 -2
  158. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.cts.map +0 -1
  159. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.mts +0 -2
  160. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.mts.map +0 -1
  161. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.ts +0 -2
  162. package/dist/node/Witness/ffmpeg/spawn/getVideoFrameAsImage.d.ts.map +0 -1
  163. package/dist/node/Witness/ffmpeg/spawn/index.d.cts +0 -3
  164. package/dist/node/Witness/ffmpeg/spawn/index.d.cts.map +0 -1
  165. package/dist/node/Witness/ffmpeg/spawn/index.d.mts +0 -3
  166. package/dist/node/Witness/ffmpeg/spawn/index.d.mts.map +0 -1
  167. package/dist/node/Witness/ffmpeg/spawn/index.d.ts +0 -3
  168. package/dist/node/Witness/ffmpeg/spawn/index.d.ts.map +0 -1
  169. package/dist/node/Witness/index.d.cts +0 -4
  170. package/dist/node/Witness/index.d.cts.map +0 -1
  171. package/dist/node/Witness/index.d.mts +0 -4
  172. package/dist/node/Witness/index.d.mts.map +0 -1
  173. package/dist/node/Witness/index.d.ts +0 -4
  174. package/dist/node/Witness/index.d.ts.map +0 -1
  175. package/dist/node/Witness/lib/checkIpfsUrl.d.cts +0 -2
  176. package/dist/node/Witness/lib/checkIpfsUrl.d.cts.map +0 -1
  177. package/dist/node/Witness/lib/checkIpfsUrl.d.mts +0 -2
  178. package/dist/node/Witness/lib/checkIpfsUrl.d.mts.map +0 -1
  179. package/dist/node/Witness/lib/checkIpfsUrl.d.ts +0 -2
  180. package/dist/node/Witness/lib/checkIpfsUrl.d.ts.map +0 -1
  181. package/dist/node/Witness/lib/createDataUrl.d.cts +0 -2
  182. package/dist/node/Witness/lib/createDataUrl.d.cts.map +0 -1
  183. package/dist/node/Witness/lib/createDataUrl.d.mts +0 -2
  184. package/dist/node/Witness/lib/createDataUrl.d.mts.map +0 -1
  185. package/dist/node/Witness/lib/createDataUrl.d.ts +0 -2
  186. package/dist/node/Witness/lib/createDataUrl.d.ts.map +0 -1
  187. package/dist/node/Witness/lib/index.d.cts +0 -4
  188. package/dist/node/Witness/lib/index.d.cts.map +0 -1
  189. package/dist/node/Witness/lib/index.d.mts +0 -4
  190. package/dist/node/Witness/lib/index.d.mts.map +0 -1
  191. package/dist/node/Witness/lib/index.d.ts +0 -4
  192. package/dist/node/Witness/lib/index.d.ts.map +0 -1
  193. package/dist/node/Witness/lib/resolveDynamicSvg.d.cts +0 -2
  194. package/dist/node/Witness/lib/resolveDynamicSvg.d.cts.map +0 -1
  195. package/dist/node/Witness/lib/resolveDynamicSvg.d.mts +0 -2
  196. package/dist/node/Witness/lib/resolveDynamicSvg.d.mts.map +0 -1
  197. package/dist/node/Witness/lib/resolveDynamicSvg.d.ts +0 -2
  198. package/dist/node/Witness/lib/resolveDynamicSvg.d.ts.map +0 -1
  199. package/dist/node/index.cjs +0 -488
  200. package/dist/node/index.cjs.map +0 -1
  201. package/dist/node/index.d.cts +0 -4
  202. package/dist/node/index.d.cts.map +0 -1
  203. package/dist/node/index.d.mts +0 -4
  204. package/dist/node/index.d.mts.map +0 -1
  205. package/dist/node/index.d.ts.map +0 -1
@@ -1,4 +1,92 @@
1
- export { ImageThumbnailPlugin as default, ImageThumbnailPlugin } from './Plugin.ts';
2
- export * from './Witness/index.ts';
1
+ import * as _xyo_network_payloadset_plugin from '@xyo-network/payloadset-plugin';
2
+ import { WitnessConfig, WitnessParams } from '@xyo-network/witness-model';
3
+ import * as _xyo_network_module_model from '@xyo-network/module-model';
4
+ import { AnyConfigSchema } from '@xyo-network/module-model';
5
+ import * as _xyo_network_payload_model from '@xyo-network/payload-model';
6
+ import { Schema } from '@xyo-network/payload-model';
7
+ import * as _store__xyo_network_account_model_virtual_3afa553815_package from '.store/@xyo-network-account-model-virtual-3afa553815/package';
8
+ import * as _store__xylabs_object_npm_4_0_0_ffd6151301_package from '.store/@xylabs-object-npm-4.0.0-ffd6151301/package';
9
+ import { ImageThumbnailDiviner } from '@xyo-network/diviner-image-thumbnail';
3
10
  export * from '@xyo-network/diviner-image-thumbnail';
4
- //# sourceMappingURL=index.d.ts.map
11
+ import { AbstractWitness } from '@xyo-network/abstract-witness';
12
+ import { ImageThumbnail } from '@xyo-network/image-thumbnail-payload-plugin';
13
+ import { UrlPayload } from '@xyo-network/url-payload-plugin';
14
+
15
+ declare const ImageThumbnailWitnessConfigSchema: "network.xyo.image.thumbnail.witness.config";
16
+ type ImageThumbnailWitnessConfigSchema = typeof ImageThumbnailWitnessConfigSchema;
17
+ type ImageThumbnailEncoding = 'PNG' | 'JPG' | 'GIF';
18
+ type ImageThumbnailWitnessConfig = WitnessConfig<{
19
+ dataUrlPassthrough?: boolean;
20
+ encoding?: ImageThumbnailEncoding;
21
+ height?: number;
22
+ ipfsGateway?: string;
23
+ maxAsyncProcesses?: number;
24
+ maxCacheBytes?: number;
25
+ maxCacheEntries?: number;
26
+ quality?: number;
27
+ runExclusive?: boolean;
28
+ schema: ImageThumbnailWitnessConfigSchema;
29
+ width?: number;
30
+ }>;
31
+
32
+ type ImageThumbnailWitnessParams = WitnessParams<AnyConfigSchema<ImageThumbnailWitnessConfig>, {
33
+ loaders?: string[];
34
+ }>;
35
+
36
+ interface ImageThumbnailWitnessError extends Error {
37
+ name: 'ImageThumbnailWitnessError';
38
+ url: string;
39
+ }
40
+ interface DnsError extends Error {
41
+ code: string;
42
+ }
43
+ declare class ImageThumbnailWitness<TParams extends ImageThumbnailWitnessParams = ImageThumbnailWitnessParams> extends AbstractWitness<TParams> {
44
+ static readonly configSchemas: Schema[];
45
+ static readonly defaultConfigSchema: Schema;
46
+ private _semaphore;
47
+ get encoding(): ImageThumbnailEncoding;
48
+ get height(): number;
49
+ get ipfsGateway(): string;
50
+ get maxAsyncProcesses(): number;
51
+ get quality(): number;
52
+ get width(): number;
53
+ private static binaryToSha256;
54
+ private static bufferFromDataUrl;
55
+ protected observeHandler(payloads?: UrlPayload[]): Promise<ImageThumbnail[]>;
56
+ private createThumbnailDataUrl;
57
+ private createThumbnailFromVideo;
58
+ private fromHttp;
59
+ private processMedia;
60
+ }
61
+
62
+ declare const ImageThumbnailPlugin: () => _xyo_network_payloadset_plugin.PayloadSetDualPlugin<ImageThumbnailWitness<_store__xylabs_object_npm_4_0_0_ffd6151301_package.BaseParamsFields & {
63
+ account?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance | "random";
64
+ addToResolvers?: boolean;
65
+ additionalSigners?: _store__xyo_network_account_model_virtual_3afa553815_package.AccountInstance[];
66
+ allowNameResolution?: boolean;
67
+ config: _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & _xyo_network_payload_model.SchemaFields & _xyo_network_payload_model.PayloadFields & Omit<_xyo_network_module_model.ArchivingModuleConfig & _xyo_network_module_model.ModuleConfigFields & {
68
+ schema: "network.xyo.image.thumbnail.witness.config";
69
+ } & {
70
+ dataUrlPassthrough?: boolean;
71
+ encoding?: ImageThumbnailEncoding;
72
+ height?: number;
73
+ ipfsGateway?: string;
74
+ maxAsyncProcesses?: number;
75
+ maxCacheBytes?: number;
76
+ maxCacheEntries?: number;
77
+ quality?: number;
78
+ runExclusive?: boolean;
79
+ schema: ImageThumbnailWitnessConfigSchema;
80
+ width?: number;
81
+ }, "schema"> & {
82
+ schema: "network.xyo.image.thumbnail.witness.config";
83
+ }, "schema"> & {
84
+ schema: string;
85
+ };
86
+ ephemeralQueryAccountEnabled?: boolean;
87
+ moduleIdentifierTransformers?: _xyo_network_module_model.ModuleIdentifierTransformer[];
88
+ } & {
89
+ loaders?: string[];
90
+ }>, ImageThumbnailDiviner>;
91
+
92
+ export { type DnsError, type ImageThumbnailEncoding, ImageThumbnailPlugin, ImageThumbnailWitness, type ImageThumbnailWitnessConfig, ImageThumbnailWitnessConfigSchema, type ImageThumbnailWitnessError, type ImageThumbnailWitnessParams, ImageThumbnailPlugin as default };
@@ -1,11 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __getProtoOf = Object.getPrototypeOf;
3
- var __reflectGet = Reflect.get;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
- var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
8
-
9
1
  // src/Plugin.ts
10
2
  import { ImageThumbnailDiviner } from "@xyo-network/diviner-image-thumbnail";
11
3
  import { ImageThumbnailSchema as ImageThumbnailSchema3 } from "@xyo-network/image-thumbnail-payload-plugin";
@@ -19,13 +11,13 @@ var ImageThumbnailWitnessConfigSchema = `${ImageThumbnailSchema}.witness.config`
19
11
  // src/Witness/Witness.ts
20
12
  import { Buffer as Buffer2 } from "node:buffer";
21
13
  import { promises as dnsPromises } from "node:dns";
22
- import { axios as axios2 } from "@xylabs/axios";
23
- import { compact } from "@xylabs/lodash";
14
+ import { exists } from "@xylabs/exists";
24
15
  import { AbstractWitness } from "@xyo-network/abstract-witness";
25
16
  import { PayloadHasher } from "@xyo-network/hash";
26
17
  import { ImageThumbnailSchema as ImageThumbnailSchema2 } from "@xyo-network/image-thumbnail-payload-plugin";
27
18
  import { UrlSchema } from "@xyo-network/url-payload-plugin";
28
19
  import { Semaphore } from "async-mutex";
20
+ import axios2 from "axios";
29
21
  import FileType from "file-type";
30
22
  import graphicsMagick from "gm";
31
23
  import hasbin from "hasbin";
@@ -39,8 +31,7 @@ import { tmpdir } from "node:os";
39
31
  import { Writable } from "node:stream";
40
32
  import ffmpeg from "fluent-ffmpeg";
41
33
  import { v4 as uuid } from "uuid";
42
- var _a;
43
- var FfmpegOutputStream = (_a = class extends Writable {
34
+ var FfmpegOutputStream = class extends Writable {
44
35
  chunks = [];
45
36
  constructor(options) {
46
37
  super(options);
@@ -50,18 +41,16 @@ var FfmpegOutputStream = (_a = class extends Writable {
50
41
  callback();
51
42
  }
52
43
  /**
53
- * Collects the output from ffmpeg into a buffer.
54
- * @returns A buffer containing the concatenated
55
- * output from ffmpeg.
56
- */
57
- toBuffer = /* @__PURE__ */ __name(() => Buffer.concat(this.chunks), "toBuffer");
58
- }, __name(_a, "FfmpegOutputStream"), _a);
59
- var getVideoFrameAsImageFluent = /* @__PURE__ */ __name(async (videoBuffer) => {
44
+ * Collects the output from ffmpeg into a buffer.
45
+ * @returns A buffer containing the concatenated
46
+ * output from ffmpeg.
47
+ */
48
+ toBuffer = () => Buffer.concat(this.chunks);
49
+ };
50
+ var getVideoFrameAsImageFluent = async (videoBuffer) => {
60
51
  const tmpFile = `/${tmpdir()}/${uuid()}`;
61
52
  try {
62
- await writeFile(tmpFile, new Uint8Array(videoBuffer), {
63
- encoding: "binary"
64
- });
53
+ await writeFile(tmpFile, new Uint8Array(videoBuffer), { encoding: "binary" });
65
54
  const imageBuffer = await new Promise((resolve, reject) => {
66
55
  const ffmpegOutput = new FfmpegOutputStream();
67
56
  ffmpeg().on("error", (err) => reject(err.message)).on("end", () => resolve(ffmpegOutput.toBuffer())).input(tmpFile).takeFrames(1).withNoAudio().outputOptions("-f image2pipe").videoCodec("png").pipe(ffmpegOutput);
@@ -73,12 +62,12 @@ var getVideoFrameAsImageFluent = /* @__PURE__ */ __name(async (videoBuffer) => {
73
62
  } catch {
74
63
  }
75
64
  }
76
- }, "getVideoFrameAsImageFluent");
65
+ };
77
66
 
78
67
  // src/Witness/lib/checkIpfsUrl.ts
79
68
  import { assertEx } from "@xylabs/assert";
80
69
  var allowIpfsIoRepair = true;
81
- var checkIpfsUrl = /* @__PURE__ */ __name((urlToCheck, ipfsGateway) => {
70
+ var checkIpfsUrl = (urlToCheck, ipfsGateway) => {
82
71
  try {
83
72
  const url = new URL(urlToCheck);
84
73
  let protocol = url.protocol;
@@ -90,7 +79,7 @@ var checkIpfsUrl = /* @__PURE__ */ __name((urlToCheck, ipfsGateway) => {
90
79
  host = assertEx(ipfsGateway, () => "No ipfsGateway provided");
91
80
  path = url.host === "ipfs" ? `ipfs${path}` : `ipfs/${url.host}${path}`;
92
81
  const root = `${protocol}//${host}/${path}`;
93
- return (query == null ? void 0 : query.length) > 0 ? `${root}?${query}` : root;
82
+ return query?.length > 0 ? `${root}?${query}` : root;
94
83
  } else if (allowIpfsIoRepair && protocol === "https" && host === "ipfs.io") {
95
84
  protocol = "https:";
96
85
  host = assertEx(ipfsGateway, () => "No ipfsGateway provided");
@@ -100,26 +89,26 @@ var checkIpfsUrl = /* @__PURE__ */ __name((urlToCheck, ipfsGateway) => {
100
89
  }
101
90
  path = pathParts.join("/");
102
91
  const root = `${protocol}//${host}/${path}`;
103
- return (query == null ? void 0 : query.length) > 0 ? `${root}?${query}` : root;
92
+ return query?.length > 0 ? `${root}?${query}` : root;
104
93
  } else {
105
94
  return urlToCheck;
106
95
  }
107
96
  } catch {
108
97
  return urlToCheck;
109
98
  }
110
- }, "checkIpfsUrl");
99
+ };
111
100
 
112
101
  // src/Witness/lib/createDataUrl.ts
113
102
  import { fromByteArray } from "base64-js";
114
- var createDataUrl = /* @__PURE__ */ __name((data, contextType, encoding = "base64") => {
103
+ var createDataUrl = (data, contextType, encoding = "base64") => {
115
104
  return `data:${contextType};${encoding},${fromByteArray(new Uint8Array(data))}`;
116
- }, "createDataUrl");
105
+ };
117
106
 
118
107
  // src/Witness/lib/resolveDynamicSvg.ts
119
- import { axios } from "@xylabs/axios";
108
+ import axios from "axios";
120
109
  import { toByteArray } from "base64-js";
121
110
  import { Builder, parseStringPromise } from "xml2js";
122
- var resolveDynamicSvg = /* @__PURE__ */ __name(async (base64Bytes) => {
111
+ var resolveDynamicSvg = async (base64Bytes) => {
123
112
  const decoder = new TextDecoder();
124
113
  const bytes = toByteArray(base64Bytes);
125
114
  const svg = decoder.decode(bytes);
@@ -135,38 +124,23 @@ var resolveDynamicSvg = /* @__PURE__ */ __name(async (base64Bytes) => {
135
124
  ])
136
125
  );
137
126
  const image = imageResults.map(([href, response]) => {
138
- var _a2;
139
127
  if (response.data) {
140
128
  const sourceBuffer = Buffer.from(response.data, "binary");
141
- return {
142
- $: {
143
- href: `data:${(_a2 = response.headers["content-type"]) == null ? void 0 : _a2.toString()};base64,${sourceBuffer.toString("base64")}`
144
- }
145
- };
129
+ return { $: { href: `data:${response.headers["content-type"]?.toString()};base64,${sourceBuffer.toString("base64")}` } };
146
130
  } else {
147
- return {
148
- $: {
149
- href
150
- }
151
- };
131
+ return { $: { href } };
152
132
  }
153
133
  });
154
- const updatedSVG = {
155
- ...svgObj,
156
- svg: {
157
- ...svgNode,
158
- image
159
- }
160
- };
134
+ const updatedSVG = { ...svgObj, svg: { ...svgNode, image } };
161
135
  const builder = new Builder();
162
136
  return builder.buildObject(updatedSVG);
163
- }, "resolveDynamicSvg");
137
+ };
164
138
 
165
139
  // src/Witness/Witness.ts
166
- var gm = graphicsMagick.subClass({
167
- imageMagick: "7+"
168
- });
169
- var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitness {
140
+ var gm = graphicsMagick.subClass({ imageMagick: "7+" });
141
+ var ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitness {
142
+ static configSchemas = [...super.configSchemas, ImageThumbnailWitnessConfigSchema];
143
+ static defaultConfigSchema = ImageThumbnailWitnessConfigSchema;
170
144
  _semaphore = new Semaphore(this.maxAsyncProcesses);
171
145
  get encoding() {
172
146
  return this.config.encoding ?? "PNG";
@@ -218,42 +192,48 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
218
192
  throw new Error("ImageMagick is required for this witness");
219
193
  }
220
194
  const urlPayloads = payloads.filter((payload) => payload.schema === UrlSchema);
221
- const process = /* @__PURE__ */ __name(async () => {
222
- return compact(await Promise.all(urlPayloads.map(async ({ url }) => {
223
- let result;
224
- const dataBuffer = _ImageThumbnailWitness.bufferFromDataUrl(url);
225
- if (dataBuffer) {
226
- if (this.config.dataUrlPassthrough) {
227
- result = {
228
- schema: ImageThumbnailSchema2,
229
- sourceHash: await _ImageThumbnailWitness.binaryToSha256(dataBuffer),
230
- sourceUrl: url,
231
- url
232
- };
233
- } else {
234
- let cookedDataBuffer = dataBuffer;
235
- const urlParts = url.split(";");
236
- const [, contentType] = urlParts[0].split(":");
237
- if (contentType.startsWith("image/svg")) {
238
- const [encoding, byteString] = urlParts[1].split(",");
239
- if (encoding === "base64") {
240
- const newSvg = await resolveDynamicSvg(byteString);
241
- const newSvgDataUrl = createDataUrl(Buffer2.from(newSvg), contentType);
242
- cookedDataBuffer = _ImageThumbnailWitness.bufferFromDataUrl(newSvgDataUrl) ?? dataBuffer;
195
+ const process = async () => {
196
+ return (await Promise.all(
197
+ urlPayloads.map(async ({ url }) => {
198
+ let result;
199
+ const dataBuffer = _ImageThumbnailWitness.bufferFromDataUrl(url);
200
+ if (dataBuffer) {
201
+ if (this.config.dataUrlPassthrough) {
202
+ result = {
203
+ schema: ImageThumbnailSchema2,
204
+ sourceHash: await _ImageThumbnailWitness.binaryToSha256(dataBuffer),
205
+ sourceUrl: url,
206
+ url
207
+ };
208
+ } else {
209
+ let cookedDataBuffer = dataBuffer;
210
+ const urlParts = url.split(";");
211
+ const [, contentType] = urlParts[0].split(":");
212
+ if (contentType.startsWith("image/svg")) {
213
+ const [encoding, byteString] = urlParts[1].split(",");
214
+ if (encoding === "base64") {
215
+ const newSvg = await resolveDynamicSvg(byteString);
216
+ const newSvgDataUrl = createDataUrl(Buffer2.from(newSvg), contentType);
217
+ cookedDataBuffer = _ImageThumbnailWitness.bufferFromDataUrl(newSvgDataUrl) ?? dataBuffer;
218
+ }
243
219
  }
220
+ result = await this.processMedia(
221
+ cookedDataBuffer,
222
+ {
223
+ schema: ImageThumbnailSchema2,
224
+ sourceUrl: url
225
+ },
226
+ contentType
227
+ );
244
228
  }
245
- result = await this.processMedia(cookedDataBuffer, {
246
- schema: ImageThumbnailSchema2,
247
- sourceUrl: url
248
- }, contentType);
229
+ } else {
230
+ const mutatedUrl = checkIpfsUrl(url, this.ipfsGateway);
231
+ result = await this.fromHttp(mutatedUrl, url);
249
232
  }
250
- } else {
251
- const mutatedUrl = checkIpfsUrl(url, this.ipfsGateway);
252
- result = await this.fromHttp(mutatedUrl, url);
253
- }
254
- return result;
255
- })));
256
- }, "process");
233
+ return result;
234
+ })
235
+ )).filter(exists);
236
+ };
257
237
  return this.config.runExclusive ? await this._semaphore.runExclusive(() => process()) : process();
258
238
  }
259
239
  async createThumbnailDataUrl(sourceBuffer, encoding) {
@@ -269,17 +249,16 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
269
249
  return createDataUrl(thumb, "image/png");
270
250
  }
271
251
  /**
272
- * Creates an image thumbnail from a video.
273
- * @param videoBuffer The input video buffer.
274
- * @returns An buffer containing an image thumbnail for the video.
275
- */
252
+ * Creates an image thumbnail from a video.
253
+ * @param videoBuffer The input video buffer.
254
+ * @returns An buffer containing an image thumbnail for the video.
255
+ */
276
256
  async createThumbnailFromVideo(videoBuffer) {
277
257
  const imageBuffer = await getVideoFrameAsImageFluent(videoBuffer);
278
258
  return this.createThumbnailDataUrl(imageBuffer);
279
259
  }
280
260
  // eslint-disable-next-line complexity
281
261
  async fromHttp(url, sourceUrl) {
282
- var _a2, _b, _c;
283
262
  let response;
284
263
  let dnsResult;
285
264
  try {
@@ -310,13 +289,13 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
310
289
  schema: ImageThumbnailSchema2,
311
290
  sourceUrl: sourceUrl ?? url
312
291
  };
313
- if (((_a2 = axiosError == null ? void 0 : axiosError.response) == null ? void 0 : _a2.status) !== void 0) {
292
+ if (axiosError?.response?.status !== void 0) {
314
293
  result2.http = result2.http ?? {};
315
- result2.http.status = (_b = axiosError == null ? void 0 : axiosError.response) == null ? void 0 : _b.status;
294
+ result2.http.status = axiosError?.response?.status;
316
295
  }
317
- if ((axiosError == null ? void 0 : axiosError.code) !== void 0) {
296
+ if (axiosError?.code !== void 0) {
318
297
  result2.http = result2.http ?? {};
319
- result2.http.code = axiosError == null ? void 0 : axiosError.code;
298
+ result2.http.code = axiosError?.code;
320
299
  }
321
300
  return result2;
322
301
  } else {
@@ -331,31 +310,27 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
331
310
  sourceUrl: sourceUrl ?? url
332
311
  };
333
312
  if (response.status >= 200 && response.status < 300) {
334
- const contentType = (_c = response.headers["content-type"]) == null ? void 0 : _c.toString();
313
+ const contentType = response.headers["content-type"]?.toString();
335
314
  const sourceBuffer = Buffer2.from(response.data, "binary");
336
315
  return this.processMedia(sourceBuffer, result, contentType);
337
316
  }
338
317
  return result;
339
318
  }
340
319
  async processMedia(sourceBuffer, imageThumbnail, contentType) {
341
- var _a2, _b, _c, _d, _e;
342
- const [mediaType, fileType] = (contentType == null ? void 0 : contentType.split("/")) ?? [
343
- "",
344
- ""
345
- ];
320
+ const [mediaType, fileType] = contentType?.split("/") ?? ["", ""];
346
321
  imageThumbnail.mime = imageThumbnail.mime ?? {};
347
322
  imageThumbnail.mime.returned = mediaType;
348
323
  try {
349
324
  imageThumbnail.mime.detected = await FileType.fromBuffer(sourceBuffer);
350
325
  } catch (ex) {
351
326
  const error = ex;
352
- (_a2 = this.logger) == null ? void 0 : _a2.error(`FileType error: ${error.message}`);
327
+ this.logger?.error(`FileType error: ${error.message}`);
353
328
  }
354
- const processImage = /* @__PURE__ */ __name(async (encoding2) => {
329
+ const processImage = async (encoding2) => {
355
330
  imageThumbnail.sourceHash = await _ImageThumbnailWitness.binaryToSha256(sourceBuffer);
356
331
  imageThumbnail.url = await this.createThumbnailDataUrl(sourceBuffer, encoding2);
357
- }, "processImage");
358
- const processVideo = /* @__PURE__ */ __name(async () => {
332
+ };
333
+ const processVideo = async () => {
359
334
  if (hasbin.sync("ffmpeg")) {
360
335
  imageThumbnail.sourceHash = await _ImageThumbnailWitness.binaryToSha256(sourceBuffer);
361
336
  imageThumbnail.url = await this.createThumbnailFromVideo(sourceBuffer);
@@ -363,7 +338,7 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
363
338
  imageThumbnail.mime = imageThumbnail.mime ?? {};
364
339
  imageThumbnail.mime.invalid = true;
365
340
  }
366
- }, "processVideo");
341
+ };
367
342
  let encoding = "PNG";
368
343
  switch (fileType.toUpperCase()) {
369
344
  case "GIF": {
@@ -388,19 +363,16 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
388
363
  break;
389
364
  }
390
365
  default: {
391
- const [detectedMediaType] = ((_c = (_b = imageThumbnail.mime.detected) == null ? void 0 : _b.mime) == null ? void 0 : _c.split("/")) ?? [
392
- "",
393
- ""
394
- ];
366
+ const [detectedMediaType] = imageThumbnail.mime.detected?.mime?.split("/") ?? ["", ""];
395
367
  switch (detectedMediaType) {
396
368
  case "image": {
397
369
  await processImage();
398
- imageThumbnail.mime.type = (_d = imageThumbnail.mime.detected) == null ? void 0 : _d.mime;
370
+ imageThumbnail.mime.type = imageThumbnail.mime.detected?.mime;
399
371
  break;
400
372
  }
401
373
  case "video": {
402
374
  await processVideo();
403
- imageThumbnail.mime.type = (_e = imageThumbnail.mime.detected) == null ? void 0 : _e.mime;
375
+ imageThumbnail.mime.type = imageThumbnail.mime.detected?.mime;
404
376
  break;
405
377
  }
406
378
  default: {
@@ -414,30 +386,21 @@ var _ImageThumbnailWitness = class _ImageThumbnailWitness extends AbstractWitnes
414
386
  return imageThumbnail;
415
387
  }
416
388
  };
417
- __name(_ImageThumbnailWitness, "ImageThumbnailWitness");
418
- __publicField(_ImageThumbnailWitness, "configSchemas", [
419
- ...__superGet(_ImageThumbnailWitness, _ImageThumbnailWitness, "configSchemas"),
420
- ImageThumbnailWitnessConfigSchema
421
- ]);
422
- __publicField(_ImageThumbnailWitness, "defaultConfigSchema", ImageThumbnailWitnessConfigSchema);
423
- var ImageThumbnailWitness = _ImageThumbnailWitness;
424
389
 
425
390
  // src/Plugin.ts
426
- var ImageThumbnailPlugin = /* @__PURE__ */ __name(() => createPayloadSetDualPlugin({
427
- required: {
428
- [ImageThumbnailSchema3]: 1
429
- },
430
- schema: PayloadSetSchema
431
- }, {
432
- diviner: /* @__PURE__ */ __name(async (params) => {
433
- const result = await ImageThumbnailDiviner.create(params);
434
- return result;
435
- }, "diviner"),
436
- witness: /* @__PURE__ */ __name(async (params) => {
437
- const result = await ImageThumbnailWitness.create(params);
438
- return result;
439
- }, "witness")
440
- }), "ImageThumbnailPlugin");
391
+ var ImageThumbnailPlugin = () => createPayloadSetDualPlugin(
392
+ { required: { [ImageThumbnailSchema3]: 1 }, schema: PayloadSetSchema },
393
+ {
394
+ diviner: async (params) => {
395
+ const result = await ImageThumbnailDiviner.create(params);
396
+ return result;
397
+ },
398
+ witness: async (params) => {
399
+ const result = await ImageThumbnailWitness.create(params);
400
+ return result;
401
+ }
402
+ }
403
+ );
441
404
 
442
405
  // src/index.ts
443
406
  export * from "@xyo-network/diviner-image-thumbnail";