@xyo-network/image-thumbnail-plugin 2.70.7

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 (47) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +13 -0
  3. package/dist/cjs/Plugin.js +16 -0
  4. package/dist/cjs/Plugin.js.map +1 -0
  5. package/dist/cjs/Witness/Config.js +6 -0
  6. package/dist/cjs/Witness/Config.js.map +1 -0
  7. package/dist/cjs/Witness/Params.js +3 -0
  8. package/dist/cjs/Witness/Params.js.map +1 -0
  9. package/dist/cjs/Witness/Witness.js +67 -0
  10. package/dist/cjs/Witness/Witness.js.map +1 -0
  11. package/dist/cjs/Witness/index.js +7 -0
  12. package/dist/cjs/Witness/index.js.map +1 -0
  13. package/dist/cjs/index.js +10 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/docs.json +21299 -0
  16. package/dist/esm/Plugin.js +11 -0
  17. package/dist/esm/Plugin.js.map +1 -0
  18. package/dist/esm/Witness/Config.js +3 -0
  19. package/dist/esm/Witness/Config.js.map +1 -0
  20. package/dist/esm/Witness/Params.js +2 -0
  21. package/dist/esm/Witness/Params.js.map +1 -0
  22. package/dist/esm/Witness/Witness.js +59 -0
  23. package/dist/esm/Witness/Witness.js.map +1 -0
  24. package/dist/esm/Witness/index.js +4 -0
  25. package/dist/esm/Witness/index.js.map +1 -0
  26. package/dist/esm/index.js +6 -0
  27. package/dist/esm/index.js.map +1 -0
  28. package/dist/types/Plugin.d.ts +52 -0
  29. package/dist/types/Plugin.d.ts.map +1 -0
  30. package/dist/types/Witness/Config.d.ts +7 -0
  31. package/dist/types/Witness/Config.d.ts.map +1 -0
  32. package/dist/types/Witness/Params.d.ts +7 -0
  33. package/dist/types/Witness/Params.d.ts.map +1 -0
  34. package/dist/types/Witness/Witness.d.ts +10 -0
  35. package/dist/types/Witness/Witness.d.ts.map +1 -0
  36. package/dist/types/Witness/index.d.ts +4 -0
  37. package/dist/types/Witness/index.d.ts.map +1 -0
  38. package/dist/types/index.d.ts +5 -0
  39. package/dist/types/index.d.ts.map +1 -0
  40. package/package.json +67 -0
  41. package/src/Plugin.ts +16 -0
  42. package/src/Witness/Config.ts +9 -0
  43. package/src/Witness/Params.ts +11 -0
  44. package/src/Witness/Witness.ts +67 -0
  45. package/src/Witness/index.ts +3 -0
  46. package/src/index.ts +8 -0
  47. package/typedoc.json +5 -0
@@ -0,0 +1,11 @@
1
+ import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin';
2
+ import { PayloadSetSchema } from '@xyo-network/payload-model';
3
+ import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
4
+ import { ImageThumbnailWitness } from './Witness';
5
+ export const ImageThumbnailPlugin = () => createPayloadSetWitnessPlugin({ required: { [ImageThumbnailSchema]: 1 }, schema: PayloadSetSchema }, {
6
+ witness: async (params) => {
7
+ const result = await ImageThumbnailWitness.create(params);
8
+ return result;
9
+ },
10
+ });
11
+ //# sourceMappingURL=Plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAE9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CACvC,6BAA6B,CAC3B,EAAE,QAAQ,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EACrE;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACzD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin';
2
+ export const ImageThumbnailWitnessConfigSchema = `${ImageThumbnailSchema}.witness.config`;
3
+ //# sourceMappingURL=Config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.js","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAGlF,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,oBAAoB,iBAA0B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.js","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { axios } from '@xyo-network/axios';
2
+ import { PayloadHasher } from '@xyo-network/core';
3
+ import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin';
4
+ import { AbstractWitness } from '@xyo-network/witness';
5
+ import { subClass } from 'gm';
6
+ import { sha256 } from 'hash-wasm';
7
+ import compact from 'lodash/compact';
8
+ import shajs from 'sha.js';
9
+ import { ImageThumbnailWitnessConfigSchema } from './Config';
10
+ const gm = subClass({ imageMagick: '7+' });
11
+ export const binaryToSha256 = async (data) => {
12
+ await PayloadHasher.wasmInitialized;
13
+ if (PayloadHasher.wasmSupport.canUseWasm) {
14
+ try {
15
+ return await sha256(data);
16
+ }
17
+ catch (ex) {
18
+ PayloadHasher.wasmSupport.allowWasm = false;
19
+ }
20
+ }
21
+ // eslint-disable-next-line deprecation/deprecation
22
+ return shajs('sha256').update(data).digest().toString();
23
+ };
24
+ export class ImageThumbnailWitness extends AbstractWitness {
25
+ static configSchemas = [ImageThumbnailWitnessConfigSchema];
26
+ async observeHandler(payloads = []) {
27
+ return compact(await Promise.all(payloads.map(async ({ url }) => {
28
+ //if it is ipfs, go through cloud flair
29
+ const mutatedUrl = url.replace('ipfs://', 'https://cloudflare-ipfs.com/');
30
+ const response = await axios.get(mutatedUrl, {
31
+ responseType: 'arraybuffer',
32
+ });
33
+ if (response.status >= 200 && response.status < 300) {
34
+ const bytes = Buffer.from(response.data, 'binary');
35
+ const thumb = await new Promise((resolve, reject) => {
36
+ gm(bytes)
37
+ .quality(50)
38
+ .resize(128, 128)
39
+ .toBuffer('PNG', (error, buffer) => {
40
+ if (error) {
41
+ reject(error);
42
+ }
43
+ else {
44
+ resolve(buffer);
45
+ }
46
+ });
47
+ });
48
+ const result = {
49
+ schema: ImageThumbnailSchema,
50
+ sourceHash: await binaryToSha256(bytes),
51
+ sourceUrl: url,
52
+ url: `data:image/png;base64,${thumb.toString('base64')}`,
53
+ };
54
+ return result;
55
+ }
56
+ })));
57
+ }
58
+ }
59
+ //# sourceMappingURL=Witness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAyB,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAEzG,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,KAAK,MAAM,QAAQ,CAAA;AAE1B,OAAO,EAAE,iCAAiC,EAAE,MAAM,UAAU,CAAA;AAG5D,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AAE1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,IAAgB,EAAE,EAAE;IACvD,MAAM,aAAa,CAAC,eAAe,CAAA;IACnC,IAAI,aAAa,CAAC,WAAW,CAAC,UAAU,EAAE;QACxC,IAAI;YACF,OAAO,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;SAC1B;QAAC,OAAO,EAAE,EAAE;YACX,aAAa,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAA;SAC5C;KACF;IACD,mDAAmD;IACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,OAAO,qBAAiG,SAAQ,eAAwB;IAC5I,MAAM,CAAU,aAAa,GAAG,CAAC,iCAAiC,CAAC,CAAA;IAEhD,KAAK,CAAC,cAAc,CAAC,WAAyB,EAAE;QACjE,OAAO,OAAO,CACZ,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7B,uCAAuC;YACvC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAA;YACzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;gBAC3C,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAA;YACF,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;gBACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;gBAClD,MAAM,KAAK,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC1D,EAAE,CAAC,KAAK,CAAC;yBACN,OAAO,CAAC,EAAE,CAAC;yBACX,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;yBAChB,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;wBACjC,IAAI,KAAK,EAAE;4BACT,MAAM,CAAC,KAAK,CAAC,CAAA;yBACd;6BAAM;4BACL,OAAO,CAAC,MAAM,CAAC,CAAA;yBAChB;oBACH,CAAC,CAAC,CAAA;gBACN,CAAC,CAAC,CAAA;gBACF,MAAM,MAAM,GAA0B;oBACpC,MAAM,EAAE,oBAAoB;oBAC5B,UAAU,EAAE,MAAM,cAAc,CAAC,KAAK,CAAC;oBACvC,SAAS,EAAE,GAAG;oBACd,GAAG,EAAE,yBAAyB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;iBACzD,CAAA;gBACD,OAAO,MAAM,CAAA;aACd;QACH,CAAC,CAAC,CACH,CACF,CAAA;IACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './Config';
2
+ export * from './Params';
3
+ export * from './Witness';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { ImageThumbnailPlugin } from './Plugin';
2
+ export * from './Witness';
3
+ export { ImageThumbnailPlugin };
4
+ // eslint-disable-next-line import/no-default-export
5
+ export default ImageThumbnailPlugin;
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAE/B,oDAAoD;AACpD,eAAe,oBAAoB,CAAA"}
@@ -0,0 +1,52 @@
1
+ import { ImageThumbnailWitness } from './Witness';
2
+ export declare const ImageThumbnailPlugin: () => import("@xyo-network/payloadset-plugin").PayloadSetWitnessPlugin<ImageThumbnailWitness<import("@xyo-network/core").BaseParamsFields & {
3
+ account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
4
+ accountDerivationPath?: string | undefined;
5
+ config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
6
+ readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
7
+ readonly name?: string | undefined;
8
+ readonly paging?: Record<string, {
9
+ size?: number | undefined;
10
+ }> | undefined;
11
+ readonly schema: string;
12
+ readonly security?: {
13
+ readonly allowAnonymous?: boolean | undefined;
14
+ readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
15
+ readonly disallowed?: Record<string, string[]> | undefined;
16
+ } | undefined;
17
+ readonly sign?: boolean | undefined;
18
+ readonly storeQueries?: boolean | undefined;
19
+ } & Omit<Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
20
+ readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
21
+ readonly name?: string | undefined;
22
+ readonly paging?: Record<string, {
23
+ size?: number | undefined;
24
+ }> | undefined;
25
+ readonly schema: "network.xyo.image.thumbnail.witness.config";
26
+ readonly security?: {
27
+ readonly allowAnonymous?: boolean | undefined;
28
+ readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
29
+ readonly disallowed?: Record<string, string[]> | undefined;
30
+ } | undefined;
31
+ readonly sign?: boolean | undefined;
32
+ readonly storeQueries?: boolean | undefined;
33
+ } & Omit<{
34
+ schema: "network.xyo.image.thumbnail.witness.config";
35
+ targetSet?: (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & import("@xyo-network/payload-model").PayloadSet & {
36
+ schema: "network.xyo.payload.set";
37
+ }) | undefined;
38
+ } & {
39
+ schema: "network.xyo.image.thumbnail.witness.config";
40
+ }, "schema"> & {
41
+ schema: "network.xyo.image.thumbnail.witness.config";
42
+ }, "schema"> & {
43
+ schema: string;
44
+ }, "schema"> & {
45
+ schema: string;
46
+ };
47
+ ephemeralQueryAccountEnabled?: boolean | undefined;
48
+ wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
49
+ } & {
50
+ loaders?: string[] | undefined;
51
+ }>>;
52
+ //# sourceMappingURL=Plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAS9B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { WitnessConfig } from '@xyo-network/witness';
2
+ export declare const ImageThumbnailWitnessConfigSchema: "network.xyo.image.thumbnail.witness.config";
3
+ export type ImageThumbnailWitnessConfigSchema = typeof ImageThumbnailWitnessConfigSchema;
4
+ export type ImageThumbnailWitnessConfig = WitnessConfig<{
5
+ schema: ImageThumbnailWitnessConfigSchema;
6
+ }>;
7
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../../src/Witness/Config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,eAAO,MAAM,iCAAiC,8CAAoD,CAAA;AAClG,MAAM,MAAM,iCAAiC,GAAG,OAAO,iCAAiC,CAAA;AAExF,MAAM,MAAM,2BAA2B,GAAG,aAAa,CAAC;IACtD,MAAM,EAAE,iCAAiC,CAAA;CAC1C,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { AnyConfigSchema } from '@xyo-network/module';
2
+ import { WitnessParams } from '@xyo-network/witness';
3
+ import { ImageThumbnailWitnessConfig } from './Config';
4
+ export type ImageThumbnailWitnessParams = WitnessParams<AnyConfigSchema<ImageThumbnailWitnessConfig>, {
5
+ loaders?: string[];
6
+ }>;
7
+ //# sourceMappingURL=Params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Params.d.ts","sourceRoot":"","sources":["../../../src/Witness/Params.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAEtD,MAAM,MAAM,2BAA2B,GAAG,aAAa,CACrD,eAAe,CAAC,2BAA2B,CAAC,EAC5C;IACE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CACF,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { ImageThumbnailPayload } from '@xyo-network/image-thumbnail-payload-plugin';
2
+ import { UrlPayload } from '@xyo-network/url-payload-plugin';
3
+ import { AbstractWitness } from '@xyo-network/witness';
4
+ import { ImageThumbnailWitnessParams } from './Params';
5
+ export declare const binaryToSha256: (data: Uint8Array) => Promise<string>;
6
+ export declare class ImageThumbnailWitness<TParams extends ImageThumbnailWitnessParams = ImageThumbnailWitnessParams> extends AbstractWitness<TParams> {
7
+ static configSchemas: "network.xyo.image.thumbnail.witness.config"[];
8
+ protected observeHandler(payloads?: UrlPayload[]): Promise<ImageThumbnailPayload[]>;
9
+ }
10
+ //# sourceMappingURL=Witness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAwB,MAAM,6CAA6C,CAAA;AACzG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAOtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAItD,eAAO,MAAM,cAAc,SAAgB,UAAU,oBAWpD,CAAA;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,iDAAsC;cAE1C,cAAc,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAmCvG"}
@@ -0,0 +1,4 @@
1
+ export * from './Config';
2
+ export * from './Params';
3
+ export * from './Witness';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Witness/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { ImageThumbnailPlugin } from './Plugin';
2
+ export * from './Witness';
3
+ export { ImageThumbnailPlugin };
4
+ export default ImageThumbnailPlugin;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE/C,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAG/B,eAAe,oBAAoB,CAAA"}
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "@xyo-network/image-thumbnail-plugin",
3
+ "author": {
4
+ "email": "support@xyo.network",
5
+ "name": "XYO Development Team",
6
+ "url": "https://xyo.network"
7
+ },
8
+ "bugs": {
9
+ "email": "support@xyo.network",
10
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
+ },
12
+ "dependencies": {
13
+ "@xyo-network/axios": "~2.70.9",
14
+ "@xyo-network/core": "~2.70.9",
15
+ "@xyo-network/image-thumbnail-payload-plugin": "~2.70.7",
16
+ "@xyo-network/module": "~2.70.9",
17
+ "@xyo-network/payload-model": "~2.70.9",
18
+ "@xyo-network/payloadset-plugin": "~2.70.9",
19
+ "@xyo-network/url-payload-plugin": "~2.70.9",
20
+ "@xyo-network/witness": "~2.70.9",
21
+ "gm": "^1.25.0",
22
+ "hash-wasm": "^4.9.0",
23
+ "lodash": "^4.17.21",
24
+ "sha.js": "^2.4.11"
25
+ },
26
+ "devDependencies": {
27
+ "@types/gm": "^1.25.1",
28
+ "@types/lodash": "^4.14.196",
29
+ "@xylabs/ts-scripts-yarn3": "^2.19.0",
30
+ "@xylabs/tsconfig": "^2.19.0",
31
+ "typescript": "^5.1.6"
32
+ },
33
+ "description": "Primary SDK for using XYO Protocol 2.0",
34
+ "browser": "dist/esm/index.js",
35
+ "docs": "dist/docs.json",
36
+ "exports": {
37
+ ".": {
38
+ "node": {
39
+ "import": "./dist/esm/index.js",
40
+ "require": "./dist/cjs/index.js"
41
+ },
42
+ "browser": {
43
+ "import": "./dist/esm/index.js",
44
+ "require": "./dist/cjs/index.js"
45
+ },
46
+ "default": "./dist/esm/index.js"
47
+ },
48
+ "./dist/docs.json": {
49
+ "default": "./dist/docs.json"
50
+ },
51
+ "./package.json": "./package.json"
52
+ },
53
+ "main": "dist/cjs/index.js",
54
+ "module": "dist/esm/index.js",
55
+ "homepage": "https://xyo.network",
56
+ "license": "LGPL-3.0",
57
+ "publishConfig": {
58
+ "access": "public"
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
63
+ },
64
+ "sideEffects": false,
65
+ "types": "dist/types/index.d.ts",
66
+ "version": "2.70.7"
67
+ }
package/src/Plugin.ts ADDED
@@ -0,0 +1,16 @@
1
+ import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin'
2
+ import { PayloadSetSchema } from '@xyo-network/payload-model'
3
+ import { createPayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
4
+
5
+ import { ImageThumbnailWitness } from './Witness'
6
+
7
+ export const ImageThumbnailPlugin = () =>
8
+ createPayloadSetWitnessPlugin<ImageThumbnailWitness>(
9
+ { required: { [ImageThumbnailSchema]: 1 }, schema: PayloadSetSchema },
10
+ {
11
+ witness: async (params) => {
12
+ const result = await ImageThumbnailWitness.create(params)
13
+ return result
14
+ },
15
+ },
16
+ )
@@ -0,0 +1,9 @@
1
+ import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin'
2
+ import { WitnessConfig } from '@xyo-network/witness'
3
+
4
+ export const ImageThumbnailWitnessConfigSchema = `${ImageThumbnailSchema}.witness.config` as const
5
+ export type ImageThumbnailWitnessConfigSchema = typeof ImageThumbnailWitnessConfigSchema
6
+
7
+ export type ImageThumbnailWitnessConfig = WitnessConfig<{
8
+ schema: ImageThumbnailWitnessConfigSchema
9
+ }>
@@ -0,0 +1,11 @@
1
+ import { AnyConfigSchema } from '@xyo-network/module'
2
+ import { WitnessParams } from '@xyo-network/witness'
3
+
4
+ import { ImageThumbnailWitnessConfig } from './Config'
5
+
6
+ export type ImageThumbnailWitnessParams = WitnessParams<
7
+ AnyConfigSchema<ImageThumbnailWitnessConfig>,
8
+ {
9
+ loaders?: string[]
10
+ }
11
+ >
@@ -0,0 +1,67 @@
1
+ import { axios } from '@xyo-network/axios'
2
+ import { PayloadHasher } from '@xyo-network/core'
3
+ import { ImageThumbnailPayload, ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin'
4
+ import { UrlPayload } from '@xyo-network/url-payload-plugin'
5
+ import { AbstractWitness } from '@xyo-network/witness'
6
+ import { subClass } from 'gm'
7
+ import { sha256 } from 'hash-wasm'
8
+ import compact from 'lodash/compact'
9
+ import shajs from 'sha.js'
10
+
11
+ import { ImageThumbnailWitnessConfigSchema } from './Config'
12
+ import { ImageThumbnailWitnessParams } from './Params'
13
+
14
+ const gm = subClass({ imageMagick: '7+' })
15
+
16
+ export const binaryToSha256 = async (data: Uint8Array) => {
17
+ await PayloadHasher.wasmInitialized
18
+ if (PayloadHasher.wasmSupport.canUseWasm) {
19
+ try {
20
+ return await sha256(data)
21
+ } catch (ex) {
22
+ PayloadHasher.wasmSupport.allowWasm = false
23
+ }
24
+ }
25
+ // eslint-disable-next-line deprecation/deprecation
26
+ return shajs('sha256').update(data).digest().toString()
27
+ }
28
+
29
+ export class ImageThumbnailWitness<TParams extends ImageThumbnailWitnessParams = ImageThumbnailWitnessParams> extends AbstractWitness<TParams> {
30
+ static override configSchemas = [ImageThumbnailWitnessConfigSchema]
31
+
32
+ protected override async observeHandler(payloads: UrlPayload[] = []): Promise<ImageThumbnailPayload[]> {
33
+ return compact(
34
+ await Promise.all(
35
+ payloads.map(async ({ url }) => {
36
+ //if it is ipfs, go through cloud flair
37
+ const mutatedUrl = url.replace('ipfs://', 'https://cloudflare-ipfs.com/')
38
+ const response = await axios.get(mutatedUrl, {
39
+ responseType: 'arraybuffer',
40
+ })
41
+ if (response.status >= 200 && response.status < 300) {
42
+ const bytes = Buffer.from(response.data, 'binary')
43
+ const thumb = await new Promise<Buffer>((resolve, reject) => {
44
+ gm(bytes)
45
+ .quality(50)
46
+ .resize(128, 128)
47
+ .toBuffer('PNG', (error, buffer) => {
48
+ if (error) {
49
+ reject(error)
50
+ } else {
51
+ resolve(buffer)
52
+ }
53
+ })
54
+ })
55
+ const result: ImageThumbnailPayload = {
56
+ schema: ImageThumbnailSchema,
57
+ sourceHash: await binaryToSha256(bytes),
58
+ sourceUrl: url,
59
+ url: `data:image/png;base64,${thumb.toString('base64')}`,
60
+ }
61
+ return result
62
+ }
63
+ }),
64
+ ),
65
+ )
66
+ }
67
+ }
@@ -0,0 +1,3 @@
1
+ export * from './Config'
2
+ export * from './Params'
3
+ export * from './Witness'
package/src/index.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { ImageThumbnailPlugin } from './Plugin'
2
+
3
+ export * from './Witness'
4
+
5
+ export { ImageThumbnailPlugin }
6
+
7
+ // eslint-disable-next-line import/no-default-export
8
+ export default ImageThumbnailPlugin
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["./src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }