Socket
Socket
Sign inDemoInstall

@pixi/settings

Package Overview
Dependencies
Maintainers
3
Versions
118
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pixi/settings - npm Package Compare versions

Comparing version 7.0.0-alpha.3 to 7.0.0-beta

global.d.ts

63

dist/cjs/settings.js
/*!
* @pixi/settings - v7.0.0-alpha.3
* Compiled Fri, 23 Sep 2022 14:33:14 UTC
* @pixi/settings - v7.0.0-beta
* Compiled Tue, 11 Oct 2022 19:54:08 UTC
*

@@ -12,45 +12,3 @@ * @pixi/settings is licensed under the MIT License.

/*!
* @pixi/constants - v7.0.0-alpha.3
* Compiled Fri, 23 Sep 2022 14:33:14 UTC
*
* @pixi/constants is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/
var SCALE_MODES = /* @__PURE__ */ ((SCALE_MODES2) => {
SCALE_MODES2[SCALE_MODES2["NEAREST"] = 0] = "NEAREST";
SCALE_MODES2[SCALE_MODES2["LINEAR"] = 1] = "LINEAR";
return SCALE_MODES2;
})(SCALE_MODES || {});
var WRAP_MODES = /* @__PURE__ */ ((WRAP_MODES2) => {
WRAP_MODES2[WRAP_MODES2["CLAMP"] = 33071] = "CLAMP";
WRAP_MODES2[WRAP_MODES2["REPEAT"] = 10497] = "REPEAT";
WRAP_MODES2[WRAP_MODES2["MIRRORED_REPEAT"] = 33648] = "MIRRORED_REPEAT";
return WRAP_MODES2;
})(WRAP_MODES || {});
var MIPMAP_MODES = /* @__PURE__ */ ((MIPMAP_MODES2) => {
MIPMAP_MODES2[MIPMAP_MODES2["OFF"] = 0] = "OFF";
MIPMAP_MODES2[MIPMAP_MODES2["POW2"] = 1] = "POW2";
MIPMAP_MODES2[MIPMAP_MODES2["ON"] = 2] = "ON";
MIPMAP_MODES2[MIPMAP_MODES2["ON_MANUAL"] = 3] = "ON_MANUAL";
return MIPMAP_MODES2;
})(MIPMAP_MODES || {});
var GC_MODES = /* @__PURE__ */ ((GC_MODES2) => {
GC_MODES2[GC_MODES2["AUTO"] = 0] = "AUTO";
GC_MODES2[GC_MODES2["MANUAL"] = 1] = "MANUAL";
return GC_MODES2;
})(GC_MODES || {});
var PRECISION = /* @__PURE__ */ ((PRECISION2) => {
PRECISION2["LOW"] = "lowp";
PRECISION2["MEDIUM"] = "mediump";
PRECISION2["HIGH"] = "highp";
return PRECISION2;
})(PRECISION || {});
var MSAA_QUALITY = /* @__PURE__ */ ((MSAA_QUALITY2) => {
MSAA_QUALITY2[MSAA_QUALITY2["NONE"] = 0] = "NONE";
MSAA_QUALITY2[MSAA_QUALITY2["LOW"] = 2] = "LOW";
MSAA_QUALITY2[MSAA_QUALITY2["MEDIUM"] = 4] = "MEDIUM";
MSAA_QUALITY2[MSAA_QUALITY2["HIGH"] = 8] = "HIGH";
return MSAA_QUALITY2;
})(MSAA_QUALITY || {});
var constants = require('@pixi/constants');

@@ -67,2 +25,3 @@ const BrowserAdapter = {

getBaseUrl: () => document.baseURI ?? window.location.href,
getFontFaceSet: () => document.fonts,
fetch: (url, options) => fetch(url, options)

@@ -229,7 +188,7 @@ };

ADAPTER: BrowserAdapter,
MIPMAP_TEXTURES: MIPMAP_MODES.POW2,
MIPMAP_TEXTURES: constants.MIPMAP_MODES.POW2,
ANISOTROPIC_LEVEL: 0,
RESOLUTION: 1,
FILTER_RESOLUTION: 1,
FILTER_MULTISAMPLE: MSAA_QUALITY.NONE,
FILTER_MULTISAMPLE: constants.MSAA_QUALITY.NONE,
SPRITE_MAX_TEXTURES: maxRecommendedTextures(32),

@@ -250,9 +209,9 @@ SPRITE_BATCH_SIZE: 4096,

},
GC_MODE: GC_MODES.AUTO,
GC_MODE: constants.GC_MODES.AUTO,
GC_MAX_IDLE: 60 * 60,
GC_MAX_CHECK_COUNT: 60 * 10,
WRAP_MODE: WRAP_MODES.CLAMP,
SCALE_MODE: SCALE_MODES.LINEAR,
PRECISION_VERTEX: PRECISION.HIGH,
PRECISION_FRAGMENT: isMobile.apple.device ? PRECISION.HIGH : PRECISION.MEDIUM,
WRAP_MODE: constants.WRAP_MODES.CLAMP,
SCALE_MODE: constants.SCALE_MODES.LINEAR,
PRECISION_VERTEX: constants.PRECISION.HIGH,
PRECISION_FRAGMENT: isMobile.apple.device ? constants.PRECISION.HIGH : constants.PRECISION.MEDIUM,
CAN_UPLOAD_SAME_BUFFER: canUploadSameBuffer(),

@@ -259,0 +218,0 @@ CREATE_IMAGE_BITMAP: false,

"use strict";/*!
* @pixi/settings - v7.0.0-alpha.3
* Compiled Fri, 23 Sep 2022 14:33:14 UTC
* @pixi/settings - v7.0.0-beta
* Compiled Tue, 11 Oct 2022 19:54:08 UTC
*
* @pixi/settings is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/Object.defineProperty(exports,"__esModule",{value:!0});/*!
* @pixi/constants - v7.0.0-alpha.3
* Compiled Fri, 23 Sep 2022 14:33:14 UTC
*
* @pixi/constants is licensed under the MIT License.
* http://www.opensource.org/licenses/mit-license
*/var v=(e=>(e[e.NEAREST=0]="NEAREST",e[e.LINEAR=1]="LINEAR",e))(v||{}),h=(e=>(e[e.CLAMP=33071]="CLAMP",e[e.REPEAT=10497]="REPEAT",e[e.MIRRORED_REPEAT=33648]="MIRRORED_REPEAT",e))(h||{}),f=(e=>(e[e.OFF=0]="OFF",e[e.POW2=1]="POW2",e[e.ON=2]="ON",e[e.ON_MANUAL=3]="ON_MANUAL",e))(f||{}),b=(e=>(e[e.AUTO=0]="AUTO",e[e.MANUAL=1]="MANUAL",e))(b||{}),s=(e=>(e.LOW="lowp",e.MEDIUM="mediump",e.HIGH="highp",e))(s||{}),T=(e=>(e[e.NONE=0]="NONE",e[e.LOW=2]="LOW",e[e.MEDIUM=4]="MEDIUM",e[e.HIGH=8]="HIGH",e))(T||{});const E={createCanvas:(e,r)=>{const n=document.createElement("canvas");return n.width=e,n.height=r,n},getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,fetch:(e,r)=>fetch(e,r)};var c=/iPhone/i,R=/iPod/i,g=/iPad/i,N=/\biOS-universal(?:.+)Mac\b/i,u=/\bAndroid(?:.+)Mobile\b/i,m=/Android/i,l=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,p=/Silk/i,o=/Windows Phone/i,A=/\bWindows(?:.+)ARM\b/i,w=/BlackBerry/i,I=/BB10/i,O=/Opera Mini/i,B=/\b(CriOS|Chrome)(?:.+)Mobile/i,P=/Mobile(?:.+)Firefox\b/i,U=function(e){return typeof e<"u"&&e.platform==="MacIntel"&&typeof e.maxTouchPoints=="number"&&e.maxTouchPoints>1&&typeof MSStream>"u"};function y(e){return function(r){return r.test(e)}}function L(e){var r={userAgent:"",platform:"",maxTouchPoints:0};!e&&typeof navigator<"u"?r={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof e=="string"?r.userAgent=e:e&&e.userAgent&&(r={userAgent:e.userAgent,platform:e.platform,maxTouchPoints:e.maxTouchPoints||0});var n=r.userAgent,d=n.split("[FBAN");typeof d[1]<"u"&&(n=d[0]),d=n.split("Twitter"),typeof d[1]<"u"&&(n=d[0]);var t=y(n),a={apple:{phone:t(c)&&!t(o),ipod:t(R),tablet:!t(c)&&(t(g)||U(r))&&!t(o),universal:t(N),device:(t(c)||t(R)||t(g)||t(N)||U(r))&&!t(o)},amazon:{phone:t(l),tablet:!t(l)&&t(p),device:t(l)||t(p)},android:{phone:!t(o)&&t(l)||!t(o)&&t(u),tablet:!t(o)&&!t(l)&&!t(u)&&(t(p)||t(m)),device:!t(o)&&(t(l)||t(p)||t(u)||t(m))||t(/\bokhttp\b/i)},windows:{phone:t(o),tablet:t(A),device:t(o)||t(A)},other:{blackberry:t(w),blackberry10:t(I),opera:t(O),firefox:t(P),chrome:t(B),device:t(w)||t(I)||t(O)||t(P)||t(B)},any:!1,phone:!1,tablet:!1};return a.any=a.apple.device||a.android.device||a.windows.device||a.other.device,a.phone=a.apple.phone||a.android.phone||a.windows.phone,a.tablet=a.apple.tablet||a.android.tablet||a.windows.tablet,a}const i=L(globalThis.navigator);function C(){return!i.apple.device}function x(e){let r=!0;if(i.tablet||i.phone){if(i.apple.device){const n=navigator.userAgent.match(/OS (\d+)_(\d+)?/);n&&parseInt(n[1],10)<11&&(r=!1)}if(i.android.device){const n=navigator.userAgent.match(/Android\s([0-9.]*)/);n&&parseInt(n[1],10)<7&&(r=!1)}}return r?e:4}const F={ADAPTER:E,MIPMAP_TEXTURES:f.POW2,ANISOTROPIC_LEVEL:0,RESOLUTION:1,FILTER_RESOLUTION:1,FILTER_MULTISAMPLE:T.NONE,SPRITE_MAX_TEXTURES:x(32),SPRITE_BATCH_SIZE:4096,RENDER_OPTIONS:{view:null,antialias:!1,autoDensity:!1,backgroundColor:0,backgroundAlpha:1,useContextAlpha:!0,clearBeforeRender:!0,preserveDrawingBuffer:!1,width:800,height:600,legacy:!1},GC_MODE:b.AUTO,GC_MAX_IDLE:60*60,GC_MAX_CHECK_COUNT:60*10,WRAP_MODE:h.CLAMP,SCALE_MODE:v.LINEAR,PRECISION_VERTEX:s.HIGH,PRECISION_FRAGMENT:i.apple.device?s.HIGH:s.MEDIUM,CAN_UPLOAD_SAME_BUFFER:C(),CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};exports.BrowserAdapter=E,exports.isMobile=i,exports.settings=F;
*/Object.defineProperty(exports,"__esModule",{value:!0});var r=require("@pixi/constants");const h={createCanvas:(t,n)=>{const o=document.createElement("canvas");return o.width=t,o.height=n,o},getWebGLRenderingContext:()=>WebGLRenderingContext,getNavigator:()=>navigator,getBaseUrl:()=>document.baseURI??window.location.href,getFontFaceSet:()=>document.fonts,fetch:(t,n)=>fetch(t,n)};var p=/iPhone/i,v=/iPod/i,f=/iPad/i,A=/\biOS-universal(?:.+)Mac\b/i,u=/\bAndroid(?:.+)Mobile\b/i,b=/Android/i,l=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,c=/Silk/i,i=/Windows Phone/i,E=/\bWindows(?:.+)ARM\b/i,I=/BlackBerry/i,M=/BB10/i,P=/Opera Mini/i,T=/\b(CriOS|Chrome)(?:.+)Mobile/i,S=/Mobile(?:.+)Firefox\b/i,g=function(t){return typeof t<"u"&&t.platform==="MacIntel"&&typeof t.maxTouchPoints=="number"&&t.maxTouchPoints>1&&typeof MSStream>"u"};function O(t){return function(n){return n.test(t)}}function _(t){var n={userAgent:"",platform:"",maxTouchPoints:0};!t&&typeof navigator<"u"?n={userAgent:navigator.userAgent,platform:navigator.platform,maxTouchPoints:navigator.maxTouchPoints||0}:typeof t=="string"?n.userAgent=t:t&&t.userAgent&&(n={userAgent:t.userAgent,platform:t.platform,maxTouchPoints:t.maxTouchPoints||0});var o=n.userAgent,d=o.split("[FBAN");typeof d[1]<"u"&&(o=d[0]),d=o.split("Twitter"),typeof d[1]<"u"&&(o=d[0]);var e=O(o),a={apple:{phone:e(p)&&!e(i),ipod:e(v),tablet:!e(p)&&(e(f)||g(n))&&!e(i),universal:e(A),device:(e(p)||e(v)||e(f)||e(A)||g(n))&&!e(i)},amazon:{phone:e(l),tablet:!e(l)&&e(c),device:e(l)||e(c)},android:{phone:!e(i)&&e(l)||!e(i)&&e(u),tablet:!e(i)&&!e(l)&&!e(u)&&(e(c)||e(b)),device:!e(i)&&(e(l)||e(c)||e(u)||e(b))||e(/\bokhttp\b/i)},windows:{phone:e(i),tablet:e(E),device:e(i)||e(E)},other:{blackberry:e(I),blackberry10:e(M),opera:e(P),firefox:e(S),chrome:e(T),device:e(I)||e(M)||e(P)||e(S)||e(T)},any:!1,phone:!1,tablet:!1};return a.any=a.apple.device||a.android.device||a.windows.device||a.other.device,a.phone=a.apple.phone||a.android.phone||a.windows.phone,a.tablet=a.apple.tablet||a.android.tablet||a.windows.tablet,a}const s=_(globalThis.navigator);function R(){return!s.apple.device}function C(t){let n=!0;if(s.tablet||s.phone){if(s.apple.device){const o=navigator.userAgent.match(/OS (\d+)_(\d+)?/);o&&parseInt(o[1],10)<11&&(n=!1)}if(s.android.device){const o=navigator.userAgent.match(/Android\s([0-9.]*)/);o&&parseInt(o[1],10)<7&&(n=!1)}}return n?t:4}const m={ADAPTER:h,MIPMAP_TEXTURES:r.MIPMAP_MODES.POW2,ANISOTROPIC_LEVEL:0,RESOLUTION:1,FILTER_RESOLUTION:1,FILTER_MULTISAMPLE:r.MSAA_QUALITY.NONE,SPRITE_MAX_TEXTURES:C(32),SPRITE_BATCH_SIZE:4096,RENDER_OPTIONS:{view:null,antialias:!1,autoDensity:!1,backgroundColor:0,backgroundAlpha:1,useContextAlpha:!0,clearBeforeRender:!0,preserveDrawingBuffer:!1,width:800,height:600,legacy:!1},GC_MODE:r.GC_MODES.AUTO,GC_MAX_IDLE:60*60,GC_MAX_CHECK_COUNT:60*10,WRAP_MODE:r.WRAP_MODES.CLAMP,SCALE_MODE:r.SCALE_MODES.LINEAR,PRECISION_VERTEX:r.PRECISION.HIGH,PRECISION_FRAGMENT:s.apple.device?r.PRECISION.HIGH:r.PRECISION.MEDIUM,CAN_UPLOAD_SAME_BUFFER:R(),CREATE_IMAGE_BITMAP:!1,ROUND_PIXELS:!1};exports.BrowserAdapter=h,exports.isMobile=s,exports.settings=m;
//# sourceMappingURL=settings.min.js.map

@@ -0,1 +1,5 @@

/// <reference path="./global.d.ts" />
/// <reference types="css-font-loading-module" />
import type { ENV } from '@pixi/constants';

@@ -11,12 +15,13 @@ import { GC_MODES } from '@pixi/constants';

export declare type ContextIds = '2d' | 'webgl' | 'experimental-webgl' | 'webgl2';
export declare type ContextIds = '2d' | 'bitmaprenderer' | 'webgl' | 'experimental-webgl' | 'webgl2' | 'experimental-webgl2';
/**
* This interface describes all the DOM dependent calls that Pixi makes throughout its codebase
* Implementations of this interface can be used to make sure Pixi will work in any environment
* such as browser, web workers, and node
* This interface describes all the DOM dependent calls that Pixi makes throughout its codebase.
* Implementations of this interface can be used to make sure Pixi will work in any environment,
* such as browser, Web Workers, and Node.js.
* @memberof PIXI
*/
export declare interface IAdapter {
/** Returns a canvas object that can be used to create a webgl context. */
createCanvas: (width?: number, height?: number) => HTMLCanvasElement;
createCanvas: (width?: number, height?: number) => ICanvas;
/** Returns a webgl rendering context. */

@@ -30,7 +35,119 @@ getWebGLRenderingContext: () => typeof WebGLRenderingContext;

getBaseUrl: () => string;
getFontFaceSet: () => FontFaceSet | null;
fetch: (url: RequestInfo, options?: RequestInit) => Promise<Response>;
}
/**
* Common interface for HTMLCanvasElement, OffscreenCanvas, and other custom canvas classes.
* @memberof PIXI
* @extends GlobalMixins.ICanvas
* @extends Partial<EventTarget>
*/
export declare interface ICanvas extends GlobalMixins.ICanvas, Partial<EventTarget> {
/** Width of the canvas. */
width: number;
/** Height of the canvas. */
height: number;
/**
* Get rendering context of the canvas.
* @param {ContextIds} contextId - The identifier of the type of context to create.
* @param {any} options - The options for creating context.
* @returns {RenderingContext | null} The created context, or null if contextId is not supported.
*/
getContext(contextId: '2d', options?: CanvasRenderingContext2DSettings): ICanvasRenderingContext2D | null;
getContext(contextId: 'bitmaprenderer', options?: ImageBitmapRenderingContextSettings): ImageBitmapRenderingContext | null;
getContext(contextId: 'webgl' | 'experimental-webgl', options?: WebGLContextAttributes): WebGLRenderingContext | null;
getContext(contextId: 'webgl2' | 'experimental-webgl2', options?: WebGLContextAttributes): WebGL2RenderingContext | null;
getContext(contextId: ContextIds, options?: any): RenderingContext_2 | null;
/**
* Get the content of the canvas as data URL.
* @param {string} type - The MIME type for the image format to return. If not specify, the default value is image/png.
* @param {any} options - The options for creating data URL.
* @returns {string} The content of the canvas as data URL.
*/
toDataURL?(type?: string, options?: any): string;
/**
* Get the content of the canvas as Blob.
* @param {object} options - The options for creating Blob.
* @param {string} options.type
* - The MIME type for the image format to return. If not specify, the default value is image/png.
* @param {string} options.quality
* - The image quality to be used when creating images using file formats that support lossy compression.
* @returns {Promise<Blob>} The content of the canvas as Blob.
*/
convertToBlob?(options?: {
type?: string;
quality?: number;
}): Promise<Blob>;
/**
* Adds the listener for the specified event.
* @param {string} type - The type of event to listen for.
* @param {EventListenerOrEventListenerObject} listener - The callback to invoke when the event is fired.
* @param {boolean | AddEventListenerOptions} options - The options for adding event listener.
*/
addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
addEventListener?<K extends keyof WebGLContextEventMap>(type: K, listener: (this: ICanvas, ev: WebGLContextEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
/**
* Removes the listener for the specified event.
* @param {string} type - The type of event to listen for.
* @param {EventListenerOrEventListenerObject} listener - The callback to invoke when the event is fired.
* @param {boolean | EventListenerOptions} options - The options for removing event listener.
*/
removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
removeEventListener?<K extends keyof WebGLContextEventMap>(type: K, listener: (this: ICanvas, ev: WebGLContextEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
/**
* Dispatches a event.
* @param {Event} event - The Event object to dispatch. Its Event.target property will be set to the current EventTarget.
* @returns {boolean} Returns false if event is cancelable, and at least one of the event handlers which received event
* called Event.preventDefault(). Otherwise true.
*/
dispatchEvent(event: Event): boolean;
/** Parent node of the canvas. */
readonly parentNode?: ICanvasParentNode;
/** Style of the canvas. */
readonly style?: ICanvasStyle;
/**
* Get the position and the size of the canvas.
* @returns The smallest rectangle which contains the entire canvas.
*/
getBoundingClientRect?(): ICanvasRect;
}
export declare interface ICanvasParentNode {
/** Adds a node to the end of the list of children of the parent node. */
appendChild(element: HTMLElement): void;
/** Removes a child node from the parent node. */
removeChild(element: HTMLElement): void;
removeChild(element: ICanvas): void;
}
export declare interface ICanvasRect {
x: number;
y: number;
width: number;
height: number;
}
/**
* Common interface for CanvasRenderingContext2D, OffscreenCanvasRenderingContext2D, and other custom canvas 2D context.
* @memberof PIXI
*/
export declare interface ICanvasRenderingContext2D extends CanvasState, CanvasTransform, CanvasCompositing, CanvasImageSmoothing, CanvasFillStrokeStyles, CanvasShadowStyles, CanvasFilters, CanvasRect, CanvasDrawPath, CanvasText, CanvasDrawImage, CanvasImageData, CanvasPathDrawingStyles, CanvasTextDrawingStyles, CanvasPath {
createPattern(image: CanvasImageSource | ICanvas, repetition: string | null): CanvasPattern | null;
drawImage(image: CanvasImageSource | ICanvas, dx: number, dy: number): void;
drawImage(image: CanvasImageSource | ICanvas, dx: number, dy: number, dw: number, dh: number): void;
drawImage(image: CanvasImageSource | ICanvas, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void;
}
export declare interface ICanvasStyle {
width?: string;
height?: string;
cursor?: string;
touchAction?: string;
msTouchAction?: string;
msContentZooming?: string;
}
export declare interface IRenderOptions {
view: HTMLCanvasElement;
view: ICanvas;
antialias: boolean;

@@ -116,2 +233,5 @@ autoDensity: boolean;

declare type RenderingContext_2 = ICanvasRenderingContext2D | ImageBitmapRenderingContext | WebGLRenderingContext | WebGL2RenderingContext;
export { RenderingContext_2 as RenderingContext }
/**

@@ -131,2 +251,7 @@ * User's customizable globals for overriding the default PIXI settings, such

export declare interface WebGLContextEventMap {
'webglcontextlost': WebGLContextEvent;
'webglcontextrestore': WebGLContextEvent;
}
export { }
{
"name": "@pixi/settings",
"version": "7.0.0-alpha.3",
"version": "7.0.0-beta",
"main": "dist/cjs/settings.js",

@@ -38,6 +38,9 @@ "module": "dist/esm/settings.mjs",

],
"dependencies": {
"@pixi/constants": "7.0.0-beta"
},
"devDependencies": {
"ismobilejs": "^1.1.0"
},
"gitHead": "e5cc328a2374fac1cb21915e8029d8a9bddb038c"
"gitHead": "437c2f5432320da7d6ecef6986ab95c982c89b17"
}

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