New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@luma.gl/shadertools

Package Overview
Dependencies
Maintainers
7
Versions
250
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@luma.gl/shadertools - npm Package Compare versions

Comparing version 9.0.0-beta.3 to 9.0.0-beta.4

2

dist/lib/shader-module/shader-pass.d.ts

@@ -7,3 +7,3 @@ import type { ShaderModule, UniformValue } from './shader-module';

export type ShaderPass<PropsT extends Record<string, unknown> = Record<string, unknown>, UniformsT extends Record<string, UniformValue> = Record<string, UniformValue>> = ShaderModule<PropsT, UniformsT> & {
passes?: ShaderPassData[];
passes: ShaderPassData[];
};

@@ -10,0 +10,0 @@ type ShaderPassData = {

@@ -218,4 +218,4 @@ /**

#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTexTop(t, p) texture2D(t, p)
#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r))
#define FxaaTexTop(t, p) texture(t, p)
#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))

@@ -597,3 +597,3 @@ FxaaFloat FxaaLuma_(FxaaFloat4 rgba) { return dot(rgba.rgb, vec3(0.2126, 0.7152, 0.0722)); }

vec4 fxaa_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 fxaa_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
const float fxaa_QualitySubpix = 0.5;

@@ -605,3 +605,3 @@ const float fxaa_QualityEdgeThreshold = 0.125;

texCoord,
texture,
source,
vec2(1.0) / texSize,

@@ -608,0 +608,0 @@ fxaa_QualitySubpix,

import { ShaderPass } from '../../../lib/shader-module/shader-pass';
export type BrightnessContrastProps = {
brightness: number;
contrast: number;
brightness?: number;
contrast?: number;
};

@@ -6,0 +6,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform BrightnessContrast{
uniform brightnessContrastUniforms {
float brightness;

@@ -11,3 +11,3 @@ float contrast;

color.rgb += brightnessContrast.brightness;
if (contrast > 0.0) {
if (brightnessContrast.contrast > 0.0) {
color.rgb = (color.rgb - 0.5) / (1.0 - brightnessContrast.contrast) + 0.5;

@@ -14,0 +14,0 @@ } else {

@@ -13,3 +13,3 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

*/
strength: number;
strength?: number;
};

@@ -16,0 +16,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Noise {
uniform denoiseUniforms {
float strength;
} noise;
vec4 denoise_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 denoise_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
float adjustedExponent = 3. + 200. * pow(1. - noise.strength, 4.);
vec4 center = texture2D(texture, texCoord);
vec4 center = texture(source, texCoord);
vec4 color = vec4(0.0);

@@ -15,6 +15,6 @@ float total = 0.0;

for (float y = -4.0; y <= 4.0; y += 1.0) {
vec4 sample = texture2D(texture, texCoord + vec2(x, y) / texSize);
float weight = 1.0 - abs(dot(sample.rgb - center.rgb, vec3(0.25)));
vec4 offsetColor = texture(source, texCoord + vec2(x, y) / texSize);
float weight = 1.0 - abs(dot(offsetColor.rgb - center.rgb, vec3(0.25)));
weight = pow(weight, adjustedExponent);
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -37,3 +37,3 @@ }

min: 0,
max: 0.1
max: 1
}

@@ -40,0 +40,0 @@ },

@@ -8,5 +8,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

* and 1 is 180 degree rotation in the positive direction) */
hue: number;
hue?: number;
/** @param saturation -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast) */
saturation: number;
saturation?: number;
};

@@ -13,0 +13,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform HueSaturation {
uniform hueSaturationUniforms {
float hue;

@@ -10,3 +10,3 @@ float saturation;

// hue adjustment, wolfram alpha: RotationTransform[angle, {1, 1, 1}][{x, y, z}]
float angle = hue * 3.14159265;
float angle = hueSaturation.hue * 3.14159265;
float s = sin(angle), c = cos(angle);

@@ -23,6 +23,6 @@ vec3 weights = (vec3(2.0 * c, -sqrt(3.0) * s - c, sqrt(3.0) * s - c) + 1.0) / 3.0;

float average = (color.r + color.g + color.b) / 3.0;
if (saturation > 0.0) {
color.rgb += (average - color.rgb) * (1.0 - 1.0 / (1.001 - saturation));
if (hueSaturation.saturation > 0.0) {
color.rgb += (average - color.rgb) * (1.0 - 1.0 / (1.001 - hueSaturation.saturation));
} else {
color.rgb += (average - color.rgb) * (-saturation);
color.rgb += (average - color.rgb) * (-hueSaturation.saturation);
}

@@ -29,0 +29,0 @@

@@ -7,3 +7,3 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** 0 to 1 (0 for no effect, 1 for maximum noise) */
amount: number;
amount?: number;
};

@@ -10,0 +10,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Noise {
uniform noiseUniforms {
float amount;

@@ -5,0 +5,0 @@ } noise;

import { ShaderPass } from '../../../lib/shader-module/shader-pass';
export type SepiaProps = {
amount: number;
amount?: number;
};

@@ -5,0 +5,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Sepia {
uniform sepiaUniforms {
float amount;

@@ -5,0 +5,0 @@ } sepia;

@@ -7,3 +7,3 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** -1 to 1 (-1 is minimum vibrance, 0 is no change, and 1 is maximum vibrance) */
amount: number;
amount?: number;
};

@@ -10,0 +10,0 @@ /** Vibrance - Modifies the saturation of desaturated colors, leaving saturated colors unmodified. */

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Vibrance {
uniform vibranceUniforms {
float amount;

@@ -5,0 +5,0 @@ } vibrance;

@@ -7,5 +7,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** 0 to 1 (0 for center of frame, 1 for edge of frame) */
radius: number;
radius?: number;
/** 0 to 1 (0 for no effect, 1 for maximum lens darkening) */
amount: number;
amount?: number;
};

@@ -12,0 +12,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Vignette {
uniform vignetteUniforms {
float radius;

@@ -5,0 +5,0 @@ float amount;

@@ -8,11 +8,11 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The x,y coordinate of the start of the line segment. */
start: number[];
start?: number[];
/** The xm y coordinate of the end of the line segment. */
end: number[];
end?: number[];
/** The maximum radius of the pyramid blur. */
blurRadius: number[];
blurRadius?: number;
/** The distance from the line at which the maximum blur radius is reached. */
gradientRadius: number[];
gradientRadius?: number;
/** @deprecated internal shaderpass use */
invert: number;
invert?: number;
};

@@ -19,0 +19,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
import { random } from "../..//math/random/random.js";
const fs = glsl`\
uniform TiltShift {
uniform tiltShiftUniforms {
float blurRadius;

@@ -17,3 +17,3 @@ float gradientRadius;

vec4 tiltShift_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 tiltShift_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec4 color = vec4(0.0);

@@ -25,5 +25,5 @@ float total = 0.0;

vec2 normal = normalize(vec2((start.y - end.y) * texSize.y, (end.x - start.x) * texSize.x));
vec2 normal = normalize(vec2((tiltShift.start.y - tiltShift.end.y) * texSize.y, (tiltShift.end.x - tiltShift.start.x) * texSize.x));
float radius = smoothstep(0.0, 1.0,
abs(dot(texCoord * texSize - start * texSize, normal)) / tiltShift.gradientRadius) * tiltShift.blurRadius;
abs(dot(texCoord * texSize - tiltShift.start * texSize, normal)) / tiltShift.gradientRadius) * tiltShift.blurRadius;

@@ -33,8 +33,8 @@ for (float t = -30.0; t <= 30.0; t++) {

float weight = 1.0 - abs(percent);
vec4 sample = texture2D(texture, texCoord + tiltShift_getDelta(texSize) / texSize * percent * radius);
vec4 offsetColor = texture(source, texCoord + tiltShift_getDelta(texSize) / texSize * percent * radius);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -41,0 +41,0 @@ }

@@ -10,5 +10,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The radius of the pyramid convolved with the image. */
radius: number;
radius?: number;
/** @deprecated internal property */
delta: number[];
delta?: number[];
};

@@ -15,0 +15,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
import { random } from "../..//math/random/random.js";
const fs = glsl`\
uniform float radius;
uniform vec2 delta;
uniform triangleBlurUniforms {
float radius;
vec2 delta;
} triangleBlur;
vec4 triangleBlur_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec2 adjustedDelta = delta * radius / texSize;
vec4 triangleBlur_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 adjustedDelta = triangleBlur.delta * triangleBlur.radius / texSize;

@@ -19,8 +21,8 @@ vec4 color = vec4(0.0);

float weight = 1.0 - abs(percent);
vec4 sample = texture2D(texture, texCoord + adjustedDelta * percent);
vec4 offsetColor = texture(source, texCoord + adjustedDelta * percent);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -27,0 +29,0 @@ }

@@ -7,5 +7,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** - The x, y coordinate of the blur origin. */
center: number[];
center?: number[];
/** - The strength of the blur. Values in the range 0 to 1 are usually sufficient, where 0 doesn't change the image and 1 creates a highly blurred image. */
strength: number;
strength?: number;
};

@@ -12,0 +12,0 @@ /**

import { random } from "../../math/random/random.js";
const fs = `
uniform vec2 center;
uniform float strength;
uniform zoomBlurUniforms {
vec2 center;
float strength;
} zoomBlur;
vec4 zoomBlur_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 zoomBlur_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec4 color = vec4(0.0);
float total = 0.0;
vec2 toCenter = center * texSize - texCoord * texSize;
vec2 toCenter = zoomBlur.center * texSize - texCoord * texSize;

@@ -17,8 +19,8 @@ /* randomize the lookup values to hide the fixed number of samples */

float weight = 4.0 * (percent - percent * percent);
vec4 sample = texture2D(texture, texCoord + toCenter * percent * strength / texSize);
vec4 offsetColor = texture(source, texCoord + toCenter * percent * zoomBlur.strength / texSize);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -25,0 +27,0 @@ }

@@ -10,7 +10,7 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The x,y coordinate of the pattern origin. */
center: number[];
center?: number[];
/** The rotation of the pattern in radians. */
angle: number;
angle?: number;
/** The diameter of a dot in pixels. */
size: number;
size?: number;
};

@@ -17,0 +17,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform ColorHalftone {
uniform colorHalftoneUniforms {
vec2 center;

@@ -9,6 +9,4 @@ float angle;

float scale = 3.1514 / colorHalftone.size;
float pattern(float angle, vec2 texSize, vec2 texCoord) {
float s = sin(colorHalftone.angle), c = cos(colorHalftone.angle);
float pattern(float angle, float scale, vec2 texSize, vec2 texCoord) {
float s = sin(angle), c = cos(angle);
vec2 tex = texCoord * texSize - colorHalftone.center * texSize;

@@ -23,15 +21,17 @@ vec2 point = vec2(

vec4 colorHalftone_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {
float scale = 3.1514 / colorHalftone.size;
vec3 cmy = 1.0 - color.rgb;
float k = min(cmy.x, min(cmy.y, cmy.z));
cmy = (cmy - k) / (1.0 - k);
cmy = clamp(
cmy * 10.0 - 3.0 + vec3(
pattern(angle + 0.26179, texSize, texCoord),
pattern(angle + 1.30899, texSize, texCoord),
pattern(angle, texSize, texCoord)
),
0.0,
1.0
cmy * 10.0 - 3.0 + vec3(
pattern(colorHalftone.angle + 0.26179, scale, texSize, texCoord),
pattern(colorHalftone.angle + 1.30899, scale, texSize, texCoord),
pattern(colorHalftone.angle, scale, texSize, texCoord)
),
0.0,
1.0
);
k = clamp(k * 10.0 - 5.0 + pattern(angle + 0.78539, texSize, texCoord), 0.0, 1.0);
k = clamp(k * 10.0 - 5.0 + pattern(colorHalftone.angle + 0.78539, scale, texSize, texCoord), 0.0, 1.0);
return vec4(1.0 - cmy - k, color.a);

@@ -38,0 +38,0 @@ }

@@ -9,7 +9,7 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The x, y coordinate of the pattern origin. */
center: number[];
center?: number[];
/** The rotation of the pattern in radians. */
angle: number;
angle?: number;
/** The diameter of a dot in pixels. */
size: number;
size?: number;
};

@@ -16,0 +16,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform DotScreen {
uniform dotScreenUniforms {
vec2 center;

@@ -5,0 +5,0 @@ float angle;

@@ -9,5 +9,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** radius The radius of the effect in pixels. */
radius: number;
radius?: number;
/** @deprecated internal */
delta: number;
delta?: number;
};

@@ -14,0 +14,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
import { random } from "../../math/random/random.js";
const fs = glsl`\
uniform EdgeWork {
uniform edgeWorkUniforms {
float radius;

@@ -21,3 +21,3 @@ vec2 delta;

float weight = 1.0 - abs(percent);
vec3 sampleColor = texture2D(source, texCoord + relativeDelta * percent).rgb;
vec3 sampleColor = texture(source, texCoord + relativeDelta * percent).rgb;
float average = (sampleColor.r + sampleColor.g + sampleColor.b) / 3.0;

@@ -47,3 +47,3 @@ color.x += average * weight;

float weight = 1.0 - abs(percent);
vec2 sampleColor = texture2D(source, texCoord + relativeDelta * percent).xy;
vec2 sampleColor = texture(source, texCoord + relativeDelta * percent).xy;
color.x += sampleColor.x * weight;

@@ -50,0 +50,0 @@ total.x += weight;

@@ -9,5 +9,5 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The [x, y] coordinates of the pattern center. */
center: number[];
center?: number[];
/** The width of an individual tile, in pixels. */
scale: number;
scale?: number;
};

@@ -14,0 +14,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform HexagonalPixelate {
uniform hexagonalPixelateUniforms {
vec2 center;

@@ -8,3 +8,3 @@ float scale;

vec4 hexagonalPixelate_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 hexagonalPixelate_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 tex = (texCoord * texSize - hexagonalPixelate.center * texSize) / hexagonalPixelate.scale;

@@ -44,3 +44,3 @@ tex.y /= 0.866025404;

return texture2D(texture, choice + hexagonalPixelate.center);
return texture(source, choice + hexagonalPixelate.center);
}

@@ -47,0 +47,0 @@ `;

@@ -13,3 +13,3 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

*/
strength: number;
strength?: number;
};

@@ -16,0 +16,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Ink {
uniform inkUniforms {
float strength;
} ink;
vec4 ink_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 ink_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 dx = vec2(1.0 / texSize.x, 0.0);
vec2 dy = vec2(0.0, 1.0 / texSize.y);
vec4 color = texture2D(texture, texCoord);
vec4 color = texture(source, texCoord);
float bigTotal = 0.0;

@@ -17,7 +17,7 @@ float smallTotal = 0.0;

for (float y = -2.0; y <= 2.0; y += 1.0) {
vec3 sample = texture2D(texture, texCoord + dx * x + dy * y).rgb;
bigAverage += sample;
vec3 offsetColor = texture(source, texCoord + dx * x + dy * y).rgb;
bigAverage += offsetColor;
bigTotal += 1.0;
if (abs(x) + abs(y) < 2.0) {
smallAverage += sample;
smallAverage += offsetColor;
smallTotal += 1.0;

@@ -24,0 +24,0 @@ }

@@ -7,11 +7,11 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** x, y position in screen coords, both x and y is normalized and in range `[0, 1]`. `[0, 0]` is the up left corner, `[1, 1]` is the bottom right corner. Default value is `[0, 0]`. */
screenXY: number[];
screenXY?: number[];
/** effect radius in pixels. Default value is `100`. */
radiusPixels: number;
radiusPixels?: number;
/** magnify level. Default value is `2`. */
zoom: number;
zoom?: number;
/** border width of the effect circle, will not show border if value <= 0.0. Default value is `0`. */
borderWidthPixels: number;
borderWidthPixels?: number;
/** border color of the effect circle. Default value is `[255, 255, 255, 255]`. */
borderColor: number[];
borderColor?: number[];
};

@@ -18,0 +18,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
uniform Magnify {
uniform magnifyUniforms {
vec2 screenXY;

@@ -11,7 +11,7 @@ float radiusPixels;

vec4 magnify_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 magnify_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 pos = vec2(magnify.screenXY.x, 1.0 - magnify.screenXY.y);
float dist = distance(texCoord * texSize, pos * texSize);
if (dist < magnify.radiusPixels) {
return texture2D(texture, (texCoord - pos) / magnify.zoom + pos);
return texture(source, (texCoord - pos) / magnify.zoom + pos);
}

@@ -22,3 +22,3 @@

}
return texture2D(texture, texCoord);
return texture(source, texCoord);
}

@@ -25,0 +25,0 @@ `;

@@ -5,7 +5,7 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** The [x, y] coordinates of the center of the circle of effect. */
center: number[];
center?: number[];
/** The radius of the circle of effect. */
radius: number;
radius?: number;
/** strength -1 to 1 (-1 is strong pinch, 0 is no effect, 1 is strong bulge) */
strength: number;
strength?: number;
};

@@ -12,0 +12,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
import { warp } from "./warp.js";
const fs = glsl`\
uniform BulgePinch {
uniform bulgePinchUniforms {
float radius;

@@ -15,3 +15,3 @@ float strength;

float percent = distance / bulgePinch.radius;
if (strength > 0.0) {
if (bulgePinch.strength > 0.0) {
coord *= mix(1.0, smoothstep(0.0, bulgePinch.radius / distance, percent), bulgePinch.strength * 0.75);

@@ -26,7 +26,7 @@ } else {

vec4 bulgePinch_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 bulgePinch_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 coord = texCoord * texSize;
coord = bulgePinch_warp(coord, bulgePinch.center * texSize);
return warp_sampleColor(texture, texSize, coord);
return warp_sampleColor(source, texSize, coord);
}

@@ -33,0 +33,0 @@ `;

@@ -7,7 +7,7 @@ import { ShaderPass } from '../../../lib/shader-module/shader-pass';

/** [x, y] coordinates of the center of the circle of effect. default: [0.5, 0.5] */
center: [number, number];
center?: [number, number];
/** The radius of the circular region. */
radius: number;
radius?: number;
/** The angle in radians that the pixels in the center of the circular region will be rotated by. */
angle: number;
angle?: number;
};

@@ -14,0 +14,0 @@ /**

import { glsl } from "../../../lib/glsl-utils/highlight.js";
import { warp } from "./warp.js";
const fs = glsl`\
uniform Swirl {
uniform swirlUniforms {
float radius;

@@ -27,7 +27,7 @@ float angle;

vec4 swirl_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 swirl_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 coord = texCoord * texSize;
coord = swirl_warp(coord, swirl.center * texSize);
return warp_sampleColor(texture, texSize, coord);
return warp_sampleColor(source, texSize, coord);
}

@@ -34,0 +34,0 @@ `;

import { glsl } from "../../../lib/glsl-utils/highlight.js";
const fs = glsl`\
vec4 warp_sampleColor(sampler2D texture, vec2 texSize, vec2 coord) {
vec4 color = texture2D(texture, coord / texSize);
vec4 warp_sampleColor(sampler2D source, vec2 texSize, vec2 coord) {
vec4 color = texture(source, coord / texSize);
vec2 clampedCoord = clamp(coord, vec2(0.0), texSize);

@@ -16,4 +16,5 @@ if (coord != clampedCoord) {

name: 'warp',
passes: [],
fs
};
//# sourceMappingURL=warp.js.map
{
"name": "@luma.gl/shadertools",
"version": "9.0.0-beta.3",
"version": "9.0.0-beta.4",
"description": "Shader module system for luma.gl",

@@ -49,7 +49,7 @@ "type": "module",

"@babel/runtime": "^7.0.0",
"@luma.gl/core": "9.0.0-beta.3",
"@luma.gl/core": "9.0.0-beta.4",
"@math.gl/core": "^4.0.0",
"@math.gl/types": "^4.0.0"
},
"gitHead": "236a5e51ca79fe11f9cb9fd7b0af6520e9c52e87"
"gitHead": "bf6bb45b25d59de5b3d05dab4b2e91ad583059e6"
}

@@ -11,3 +11,3 @@ // luma.gl, MIT license

export type ShaderPass<PropsT extends Record<string, unknown> = Record<string, unknown>, UniformsT extends Record<string, UniformValue> = Record<string, UniformValue>> = ShaderModule<PropsT, UniformsT> & {
passes?: ShaderPassData[];
passes: ShaderPassData[];
};

@@ -14,0 +14,0 @@

@@ -287,4 +287,4 @@ // luma.gl, MIT license

#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTexTop(t, p) texture2D(t, p)
#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r))
#define FxaaTexTop(t, p) texture(t, p)
#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r))

@@ -666,3 +666,3 @@ FxaaFloat FxaaLuma_(FxaaFloat4 rgba) { return dot(rgba.rgb, vec3(0.2126, 0.7152, 0.0722)); }

vec4 fxaa_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 fxaa_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
const float fxaa_QualitySubpix = 0.5;

@@ -674,3 +674,3 @@ const float fxaa_QualityEdgeThreshold = 0.125;

texCoord,
texture,
source,
vec2(1.0) / texSize,

@@ -677,0 +677,0 @@ fxaa_QualitySubpix,

@@ -9,3 +9,3 @@ // luma.gl, MIT license

uniform BrightnessContrast{
uniform brightnessContrastUniforms {
float brightness;

@@ -17,3 +17,3 @@ float contrast;

color.rgb += brightnessContrast.brightness;
if (contrast > 0.0) {
if (brightnessContrast.contrast > 0.0) {
color.rgb = (color.rgb - 0.5) / (1.0 - brightnessContrast.contrast) + 0.5;

@@ -32,4 +32,4 @@ } else {

export type BrightnessContrastProps = {
brightness: number;
contrast: number;
brightness?: number;
contrast?: number;
};

@@ -36,0 +36,0 @@

@@ -9,10 +9,10 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Noise {
uniform denoiseUniforms {
float strength;
} noise;
vec4 denoise_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 denoise_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
float adjustedExponent = 3. + 200. * pow(1. - noise.strength, 4.);
vec4 center = texture2D(texture, texCoord);
vec4 center = texture(source, texCoord);
vec4 color = vec4(0.0);

@@ -22,6 +22,6 @@ float total = 0.0;

for (float y = -4.0; y <= 4.0; y += 1.0) {
vec4 sample = texture2D(texture, texCoord + vec2(x, y) / texSize);
float weight = 1.0 - abs(dot(sample.rgb - center.rgb, vec3(0.25)));
vec4 offsetColor = texture(source, texCoord + vec2(x, y) / texSize);
float weight = 1.0 - abs(dot(offsetColor.rgb - center.rgb, vec3(0.25)));
weight = pow(weight, adjustedExponent);
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -46,3 +46,3 @@ }

*/
strength: number;
strength?: number;
};

@@ -61,3 +61,3 @@

uniformPropTypes: {
strength: {format: 'f32', value: 0.5, min: 0, max: 0.1}
strength: {format: 'f32', value: 0.5, min: 0, max: 1}
// strength: {..., adjust: (strength: number): number => 0.53 + 200 * Math.pow(1 - strength, 4) // TODO - JS preprocessing

@@ -64,0 +64,0 @@ },

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform HueSaturation {
uniform hueSaturationUniforms {
float hue;

@@ -16,3 +16,3 @@ float saturation;

// hue adjustment, wolfram alpha: RotationTransform[angle, {1, 1, 1}][{x, y, z}]
float angle = hue * 3.14159265;
float angle = hueSaturation.hue * 3.14159265;
float s = sin(angle), c = cos(angle);

@@ -29,6 +29,6 @@ vec3 weights = (vec3(2.0 * c, -sqrt(3.0) * s - c, sqrt(3.0) * s - c) + 1.0) / 3.0;

float average = (color.r + color.g + color.b) / 3.0;
if (saturation > 0.0) {
color.rgb += (average - color.rgb) * (1.0 - 1.0 / (1.001 - saturation));
if (hueSaturation.saturation > 0.0) {
color.rgb += (average - color.rgb) * (1.0 - 1.0 / (1.001 - hueSaturation.saturation));
} else {
color.rgb += (average - color.rgb) * (-saturation);
color.rgb += (average - color.rgb) * (-hueSaturation.saturation);
}

@@ -50,5 +50,5 @@

* and 1 is 180 degree rotation in the positive direction) */
hue: number;
hue?: number;
/** @param saturation -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast) */
saturation: number;
saturation?: number;
};

@@ -55,0 +55,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Noise {
uniform noiseUniforms {
float amount;

@@ -35,3 +35,3 @@ } noise;

/** 0 to 1 (0 for no effect, 1 for maximum noise) */
amount: number;
amount?: number;
};

@@ -38,0 +38,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Sepia {
uniform sepiaUniforms {
float amount;

@@ -32,3 +32,3 @@ } sepia;

export type SepiaProps = {
amount: number;
amount?: number;
};

@@ -35,0 +35,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Vibrance {
uniform vibranceUniforms {
float amount;

@@ -31,3 +31,3 @@ } vibrance;

/** -1 to 1 (-1 is minimum vibrance, 0 is no change, and 1 is maximum vibrance) */
amount: number;
amount?: number;
};

@@ -34,0 +34,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Vignette {
uniform vignetteUniforms {
float radius;

@@ -30,5 +30,5 @@ float amount;

/** 0 to 1 (0 for center of frame, 1 for edge of frame) */
radius: number;
radius?: number;
/** 0 to 1 (0 for no effect, 1 for maximum lens darkening) */
amount: number;
amount?: number;
};

@@ -35,0 +35,0 @@

@@ -9,3 +9,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform TiltShift {
uniform tiltShiftUniforms {
float blurRadius;

@@ -23,3 +23,3 @@ float gradientRadius;

vec4 tiltShift_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 tiltShift_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec4 color = vec4(0.0);

@@ -31,5 +31,5 @@ float total = 0.0;

vec2 normal = normalize(vec2((start.y - end.y) * texSize.y, (end.x - start.x) * texSize.x));
vec2 normal = normalize(vec2((tiltShift.start.y - tiltShift.end.y) * texSize.y, (tiltShift.end.x - tiltShift.start.x) * texSize.x));
float radius = smoothstep(0.0, 1.0,
abs(dot(texCoord * texSize - start * texSize, normal)) / tiltShift.gradientRadius) * tiltShift.blurRadius;
abs(dot(texCoord * texSize - tiltShift.start * texSize, normal)) / tiltShift.gradientRadius) * tiltShift.blurRadius;

@@ -39,8 +39,8 @@ for (float t = -30.0; t <= 30.0; t++) {

float weight = 1.0 - abs(percent);
vec4 sample = texture2D(texture, texCoord + tiltShift_getDelta(texSize) / texSize * percent * radius);
vec4 offsetColor = texture(source, texCoord + tiltShift_getDelta(texSize) / texSize * percent * radius);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -64,11 +64,11 @@ }

/** The x,y coordinate of the start of the line segment. */
start: number[];
start?: number[];
/** The xm y coordinate of the end of the line segment. */
end: number[];
end?: number[];
/** The maximum radius of the pyramid blur. */
blurRadius: number[];
blurRadius?: number;
/** The distance from the line at which the maximum blur radius is reached. */
gradientRadius: number[];
gradientRadius?: number;
/** @deprecated internal shaderpass use */
invert: number;
invert?: number;
};

@@ -75,0 +75,0 @@

@@ -9,7 +9,9 @@ // luma.gl, MIT license

const fs = glsl`\
uniform float radius;
uniform vec2 delta;
uniform triangleBlurUniforms {
float radius;
vec2 delta;
} triangleBlur;
vec4 triangleBlur_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec2 adjustedDelta = delta * radius / texSize;
vec4 triangleBlur_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 adjustedDelta = triangleBlur.delta * triangleBlur.radius / texSize;

@@ -25,8 +27,8 @@ vec4 color = vec4(0.0);

float weight = 1.0 - abs(percent);
vec4 sample = texture2D(texture, texCoord + adjustedDelta * percent);
vec4 offsetColor = texture(source, texCoord + adjustedDelta * percent);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -52,5 +54,5 @@ }

/** The radius of the pyramid convolved with the image. */
radius: number;
radius?: number;
/** @deprecated internal property */
delta: number[];
delta?: number[];
};

@@ -57,0 +59,0 @@

@@ -8,9 +8,11 @@ // luma.gl, MIT license

const fs = `
uniform vec2 center;
uniform float strength;
uniform zoomBlurUniforms {
vec2 center;
float strength;
} zoomBlur;
vec4 zoomBlur_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 zoomBlur_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec4 color = vec4(0.0);
float total = 0.0;
vec2 toCenter = center * texSize - texCoord * texSize;
vec2 toCenter = zoomBlur.center * texSize - texCoord * texSize;

@@ -23,8 +25,8 @@ /* randomize the lookup values to hide the fixed number of samples */

float weight = 4.0 * (percent - percent * percent);
vec4 sample = texture2D(texture, texCoord + toCenter * percent * strength / texSize);
vec4 offsetColor = texture(source, texCoord + toCenter * percent * zoomBlur.strength / texSize);
/* switch to pre-multiplied alpha to correctly blur transparent images */
sample.rgb *= sample.a;
offsetColor.rgb *= offsetColor.a;
color += sample * weight;
color += offsetColor * weight;
total += weight;

@@ -47,5 +49,5 @@ }

/** - The x, y coordinate of the blur origin. */
center: number[],
center?: number[],
/** - The strength of the blur. Values in the range 0 to 1 are usually sufficient, where 0 doesn't change the image and 1 creates a highly blurred image. */
strength: number
strength?: number
};

@@ -52,0 +54,0 @@

@@ -9,3 +9,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform ColorHalftone {
uniform colorHalftoneUniforms {
vec2 center;

@@ -16,6 +16,4 @@ float angle;

float scale = 3.1514 / colorHalftone.size;
float pattern(float angle, vec2 texSize, vec2 texCoord) {
float s = sin(colorHalftone.angle), c = cos(colorHalftone.angle);
float pattern(float angle, float scale, vec2 texSize, vec2 texCoord) {
float s = sin(angle), c = cos(angle);
vec2 tex = texCoord * texSize - colorHalftone.center * texSize;

@@ -30,15 +28,17 @@ vec2 point = vec2(

vec4 colorHalftone_filterColor(vec4 color, vec2 texSize, vec2 texCoord) {
float scale = 3.1514 / colorHalftone.size;
vec3 cmy = 1.0 - color.rgb;
float k = min(cmy.x, min(cmy.y, cmy.z));
cmy = (cmy - k) / (1.0 - k);
cmy = clamp(
cmy * 10.0 - 3.0 + vec3(
pattern(angle + 0.26179, texSize, texCoord),
pattern(angle + 1.30899, texSize, texCoord),
pattern(angle, texSize, texCoord)
),
0.0,
1.0
cmy * 10.0 - 3.0 + vec3(
pattern(colorHalftone.angle + 0.26179, scale, texSize, texCoord),
pattern(colorHalftone.angle + 1.30899, scale, texSize, texCoord),
pattern(colorHalftone.angle, scale, texSize, texCoord)
),
0.0,
1.0
);
k = clamp(k * 10.0 - 5.0 + pattern(angle + 0.78539, texSize, texCoord), 0.0, 1.0);
k = clamp(k * 10.0 - 5.0 + pattern(colorHalftone.angle + 0.78539, scale, texSize, texCoord), 0.0, 1.0);
return vec4(1.0 - cmy - k, color.a);

@@ -56,7 +56,7 @@ }

/** The x,y coordinate of the pattern origin. */
center: number[];
center?: number[];
/** The rotation of the pattern in radians. */
angle: number;
angle?: number;
/** The diameter of a dot in pixels. */
size: number;
size?: number;
};

@@ -63,0 +63,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform DotScreen {
uniform dotScreenUniforms {
vec2 center;

@@ -40,7 +40,7 @@ float angle;

/** The x, y coordinate of the pattern origin. */
center: number[];
center?: number[];
/** The rotation of the pattern in radians. */
angle: number;
angle?: number;
/** The diameter of a dot in pixels. */
size: number;
size?: number;
};

@@ -47,0 +47,0 @@

@@ -9,3 +9,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform EdgeWork {
uniform edgeWorkUniforms {
float radius;

@@ -27,3 +27,3 @@ vec2 delta;

float weight = 1.0 - abs(percent);
vec3 sampleColor = texture2D(source, texCoord + relativeDelta * percent).rgb;
vec3 sampleColor = texture(source, texCoord + relativeDelta * percent).rgb;
float average = (sampleColor.r + sampleColor.g + sampleColor.b) / 3.0;

@@ -53,3 +53,3 @@ color.x += average * weight;

float weight = 1.0 - abs(percent);
vec2 sampleColor = texture2D(source, texCoord + relativeDelta * percent).xy;
vec2 sampleColor = texture(source, texCoord + relativeDelta * percent).xy;
color.x += sampleColor.x * weight;

@@ -75,5 +75,5 @@ total.x += weight;

/** radius The radius of the effect in pixels. */
radius: number;
radius?: number;
/** @deprecated internal */
delta: number;
delta?: number;
};

@@ -80,0 +80,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform HexagonalPixelate {
uniform hexagonalPixelateUniforms {
vec2 center;

@@ -14,3 +14,3 @@ float scale;

vec4 hexagonalPixelate_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 hexagonalPixelate_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 tex = (texCoord * texSize - hexagonalPixelate.center * texSize) / hexagonalPixelate.scale;

@@ -50,3 +50,3 @@ tex.y /= 0.866025404;

return texture2D(texture, choice + hexagonalPixelate.center);
return texture(source, choice + hexagonalPixelate.center);
}

@@ -62,5 +62,5 @@ `;

/** The [x, y] coordinates of the pattern center. */
center: number[];
center?: number[];
/** The width of an individual tile, in pixels. */
scale: number;
scale?: number;
};

@@ -67,0 +67,0 @@

@@ -8,10 +8,10 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Ink {
uniform inkUniforms {
float strength;
} ink;
vec4 ink_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 ink_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 dx = vec2(1.0 / texSize.x, 0.0);
vec2 dy = vec2(0.0, 1.0 / texSize.y);
vec4 color = texture2D(texture, texCoord);
vec4 color = texture(source, texCoord);
float bigTotal = 0.0;

@@ -23,7 +23,7 @@ float smallTotal = 0.0;

for (float y = -2.0; y <= 2.0; y += 1.0) {
vec3 sample = texture2D(texture, texCoord + dx * x + dy * y).rgb;
bigAverage += sample;
vec3 offsetColor = texture(source, texCoord + dx * x + dy * y).rgb;
bigAverage += offsetColor;
bigTotal += 1.0;
if (abs(x) + abs(y) < 2.0) {
smallAverage += sample;
smallAverage += offsetColor;
smallTotal += 1.0;

@@ -50,3 +50,3 @@ }

*/
strength: number;
strength?: number;
};

@@ -53,0 +53,0 @@

@@ -8,3 +8,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Magnify {
uniform magnifyUniforms {
vec2 screenXY;

@@ -17,7 +17,7 @@ float radiusPixels;

vec4 magnify_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 magnify_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 pos = vec2(magnify.screenXY.x, 1.0 - magnify.screenXY.y);
float dist = distance(texCoord * texSize, pos * texSize);
if (dist < magnify.radiusPixels) {
return texture2D(texture, (texCoord - pos) / magnify.zoom + pos);
return texture(source, (texCoord - pos) / magnify.zoom + pos);
}

@@ -28,3 +28,3 @@

}
return texture2D(texture, texCoord);
return texture(source, texCoord);
}

@@ -38,11 +38,11 @@ `;

/** x, y position in screen coords, both x and y is normalized and in range `[0, 1]`. `[0, 0]` is the up left corner, `[1, 1]` is the bottom right corner. Default value is `[0, 0]`. */
screenXY: number[];
screenXY?: number[];
/** effect radius in pixels. Default value is `100`. */
radiusPixels: number;
radiusPixels?: number;
/** magnify level. Default value is `2`. */
zoom: number;
zoom?: number;
/** border width of the effect circle, will not show border if value <= 0.0. Default value is `0`. */
borderWidthPixels: number;
borderWidthPixels?: number;
/** border color of the effect circle. Default value is `[255, 255, 255, 255]`. */
borderColor: number[];
borderColor?: number[];
};

@@ -49,0 +49,0 @@

@@ -9,3 +9,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform BulgePinch {
uniform bulgePinchUniforms {
float radius;

@@ -21,3 +21,3 @@ float strength;

float percent = distance / bulgePinch.radius;
if (strength > 0.0) {
if (bulgePinch.strength > 0.0) {
coord *= mix(1.0, smoothstep(0.0, bulgePinch.radius / distance, percent), bulgePinch.strength * 0.75);

@@ -32,7 +32,7 @@ } else {

vec4 bulgePinch_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 bulgePinch_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 coord = texCoord * texSize;
coord = bulgePinch_warp(coord, bulgePinch.center * texSize);
return warp_sampleColor(texture, texSize, coord);
return warp_sampleColor(source, texSize, coord);
}

@@ -44,7 +44,7 @@ `;

/** The [x, y] coordinates of the center of the circle of effect. */
center: number[];
center?: number[];
/** The radius of the circle of effect. */
radius: number;
radius?: number;
/** strength -1 to 1 (-1 is strong pinch, 0 is no effect, 1 is strong bulge) */
strength: number;
strength?: number;
};

@@ -51,0 +51,0 @@

@@ -9,3 +9,3 @@ // luma.gl, MIT license

const fs = glsl`\
uniform Swirl {
uniform swirlUniforms {
float radius;

@@ -33,7 +33,7 @@ float angle;

vec4 swirl_sampleColor(sampler2D texture, vec2 texSize, vec2 texCoord) {
vec4 swirl_sampleColor(sampler2D source, vec2 texSize, vec2 texCoord) {
vec2 coord = texCoord * texSize;
coord = swirl_warp(coord, swirl.center * texSize);
return warp_sampleColor(texture, texSize, coord);
return warp_sampleColor(source, texSize, coord);
}

@@ -47,7 +47,7 @@ `;

/** [x, y] coordinates of the center of the circle of effect. default: [0.5, 0.5] */
center: [number, number];
center?: [number, number];
/** The radius of the circular region. */
radius: number;
radius?: number;
/** The angle in radians that the pixels in the center of the circular region will be rotated by. */
angle: number;
angle?: number;
};

@@ -54,0 +54,0 @@

@@ -8,4 +8,4 @@ // luma.gl, MIT license

const fs = glsl`\
vec4 warp_sampleColor(sampler2D texture, vec2 texSize, vec2 coord) {
vec4 color = texture2D(texture, coord / texSize);
vec4 warp_sampleColor(sampler2D source, vec2 texSize, vec2 coord) {
vec4 color = texture(source, coord / texSize);
vec2 clampedCoord = clamp(coord, vec2(0.0), texSize);

@@ -25,3 +25,4 @@ if (coord != clampedCoord) {

name: 'warp',
passes: [],
fs
};

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc