Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@solana/options

Package Overview
Dependencies
Maintainers
14
Versions
1130
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@solana/options - npm Package Compare versions

Comparing version 2.0.0-experimental.6d18167 to 2.0.0-experimental.6d27574

104

dist/index.browser.js

@@ -1,2 +0,2 @@

import { fixBytes, mergeBytes, combineCodec, assertFixedSizeCodec } from '@solana/codecs-core';
import { isFixedSize, assertIsFixedSize, createEncoder, getEncodedSize, createDecoder, combineCodec } from '@solana/codecs-core';
import { getU8Encoder, getU8Decoder } from '@solana/codecs-numbers';

@@ -20,58 +20,72 @@

// src/option-codec.ts
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function optionCodecHelper(item, prefix, fixed, description) {
let descriptionSuffix = `; ${prefix.description}`;
let fixedSize = item.fixedSize === 0 ? prefix.fixedSize : null;
if (fixed) {
assertFixedSizeCodec(item, "Fixed options can only be used with fixed-size codecs.");
assertFixedSizeCodec(prefix, "Fixed options can only be used with fixed-size prefix.");
descriptionSuffix += "; fixed";
fixedSize = prefix.fixedSize + item.fixedSize;
function getOptionEncoder(item, config = {}) {
const prefix = config.prefix ?? getU8Encoder();
const fixed = config.fixed ?? false;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
const fixedSize = prefix.fixedSize + item.fixedSize;
return createEncoder({
fixedSize,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixOffset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
item.write(option.value, bytes, prefixOffset);
}
return offset + fixedSize;
}
});
}
return {
description: description ?? `option(${item.description + descriptionSuffix})`,
fixedSize,
maxSize: sumCodecSizes([prefix.maxSize, item.maxSize])
};
}
function getOptionEncoder(item, options = {}) {
const prefix = options.prefix ?? getU8Encoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
encode: (optionOrNullable) => {
return createEncoder({
getSizeFromValue: (optionOrNullable) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixByte = prefix.encode(Number(isSome(option)));
let itemBytes = isSome(option) ? item.encode(option.value) : new Uint8Array();
itemBytes = fixed ? fixBytes(itemBytes, item.fixedSize) : itemBytes;
return mergeBytes([prefixByte, itemBytes]);
return getEncodedSize(Number(isSome(option)), prefix) + (isSome(option) ? getEncodedSize(option.value, item) : 0);
},
maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
offset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
offset = item.write(option.value, bytes, offset);
}
return offset;
}
};
});
}
function getOptionDecoder(item, options = {}) {
const prefix = options.prefix ?? getU8Decoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
decode: (bytes, offset = 0) => {
function getOptionDecoder(item, config = {}) {
const prefix = config.prefix ?? getU8Decoder();
const fixed = config.fixed ?? false;
let fixedSize = null;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
fixedSize = prefix.fixedSize + item.fixedSize;
}
return createDecoder({
...fixedSize === null ? { maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0 } : { fixedSize },
read: (bytes, offset) => {
if (bytes.length - offset <= 0) {
return [none(), offset];
}
const fixedOffset = offset + (prefix.fixedSize ?? 0) + (item.fixedSize ?? 0);
const [isSome2, prefixOffset] = prefix.decode(bytes, offset);
offset = prefixOffset;
const [isSome2, prefixOffset] = prefix.read(bytes, offset);
if (isSome2 === 0) {
return [none(), fixed ? fixedOffset : offset];
return [none(), fixedSize !== null ? offset + fixedSize : prefixOffset];
}
const [value, newOffset] = item.decode(bytes, offset);
offset = newOffset;
return [some(value), fixed ? fixedOffset : offset];
const [value, newOffset] = item.read(bytes, prefixOffset);
return [some(value), fixedSize !== null ? offset + fixedSize : newOffset];
}
};
});
}
function getOptionCodec(item, options = {}) {
return combineCodec(getOptionEncoder(item, options), getOptionDecoder(item, options));
function getOptionCodec(item, config = {}) {
return combineCodec(getOptionEncoder(item, config), getOptionDecoder(item, config));
}
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function getMaxSize(codec) {
return isFixedSize(codec) ? codec.fixedSize : codec.maxSize ?? null;
}

@@ -78,0 +92,0 @@ // src/unwrap-option-recursively.ts

@@ -1,2 +0,2 @@

import { fixBytes, mergeBytes, combineCodec, assertFixedSizeCodec } from '@solana/codecs-core';
import { isFixedSize, assertIsFixedSize, createEncoder, getEncodedSize, createDecoder, combineCodec } from '@solana/codecs-core';
import { getU8Encoder, getU8Decoder } from '@solana/codecs-numbers';

@@ -20,58 +20,72 @@

// src/option-codec.ts
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function optionCodecHelper(item, prefix, fixed, description) {
let descriptionSuffix = `; ${prefix.description}`;
let fixedSize = item.fixedSize === 0 ? prefix.fixedSize : null;
if (fixed) {
assertFixedSizeCodec(item, "Fixed options can only be used with fixed-size codecs.");
assertFixedSizeCodec(prefix, "Fixed options can only be used with fixed-size prefix.");
descriptionSuffix += "; fixed";
fixedSize = prefix.fixedSize + item.fixedSize;
function getOptionEncoder(item, config = {}) {
const prefix = config.prefix ?? getU8Encoder();
const fixed = config.fixed ?? false;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
const fixedSize = prefix.fixedSize + item.fixedSize;
return createEncoder({
fixedSize,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixOffset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
item.write(option.value, bytes, prefixOffset);
}
return offset + fixedSize;
}
});
}
return {
description: description ?? `option(${item.description + descriptionSuffix})`,
fixedSize,
maxSize: sumCodecSizes([prefix.maxSize, item.maxSize])
};
}
function getOptionEncoder(item, options = {}) {
const prefix = options.prefix ?? getU8Encoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
encode: (optionOrNullable) => {
return createEncoder({
getSizeFromValue: (optionOrNullable) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixByte = prefix.encode(Number(isSome(option)));
let itemBytes = isSome(option) ? item.encode(option.value) : new Uint8Array();
itemBytes = fixed ? fixBytes(itemBytes, item.fixedSize) : itemBytes;
return mergeBytes([prefixByte, itemBytes]);
return getEncodedSize(Number(isSome(option)), prefix) + (isSome(option) ? getEncodedSize(option.value, item) : 0);
},
maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
offset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
offset = item.write(option.value, bytes, offset);
}
return offset;
}
};
});
}
function getOptionDecoder(item, options = {}) {
const prefix = options.prefix ?? getU8Decoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
decode: (bytes, offset = 0) => {
function getOptionDecoder(item, config = {}) {
const prefix = config.prefix ?? getU8Decoder();
const fixed = config.fixed ?? false;
let fixedSize = null;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
fixedSize = prefix.fixedSize + item.fixedSize;
}
return createDecoder({
...fixedSize === null ? { maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0 } : { fixedSize },
read: (bytes, offset) => {
if (bytes.length - offset <= 0) {
return [none(), offset];
}
const fixedOffset = offset + (prefix.fixedSize ?? 0) + (item.fixedSize ?? 0);
const [isSome2, prefixOffset] = prefix.decode(bytes, offset);
offset = prefixOffset;
const [isSome2, prefixOffset] = prefix.read(bytes, offset);
if (isSome2 === 0) {
return [none(), fixed ? fixedOffset : offset];
return [none(), fixedSize !== null ? offset + fixedSize : prefixOffset];
}
const [value, newOffset] = item.decode(bytes, offset);
offset = newOffset;
return [some(value), fixed ? fixedOffset : offset];
const [value, newOffset] = item.read(bytes, prefixOffset);
return [some(value), fixedSize !== null ? offset + fixedSize : newOffset];
}
};
});
}
function getOptionCodec(item, options = {}) {
return combineCodec(getOptionEncoder(item, options), getOptionDecoder(item, options));
function getOptionCodec(item, config = {}) {
return combineCodec(getOptionEncoder(item, config), getOptionDecoder(item, config));
}
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function getMaxSize(codec) {
return isFixedSize(codec) ? codec.fixedSize : codec.maxSize ?? null;
}

@@ -78,0 +92,0 @@ // src/unwrap-option-recursively.ts

@@ -1,2 +0,2 @@

import { fixBytes, mergeBytes, combineCodec, assertFixedSizeCodec } from '@solana/codecs-core';
import { isFixedSize, assertIsFixedSize, createEncoder, getEncodedSize, createDecoder, combineCodec } from '@solana/codecs-core';
import { getU8Encoder, getU8Decoder } from '@solana/codecs-numbers';

@@ -20,58 +20,72 @@

// src/option-codec.ts
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function optionCodecHelper(item, prefix, fixed, description) {
let descriptionSuffix = `; ${prefix.description}`;
let fixedSize = item.fixedSize === 0 ? prefix.fixedSize : null;
if (fixed) {
assertFixedSizeCodec(item, "Fixed options can only be used with fixed-size codecs.");
assertFixedSizeCodec(prefix, "Fixed options can only be used with fixed-size prefix.");
descriptionSuffix += "; fixed";
fixedSize = prefix.fixedSize + item.fixedSize;
function getOptionEncoder(item, config = {}) {
const prefix = config.prefix ?? getU8Encoder();
const fixed = config.fixed ?? false;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
const fixedSize = prefix.fixedSize + item.fixedSize;
return createEncoder({
fixedSize,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixOffset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
item.write(option.value, bytes, prefixOffset);
}
return offset + fixedSize;
}
});
}
return {
description: description ?? `option(${item.description + descriptionSuffix})`,
fixedSize,
maxSize: sumCodecSizes([prefix.maxSize, item.maxSize])
};
}
function getOptionEncoder(item, options = {}) {
const prefix = options.prefix ?? getU8Encoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
encode: (optionOrNullable) => {
return createEncoder({
getSizeFromValue: (optionOrNullable) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
const prefixByte = prefix.encode(Number(isSome(option)));
let itemBytes = isSome(option) ? item.encode(option.value) : new Uint8Array();
itemBytes = fixed ? fixBytes(itemBytes, item.fixedSize) : itemBytes;
return mergeBytes([prefixByte, itemBytes]);
return getEncodedSize(Number(isSome(option)), prefix) + (isSome(option) ? getEncodedSize(option.value, item) : 0);
},
maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0,
write: (optionOrNullable, bytes, offset) => {
const option = isOption(optionOrNullable) ? optionOrNullable : wrapNullable(optionOrNullable);
offset = prefix.write(Number(isSome(option)), bytes, offset);
if (isSome(option)) {
offset = item.write(option.value, bytes, offset);
}
return offset;
}
};
});
}
function getOptionDecoder(item, options = {}) {
const prefix = options.prefix ?? getU8Decoder();
const fixed = options.fixed ?? false;
return {
...optionCodecHelper(item, prefix, fixed, options.description),
decode: (bytes, offset = 0) => {
function getOptionDecoder(item, config = {}) {
const prefix = config.prefix ?? getU8Decoder();
const fixed = config.fixed ?? false;
let fixedSize = null;
const isZeroSizeItem = isFixedSize(item) && isFixedSize(prefix) && item.fixedSize === 0;
if (fixed || isZeroSizeItem) {
assertIsFixedSize(item, "Fixed options can only be used with fixed-size codecs.");
assertIsFixedSize(prefix, "Fixed options can only be used with fixed-size prefix.");
fixedSize = prefix.fixedSize + item.fixedSize;
}
return createDecoder({
...fixedSize === null ? { maxSize: sumCodecSizes([prefix, item].map(getMaxSize)) ?? void 0 } : { fixedSize },
read: (bytes, offset) => {
if (bytes.length - offset <= 0) {
return [none(), offset];
}
const fixedOffset = offset + (prefix.fixedSize ?? 0) + (item.fixedSize ?? 0);
const [isSome2, prefixOffset] = prefix.decode(bytes, offset);
offset = prefixOffset;
const [isSome2, prefixOffset] = prefix.read(bytes, offset);
if (isSome2 === 0) {
return [none(), fixed ? fixedOffset : offset];
return [none(), fixedSize !== null ? offset + fixedSize : prefixOffset];
}
const [value, newOffset] = item.decode(bytes, offset);
offset = newOffset;
return [some(value), fixed ? fixedOffset : offset];
const [value, newOffset] = item.read(bytes, prefixOffset);
return [some(value), fixedSize !== null ? offset + fixedSize : newOffset];
}
};
});
}
function getOptionCodec(item, options = {}) {
return combineCodec(getOptionEncoder(item, options), getOptionDecoder(item, options));
function getOptionCodec(item, config = {}) {
return combineCodec(getOptionEncoder(item, config), getOptionDecoder(item, config));
}
function sumCodecSizes(sizes) {
return sizes.reduce((all, size) => all === null || size === null ? null : all + size, 0);
}
function getMaxSize(codec) {
return isFixedSize(codec) ? codec.fixedSize : codec.maxSize ?? null;
}

@@ -78,0 +92,0 @@ // src/unwrap-option-recursively.ts

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

export * from './option';
export * from './option-codec';
export * from './unwrap-option';
export * from './unwrap-option-recursively';
export * from './option.js';
export * from './option-codec.js';
export * from './unwrap-option.js';
export * from './unwrap-option-recursively.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,6 +0,6 @@

import { BaseCodecOptions, Codec, Decoder, Encoder } from '@solana/codecs-core';
import { NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
import { Option, OptionOrNullable } from './option';
/** Defines the options for option codecs. */
export type OptionCodecOptions<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = BaseCodecOptions & {
import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder, VariableSizeCodec, VariableSizeDecoder, VariableSizeEncoder } from '@solana/codecs-core';
import { FixedSizeNumberCodec, FixedSizeNumberDecoder, FixedSizeNumberEncoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';
import { Option, OptionOrNullable } from './option.js';
/** Defines the config for option codecs. */
export type OptionCodecConfig<TPrefix extends NumberCodec | NumberEncoder | NumberDecoder> = {
/**

@@ -25,5 +25,11 @@ * The codec to use for the boolean prefix.

* @param item - The encoder to use for the value that may be present.
* @param options - A set of options for the encoder.
* @param config - A set of config for the encoder.
*/
export declare function getOptionEncoder<T>(item: Encoder<T>, options?: OptionCodecOptions<NumberEncoder>): Encoder<OptionOrNullable<T>>;
export declare function getOptionEncoder<TFrom>(item: FixedSizeEncoder<TFrom>, config: OptionCodecConfig<FixedSizeNumberEncoder> & {
fixed: true;
}): FixedSizeEncoder<OptionOrNullable<TFrom>>;
export declare function getOptionEncoder<TFrom>(item: FixedSizeEncoder<TFrom, 0>, config?: OptionCodecConfig<FixedSizeNumberEncoder>): FixedSizeEncoder<OptionOrNullable<TFrom>>;
export declare function getOptionEncoder<TFrom>(item: Encoder<TFrom>, config?: OptionCodecConfig<NumberEncoder> & {
fixed?: false;
}): VariableSizeEncoder<OptionOrNullable<TFrom>>;
/**

@@ -33,5 +39,11 @@ * Creates a decoder for an optional value using `null` as the `None` value.

* @param item - The decoder to use for the value that may be present.
* @param options - A set of options for the decoder.
* @param config - A set of config for the decoder.
*/
export declare function getOptionDecoder<T>(item: Decoder<T>, options?: OptionCodecOptions<NumberDecoder>): Decoder<Option<T>>;
export declare function getOptionDecoder<TTo>(item: FixedSizeDecoder<TTo>, config: OptionCodecConfig<FixedSizeNumberDecoder> & {
fixed: true;
}): FixedSizeDecoder<Option<TTo>>;
export declare function getOptionDecoder<TTo>(item: FixedSizeDecoder<TTo, 0>, config?: OptionCodecConfig<FixedSizeNumberDecoder>): FixedSizeDecoder<Option<TTo>>;
export declare function getOptionDecoder<TTo>(item: Decoder<TTo>, config?: OptionCodecConfig<NumberDecoder> & {
fixed?: false;
}): VariableSizeDecoder<Option<TTo>>;
/**

@@ -41,5 +53,11 @@ * Creates a codec for an optional value using `null` as the `None` value.

* @param item - The codec to use for the value that may be present.
* @param options - A set of options for the codec.
* @param config - A set of config for the codec.
*/
export declare function getOptionCodec<T, U extends T = T>(item: Codec<T, U>, options?: OptionCodecOptions<NumberCodec>): Codec<OptionOrNullable<T>, Option<U>>;
export declare function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(item: FixedSizeCodec<TFrom, TTo>, config: OptionCodecConfig<FixedSizeNumberCodec> & {
fixed: true;
}): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;
export declare function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(item: FixedSizeCodec<TFrom, TTo, 0>, config?: OptionCodecConfig<FixedSizeNumberCodec>): FixedSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;
export declare function getOptionCodec<TFrom, TTo extends TFrom = TFrom>(item: Codec<TFrom, TTo>, config?: OptionCodecConfig<NumberCodec> & {
fixed?: false;
}): VariableSizeCodec<OptionOrNullable<TFrom>, Option<TTo>>;
//# sourceMappingURL=option-codec.d.ts.map

@@ -1,2 +0,2 @@

import { None, Some } from './option';
import { None, Some } from './option.js';
/**

@@ -3,0 +3,0 @@ * Lists all types that should not be recursively unwrapped.

@@ -1,2 +0,2 @@

import { Option } from './option';
import { Option } from './option.js';
/**

@@ -3,0 +3,0 @@ * Unwraps the value of an {@link Option} of type `T`

{
"name": "@solana/options",
"version": "2.0.0-experimental.6d18167",
"version": "2.0.0-experimental.6d27574",
"description": "Managing and serializing Rust-like Option types in JavaScript",

@@ -52,4 +52,4 @@ "exports": {

"dependencies": {
"@solana/codecs-core": "2.0.0-experimental.6d18167",
"@solana/codecs-numbers": "2.0.0-experimental.6d18167"
"@solana/codecs-core": "2.0.0-experimental.6d27574",
"@solana/codecs-numbers": "2.0.0-experimental.6d27574"
},

@@ -59,4 +59,4 @@ "devDependencies": {

"@swc/jest": "^0.2.29",
"@types/jest": "^29.5.6",
"@typescript-eslint/eslint-plugin": "^6.7.0",
"@types/jest": "^29.5.11",
"@typescript-eslint/eslint-plugin": "^6.13.2",
"@typescript-eslint/parser": "^6.3.0",

@@ -71,4 +71,4 @@ "agadoo": "^3.0.0",

"jest-runner-prettier": "^1.0.0",
"prettier": "^2.8",
"tsup": "7.2.0",
"prettier": "^3.1",
"tsup": "^8.0.1",
"typescript": "^5.2.2",

@@ -89,4 +89,4 @@ "version-from-git": "^1.1.1",

"scripts": {
"compile:js": "tsup --config build-scripts/tsup.config.library.ts",
"compile:typedefs": "tsc -p ./tsconfig.declarations.json",
"compile:js": "tsup --config build-scripts/tsup.config.package.ts",
"compile:typedefs": "tsc -p ./tsconfig.declarations.json && node node_modules/build-scripts/add-js-extension-to-types.mjs",
"dev": "jest -c node_modules/test-config/jest-dev.config.ts --rootDir . --watch",

@@ -93,0 +93,0 @@ "publish-packages": "pnpm publish --tag experimental --access public --no-git-checks",

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