@napi-rs/canvas 0.1.64 → 0.1.65

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 (2) hide show
  1. package/load-image.js +22 -3
  2. package/package.json +13 -13
package/load-image.js CHANGED
@@ -1,5 +1,6 @@
1
1
  const fs = require('fs')
2
2
  const { Readable } = require('stream')
3
+ const { URL } = require('url')
3
4
 
4
5
  const { Image } = require('./js-binding')
5
6
 
@@ -33,13 +34,13 @@ module.exports = async function loadImage(source, options = {}) {
33
34
  return createImage(data, options.alt)
34
35
  }
35
36
  // if source is a string or URL instance
36
- if (typeof source === 'string' || source instanceof URL) {
37
+ if (typeof source === 'string') {
37
38
  // if the source exists as a file, construct image from that file
38
- if (await exists(source)) {
39
+ if ((!source.startsWith('http') && !source.startsWith('https')) && await exists(source)) {
39
40
  return createImage(source, options.alt)
40
41
  } else {
41
42
  // the source is a remote url here
42
- source = !(source instanceof URL) ? new URL(source) : source
43
+ source = new URL(source)
43
44
  // attempt to download the remote source and construct image
44
45
  const data = await new Promise((resolve, reject) =>
45
46
  makeRequest(
@@ -54,6 +55,24 @@ module.exports = async function loadImage(source, options = {}) {
54
55
  }
55
56
  }
56
57
 
58
+ if (source instanceof URL) {
59
+ if (source.protocol === 'file:') {
60
+ // remove the leading slash on windows
61
+ return createImage(process.platform === 'win32' ? source.pathname.substring(1) : source.pathname, options.alt)
62
+ } else {
63
+ const data = await new Promise((resolve, reject) =>
64
+ makeRequest(
65
+ source,
66
+ resolve,
67
+ reject,
68
+ typeof options.maxRedirects === 'number' && options.maxRedirects >= 0 ? options.maxRedirects : MAX_REDIRECTS,
69
+ options.requestOptions,
70
+ ),
71
+ )
72
+ return createImage(data, options.alt)
73
+ }
74
+ }
75
+
57
76
  // throw error as don't support that source
58
77
  throw new TypeError('unsupported image source')
59
78
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@napi-rs/canvas",
3
- "version": "0.1.64",
3
+ "version": "0.1.65",
4
4
  "description": "Canvas for Node.js with skia backend",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -90,7 +90,7 @@
90
90
  "lint-staged": "^15.2.1",
91
91
  "lodash": "^4.17.21",
92
92
  "npm-run-all2": "^7.0.0",
93
- "oxlint": "^0.13.0",
93
+ "oxlint": "^0.14.0",
94
94
  "pinst": "^3.0.0",
95
95
  "png.js": "^0.2.1",
96
96
  "prettier": "^3.2.5",
@@ -136,17 +136,17 @@
136
136
  "singleQuote": true,
137
137
  "arrowParens": "always"
138
138
  },
139
- "packageManager": "yarn@4.5.2",
139
+ "packageManager": "yarn@4.5.3",
140
140
  "optionalDependencies": {
141
- "@napi-rs/canvas-win32-x64-msvc": "0.1.64",
142
- "@napi-rs/canvas-darwin-x64": "0.1.64",
143
- "@napi-rs/canvas-linux-x64-gnu": "0.1.64",
144
- "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.64",
145
- "@napi-rs/canvas-linux-x64-musl": "0.1.64",
146
- "@napi-rs/canvas-linux-arm64-gnu": "0.1.64",
147
- "@napi-rs/canvas-linux-arm64-musl": "0.1.64",
148
- "@napi-rs/canvas-darwin-arm64": "0.1.64",
149
- "@napi-rs/canvas-android-arm64": "0.1.64",
150
- "@napi-rs/canvas-linux-riscv64-gnu": "0.1.64"
141
+ "@napi-rs/canvas-win32-x64-msvc": "0.1.65",
142
+ "@napi-rs/canvas-darwin-x64": "0.1.65",
143
+ "@napi-rs/canvas-linux-x64-gnu": "0.1.65",
144
+ "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.65",
145
+ "@napi-rs/canvas-linux-x64-musl": "0.1.65",
146
+ "@napi-rs/canvas-linux-arm64-gnu": "0.1.65",
147
+ "@napi-rs/canvas-linux-arm64-musl": "0.1.65",
148
+ "@napi-rs/canvas-darwin-arm64": "0.1.65",
149
+ "@napi-rs/canvas-android-arm64": "0.1.65",
150
+ "@napi-rs/canvas-linux-riscv64-gnu": "0.1.65"
151
151
  }
152
152
  }