openportal 0.1.0 → 0.1.1
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/package.json +10 -4
- package/web/.next/static/{b-zSCTvx5IzLyCj7s91p4 → A7pW-dtFIbPCSkvE8uenX}/_buildManifest.js +5 -5
- package/web/.next/static/chunks/{d3520c0622de77ff.js → 2e7bfb90c343ca96.js} +2 -2
- package/web/.next/static/chunks/{c2c14edbf40dd531.js → 8f80b41262ef70b6.js} +1 -1
- package/web/.next/static/chunks/{6ed981794a42d949.js → 967a1e0002fe9ae6.js} +2 -2
- package/web/.next/static/chunks/{688448a61fbd7d50.js → 9b265e2198b5525f.js} +2 -2
- package/web/.next/static/chunks/{c617a4c7a78d4946.js → aebf799dac29fe08.js} +2 -2
- package/web/.next/static/chunks/{d091e73f46572c38.js → c20ae04df8cc28be.js} +2 -2
- package/web/.next/static/chunks/{fe47781ce8074a57.js → d316d63225992c76.js} +2 -2
- package/web/.next/static/chunks/{turbopack-f44fd3803d0d6727.js → turbopack-1837909a677d116b.js} +1 -1
- package/web/.next/static/chunks/{turbopack-03c9848eaf268db1.js → turbopack-26688626142ac58f.js} +1 -1
- package/web/.next/static/chunks/{turbopack-bc49f2e78bf92fdb.js → turbopack-27558c851386934e.js} +1 -1
- package/web/.next/static/chunks/{turbopack-d90c5e114da5fc51.js → turbopack-92c911b9efda2756.js} +1 -1
- package/web/.next/static/chunks/{turbopack-ededbd49a3a234ea.js → turbopack-c40ec6674624f1d7.js} +1 -1
- package/web/.next/static/chunks/{turbopack-b3b62a2520d01d7e.js → turbopack-f4c0881f9723f5a5.js} +1 -1
- package/web/apps/web/.next/BUILD_ID +1 -1
- package/web/apps/web/.next/build-manifest.json +14 -14
- package/web/apps/web/.next/required-server-files.json +1 -1
- package/web/apps/web/.next/server/middleware-build-manifest.js +12 -12
- package/web/apps/web/.next/server/pages/404.html +1 -1
- package/web/apps/web/.next/server/pages/500.html +1 -1
- package/web/apps/web/.next/server/pages/_app/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/_error/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/_error/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/index/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/index/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/index.html +1 -1
- package/web/apps/web/.next/server/pages/session/[id]/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/session/[id]/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/session/[id].html +1 -1
- package/web/apps/web/.next/server/pages/settings/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/settings/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/settings.html +1 -1
- package/web/apps/web/.next/server/pages/terminal/build-manifest.json +2 -2
- package/web/apps/web/.next/server/pages/terminal/client-build-manifest.json +1 -1
- package/web/apps/web/.next/server/pages/terminal.html +1 -1
- package/web/apps/web/server.js +1 -1
- package/web/node_modules/.bun/@img+colour@1.0.0/node_modules/@img/colour/color.cjs +0 -1594
- package/web/node_modules/.bun/@img+colour@1.0.0/node_modules/@img/colour/index.cjs +0 -1
- package/web/node_modules/.bun/@img+colour@1.0.0/node_modules/@img/colour/package.json +0 -45
- package/web/node_modules/.bun/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- package/web/node_modules/.bun/@img+sharp-darwin-arm64@0.34.5/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/README.md +0 -46
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +0 -220
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
- package/web/node_modules/.bun/@img+sharp-libvips-darwin-arm64@1.2.4/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +0 -6
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +0 -38
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_check_private_redeclaration.js +0 -6
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js +0 -6
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js +0 -13
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js +0 -6
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_get.js +0 -8
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_init.js +0 -7
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_set.js +0 -9
- package/web/node_modules/.bun/@swc+helpers@0.5.15/node_modules/@swc/helpers/package.json +0 -471
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/channel.js +0 -177
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/colour.js +0 -195
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/composite.js +0 -212
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/constructor.js +0 -499
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/index.js +0 -16
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/input.js +0 -809
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/is.js +0 -143
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/libvips.js +0 -207
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/operation.js +0 -1016
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/output.js +0 -1666
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/resize.js +0 -595
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/sharp.js +0 -121
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/lib/utility.js +0 -291
- package/web/node_modules/.bun/sharp@0.34.5/node_modules/sharp/package.json +0 -202
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/_tsc.js +0 -133818
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/_tsserver.js +0 -659
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/_typingsInstaller.js +0 -222
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/tsc.js +0 -8
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/tsserver.js +0 -8
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/typesMap.json +0 -497
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/typescript.js +0 -200276
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/typingsInstaller.js +0 -8
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/watchGuard.js +0 -53
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
- package/web/node_modules/.bun/typescript@5.9.3/node_modules/typescript/package.json +0 -120
- /package/web/.next/static/{b-zSCTvx5IzLyCj7s91p4 → A7pW-dtFIbPCSkvE8uenX}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{b-zSCTvx5IzLyCj7s91p4 → A7pW-dtFIbPCSkvE8uenX}/_ssgManifest.js +0 -0
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
Copyright 2013 Lovell Fuller and others.
|
|
3
|
-
SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// Inspects the runtime environment and exports the relevant sharp.node binary
|
|
7
|
-
|
|
8
|
-
const { familySync, versionSync } = require('detect-libc');
|
|
9
|
-
|
|
10
|
-
const { runtimePlatformArch, isUnsupportedNodeRuntime, prebuiltPlatforms, minimumLibvipsVersion } = require('./libvips');
|
|
11
|
-
const runtimePlatform = runtimePlatformArch();
|
|
12
|
-
|
|
13
|
-
const paths = [
|
|
14
|
-
`../src/build/Release/sharp-${runtimePlatform}.node`,
|
|
15
|
-
'../src/build/Release/sharp-wasm32.node',
|
|
16
|
-
`@img/sharp-${runtimePlatform}/sharp.node`,
|
|
17
|
-
'@img/sharp-wasm32/sharp.node'
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
/* node:coverage disable */
|
|
21
|
-
|
|
22
|
-
let path, sharp;
|
|
23
|
-
const errors = [];
|
|
24
|
-
for (path of paths) {
|
|
25
|
-
try {
|
|
26
|
-
sharp = require(path);
|
|
27
|
-
break;
|
|
28
|
-
} catch (err) {
|
|
29
|
-
errors.push(err);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (sharp && path.startsWith('@img/sharp-linux-x64') && !sharp._isUsingX64V2()) {
|
|
34
|
-
const err = new Error('Prebuilt binaries for linux-x64 require v2 microarchitecture');
|
|
35
|
-
err.code = 'Unsupported CPU';
|
|
36
|
-
errors.push(err);
|
|
37
|
-
sharp = null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (sharp) {
|
|
41
|
-
module.exports = sharp;
|
|
42
|
-
} else {
|
|
43
|
-
const [isLinux, isMacOs, isWindows] = ['linux', 'darwin', 'win32'].map(os => runtimePlatform.startsWith(os));
|
|
44
|
-
|
|
45
|
-
const help = [`Could not load the "sharp" module using the ${runtimePlatform} runtime`];
|
|
46
|
-
errors.forEach(err => {
|
|
47
|
-
if (err.code !== 'MODULE_NOT_FOUND') {
|
|
48
|
-
help.push(`${err.code}: ${err.message}`);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
const messages = errors.map(err => err.message).join(' ');
|
|
52
|
-
help.push('Possible solutions:');
|
|
53
|
-
// Common error messages
|
|
54
|
-
if (isUnsupportedNodeRuntime()) {
|
|
55
|
-
const { found, expected } = isUnsupportedNodeRuntime();
|
|
56
|
-
help.push(
|
|
57
|
-
'- Please upgrade Node.js:',
|
|
58
|
-
` Found ${found}`,
|
|
59
|
-
` Requires ${expected}`
|
|
60
|
-
);
|
|
61
|
-
} else if (prebuiltPlatforms.includes(runtimePlatform)) {
|
|
62
|
-
const [os, cpu] = runtimePlatform.split('-');
|
|
63
|
-
const libc = os.endsWith('musl') ? ' --libc=musl' : '';
|
|
64
|
-
help.push(
|
|
65
|
-
'- Ensure optional dependencies can be installed:',
|
|
66
|
-
' npm install --include=optional sharp',
|
|
67
|
-
'- Ensure your package manager supports multi-platform installation:',
|
|
68
|
-
' See https://sharp.pixelplumbing.com/install#cross-platform',
|
|
69
|
-
'- Add platform-specific dependencies:',
|
|
70
|
-
` npm install --os=${os.replace('musl', '')}${libc} --cpu=${cpu} sharp`
|
|
71
|
-
);
|
|
72
|
-
} else {
|
|
73
|
-
help.push(
|
|
74
|
-
`- Manually install libvips >= ${minimumLibvipsVersion}`,
|
|
75
|
-
'- Add experimental WebAssembly-based dependencies:',
|
|
76
|
-
' npm install --cpu=wasm32 sharp',
|
|
77
|
-
' npm install @img/sharp-wasm32'
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
if (isLinux && /(symbol not found|CXXABI_)/i.test(messages)) {
|
|
81
|
-
try {
|
|
82
|
-
const { config } = require(`@img/sharp-libvips-${runtimePlatform}/package`);
|
|
83
|
-
const libcFound = `${familySync()} ${versionSync()}`;
|
|
84
|
-
const libcRequires = `${config.musl ? 'musl' : 'glibc'} ${config.musl || config.glibc}`;
|
|
85
|
-
help.push(
|
|
86
|
-
'- Update your OS:',
|
|
87
|
-
` Found ${libcFound}`,
|
|
88
|
-
` Requires ${libcRequires}`
|
|
89
|
-
);
|
|
90
|
-
} catch (_errEngines) {}
|
|
91
|
-
}
|
|
92
|
-
if (isLinux && /\/snap\/core[0-9]{2}/.test(messages)) {
|
|
93
|
-
help.push(
|
|
94
|
-
'- Remove the Node.js Snap, which does not support native modules',
|
|
95
|
-
' snap remove node'
|
|
96
|
-
);
|
|
97
|
-
}
|
|
98
|
-
if (isMacOs && /Incompatible library version/.test(messages)) {
|
|
99
|
-
help.push(
|
|
100
|
-
'- Update Homebrew:',
|
|
101
|
-
' brew update && brew upgrade vips'
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
if (errors.some(err => err.code === 'ERR_DLOPEN_DISABLED')) {
|
|
105
|
-
help.push('- Run Node.js without using the --no-addons flag');
|
|
106
|
-
}
|
|
107
|
-
// Link to installation docs
|
|
108
|
-
if (isWindows && /The specified procedure could not be found/.test(messages)) {
|
|
109
|
-
help.push(
|
|
110
|
-
'- Using the canvas package on Windows?',
|
|
111
|
-
' See https://sharp.pixelplumbing.com/install#canvas-and-windows',
|
|
112
|
-
'- Check for outdated versions of sharp in the dependency tree:',
|
|
113
|
-
' npm ls sharp'
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
help.push(
|
|
117
|
-
'- Consult the installation documentation:',
|
|
118
|
-
' See https://sharp.pixelplumbing.com/install'
|
|
119
|
-
);
|
|
120
|
-
throw new Error(help.join('\n'));
|
|
121
|
-
}
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
Copyright 2013 Lovell Fuller and others.
|
|
3
|
-
SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const events = require('node:events');
|
|
7
|
-
const detectLibc = require('detect-libc');
|
|
8
|
-
|
|
9
|
-
const is = require('./is');
|
|
10
|
-
const { runtimePlatformArch } = require('./libvips');
|
|
11
|
-
const sharp = require('./sharp');
|
|
12
|
-
|
|
13
|
-
const runtimePlatform = runtimePlatformArch();
|
|
14
|
-
const libvipsVersion = sharp.libvipsVersion();
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* An Object containing nested boolean values representing the available input and output formats/methods.
|
|
18
|
-
* @member
|
|
19
|
-
* @example
|
|
20
|
-
* console.log(sharp.format);
|
|
21
|
-
* @returns {Object}
|
|
22
|
-
*/
|
|
23
|
-
const format = sharp.format();
|
|
24
|
-
format.heif.output.alias = ['avif', 'heic'];
|
|
25
|
-
format.jpeg.output.alias = ['jpe', 'jpg'];
|
|
26
|
-
format.tiff.output.alias = ['tif'];
|
|
27
|
-
format.jp2k.output.alias = ['j2c', 'j2k', 'jp2', 'jpx'];
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* An Object containing the available interpolators and their proper values
|
|
31
|
-
* @readonly
|
|
32
|
-
* @enum {string}
|
|
33
|
-
*/
|
|
34
|
-
const interpolators = {
|
|
35
|
-
/** [Nearest neighbour interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation). Suitable for image enlargement only. */
|
|
36
|
-
nearest: 'nearest',
|
|
37
|
-
/** [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation). Faster than bicubic but with less smooth results. */
|
|
38
|
-
bilinear: 'bilinear',
|
|
39
|
-
/** [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation) (the default). */
|
|
40
|
-
bicubic: 'bicubic',
|
|
41
|
-
/** [LBB interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/lbb.cpp#L100). Prevents some "[acutance](http://en.wikipedia.org/wiki/Acutance)" but typically reduces performance by a factor of 2. */
|
|
42
|
-
locallyBoundedBicubic: 'lbb',
|
|
43
|
-
/** [Nohalo interpolation](http://eprints.soton.ac.uk/268086/). Prevents acutance but typically reduces performance by a factor of 3. */
|
|
44
|
-
nohalo: 'nohalo',
|
|
45
|
-
/** [VSQBS interpolation](https://github.com/libvips/libvips/blob/master/libvips/resample/vsqbs.cpp#L48). Prevents "staircasing" when enlarging. */
|
|
46
|
-
vertexSplitQuadraticBasisSpline: 'vsqbs'
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* An Object containing the version numbers of sharp, libvips
|
|
51
|
-
* and (when using prebuilt binaries) its dependencies.
|
|
52
|
-
*
|
|
53
|
-
* @member
|
|
54
|
-
* @example
|
|
55
|
-
* console.log(sharp.versions);
|
|
56
|
-
*/
|
|
57
|
-
let versions = {
|
|
58
|
-
vips: libvipsVersion.semver
|
|
59
|
-
};
|
|
60
|
-
/* node:coverage ignore next 15 */
|
|
61
|
-
if (!libvipsVersion.isGlobal) {
|
|
62
|
-
if (!libvipsVersion.isWasm) {
|
|
63
|
-
try {
|
|
64
|
-
versions = require(`@img/sharp-${runtimePlatform}/versions`);
|
|
65
|
-
} catch (_) {
|
|
66
|
-
try {
|
|
67
|
-
versions = require(`@img/sharp-libvips-${runtimePlatform}/versions`);
|
|
68
|
-
} catch (_) {}
|
|
69
|
-
}
|
|
70
|
-
} else {
|
|
71
|
-
try {
|
|
72
|
-
versions = require('@img/sharp-wasm32/versions');
|
|
73
|
-
} catch (_) {}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
versions.sharp = require('../package.json').version;
|
|
77
|
-
|
|
78
|
-
/* node:coverage ignore next 5 */
|
|
79
|
-
if (versions.heif && format.heif) {
|
|
80
|
-
// Prebuilt binaries provide AV1
|
|
81
|
-
format.heif.input.fileSuffix = ['.avif'];
|
|
82
|
-
format.heif.output.alias = ['avif'];
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Gets or, when options are provided, sets the limits of _libvips'_ operation cache.
|
|
87
|
-
* Existing entries in the cache will be trimmed after any change in limits.
|
|
88
|
-
* This method always returns cache statistics,
|
|
89
|
-
* useful for determining how much working memory is required for a particular task.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* const stats = sharp.cache();
|
|
93
|
-
* @example
|
|
94
|
-
* sharp.cache( { items: 200 } );
|
|
95
|
-
* sharp.cache( { files: 0 } );
|
|
96
|
-
* sharp.cache(false);
|
|
97
|
-
*
|
|
98
|
-
* @param {Object|boolean} [options=true] - Object with the following attributes, or boolean where true uses default cache settings and false removes all caching
|
|
99
|
-
* @param {number} [options.memory=50] - is the maximum memory in MB to use for this cache
|
|
100
|
-
* @param {number} [options.files=20] - is the maximum number of files to hold open
|
|
101
|
-
* @param {number} [options.items=100] - is the maximum number of operations to cache
|
|
102
|
-
* @returns {Object}
|
|
103
|
-
*/
|
|
104
|
-
function cache (options) {
|
|
105
|
-
if (is.bool(options)) {
|
|
106
|
-
if (options) {
|
|
107
|
-
// Default cache settings of 50MB, 20 files, 100 items
|
|
108
|
-
return sharp.cache(50, 20, 100);
|
|
109
|
-
} else {
|
|
110
|
-
return sharp.cache(0, 0, 0);
|
|
111
|
-
}
|
|
112
|
-
} else if (is.object(options)) {
|
|
113
|
-
return sharp.cache(options.memory, options.files, options.items);
|
|
114
|
-
} else {
|
|
115
|
-
return sharp.cache();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
cache(true);
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Gets or, when a concurrency is provided, sets
|
|
122
|
-
* the maximum number of threads _libvips_ should use to process _each image_.
|
|
123
|
-
* These are from a thread pool managed by glib,
|
|
124
|
-
* which helps avoid the overhead of creating new threads.
|
|
125
|
-
*
|
|
126
|
-
* This method always returns the current concurrency.
|
|
127
|
-
*
|
|
128
|
-
* The default value is the number of CPU cores,
|
|
129
|
-
* except when using glibc-based Linux without jemalloc,
|
|
130
|
-
* where the default is `1` to help reduce memory fragmentation.
|
|
131
|
-
*
|
|
132
|
-
* A value of `0` will reset this to the number of CPU cores.
|
|
133
|
-
*
|
|
134
|
-
* Some image format libraries spawn additional threads,
|
|
135
|
-
* e.g. libaom manages its own 4 threads when encoding AVIF images,
|
|
136
|
-
* and these are independent of the value set here.
|
|
137
|
-
*
|
|
138
|
-
* :::note
|
|
139
|
-
* Further {@link /performance/ control over performance} is available.
|
|
140
|
-
* :::
|
|
141
|
-
*
|
|
142
|
-
* @example
|
|
143
|
-
* const threads = sharp.concurrency(); // 4
|
|
144
|
-
* sharp.concurrency(2); // 2
|
|
145
|
-
* sharp.concurrency(0); // 4
|
|
146
|
-
*
|
|
147
|
-
* @param {number} [concurrency]
|
|
148
|
-
* @returns {number} concurrency
|
|
149
|
-
*/
|
|
150
|
-
function concurrency (concurrency) {
|
|
151
|
-
return sharp.concurrency(is.integer(concurrency) ? concurrency : null);
|
|
152
|
-
}
|
|
153
|
-
/* node:coverage ignore next 7 */
|
|
154
|
-
if (detectLibc.familySync() === detectLibc.GLIBC && !sharp._isUsingJemalloc()) {
|
|
155
|
-
// Reduce default concurrency to 1 when using glibc memory allocator
|
|
156
|
-
sharp.concurrency(1);
|
|
157
|
-
} else if (detectLibc.familySync() === detectLibc.MUSL && sharp.concurrency() === 1024) {
|
|
158
|
-
// Reduce default concurrency when musl thread over-subscription detected
|
|
159
|
-
sharp.concurrency(require('node:os').availableParallelism());
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* An EventEmitter that emits a `change` event when a task is either:
|
|
164
|
-
* - queued, waiting for _libuv_ to provide a worker thread
|
|
165
|
-
* - complete
|
|
166
|
-
* @member
|
|
167
|
-
* @example
|
|
168
|
-
* sharp.queue.on('change', function(queueLength) {
|
|
169
|
-
* console.log('Queue contains ' + queueLength + ' task(s)');
|
|
170
|
-
* });
|
|
171
|
-
*/
|
|
172
|
-
const queue = new events.EventEmitter();
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Provides access to internal task counters.
|
|
176
|
-
* - queue is the number of tasks this module has queued waiting for _libuv_ to provide a worker thread from its pool.
|
|
177
|
-
* - process is the number of resize tasks currently being processed.
|
|
178
|
-
*
|
|
179
|
-
* @example
|
|
180
|
-
* const counters = sharp.counters(); // { queue: 2, process: 4 }
|
|
181
|
-
*
|
|
182
|
-
* @returns {Object}
|
|
183
|
-
*/
|
|
184
|
-
function counters () {
|
|
185
|
-
return sharp.counters();
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Get and set use of SIMD vector unit instructions.
|
|
190
|
-
* Requires libvips to have been compiled with highway support.
|
|
191
|
-
*
|
|
192
|
-
* Improves the performance of `resize`, `blur` and `sharpen` operations
|
|
193
|
-
* by taking advantage of the SIMD vector unit of the CPU, e.g. Intel SSE and ARM NEON.
|
|
194
|
-
*
|
|
195
|
-
* @example
|
|
196
|
-
* const simd = sharp.simd();
|
|
197
|
-
* // simd is `true` if the runtime use of highway is currently enabled
|
|
198
|
-
* @example
|
|
199
|
-
* const simd = sharp.simd(false);
|
|
200
|
-
* // prevent libvips from using highway at runtime
|
|
201
|
-
*
|
|
202
|
-
* @param {boolean} [simd=true]
|
|
203
|
-
* @returns {boolean}
|
|
204
|
-
*/
|
|
205
|
-
function simd (simd) {
|
|
206
|
-
return sharp.simd(is.bool(simd) ? simd : null);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Block libvips operations at runtime.
|
|
211
|
-
*
|
|
212
|
-
* This is in addition to the `VIPS_BLOCK_UNTRUSTED` environment variable,
|
|
213
|
-
* which when set will block all "untrusted" operations.
|
|
214
|
-
*
|
|
215
|
-
* @since 0.32.4
|
|
216
|
-
*
|
|
217
|
-
* @example <caption>Block all TIFF input.</caption>
|
|
218
|
-
* sharp.block({
|
|
219
|
-
* operation: ['VipsForeignLoadTiff']
|
|
220
|
-
* });
|
|
221
|
-
*
|
|
222
|
-
* @param {Object} options
|
|
223
|
-
* @param {Array<string>} options.operation - List of libvips low-level operation names to block.
|
|
224
|
-
*/
|
|
225
|
-
function block (options) {
|
|
226
|
-
if (is.object(options)) {
|
|
227
|
-
if (Array.isArray(options.operation) && options.operation.every(is.string)) {
|
|
228
|
-
sharp.block(options.operation, true);
|
|
229
|
-
} else {
|
|
230
|
-
throw is.invalidParameterError('operation', 'Array<string>', options.operation);
|
|
231
|
-
}
|
|
232
|
-
} else {
|
|
233
|
-
throw is.invalidParameterError('options', 'object', options);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Unblock libvips operations at runtime.
|
|
239
|
-
*
|
|
240
|
-
* This is useful for defining a list of allowed operations.
|
|
241
|
-
*
|
|
242
|
-
* @since 0.32.4
|
|
243
|
-
*
|
|
244
|
-
* @example <caption>Block all input except WebP from the filesystem.</caption>
|
|
245
|
-
* sharp.block({
|
|
246
|
-
* operation: ['VipsForeignLoad']
|
|
247
|
-
* });
|
|
248
|
-
* sharp.unblock({
|
|
249
|
-
* operation: ['VipsForeignLoadWebpFile']
|
|
250
|
-
* });
|
|
251
|
-
*
|
|
252
|
-
* @example <caption>Block all input except JPEG and PNG from a Buffer or Stream.</caption>
|
|
253
|
-
* sharp.block({
|
|
254
|
-
* operation: ['VipsForeignLoad']
|
|
255
|
-
* });
|
|
256
|
-
* sharp.unblock({
|
|
257
|
-
* operation: ['VipsForeignLoadJpegBuffer', 'VipsForeignLoadPngBuffer']
|
|
258
|
-
* });
|
|
259
|
-
*
|
|
260
|
-
* @param {Object} options
|
|
261
|
-
* @param {Array<string>} options.operation - List of libvips low-level operation names to unblock.
|
|
262
|
-
*/
|
|
263
|
-
function unblock (options) {
|
|
264
|
-
if (is.object(options)) {
|
|
265
|
-
if (Array.isArray(options.operation) && options.operation.every(is.string)) {
|
|
266
|
-
sharp.block(options.operation, false);
|
|
267
|
-
} else {
|
|
268
|
-
throw is.invalidParameterError('operation', 'Array<string>', options.operation);
|
|
269
|
-
}
|
|
270
|
-
} else {
|
|
271
|
-
throw is.invalidParameterError('options', 'object', options);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Decorate the Sharp class with utility-related functions.
|
|
277
|
-
* @module Sharp
|
|
278
|
-
* @private
|
|
279
|
-
*/
|
|
280
|
-
module.exports = (Sharp) => {
|
|
281
|
-
Sharp.cache = cache;
|
|
282
|
-
Sharp.concurrency = concurrency;
|
|
283
|
-
Sharp.counters = counters;
|
|
284
|
-
Sharp.simd = simd;
|
|
285
|
-
Sharp.format = format;
|
|
286
|
-
Sharp.interpolators = interpolators;
|
|
287
|
-
Sharp.versions = versions;
|
|
288
|
-
Sharp.queue = queue;
|
|
289
|
-
Sharp.block = block;
|
|
290
|
-
Sharp.unblock = unblock;
|
|
291
|
-
};
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sharp",
|
|
3
|
-
"description": "High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP, GIF, AVIF and TIFF images",
|
|
4
|
-
"version": "0.34.5",
|
|
5
|
-
"author": "Lovell Fuller <npm@lovell.info>",
|
|
6
|
-
"homepage": "https://sharp.pixelplumbing.com",
|
|
7
|
-
"contributors": [
|
|
8
|
-
"Pierre Inglebert <pierre.inglebert@gmail.com>",
|
|
9
|
-
"Jonathan Ong <jonathanrichardong@gmail.com>",
|
|
10
|
-
"Chanon Sajjamanochai <chanon.s@gmail.com>",
|
|
11
|
-
"Juliano Julio <julianojulio@gmail.com>",
|
|
12
|
-
"Daniel Gasienica <daniel@gasienica.ch>",
|
|
13
|
-
"Julian Walker <julian@fiftythree.com>",
|
|
14
|
-
"Amit Pitaru <pitaru.amit@gmail.com>",
|
|
15
|
-
"Brandon Aaron <hello.brandon@aaron.sh>",
|
|
16
|
-
"Andreas Lind <andreas@one.com>",
|
|
17
|
-
"Maurus Cuelenaere <mcuelenaere@gmail.com>",
|
|
18
|
-
"Linus Unnebäck <linus@folkdatorn.se>",
|
|
19
|
-
"Victor Mateevitsi <mvictoras@gmail.com>",
|
|
20
|
-
"Alaric Holloway <alaric.holloway@gmail.com>",
|
|
21
|
-
"Bernhard K. Weisshuhn <bkw@codingforce.com>",
|
|
22
|
-
"Chris Riley <criley@primedia.com>",
|
|
23
|
-
"David Carley <dacarley@gmail.com>",
|
|
24
|
-
"John Tobin <john@limelightmobileinc.com>",
|
|
25
|
-
"Kenton Gray <kentongray@gmail.com>",
|
|
26
|
-
"Felix Bünemann <Felix.Buenemann@gmail.com>",
|
|
27
|
-
"Samy Al Zahrani <samyalzahrany@gmail.com>",
|
|
28
|
-
"Chintan Thakkar <lemnisk8@gmail.com>",
|
|
29
|
-
"F. Orlando Galashan <frulo@gmx.de>",
|
|
30
|
-
"Kleis Auke Wolthuizen <info@kleisauke.nl>",
|
|
31
|
-
"Matt Hirsch <mhirsch@media.mit.edu>",
|
|
32
|
-
"Matthias Thoemmes <thoemmes@gmail.com>",
|
|
33
|
-
"Patrick Paskaris <patrick@paskaris.gr>",
|
|
34
|
-
"Jérémy Lal <kapouer@melix.org>",
|
|
35
|
-
"Rahul Nanwani <r.nanwani@gmail.com>",
|
|
36
|
-
"Alice Monday <alice0meta@gmail.com>",
|
|
37
|
-
"Kristo Jorgenson <kristo.jorgenson@gmail.com>",
|
|
38
|
-
"YvesBos <yves_bos@outlook.com>",
|
|
39
|
-
"Guy Maliar <guy@tailorbrands.com>",
|
|
40
|
-
"Nicolas Coden <nicolas@ncoden.fr>",
|
|
41
|
-
"Matt Parrish <matt.r.parrish@gmail.com>",
|
|
42
|
-
"Marcel Bretschneider <marcel.bretschneider@gmail.com>",
|
|
43
|
-
"Matthew McEachen <matthew+github@mceachen.org>",
|
|
44
|
-
"Jarda Kotěšovec <jarda.kotesovec@gmail.com>",
|
|
45
|
-
"Kenric D'Souza <kenric.dsouza@gmail.com>",
|
|
46
|
-
"Oleh Aleinyk <oleg.aleynik@gmail.com>",
|
|
47
|
-
"Marcel Bretschneider <marcel.bretschneider@gmail.com>",
|
|
48
|
-
"Andrea Bianco <andrea.bianco@unibas.ch>",
|
|
49
|
-
"Rik Heywood <rik@rik.org>",
|
|
50
|
-
"Thomas Parisot <hi@oncletom.io>",
|
|
51
|
-
"Nathan Graves <nathanrgraves+github@gmail.com>",
|
|
52
|
-
"Tom Lokhorst <tom@lokhorst.eu>",
|
|
53
|
-
"Espen Hovlandsdal <espen@hovlandsdal.com>",
|
|
54
|
-
"Sylvain Dumont <sylvain.dumont35@gmail.com>",
|
|
55
|
-
"Alun Davies <alun.owain.davies@googlemail.com>",
|
|
56
|
-
"Aidan Hoolachan <ajhoolachan21@gmail.com>",
|
|
57
|
-
"Axel Eirola <axel.eirola@iki.fi>",
|
|
58
|
-
"Freezy <freezy@xbmc.org>",
|
|
59
|
-
"Daiz <taneli.vatanen@gmail.com>",
|
|
60
|
-
"Julian Aubourg <j@ubourg.net>",
|
|
61
|
-
"Keith Belovay <keith@picthrive.com>",
|
|
62
|
-
"Michael B. Klein <mbklein@gmail.com>",
|
|
63
|
-
"Jordan Prudhomme <jordan@raboland.fr>",
|
|
64
|
-
"Ilya Ovdin <iovdin@gmail.com>",
|
|
65
|
-
"Andargor <andargor@yahoo.com>",
|
|
66
|
-
"Paul Neave <paul.neave@gmail.com>",
|
|
67
|
-
"Brendan Kennedy <brenwken@gmail.com>",
|
|
68
|
-
"Brychan Bennett-Odlum <git@brychan.io>",
|
|
69
|
-
"Edward Silverton <e.silverton@gmail.com>",
|
|
70
|
-
"Roman Malieiev <aromaleev@gmail.com>",
|
|
71
|
-
"Tomas Szabo <tomas.szabo@deftomat.com>",
|
|
72
|
-
"Robert O'Rourke <robert@o-rourke.org>",
|
|
73
|
-
"Guillermo Alfonso Varela Chouciño <guillevch@gmail.com>",
|
|
74
|
-
"Christian Flintrup <chr@gigahost.dk>",
|
|
75
|
-
"Manan Jadhav <manan@motionden.com>",
|
|
76
|
-
"Leon Radley <leon@radley.se>",
|
|
77
|
-
"alza54 <alza54@thiocod.in>",
|
|
78
|
-
"Jacob Smith <jacob@frende.me>",
|
|
79
|
-
"Michael Nutt <michael@nutt.im>",
|
|
80
|
-
"Brad Parham <baparham@gmail.com>",
|
|
81
|
-
"Taneli Vatanen <taneli.vatanen@gmail.com>",
|
|
82
|
-
"Joris Dugué <zaruike10@gmail.com>",
|
|
83
|
-
"Chris Banks <christopher.bradley.banks@gmail.com>",
|
|
84
|
-
"Ompal Singh <ompal.hitm09@gmail.com>",
|
|
85
|
-
"Brodan <christopher.hranj@gmail.com>",
|
|
86
|
-
"Ankur Parihar <ankur.github@gmail.com>",
|
|
87
|
-
"Brahim Ait elhaj <brahima@gmail.com>",
|
|
88
|
-
"Mart Jansink <m.jansink@gmail.com>",
|
|
89
|
-
"Lachlan Newman <lachnewman007@gmail.com>",
|
|
90
|
-
"Dennis Beatty <dennis@dcbeatty.com>",
|
|
91
|
-
"Ingvar Stepanyan <me@rreverser.com>",
|
|
92
|
-
"Don Denton <don@happycollision.com>"
|
|
93
|
-
],
|
|
94
|
-
"scripts": {
|
|
95
|
-
"build": "node install/build.js",
|
|
96
|
-
"install": "node install/check.js || npm run build",
|
|
97
|
-
"clean": "rm -rf src/build/ .nyc_output/ coverage/ test/fixtures/output.*",
|
|
98
|
-
"test": "npm run lint && npm run test-unit",
|
|
99
|
-
"lint": "npm run lint-cpp && npm run lint-js && npm run lint-types",
|
|
100
|
-
"lint-cpp": "cpplint --quiet src/*.h src/*.cc",
|
|
101
|
-
"lint-js": "biome lint",
|
|
102
|
-
"lint-types": "tsd --files ./test/types/sharp.test-d.ts",
|
|
103
|
-
"test-leak": "./test/leak/leak.sh",
|
|
104
|
-
"test-unit": "node --experimental-test-coverage test/unit.mjs",
|
|
105
|
-
"package-from-local-build": "node npm/from-local-build.js",
|
|
106
|
-
"package-release-notes": "node npm/release-notes.js",
|
|
107
|
-
"docs-build": "node docs/build.mjs",
|
|
108
|
-
"docs-serve": "cd docs && npm start",
|
|
109
|
-
"docs-publish": "cd docs && npm run build && npx firebase-tools deploy --project pixelplumbing --only hosting:pixelplumbing-sharp"
|
|
110
|
-
},
|
|
111
|
-
"type": "commonjs",
|
|
112
|
-
"main": "lib/index.js",
|
|
113
|
-
"types": "lib/index.d.ts",
|
|
114
|
-
"files": [
|
|
115
|
-
"install",
|
|
116
|
-
"lib",
|
|
117
|
-
"src/*.{cc,h,gyp}"
|
|
118
|
-
],
|
|
119
|
-
"repository": {
|
|
120
|
-
"type": "git",
|
|
121
|
-
"url": "git://github.com/lovell/sharp.git"
|
|
122
|
-
},
|
|
123
|
-
"keywords": [
|
|
124
|
-
"jpeg",
|
|
125
|
-
"png",
|
|
126
|
-
"webp",
|
|
127
|
-
"avif",
|
|
128
|
-
"tiff",
|
|
129
|
-
"gif",
|
|
130
|
-
"svg",
|
|
131
|
-
"jp2",
|
|
132
|
-
"dzi",
|
|
133
|
-
"image",
|
|
134
|
-
"resize",
|
|
135
|
-
"thumbnail",
|
|
136
|
-
"crop",
|
|
137
|
-
"embed",
|
|
138
|
-
"libvips",
|
|
139
|
-
"vips"
|
|
140
|
-
],
|
|
141
|
-
"dependencies": {
|
|
142
|
-
"@img/colour": "^1.0.0",
|
|
143
|
-
"detect-libc": "^2.1.2",
|
|
144
|
-
"semver": "^7.7.3"
|
|
145
|
-
},
|
|
146
|
-
"optionalDependencies": {
|
|
147
|
-
"@img/sharp-darwin-arm64": "0.34.5",
|
|
148
|
-
"@img/sharp-darwin-x64": "0.34.5",
|
|
149
|
-
"@img/sharp-libvips-darwin-arm64": "1.2.4",
|
|
150
|
-
"@img/sharp-libvips-darwin-x64": "1.2.4",
|
|
151
|
-
"@img/sharp-libvips-linux-arm": "1.2.4",
|
|
152
|
-
"@img/sharp-libvips-linux-arm64": "1.2.4",
|
|
153
|
-
"@img/sharp-libvips-linux-ppc64": "1.2.4",
|
|
154
|
-
"@img/sharp-libvips-linux-riscv64": "1.2.4",
|
|
155
|
-
"@img/sharp-libvips-linux-s390x": "1.2.4",
|
|
156
|
-
"@img/sharp-libvips-linux-x64": "1.2.4",
|
|
157
|
-
"@img/sharp-libvips-linuxmusl-arm64": "1.2.4",
|
|
158
|
-
"@img/sharp-libvips-linuxmusl-x64": "1.2.4",
|
|
159
|
-
"@img/sharp-linux-arm": "0.34.5",
|
|
160
|
-
"@img/sharp-linux-arm64": "0.34.5",
|
|
161
|
-
"@img/sharp-linux-ppc64": "0.34.5",
|
|
162
|
-
"@img/sharp-linux-riscv64": "0.34.5",
|
|
163
|
-
"@img/sharp-linux-s390x": "0.34.5",
|
|
164
|
-
"@img/sharp-linux-x64": "0.34.5",
|
|
165
|
-
"@img/sharp-linuxmusl-arm64": "0.34.5",
|
|
166
|
-
"@img/sharp-linuxmusl-x64": "0.34.5",
|
|
167
|
-
"@img/sharp-wasm32": "0.34.5",
|
|
168
|
-
"@img/sharp-win32-arm64": "0.34.5",
|
|
169
|
-
"@img/sharp-win32-ia32": "0.34.5",
|
|
170
|
-
"@img/sharp-win32-x64": "0.34.5"
|
|
171
|
-
},
|
|
172
|
-
"devDependencies": {
|
|
173
|
-
"@biomejs/biome": "^2.3.4",
|
|
174
|
-
"@cpplint/cli": "^0.1.0",
|
|
175
|
-
"@emnapi/runtime": "^1.7.0",
|
|
176
|
-
"@img/sharp-libvips-dev": "1.2.4",
|
|
177
|
-
"@img/sharp-libvips-dev-wasm32": "1.2.4",
|
|
178
|
-
"@img/sharp-libvips-win32-arm64": "1.2.4",
|
|
179
|
-
"@img/sharp-libvips-win32-ia32": "1.2.4",
|
|
180
|
-
"@img/sharp-libvips-win32-x64": "1.2.4",
|
|
181
|
-
"@types/node": "*",
|
|
182
|
-
"emnapi": "^1.7.0",
|
|
183
|
-
"exif-reader": "^2.0.2",
|
|
184
|
-
"extract-zip": "^2.0.1",
|
|
185
|
-
"icc": "^3.0.0",
|
|
186
|
-
"jsdoc-to-markdown": "^9.1.3",
|
|
187
|
-
"node-addon-api": "^8.5.0",
|
|
188
|
-
"node-gyp": "^11.5.0",
|
|
189
|
-
"tar-fs": "^3.1.1",
|
|
190
|
-
"tsd": "^0.33.0"
|
|
191
|
-
},
|
|
192
|
-
"license": "Apache-2.0",
|
|
193
|
-
"engines": {
|
|
194
|
-
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
|
|
195
|
-
},
|
|
196
|
-
"config": {
|
|
197
|
-
"libvips": ">=8.17.3"
|
|
198
|
-
},
|
|
199
|
-
"funding": {
|
|
200
|
-
"url": "https://opencollective.com/libvips"
|
|
201
|
-
}
|
|
202
|
-
}
|