Socket
Socket
Sign inDemoInstall

nukak

Package Overview
Dependencies
Maintainers
1
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

nukak - npm Package Compare versions

Comparing version 0.1.9 to 0.1.10

7

package.json

@@ -6,3 +6,3 @@ {

"license": "MIT",
"version": "0.1.9",
"version": "0.1.10",
"type": "module",

@@ -29,2 +29,3 @@ "main": "./index.js",

"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"sqlstring": "^2.3.3",

@@ -34,3 +35,3 @@ "tslib": "^2.4.1"

"devDependencies": {
"@types/node": "^18.11.11",
"@types/node": "^18.11.17",
"@types/sqlstring": "^2.3.0",

@@ -40,3 +41,3 @@ "@types/uuid": "^9.0.0",

"rimraf": "^3.0.2",
"typescript": "^4.9.3",
"typescript": "^4.9.4",
"uuid": "^9.0.0"

@@ -43,0 +44,0 @@ },

@@ -5,3 +5,3 @@ ![code](/assets/code.webp 'code')

[nukak](https://nukak.org) is a powerful and efficient `ORM`, designed from the ground up to be fast, secure, and easy to use. It is inspired by other `ORMs` such as [TypeORM](https://typeorm.io) and [MongoDB driver](https://www.mongodb.com/docs/drivers/node/current/fundamentals/crud/query-document/), and has been ideated to rely on serializable `JSON` syntax for easy transport across platforms.
[nukak](https://nukak.org) is a powerful `ORM`, ideated to be fast, secure, and easy to use. Inspired by other `ORMs` such as [TypeORM](https://typeorm.io) and [MongoDB driver](https://www.mongodb.com/docs/drivers/node/current/fundamentals/crud/query-document/), and has been designed with `JSON` syntax to squeeze all the power from [TypeScript](http://www.typescriptlang.org/) & modern `JavaScript`.

@@ -12,10 +12,11 @@  

- Type-safe queries: `TypeScript` auto-completes and validate the [queries](https://nukak.org/docs/querying-comparison-operators) while coding.
- Context-aware queries: `TypeScript` infers the appropriate operators and fields based on each part of a query.
- Serializable queries: the [syntax](https://nukak.org/docs/querying-logical-operators) is `100%` valid `JSON` allowing the queries to be transported across platforms with ease.
- Type-safe queries: auto-completion and validation of [queries](https://nukak.org/docs/querying-comparison-operators) is done by `TypeScript` while coding.
- Context-aware queries: `TypeScript` infers the appropriate operators and fields based on each part of the query.
- High performance: the [generated queries](https://www.nukak.org/docs/querying-logical-operators) are efficient, safe, and human-readable.
- [Declarative](https://nukak.org/docs/transactions-declarative) and [imperative](https://nukak.org/docs/transactions-imperative) `transactions`.
- Modern [Pure ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) approach. `ESM` is natively supported by Node.js 12 and later.
- [soft-delete](https://nukak.org/docs/entities-soft-delete), [virtual fields](https://nukak.org/docs/entities-virtual-fields), [repositories](https://nukak.org/docs/querying-repository), `connection pooling`.
- Supports the Data Mapper pattern for maintainability and scalability.
- High performance: the [generated queries](https://www.nukak.org/docs/querying-logical-operators) are fast, safe, and human-readable.
- Combines the best elements of `OOP` (Object Oriented Programming) and `FP` (Functional Programming).
- [Declarative](https://nukak.org/docs/transactions-declarative) and [imperative](https://nukak.org/docs/transactions-imperative) `transactions` for flexibility.
- Modern [Pure ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) packages. `ESM` is natively supported by Node.js 12 and later.
- [soft-delete](https://nukak.org/docs/entities-soft-delete), [virtual fields](https://nukak.org/docs/entities-virtual-fields), [repositories](https://nukak.org/docs/querying-repository), `connection pooling` for scalability.
- Supports the Data Mapper pattern for maintainability.
- Transparent support for [inheritance between entities](https://nukak.org/docs/entities-inheritance).

@@ -22,0 +23,0 @@ - Support for projection, filtering, sorting, and other operations on any level of the query, [including relations and their fields](https://www.nukak.org/docs/querying-relations).

import { QueryRaw } from './query.js';
import { Scalar, Type } from './utility.js';
/**
* Allow to customize the name of the property that identifies an entity
*/
export declare const idKey: unique symbol;
/**
* Infers the key names of an entity
*/
export type Key<E> = keyof E & string;
/**
* Infers the field names of an entity
*/
export type FieldKey<E> = {
readonly [K in keyof E]: E[K] extends Scalar ? K : never;
}[Key<E>];
/**
* Infers the relation names of an entity
*/
export type RelationKey<E> = {
readonly [K in keyof E]: E[K] extends Scalar ? never : K;
}[Key<E>];
/**
* Infers the field values of an entity
*/
export type FieldValue<E> = E[FieldKey<E>];
/**
* Infers the name of the key identifier on an entity
*/
export type IdKey<E> = E extends {

@@ -19,4 +37,13 @@ [idKey]?: infer K;

} ? 'id' & FieldKey<E> : FieldKey<E>;
/**
* Infers the value of the key identifier on an entity
*/
export type IdValue<E> = E[IdKey<E>];
/**
* Infers the values of the relations on an entity
*/
export type RelationValue<E> = E[RelationKey<E>];
/**
* Configurable options for an entity
*/
export type EntityOptions = {

@@ -26,2 +53,5 @@ readonly name?: string;

};
/**
* Configurable options for a field
*/
export type FieldOptions = {

@@ -65,2 +95,16 @@ readonly name?: string;

export type RelationManyToManyOptions<E> = RelationOptionsThroughOwner<E> | RelationOptionsInverseSide<E>;
/**
* Wrapper type for relation type definitions in entities.
* Used to circumvent ESM modules circular dependency issue caused by reflection metadata saving the type of the property.
*
* Usage example:
* @Entity()
* export default class User {
*
* @OneToOne(() => Profile, profile => profile.user)
* profile: Relation<Profile>;
*
* }
*/
export type Relation<T> = T;
export type EntityMeta<E> = {

@@ -67,0 +111,0 @@ readonly entity: Type<E>;

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

/**
* Allow to customize the name of the property that identifies an entity
*/
export const idKey = Symbol('idKey');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGUvZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeVJhdyB9IGZyb20gJy4vcXVlcnkuanMnO1xuaW1wb3J0IHsgU2NhbGFyLCBUeXBlIH0gZnJvbSAnLi91dGlsaXR5LmpzJztcblxuZXhwb3J0IGNvbnN0IGlkS2V5ID0gU3ltYm9sKCdpZEtleScpO1xuXG5leHBvcnQgdHlwZSBLZXk8RT4gPSBrZXlvZiBFICYgc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBGaWVsZEtleTxFPiA9IHtcbiAgcmVhZG9ubHkgW0sgaW4ga2V5b2YgRV06IEVbS10gZXh0ZW5kcyBTY2FsYXIgPyBLIDogbmV2ZXI7XG59W0tleTxFPl07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uS2V5PEU+ID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBFXTogRVtLXSBleHRlbmRzIFNjYWxhciA/IG5ldmVyIDogSztcbn1bS2V5PEU+XTtcblxuZXhwb3J0IHR5cGUgRmllbGRWYWx1ZTxFPiA9IEVbRmllbGRLZXk8RT5dO1xuXG5leHBvcnQgdHlwZSBJZEtleTxFPiA9IEUgZXh0ZW5kcyB7IFtpZEtleV0/OiBpbmZlciBLIH1cbiAgPyBLICYgRmllbGRLZXk8RT5cbiAgOiBFIGV4dGVuZHMgeyBfaWQ/OiB1bmtub3duIH1cbiAgPyAnX2lkJyAmIEZpZWxkS2V5PEU+XG4gIDogRSBleHRlbmRzIHsgaWQ/OiB1bmtub3duIH1cbiAgPyAnaWQnICYgRmllbGRLZXk8RT5cbiAgOiBGaWVsZEtleTxFPjtcblxuZXhwb3J0IHR5cGUgSWRWYWx1ZTxFPiA9IEVbSWRLZXk8RT5dO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvblZhbHVlPEU+ID0gRVtSZWxhdGlvbktleTxFPl07XG5cbmV4cG9ydCB0eXBlIEVudGl0eU9wdGlvbnMgPSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNvZnREZWxldGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRmllbGRPcHRpb25zID0ge1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBpc0lkPzogdHJ1ZTtcbiAgcmVhZG9ubHkgdHlwZT86IGFueTtcbiAgcmVhZG9ubHkgcmVmZXJlbmNlPzogRW50aXR5R2V0dGVyO1xuICByZWFkb25seSB2aXJ0dWFsPzogUXVlcnlSYXc7XG4gIHJlYWRvbmx5IG9uSW5zZXJ0PzogT25GaWVsZENhbGxiYWNrO1xuICByZWFkb25seSBvblVwZGF0ZT86IE9uRmllbGRDYWxsYmFjaztcbiAgcmVhZG9ubHkgb25EZWxldGU/OiBPbkZpZWxkQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBPbkZpZWxkQ2FsbGJhY2sgPSBTY2FsYXIgfCBRdWVyeVJhdyB8ICgoKSA9PiBTY2FsYXIgfCBRdWVyeVJhdyk7XG5cbmV4cG9ydCB0eXBlIEVudGl0eUdldHRlcjxFID0gYW55PiA9ICgpID0+IFR5cGU8RT47XG5cbmV4cG9ydCB0eXBlIENhc2NhZGVUeXBlID0gJ3BlcnNpc3QnIHwgJ2RlbGV0ZSc7XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uT3B0aW9uczxFID0gYW55PiA9IHtcbiAgZW50aXR5PzogRW50aXR5R2V0dGVyPEU+O1xuICBjYXJkaW5hbGl0eTogUmVsYXRpb25DYXJkaW5hbGl0eTtcbiAgcmVhZG9ubHkgY2FzY2FkZT86IGJvb2xlYW4gfCBDYXNjYWRlVHlwZTtcbiAgbWFwcGVkQnk/OiBSZWxhdGlvbk1hcHBlZEJ5PEU+O1xuICB0aHJvdWdoPzogRW50aXR5R2V0dGVyPFJlbGF0aW9uVmFsdWU8RT4+O1xuICByZWZlcmVuY2VzPzogUmVsYXRpb25SZWZlcmVuY2VzO1xufTtcblxudHlwZSBSZWxhdGlvbk9wdGlvbnNPd25lcjxFPiA9IFBpY2s8UmVsYXRpb25PcHRpb25zPEU+LCAnZW50aXR5JyB8ICdyZWZlcmVuY2VzJyB8ICdjYXNjYWRlJz47XG50eXBlIFJlbGF0aW9uT3B0aW9uc0ludmVyc2VTaWRlPEU+ID0gUmVxdWlyZWQ8UGljazxSZWxhdGlvbk9wdGlvbnM8RT4sICdlbnRpdHknIHwgJ21hcHBlZEJ5Jz4+ICYgUGljazxSZWxhdGlvbk9wdGlvbnM8RT4sICdjYXNjYWRlJz47XG50eXBlIFJlbGF0aW9uT3B0aW9uc1Rocm91Z2hPd25lcjxFPiA9IFJlcXVpcmVkPFBpY2s8UmVsYXRpb25PcHRpb25zPEU+LCAnZW50aXR5Jz4+ICYgUGljazxSZWxhdGlvbk9wdGlvbnM8RT4sICd0aHJvdWdoJyB8ICdyZWZlcmVuY2VzJyB8ICdjYXNjYWRlJz47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uS2V5TWFwPEU+ID0geyByZWFkb25seSBbSyBpbiBrZXlvZiBFXTogSyB9O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbktleU1hcHBlcjxFPiA9IChrZXlNYXA6IFJlbGF0aW9uS2V5TWFwPEU+KSA9PiBLZXk8RT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uUmVmZXJlbmNlcyA9IHsgcmVhZG9ubHkgbG9jYWw6IHN0cmluZzsgcmVhZG9ubHkgZm9yZWlnbjogc3RyaW5nIH1bXTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25NYXBwZWRCeTxFPiA9IEtleTxFPiB8IFJlbGF0aW9uS2V5TWFwcGVyPEU+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbkNhcmRpbmFsaXR5ID0gJzExJyB8ICdtMScgfCAnMW0nIHwgJ21tJztcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25PbmVUb09uZU9wdGlvbnM8RT4gPSBSZWxhdGlvbk9wdGlvbnNPd25lcjxFPiB8IFJlbGF0aW9uT3B0aW9uc0ludmVyc2VTaWRlPEU+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk9uZVRvTWFueU9wdGlvbnM8RT4gPSBSZWxhdGlvbk9wdGlvbnNJbnZlcnNlU2lkZTxFPiB8IFJlbGF0aW9uT3B0aW9uc1Rocm91Z2hPd25lcjxFPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25NYW55VG9PbmVPcHRpb25zPEU+ID0gUmVsYXRpb25PcHRpb25zT3duZXI8RT4gfCBSZWxhdGlvbk9wdGlvbnNJbnZlcnNlU2lkZTxFPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25NYW55VG9NYW55T3B0aW9uczxFPiA9IFJlbGF0aW9uT3B0aW9uc1Rocm91Z2hPd25lcjxFPiB8IFJlbGF0aW9uT3B0aW9uc0ludmVyc2VTaWRlPEU+O1xuXG5leHBvcnQgdHlwZSBFbnRpdHlNZXRhPEU+ID0ge1xuICByZWFkb25seSBlbnRpdHk6IFR5cGU8RT47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGlkPzogSWRLZXk8RT47XG4gIHNvZnREZWxldGU/OiBGaWVsZEtleTxFPjtcbiAgZmllbGRzOiB7XG4gICAgW0sgaW4gRmllbGRLZXk8RT5dPzogRmllbGRPcHRpb25zO1xuICB9O1xuICByZWxhdGlvbnM6IHtcbiAgICBbSyBpbiBSZWxhdGlvbktleTxFPl0/OiBSZWxhdGlvbk9wdGlvbnM7XG4gIH07XG4gIHByb2Nlc3NlZD86IGJvb2xlYW47XG59O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGUvZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5UmF3IH0gZnJvbSAnLi9xdWVyeS5qcyc7XG5pbXBvcnQgeyBTY2FsYXIsIFR5cGUgfSBmcm9tICcuL3V0aWxpdHkuanMnO1xuXG4vKipcbiAqIEFsbG93IHRvIGN1c3RvbWl6ZSB0aGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdGhhdCBpZGVudGlmaWVzIGFuIGVudGl0eVxuICovXG5leHBvcnQgY29uc3QgaWRLZXkgPSBTeW1ib2woJ2lkS2V5Jyk7XG5cbi8qKlxuICogSW5mZXJzIHRoZSBrZXkgbmFtZXMgb2YgYW4gZW50aXR5XG4gKi9cbmV4cG9ydCB0eXBlIEtleTxFPiA9IGtleW9mIEUgJiBzdHJpbmc7XG5cbi8qKlxuICogSW5mZXJzIHRoZSBmaWVsZCBuYW1lcyBvZiBhbiBlbnRpdHlcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRLZXk8RT4gPSB7XG4gIHJlYWRvbmx5IFtLIGluIGtleW9mIEVdOiBFW0tdIGV4dGVuZHMgU2NhbGFyID8gSyA6IG5ldmVyO1xufVtLZXk8RT5dO1xuXG4vKipcbiAqIEluZmVycyB0aGUgcmVsYXRpb24gbmFtZXMgb2YgYW4gZW50aXR5XG4gKi9cbmV4cG9ydCB0eXBlIFJlbGF0aW9uS2V5PEU+ID0ge1xuICByZWFkb25seSBbSyBpbiBrZXlvZiBFXTogRVtLXSBleHRlbmRzIFNjYWxhciA/IG5ldmVyIDogSztcbn1bS2V5PEU+XTtcblxuLyoqXG4gKiBJbmZlcnMgdGhlIGZpZWxkIHZhbHVlcyBvZiBhbiBlbnRpdHlcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRWYWx1ZTxFPiA9IEVbRmllbGRLZXk8RT5dO1xuXG4vKipcbiAqIEluZmVycyB0aGUgbmFtZSBvZiB0aGUga2V5IGlkZW50aWZpZXIgb24gYW4gZW50aXR5XG4gKi9cbmV4cG9ydCB0eXBlIElkS2V5PEU+ID0gRSBleHRlbmRzIHsgW2lkS2V5XT86IGluZmVyIEsgfVxuICA/IEsgJiBGaWVsZEtleTxFPlxuICA6IEUgZXh0ZW5kcyB7IF9pZD86IHVua25vd24gfVxuICA/ICdfaWQnICYgRmllbGRLZXk8RT5cbiAgOiBFIGV4dGVuZHMgeyBpZD86IHVua25vd24gfVxuICA/ICdpZCcgJiBGaWVsZEtleTxFPlxuICA6IEZpZWxkS2V5PEU+O1xuXG4vKipcbiAqIEluZmVycyB0aGUgdmFsdWUgb2YgdGhlIGtleSBpZGVudGlmaWVyIG9uIGFuIGVudGl0eVxuICovXG5leHBvcnQgdHlwZSBJZFZhbHVlPEU+ID0gRVtJZEtleTxFPl07XG5cbi8qKlxuICogSW5mZXJzIHRoZSB2YWx1ZXMgb2YgdGhlIHJlbGF0aW9ucyBvbiBhbiBlbnRpdHlcbiAqL1xuZXhwb3J0IHR5cGUgUmVsYXRpb25WYWx1ZTxFPiA9IEVbUmVsYXRpb25LZXk8RT5dO1xuXG4vKipcbiAqIENvbmZpZ3VyYWJsZSBvcHRpb25zIGZvciBhbiBlbnRpdHlcbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5T3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgc29mdERlbGV0ZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIENvbmZpZ3VyYWJsZSBvcHRpb25zIGZvciBhIGZpZWxkXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkT3B0aW9ucyA9IHtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaXNJZD86IHRydWU7XG4gIHJlYWRvbmx5IHR5cGU/OiBhbnk7XG4gIHJlYWRvbmx5IHJlZmVyZW5jZT86IEVudGl0eUdldHRlcjtcbiAgcmVhZG9ubHkgdmlydHVhbD86IFF1ZXJ5UmF3O1xuICByZWFkb25seSBvbkluc2VydD86IE9uRmllbGRDYWxsYmFjaztcbiAgcmVhZG9ubHkgb25VcGRhdGU/OiBPbkZpZWxkQ2FsbGJhY2s7XG4gIHJlYWRvbmx5IG9uRGVsZXRlPzogT25GaWVsZENhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgT25GaWVsZENhbGxiYWNrID0gU2NhbGFyIHwgUXVlcnlSYXcgfCAoKCkgPT4gU2NhbGFyIHwgUXVlcnlSYXcpO1xuXG5leHBvcnQgdHlwZSBFbnRpdHlHZXR0ZXI8RSA9IGFueT4gPSAoKSA9PiBUeXBlPEU+O1xuXG5leHBvcnQgdHlwZSBDYXNjYWRlVHlwZSA9ICdwZXJzaXN0JyB8ICdkZWxldGUnO1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbk9wdGlvbnM8RSA9IGFueT4gPSB7XG4gIGVudGl0eT86IEVudGl0eUdldHRlcjxFPjtcbiAgY2FyZGluYWxpdHk6IFJlbGF0aW9uQ2FyZGluYWxpdHk7XG4gIHJlYWRvbmx5IGNhc2NhZGU/OiBib29sZWFuIHwgQ2FzY2FkZVR5cGU7XG4gIG1hcHBlZEJ5PzogUmVsYXRpb25NYXBwZWRCeTxFPjtcbiAgdGhyb3VnaD86IEVudGl0eUdldHRlcjxSZWxhdGlvblZhbHVlPEU+PjtcbiAgcmVmZXJlbmNlcz86IFJlbGF0aW9uUmVmZXJlbmNlcztcbn07XG5cbnR5cGUgUmVsYXRpb25PcHRpb25zT3duZXI8RT4gPSBQaWNrPFJlbGF0aW9uT3B0aW9uczxFPiwgJ2VudGl0eScgfCAncmVmZXJlbmNlcycgfCAnY2FzY2FkZSc+O1xudHlwZSBSZWxhdGlvbk9wdGlvbnNJbnZlcnNlU2lkZTxFPiA9IFJlcXVpcmVkPFBpY2s8UmVsYXRpb25PcHRpb25zPEU+LCAnZW50aXR5JyB8ICdtYXBwZWRCeSc+PiAmIFBpY2s8UmVsYXRpb25PcHRpb25zPEU+LCAnY2FzY2FkZSc+O1xudHlwZSBSZWxhdGlvbk9wdGlvbnNUaHJvdWdoT3duZXI8RT4gPSBSZXF1aXJlZDxQaWNrPFJlbGF0aW9uT3B0aW9uczxFPiwgJ2VudGl0eSc+PiAmIFBpY2s8UmVsYXRpb25PcHRpb25zPEU+LCAndGhyb3VnaCcgfCAncmVmZXJlbmNlcycgfCAnY2FzY2FkZSc+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvbktleU1hcDxFPiA9IHsgcmVhZG9ubHkgW0sgaW4ga2V5b2YgRV06IEsgfTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25LZXlNYXBwZXI8RT4gPSAoa2V5TWFwOiBSZWxhdGlvbktleU1hcDxFPikgPT4gS2V5PEU+O1xuXG5leHBvcnQgdHlwZSBSZWxhdGlvblJlZmVyZW5jZXMgPSB7IHJlYWRvbmx5IGxvY2FsOiBzdHJpbmc7IHJlYWRvbmx5IGZvcmVpZ246IHN0cmluZyB9W107XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uTWFwcGVkQnk8RT4gPSBLZXk8RT4gfCBSZWxhdGlvbktleU1hcHBlcjxFPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25DYXJkaW5hbGl0eSA9ICcxMScgfCAnbTEnIHwgJzFtJyB8ICdtbSc7XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uT25lVG9PbmVPcHRpb25zPEU+ID0gUmVsYXRpb25PcHRpb25zT3duZXI8RT4gfCBSZWxhdGlvbk9wdGlvbnNJbnZlcnNlU2lkZTxFPjtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25PbmVUb01hbnlPcHRpb25zPEU+ID0gUmVsYXRpb25PcHRpb25zSW52ZXJzZVNpZGU8RT4gfCBSZWxhdGlvbk9wdGlvbnNUaHJvdWdoT3duZXI8RT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uTWFueVRvT25lT3B0aW9uczxFPiA9IFJlbGF0aW9uT3B0aW9uc093bmVyPEU+IHwgUmVsYXRpb25PcHRpb25zSW52ZXJzZVNpZGU8RT47XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uTWFueVRvTWFueU9wdGlvbnM8RT4gPSBSZWxhdGlvbk9wdGlvbnNUaHJvdWdoT3duZXI8RT4gfCBSZWxhdGlvbk9wdGlvbnNJbnZlcnNlU2lkZTxFPjtcblxuLyoqXG4gKiBXcmFwcGVyIHR5cGUgZm9yIHJlbGF0aW9uIHR5cGUgZGVmaW5pdGlvbnMgaW4gZW50aXRpZXMuXG4gKiBVc2VkIHRvIGNpcmN1bXZlbnQgRVNNIG1vZHVsZXMgY2lyY3VsYXIgZGVwZW5kZW5jeSBpc3N1ZSBjYXVzZWQgYnkgcmVmbGVjdGlvbiBtZXRhZGF0YSBzYXZpbmcgdGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5LlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiBARW50aXR5KClcbiAqIGV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXIge1xuICpcbiAqICAgICBAT25lVG9PbmUoKCkgPT4gUHJvZmlsZSwgcHJvZmlsZSA9PiBwcm9maWxlLnVzZXIpXG4gKiAgICAgcHJvZmlsZTogUmVsYXRpb248UHJvZmlsZT47XG4gKlxuICogfVxuICovXG5leHBvcnQgdHlwZSBSZWxhdGlvbjxUPiA9IFQ7XG5cbmV4cG9ydCB0eXBlIEVudGl0eU1ldGE8RT4gPSB7XG4gIHJlYWRvbmx5IGVudGl0eTogVHlwZTxFPjtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBJZEtleTxFPjtcbiAgc29mdERlbGV0ZT86IEZpZWxkS2V5PEU+O1xuICBmaWVsZHM6IHtcbiAgICBbSyBpbiBGaWVsZEtleTxFPl0/OiBGaWVsZE9wdGlvbnM7XG4gIH07XG4gIHJlbGF0aW9uczoge1xuICAgIFtLIGluIFJlbGF0aW9uS2V5PEU+XT86IFJlbGF0aW9uT3B0aW9ucztcbiAgfTtcbiAgcHJvY2Vzc2VkPzogYm9vbGVhbjtcbn07XG4iXX0=
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