@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.
- package/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/Plugin.js +16 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/Witness/Config.js +6 -0
- package/dist/cjs/Witness/Config.js.map +1 -0
- package/dist/cjs/Witness/Params.js +3 -0
- package/dist/cjs/Witness/Params.js.map +1 -0
- package/dist/cjs/Witness/Witness.js +67 -0
- package/dist/cjs/Witness/Witness.js.map +1 -0
- package/dist/cjs/Witness/index.js +7 -0
- package/dist/cjs/Witness/index.js.map +1 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +21299 -0
- package/dist/esm/Plugin.js +11 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/Witness/Config.js +3 -0
- package/dist/esm/Witness/Config.js.map +1 -0
- package/dist/esm/Witness/Params.js +2 -0
- package/dist/esm/Witness/Params.js.map +1 -0
- package/dist/esm/Witness/Witness.js +59 -0
- package/dist/esm/Witness/Witness.js.map +1 -0
- package/dist/esm/Witness/index.js +4 -0
- package/dist/esm/Witness/index.js.map +1 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/Plugin.d.ts +52 -0
- package/dist/types/Plugin.d.ts.map +1 -0
- package/dist/types/Witness/Config.d.ts +7 -0
- package/dist/types/Witness/Config.d.ts.map +1 -0
- package/dist/types/Witness/Params.d.ts +7 -0
- package/dist/types/Witness/Params.d.ts.map +1 -0
- package/dist/types/Witness/Witness.d.ts +10 -0
- package/dist/types/Witness/Witness.d.ts.map +1 -0
- package/dist/types/Witness/index.d.ts +4 -0
- package/dist/types/Witness/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +67 -0
- package/src/Plugin.ts +16 -0
- package/src/Witness/Config.ts +9 -0
- package/src/Witness/Params.ts +11 -0
- package/src/Witness/Witness.ts +67 -0
- package/src/Witness/index.ts +3 -0
- package/src/index.ts +8 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|
package/src/index.ts
ADDED