@xyo-network/image-thumbnail-plugin 2.70.10 → 2.70.12

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.
@@ -1,69 +1,18 @@
1
+ import { promises as dnsPromises } from 'node:dns';
1
2
  import { axios } from '@xyo-network/axios';
2
3
  import { PayloadHasher } from '@xyo-network/core';
3
4
  import { ImageThumbnailSchema } from '@xyo-network/image-thumbnail-payload-plugin';
4
- import { isPayload, ModuleErrorSchema } from '@xyo-network/payload-model';
5
5
  import { AbstractWitness } from '@xyo-network/witness';
6
6
  import { subClass } from 'gm';
7
+ import { sync as hasbin } from 'hasbin';
7
8
  import { sha256 } from 'hash-wasm';
8
9
  import compact from 'lodash/compact';
9
- import isBuffer from 'lodash/isBuffer';
10
10
  import { LRUCache } from 'lru-cache';
11
11
  import shajs from 'sha.js';
12
12
  import Url from 'url-parse';
13
13
  import { ImageThumbnailWitnessConfigSchema } from './Config';
14
14
  //TODO: Break this into two Witnesses?
15
15
  const gm = subClass({ imageMagick: '7+' });
16
- export const binaryToSha256 = async (data) => {
17
- await PayloadHasher.wasmInitialized;
18
- if (PayloadHasher.wasmSupport.canUseWasm) {
19
- try {
20
- return await sha256(data);
21
- }
22
- catch (ex) {
23
- PayloadHasher.wasmSupport.allowWasm = false;
24
- }
25
- }
26
- // eslint-disable-next-line deprecation/deprecation
27
- return shajs('sha256').update(data).digest().toString();
28
- };
29
- const checkIpfsUrl = (urlToCheck) => {
30
- const url = new Url(urlToCheck);
31
- let protocol = url.protocol;
32
- let host = url.host;
33
- let path = url.pathname;
34
- const query = url.query;
35
- if (protocol === 'ipfs:') {
36
- protocol = 'https:';
37
- host = 'cloudflare-ipfs.com';
38
- path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`;
39
- const root = `${protocol}//${host}/${path}`;
40
- return query?.length > 0 ? `root?${query}` : root;
41
- }
42
- else {
43
- return urlToCheck;
44
- }
45
- };
46
- const checkDataUrl = (url) => {
47
- if (url.startsWith('data:image')) {
48
- const data = url.split(',')[1];
49
- if (data) {
50
- const buffer = Buffer.from(Uint8Array.from(atob(data), (c) => c.charCodeAt(0)));
51
- console.log(`data buffer: ${buffer.length}`);
52
- return [buffer, undefined];
53
- }
54
- else {
55
- const error = {
56
- message: 'Invalid data Url',
57
- schema: ModuleErrorSchema,
58
- url,
59
- };
60
- return [undefined, error];
61
- }
62
- }
63
- else {
64
- return [undefined, undefined];
65
- }
66
- };
67
16
  export class ImageThumbnailWitness extends AbstractWitness {
68
17
  static configSchemas = [ImageThumbnailWitnessConfigSchema];
69
18
  _cache;
@@ -86,116 +35,162 @@ export class ImageThumbnailWitness extends AbstractWitness {
86
35
  get width() {
87
36
  return this.config.width ?? 128;
88
37
  }
38
+ static async binaryToSha256(data) {
39
+ await PayloadHasher.wasmInitialized;
40
+ if (PayloadHasher.wasmSupport.canUseWasm) {
41
+ try {
42
+ return await sha256(data);
43
+ }
44
+ catch (ex) {
45
+ PayloadHasher.wasmSupport.allowWasm = false;
46
+ }
47
+ }
48
+ // eslint-disable-next-line deprecation/deprecation
49
+ return shajs('sha256').update(data).digest().toString();
50
+ }
51
+ static bufferFromDataUrl(url) {
52
+ if (url.startsWith('data:image')) {
53
+ const data = url.split(',')[1];
54
+ if (data) {
55
+ const buffer = Buffer.from(Uint8Array.from(atob(data), (c) => c.charCodeAt(0)));
56
+ console.log(`data buffer: ${buffer.length}`);
57
+ return buffer;
58
+ }
59
+ else {
60
+ const error = {
61
+ message: 'Invalid data Url',
62
+ name: 'ImageThumbnailWitnessError',
63
+ url,
64
+ };
65
+ throw error;
66
+ }
67
+ }
68
+ }
69
+ static checkIpfsUrl(urlToCheck) {
70
+ const url = new Url(urlToCheck);
71
+ let protocol = url.protocol;
72
+ let host = url.host;
73
+ let path = url.pathname;
74
+ const query = url.query;
75
+ if (protocol === 'ipfs:') {
76
+ protocol = 'https:';
77
+ host = 'cloudflare-ipfs.com';
78
+ path = url.host === 'ipfs' ? `ipfs${path}` : `ipfs/${url.host}${path}`;
79
+ const root = `${protocol}//${host}/${path}`;
80
+ return query?.length > 0 ? `root?${query}` : root;
81
+ }
82
+ else {
83
+ return urlToCheck;
84
+ }
85
+ }
89
86
  async observeHandler(payloads = []) {
90
- const responsePairs = compact(await Promise.all(payloads.map(async ({ url }) => {
87
+ if (!hasbin('magick')) {
88
+ throw Error('ImageMagick is required for this witness');
89
+ }
90
+ return compact(await Promise.all(payloads.map(async ({ url }) => {
91
91
  const cachedResult = this.cache.get(url);
92
92
  if (cachedResult) {
93
- return [url, cachedResult];
93
+ return cachedResult;
94
94
  }
95
+ let result;
95
96
  //if it is a data URL, return a Buffer
96
- const [dataBuffer, dataError] = checkDataUrl(url);
97
+ const dataBuffer = ImageThumbnailWitness.bufferFromDataUrl(url);
97
98
  if (dataBuffer) {
98
- return [url, dataBuffer];
99
- }
100
- if (dataError) {
101
- return [url, dataError];
102
- }
103
- //if it is ipfs, go through cloud flair
104
- const mutatedUrl = checkIpfsUrl(url);
105
- try {
106
- return [
99
+ result = {
100
+ schema: ImageThumbnailSchema,
101
+ sourceHash: await ImageThumbnailWitness.binaryToSha256(dataBuffer),
102
+ sourceUrl: url,
107
103
  url,
108
- await axios.get(mutatedUrl, {
109
- responseType: 'arraybuffer',
110
- }),
111
- ];
104
+ };
112
105
  }
113
- catch (ex) {
114
- const axiosError = ex;
115
- if (axiosError.isAxiosError) {
116
- //selectively pick fields from AxiosError
117
- const errorPayload = {
118
- code: axiosError.code,
119
- message: axiosError.message,
120
- schema: ModuleErrorSchema,
121
- status: axiosError.status,
122
- url,
123
- };
124
- return [url, errorPayload];
125
- }
126
- else {
127
- throw ex;
128
- }
106
+ else {
107
+ //if it is ipfs, go through cloud flair
108
+ const mutatedUrl = ImageThumbnailWitness.checkIpfsUrl(url);
109
+ result = await this.fromHttp(mutatedUrl);
129
110
  }
111
+ this.cache.set(url, result);
112
+ return result;
130
113
  })));
131
- return compact(await Promise.all(responsePairs.map(async ([url, urlResult]) => {
132
- if (isPayload(urlResult)) {
133
- this.cache.set(url, urlResult);
134
- return urlResult;
135
- }
136
- let sourceBuffer;
137
- if (isBuffer(urlResult)) {
138
- sourceBuffer = urlResult;
139
- }
140
- else {
141
- const response = urlResult;
142
- if (response.status >= 200 && response.status < 300) {
143
- const contentType = response.headers['content-type']?.toString();
144
- if (contentType.split('/')[0] !== 'image') {
145
- const error = {
146
- message: `Invalid file type: ${contentType}`,
147
- schema: ModuleErrorSchema,
148
- url,
149
- };
150
- this.cache.set(url, error);
151
- return error;
152
- }
153
- sourceBuffer = Buffer.from(response.data, 'binary');
114
+ }
115
+ async createThumbnail(sourceBuffer) {
116
+ const thumb = await new Promise((resolve, reject) => {
117
+ gm(sourceBuffer)
118
+ .quality(this.quality)
119
+ .resize(this.width, this.height)
120
+ .flatten()
121
+ .toBuffer(this.encoding, (error, buffer) => {
122
+ if (error) {
123
+ reject(error);
154
124
  }
155
125
  else {
156
- const error = {
157
- schema: ModuleErrorSchema,
158
- status: response.status,
159
- url,
160
- };
161
- this.cache.set(url, error);
162
- return error;
126
+ resolve(buffer);
163
127
  }
164
- }
165
- try {
166
- const thumb = await new Promise((resolve, reject) => {
167
- gm(sourceBuffer)
168
- .quality(this.quality)
169
- .resize(this.width, this.height)
170
- .flatten()
171
- .toBuffer(this.encoding, (error, buffer) => {
172
- if (error) {
173
- reject(error);
174
- }
175
- else {
176
- resolve(buffer);
177
- }
178
- });
179
- });
128
+ });
129
+ });
130
+ return `data:image/png;base64,${thumb.toString('base64')}`;
131
+ }
132
+ async fromHttp(url) {
133
+ let response;
134
+ let dnsResult;
135
+ try {
136
+ const urlObj = new Url(url);
137
+ dnsResult = await dnsPromises.resolve(urlObj.host);
138
+ console.log(`dnsResult: ${JSON.stringify(dnsResult, null, 2)}`);
139
+ }
140
+ catch (ex) {
141
+ const error = ex;
142
+ const result = {
143
+ http: {
144
+ dnsError: error.code,
145
+ },
146
+ schema: ImageThumbnailSchema,
147
+ sourceUrl: url,
148
+ };
149
+ return result;
150
+ }
151
+ try {
152
+ response = await axios.get(url, {
153
+ responseType: 'arraybuffer',
154
+ });
155
+ }
156
+ catch (ex) {
157
+ const axiosError = ex;
158
+ if (axiosError.isAxiosError) {
159
+ //selectively pick fields from AxiosError
180
160
  const result = {
161
+ http: {
162
+ ipAddress: dnsResult[0],
163
+ status: axiosError.status,
164
+ },
181
165
  schema: ImageThumbnailSchema,
182
- sourceHash: await binaryToSha256(sourceBuffer),
183
166
  sourceUrl: url,
184
- url: `data:image/png;base64,${thumb.toString('base64')}`,
185
167
  };
186
- this.cache.set(url, result);
187
168
  return result;
188
169
  }
189
- catch (ex) {
190
- const error = {
191
- message: 'Failed to resize image',
192
- schema: ModuleErrorSchema,
193
- url,
194
- };
195
- this.cache.set(url, error);
196
- return error;
170
+ else {
171
+ throw ex;
197
172
  }
198
- })));
173
+ }
174
+ const result = {
175
+ http: {
176
+ status: response.status,
177
+ },
178
+ schema: ImageThumbnailSchema,
179
+ sourceUrl: url,
180
+ };
181
+ if (response.status >= 200 && response.status < 300) {
182
+ const contentType = response.headers['content-type']?.toString();
183
+ if (contentType.split('/')[0] !== 'image') {
184
+ result.mime = result.mime ?? {};
185
+ result.mime.invalid = true;
186
+ }
187
+ else {
188
+ const sourceBuffer = Buffer.from(response.data, 'binary');
189
+ result.sourceHash = await ImageThumbnailWitness.binaryToSha256(sourceBuffer);
190
+ result.url = await this.createThumbnail(sourceBuffer);
191
+ }
192
+ }
193
+ return result;
199
194
  }
200
195
  }
201
196
  //# sourceMappingURL=Witness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,44 @@
1
- import { ImageThumbnailErrorPayload, ImageThumbnailPayload } from '@xyo-network/image-thumbnail-payload-plugin';
1
+ import { ImageThumbnail } from '@xyo-network/image-thumbnail-payload-plugin';
2
2
  import { UrlPayload } from '@xyo-network/url-payload-plugin';
3
3
  import { AbstractWitness } from '@xyo-network/witness';
4
4
  import { LRUCache } from 'lru-cache';
5
5
  import { ImageThumbnailWitnessParams } from './Params';
6
- export declare const binaryToSha256: (data: Uint8Array) => Promise<string>;
6
+ export interface ImageThumbnailWitnessError extends Error {
7
+ name: 'ImageThumbnailWitnessError';
8
+ url: string;
9
+ }
10
+ export interface DnsError extends Error {
11
+ code: string;
12
+ }
7
13
  export declare class ImageThumbnailWitness<TParams extends ImageThumbnailWitnessParams = ImageThumbnailWitnessParams> extends AbstractWitness<TParams> {
8
14
  static configSchemas: "network.xyo.image.thumbnail.witness.config"[];
9
15
  private _cache?;
10
- get cache(): LRUCache<string, ImageThumbnailErrorPayload | (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
11
- schema: "network.xyo.image.thumbnail";
12
- sourceHash: string;
16
+ get cache(): LRUCache<string, import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
17
+ http?: {
18
+ dnsError?: string | undefined;
19
+ ipAddress?: string | undefined;
20
+ status?: number | undefined;
21
+ } | undefined;
22
+ mime?: {
23
+ invalid?: boolean | undefined;
24
+ type?: string | undefined;
25
+ } | undefined;
26
+ sourceHash?: string | undefined;
13
27
  sourceUrl: string;
14
- url: string;
28
+ url?: string | undefined;
15
29
  } & {
16
30
  schema: "network.xyo.image.thumbnail";
17
- }), unknown>;
31
+ }, unknown>;
18
32
  get encoding(): "PNG";
19
33
  get height(): number;
20
34
  get maxCacheEntries(): number;
21
35
  get quality(): number;
22
36
  get width(): number;
23
- protected observeHandler(payloads?: UrlPayload[]): Promise<(ImageThumbnailPayload | ImageThumbnailErrorPayload)[]>;
37
+ private static binaryToSha256;
38
+ private static bufferFromDataUrl;
39
+ private static checkIpfsUrl;
40
+ protected observeHandler(payloads?: UrlPayload[]): Promise<ImageThumbnail[]>;
41
+ private createThumbnail;
42
+ private fromHttp;
24
43
  }
25
44
  //# sourceMappingURL=Witness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAwB,MAAM,6CAA6C,CAAA;AAErI,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAKtD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAKpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAMtD,eAAO,MAAM,cAAc,SAAgB,UAAU,oBAWpD,CAAA;AAuCD,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,iDAAsC;IAEnE,OAAO,CAAC,MAAM,CAAC,CAAsE;IAErF,IAAI,KAAK;;;;;;;iBAGR;IAED,IAAI,QAAQ,UAEX;IAED,IAAI,MAAM,WAET;IAED,IAAI,eAAe,WAElB;IAED,IAAI,OAAO,WAEV;IAED,IAAI,KAAK,WAER;cAEwB,cAAc,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,CAAC,qBAAqB,GAAG,0BAA0B,CAAC,EAAE,CAAC;CAwHtI"}
1
+ {"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAwB,MAAM,6CAA6C,CAAA;AAClG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAKtD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAKpC,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAMtD,MAAM,WAAW,0BAA2B,SAAQ,KAAK;IACvD,IAAI,EAAE,4BAA4B,CAAA;IAClC,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,qBAAa,qBAAqB,CAAC,OAAO,SAAS,2BAA2B,GAAG,2BAA2B,CAAE,SAAQ,eAAe,CAAC,OAAO,CAAC;IAC5I,OAAgB,aAAa,iDAAsC;IAEnE,OAAO,CAAC,MAAM,CAAC,CAAkC;IAEjD,IAAI,KAAK;;;;;;;;;;;;;;;gBAGR;IAED,IAAI,QAAQ,UAEX;IAED,IAAI,MAAM,WAET;IAED,IAAI,eAAe,WAElB;IAED,IAAI,OAAO,WAEV;IAED,IAAI,KAAK,WAER;mBAEoB,cAAc;IAanC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAkBhC,OAAO,CAAC,MAAM,CAAC,YAAY;cAiBF,cAAc,CAAC,QAAQ,GAAE,UAAU,EAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAmCjF,eAAe;YAiBf,QAAQ;CA6DvB"}
package/package.json CHANGED
@@ -10,15 +10,16 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/axios": "~2.70.12",
14
- "@xyo-network/core": "~2.70.12",
15
- "@xyo-network/image-thumbnail-payload-plugin": "~2.70.10",
16
- "@xyo-network/module": "~2.70.12",
17
- "@xyo-network/payload-model": "~2.70.12",
18
- "@xyo-network/payloadset-plugin": "~2.70.12",
19
- "@xyo-network/url-payload-plugin": "~2.70.12",
20
- "@xyo-network/witness": "~2.70.12",
13
+ "@xyo-network/axios": "~2.70.14",
14
+ "@xyo-network/core": "~2.70.14",
15
+ "@xyo-network/image-thumbnail-payload-plugin": "~2.70.12",
16
+ "@xyo-network/module": "~2.70.14",
17
+ "@xyo-network/payload-model": "~2.70.14",
18
+ "@xyo-network/payloadset-plugin": "~2.70.14",
19
+ "@xyo-network/url-payload-plugin": "~2.70.14",
20
+ "@xyo-network/witness": "~2.70.14",
21
21
  "gm": "^1.25.0",
22
+ "hasbin": "^1.2.3",
22
23
  "hash-wasm": "^4.9.0",
23
24
  "lodash": "^4.17.21",
24
25
  "lru-cache": "^10.0.0",
@@ -27,6 +28,7 @@
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/gm": "^1.25.1",
31
+ "@types/hasbin": "^1.2.0",
30
32
  "@types/lodash": "^4.14.196",
31
33
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
32
34
  "@xylabs/tsconfig": "^2.19.0",
@@ -65,5 +67,5 @@
65
67
  },
66
68
  "sideEffects": false,
67
69
  "types": "dist/types/index.d.ts",
68
- "version": "2.70.10"
70
+ "version": "2.70.12"
69
71
  }