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

@logto/browser

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@logto/browser - npm Package Compare versions

Comparing version 0.2.2 to 0.2.3-alpha.0

lib/index.d.ts.map

48

lib/index.d.ts

@@ -1,8 +0,22 @@

import { IdTokenClaims, Prompt, Requester } from '@logto/js';
import { Nullable } from '@silverhand/essentials';
import { Infer } from 'superstruct';
import { NormalizeKeyPaths, Nullable } from "@silverhand/essentials";
import { IdTokenClaims, Prompt, Requester } from "@logto/js";
import { Infer } from "superstruct";
declare const logtoClientErrorCodes: Readonly<{
sign_in_session: {
invalid: string;
not_found: string;
};
not_authenticated: string;
get_access_token_by_refresh_token_failed: string;
invalid_id_token: string;
}>;
export type LogtoClientErrorCode = NormalizeKeyPaths<typeof logtoClientErrorCodes>;
export class LogtoClientError extends Error {
code: LogtoClientErrorCode;
data: unknown;
constructor(code: LogtoClientErrorCode, data?: unknown);
}
export type { IdTokenClaims, LogtoErrorCode } from '@logto/js';
export { LogtoError, OidcError, Prompt } from '@logto/js';
export * from './errors';
export declare type LogtoConfig = {
export type LogtoConfig = {
endpoint: string;

@@ -15,3 +29,3 @@ appId: string;

};
export declare type AccessToken = {
export type AccessToken = {
token: string;

@@ -21,3 +35,3 @@ scope: string;

};
export declare const LogtoSignInSessionItemSchema: import("superstruct").Struct<{
export const LogtoSignInSessionItemSchema: import("superstruct").Struct<{
redirectUri: string;

@@ -31,13 +45,6 @@ codeVerifier: string;

}>;
export declare type LogtoSignInSessionItem = Infer<typeof LogtoSignInSessionItemSchema>;
export type LogtoSignInSessionItem = Infer<typeof LogtoSignInSessionItemSchema>;
export default class LogtoClient {
protected readonly logtoConfig: LogtoConfig;
protected readonly getOidcConfig: () => Promise<import("@silverhand/essentials").KeysToCamelCase<{
authorization_endpoint: string;
token_endpoint: string;
end_session_endpoint: string;
revocation_endpoint: string;
jwks_uri: string;
issuer: string;
}>>;
protected readonly getOidcConfig: () => Promise<import("@silverhand/essentials").KeysToCamelCase<import("@logto/js").OidcConfigSnakeCaseResponse>>;
protected readonly getJwtVerifyGetKey: () => Promise<import("jose/dist/types/types").GetKeyFunction<import("jose").JWSHeaderParameters, import("jose").FlattenedJWSInput>>;

@@ -47,4 +54,2 @@ protected readonly logtoStorageKey: string;

protected readonly accessTokenMap: Map<string, AccessToken>;
private readonly getAccessTokenPromiseMap;
private _idToken;
constructor(logtoConfig: LogtoConfig, requester?: <T>(input: RequestInfo, init?: RequestInit | undefined) => Promise<T>);

@@ -64,7 +69,4 @@ get isAuthenticated(): boolean;

signOut(postLogoutRedirectUri?: string): Promise<void>;
private getAccessTokenByRefreshToken;
private _getOidcConfig;
private _getJwtVerifyGetKey;
private verifyIdToken;
private saveCodeToken;
}
//# sourceMappingURL=index.d.ts.map

@@ -1,47 +0,103 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
var $2FOI4$logtojs = require("@logto/js");
var $2FOI4$jose = require("jose");
var $2FOI4$lodashonce = require("lodash.once");
var $2FOI4$superstruct = require("superstruct");
var $2FOI4$lodashget = require("lodash.get");
function $parcel$interopDefault(a) {
return a && a.__esModule ? a.default : a;
}
function $parcel$defineInteropFlag(a) {
Object.defineProperty(a, '__esModule', {value: true, configurable: true});
}
function $parcel$export(e, n, v, s) {
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
function $parcel$exportWildcard(dest, source) {
Object.keys(source).forEach(function(key) {
if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {
return;
}
Object.defineProperty(dest, key, {
enumerable: true,
get: function get() {
return source[key];
}
});
});
return dest;
}
$parcel$defineInteropFlag(module.exports);
$parcel$export(module.exports, "LogtoSignInSessionItemSchema", () => $5a30d9203b683831$export$7b65a75f516b80e1);
$parcel$export(module.exports, "default", () => $5a30d9203b683831$export$2e2bcd8739ae039);
$parcel$export(module.exports, "LogtoError", () => $5a30d9203b683831$re_export$LogtoError);
$parcel$export(module.exports, "OidcError", () => $5a30d9203b683831$re_export$OidcError);
$parcel$export(module.exports, "Prompt", () => $2FOI4$logtojs.Prompt);
var $91774f8557d77d78$exports = {};
$parcel$export($91774f8557d77d78$exports, "LogtoClientError", () => $91774f8557d77d78$export$877962ca249b8fc8);
const $91774f8557d77d78$var$logtoClientErrorCodes = Object.freeze({
sign_in_session: {
invalid: "Invalid sign-in session.",
not_found: "Sign-in session not found."
},
not_authenticated: "Not authenticated.",
get_access_token_by_refresh_token_failed: "Failed to get access token by refresh token.",
invalid_id_token: "Invalid id token."
});
const $91774f8557d77d78$var$getMessageByErrorCode = (errorCode)=>{
// TODO: linear issue LOG-1419
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const message = (0, ($parcel$interopDefault($2FOI4$lodashget)))($91774f8557d77d78$var$logtoClientErrorCodes, errorCode);
if (typeof message === "string") return message;
return errorCode;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogtoSignInSessionItemSchema = exports.Prompt = exports.OidcError = exports.LogtoError = void 0;
const js_1 = require("@logto/js");
const jose_1 = require("jose");
const lodash_once_1 = __importDefault(require("lodash.once"));
const superstruct_1 = require("superstruct");
const errors_1 = require("./errors");
const utils_1 = require("./utils");
var js_2 = require("@logto/js");
Object.defineProperty(exports, "LogtoError", { enumerable: true, get: function () { return js_2.LogtoError; } });
Object.defineProperty(exports, "OidcError", { enumerable: true, get: function () { return js_2.OidcError; } });
Object.defineProperty(exports, "Prompt", { enumerable: true, get: function () { return js_2.Prompt; } });
__exportStar(require("./errors"), exports);
exports.LogtoSignInSessionItemSchema = (0, superstruct_1.type)({
redirectUri: (0, superstruct_1.string)(),
codeVerifier: (0, superstruct_1.string)(),
state: (0, superstruct_1.string)(),
class $91774f8557d77d78$export$877962ca249b8fc8 extends Error {
constructor(code, data){
super($91774f8557d77d78$var$getMessageByErrorCode(code));
this.code = code;
this.data = data;
}
}
const $944e6f79cbd4667b$var$logtoStorageItemKeyPrefix = `logto`;
const $944e6f79cbd4667b$export$bdf1d4f122e17e7b = (key)=>`${$944e6f79cbd4667b$var$logtoStorageItemKeyPrefix}:${key}`;
const $944e6f79cbd4667b$export$79da00f3c12fcb3c = (logtoKey)=>`${logtoKey}:refreshToken`;
const $944e6f79cbd4667b$export$cdb4d35801155147 = (logtoKey)=>`${logtoKey}:idToken`;
const $944e6f79cbd4667b$export$8f595bd2a47bcea6 = (resource = "", scopes = [])=>`${scopes.slice().sort().join(" ")}@${resource}`;
const $944e6f79cbd4667b$export$5d9c34f69c80822b = (endpoint)=>new URL((0, $2FOI4$logtojs.discoveryPath), endpoint).toString();
const $5a30d9203b683831$export$7b65a75f516b80e1 = (0, $2FOI4$superstruct.type)({
redirectUri: (0, $2FOI4$superstruct.string)(),
codeVerifier: (0, $2FOI4$superstruct.string)(),
state: (0, $2FOI4$superstruct.string)()
});
class LogtoClient {
constructor(logtoConfig, requester = (0, js_1.createRequester)()) {
this.getOidcConfig = (0, lodash_once_1.default)(this._getOidcConfig);
this.getJwtVerifyGetKey = (0, lodash_once_1.default)(this._getJwtVerifyGetKey);
this.accessTokenMap = new Map();
this.getAccessTokenPromiseMap = new Map();
class $5a30d9203b683831$export$2e2bcd8739ae039 {
getOidcConfig = (0, ($parcel$interopDefault($2FOI4$lodashonce)))(this._getOidcConfig);
getJwtVerifyGetKey = (0, ($parcel$interopDefault($2FOI4$lodashonce)))(this._getJwtVerifyGetKey);
accessTokenMap = new Map();
getAccessTokenPromiseMap = new Map();
constructor(logtoConfig, requester = (0, $2FOI4$logtojs.createRequester)()){
this.logtoConfig = {
...logtoConfig,
prompt: logtoConfig.prompt ?? js_1.Prompt.Consent,
scopes: (0, js_1.withReservedScopes)(logtoConfig.scopes).split(' '),
prompt: logtoConfig.prompt ?? (0, $2FOI4$logtojs.Prompt).Consent,
scopes: (0, $2FOI4$logtojs.withReservedScopes)(logtoConfig.scopes).split(" ")
};
this.logtoStorageKey = (0, utils_1.buildLogtoKey)(logtoConfig.appId);
this.logtoStorageKey = (0, $944e6f79cbd4667b$export$bdf1d4f122e17e7b)(logtoConfig.appId);
this.requester = requester;
this._idToken = localStorage.getItem((0, utils_1.buildIdTokenKey)(this.logtoStorageKey));
this._idToken = localStorage.getItem((0, $944e6f79cbd4667b$export$cdb4d35801155147)(this.logtoStorageKey));
}

@@ -53,13 +109,10 @@ get isAuthenticated() {

const jsonItem = sessionStorage.getItem(this.logtoStorageKey);
if (!jsonItem) {
return null;
}
if (!jsonItem) return null;
try {
const item = JSON.parse(jsonItem);
(0, superstruct_1.assert)(item, exports.LogtoSignInSessionItemSchema);
(0, $2FOI4$superstruct.assert)(item, $5a30d9203b683831$export$7b65a75f516b80e1);
return item;
} catch (error) {
throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("sign_in_session.invalid", error);
}
catch (error) {
throw new errors_1.LogtoClientError('sign_in_session.invalid', error);
}
}

@@ -75,6 +128,6 @@ set signInSession(logtoSignInSessionItem) {

get refreshToken() {
return localStorage.getItem((0, utils_1.buildRefreshTokenKey)(this.logtoStorageKey));
return localStorage.getItem((0, $944e6f79cbd4667b$export$79da00f3c12fcb3c)(this.logtoStorageKey));
}
set refreshToken(refreshToken) {
const refreshTokenKey = (0, utils_1.buildRefreshTokenKey)(this.logtoStorageKey);
const refreshTokenKey = (0, $944e6f79cbd4667b$export$79da00f3c12fcb3c)(this.logtoStorageKey);
if (!refreshToken) {

@@ -91,3 +144,3 @@ localStorage.removeItem(refreshTokenKey);

this._idToken = idToken;
const idTokenKey = (0, utils_1.buildIdTokenKey)(this.logtoStorageKey);
const idTokenKey = (0, $944e6f79cbd4667b$export$cdb4d35801155147)(this.logtoStorageKey);
if (!idToken) {

@@ -101,28 +154,18 @@ localStorage.removeItem(idTokenKey);

async getAccessToken(resource) {
if (!this.idToken) {
throw new errors_1.LogtoClientError('not_authenticated');
}
const accessTokenKey = (0, utils_1.buildAccessTokenKey)(resource);
if (!this.idToken) throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("not_authenticated");
const accessTokenKey = (0, $944e6f79cbd4667b$export$8f595bd2a47bcea6)(resource);
const accessToken = this.accessTokenMap.get(accessTokenKey);
if (accessToken && accessToken.expiresAt > Date.now() / 1000) {
return accessToken.token;
}
if (accessToken && accessToken.expiresAt > Date.now() / 1000) return accessToken.token;
// Since the access token has expired, delete it from the map.
if (accessToken) {
this.accessTokenMap.delete(accessTokenKey);
}
if (accessToken) this.accessTokenMap.delete(accessTokenKey);
/**
* Need to fetch a new access token using refresh token.
* Reuse the cached promise if exists.
*/
const cachedPromise = this.getAccessTokenPromiseMap.get(accessTokenKey);
if (cachedPromise) {
return cachedPromise;
}
* Need to fetch a new access token using refresh token.
* Reuse the cached promise if exists.
*/ const cachedPromise = this.getAccessTokenPromiseMap.get(accessTokenKey);
if (cachedPromise) return cachedPromise;
/**
* Create a new promise and cache in map to avoid race condition.
* Since we enable "refresh token rotation" by default,
* it will be problematic when calling multiple `getAccessToken()` closely.
*/
const promise = this.getAccessTokenByRefreshToken(resource);
* Create a new promise and cache in map to avoid race condition.
* Since we enable "refresh token rotation" by default,
* it will be problematic when calling multiple `getAccessToken()` closely.
*/ const promise = this.getAccessTokenByRefreshToken(resource);
this.getAccessTokenPromiseMap.set(accessTokenKey, promise);

@@ -134,24 +177,26 @@ const token = await promise;

getIdTokenClaims() {
if (!this.idToken) {
throw new errors_1.LogtoClientError('not_authenticated');
}
return (0, js_1.decodeIdToken)(this.idToken);
if (!this.idToken) throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("not_authenticated");
return (0, $2FOI4$logtojs.decodeIdToken)(this.idToken);
}
async signIn(redirectUri) {
const { appId: clientId, prompt, resources, scopes } = this.logtoConfig;
const { authorizationEndpoint } = await this.getOidcConfig();
const codeVerifier = (0, js_1.generateCodeVerifier)();
const codeChallenge = await (0, js_1.generateCodeChallenge)(codeVerifier);
const state = (0, js_1.generateState)();
const signInUri = (0, js_1.generateSignInUri)({
authorizationEndpoint,
clientId,
redirectUri,
codeChallenge,
state,
scopes,
resources,
prompt,
const { appId: clientId , prompt: prompt , resources: resources , scopes: scopes } = this.logtoConfig;
const { authorizationEndpoint: authorizationEndpoint } = await this.getOidcConfig();
const codeVerifier = (0, $2FOI4$logtojs.generateCodeVerifier)();
const codeChallenge = await (0, $2FOI4$logtojs.generateCodeChallenge)(codeVerifier);
const state = (0, $2FOI4$logtojs.generateState)();
const signInUri = (0, $2FOI4$logtojs.generateSignInUri)({
authorizationEndpoint: authorizationEndpoint,
clientId: clientId,
redirectUri: redirectUri,
codeChallenge: codeChallenge,
state: state,
scopes: scopes,
resources: resources,
prompt: prompt
});
this.signInSession = { redirectUri, codeVerifier, state };
this.signInSession = {
redirectUri: redirectUri,
codeVerifier: codeVerifier,
state: state
};
this.refreshToken = null;

@@ -162,25 +207,21 @@ this.idToken = null;

isSignInRedirected(url) {
const { signInSession } = this;
if (!signInSession) {
return false;
}
const { redirectUri } = signInSession;
const { origin, pathname } = new URL(url);
const { signInSession: signInSession } = this;
if (!signInSession) return false;
const { redirectUri: redirectUri } = signInSession;
const { origin: origin , pathname: pathname } = new URL(url);
return `${origin}${pathname}` === redirectUri;
}
async handleSignInCallback(callbackUri) {
const { signInSession, logtoConfig, requester } = this;
if (!signInSession) {
throw new errors_1.LogtoClientError('sign_in_session.not_found');
}
const { redirectUri, state, codeVerifier } = signInSession;
const code = (0, js_1.verifyAndParseCodeFromCallbackUri)(callbackUri, redirectUri, state);
const { appId: clientId } = logtoConfig;
const { tokenEndpoint } = await this.getOidcConfig();
const codeTokenResponse = await (0, js_1.fetchTokenByAuthorizationCode)({
clientId,
tokenEndpoint,
redirectUri,
codeVerifier,
code,
const { signInSession: signInSession , logtoConfig: logtoConfig , requester: requester } = this;
if (!signInSession) throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("sign_in_session.not_found");
const { redirectUri: redirectUri , state: state , codeVerifier: codeVerifier } = signInSession;
const code = (0, $2FOI4$logtojs.verifyAndParseCodeFromCallbackUri)(callbackUri, redirectUri, state);
const { appId: clientId } = logtoConfig;
const { tokenEndpoint: tokenEndpoint } = await this.getOidcConfig();
const codeTokenResponse = await (0, $2FOI4$logtojs.fetchTokenByAuthorizationCode)({
clientId: clientId,
tokenEndpoint: tokenEndpoint,
redirectUri: redirectUri,
codeVerifier: codeVerifier,
code: code
}, requester);

@@ -192,19 +233,14 @@ await this.verifyIdToken(codeTokenResponse.idToken);

async signOut(postLogoutRedirectUri) {
if (!this.idToken) {
throw new errors_1.LogtoClientError('not_authenticated');
if (!this.idToken) throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("not_authenticated");
const { appId: clientId } = this.logtoConfig;
const { endSessionEndpoint: endSessionEndpoint , revocationEndpoint: revocationEndpoint } = await this.getOidcConfig();
if (this.refreshToken) try {
await (0, $2FOI4$logtojs.revoke)(revocationEndpoint, clientId, this.refreshToken, this.requester);
} catch {
// Do nothing at this point, as we don't want to break the sign-out flow even if the revocation is failed
}
const { appId: clientId } = this.logtoConfig;
const { endSessionEndpoint, revocationEndpoint } = await this.getOidcConfig();
if (this.refreshToken) {
try {
await (0, js_1.revoke)(revocationEndpoint, clientId, this.refreshToken, this.requester);
}
catch {
// Do nothing at this point, as we don't want to break the sign-out flow even if the revocation is failed
}
}
const url = (0, js_1.generateSignOutUri)({
endSessionEndpoint,
postLogoutRedirectUri,
idToken: this.idToken,
const url = (0, $2FOI4$logtojs.generateSignOutUri)({
endSessionEndpoint: endSessionEndpoint,
postLogoutRedirectUri: postLogoutRedirectUri,
idToken: this.idToken
});

@@ -217,20 +253,20 @@ this.accessTokenMap.clear();

async getAccessTokenByRefreshToken(resource) {
if (!this.refreshToken) {
throw new errors_1.LogtoClientError('not_authenticated');
}
if (!this.refreshToken) throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("not_authenticated");
try {
const accessTokenKey = (0, utils_1.buildAccessTokenKey)(resource);
const { appId: clientId } = this.logtoConfig;
const { tokenEndpoint } = await this.getOidcConfig();
const { accessToken, refreshToken, idToken, scope, expiresIn } = await (0, js_1.fetchTokenByRefreshToken)({
clientId,
tokenEndpoint,
const accessTokenKey = (0, $944e6f79cbd4667b$export$8f595bd2a47bcea6)(resource);
const { appId: clientId } = this.logtoConfig;
const { tokenEndpoint: tokenEndpoint } = await this.getOidcConfig();
const { accessToken: accessToken , refreshToken: refreshToken , idToken: idToken , scope: scope , expiresIn: expiresIn } = await (0, $2FOI4$logtojs.fetchTokenByRefreshToken)({
clientId: clientId,
tokenEndpoint: tokenEndpoint,
refreshToken: this.refreshToken,
resource,
scopes: resource ? ['offline_access'] : undefined, // Force remove openid scope from the request
resource: resource,
scopes: resource ? [
"offline_access"
] : undefined
}, this.requester);
this.accessTokenMap.set(accessTokenKey, {
token: accessToken,
scope,
expiresAt: Math.round(Date.now() / 1000) + expiresIn,
scope: scope,
expiresAt: Math.round(Date.now() / 1000) + expiresIn
});

@@ -243,36 +279,41 @@ this.refreshToken = refreshToken;

return accessToken;
} catch (error) {
throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("get_access_token_by_refresh_token_failed", error);
}
catch (error) {
throw new errors_1.LogtoClientError('get_access_token_by_refresh_token_failed', error);
}
}
async _getOidcConfig() {
const { endpoint } = this.logtoConfig;
const discoveryEndpoint = (0, utils_1.getDiscoveryEndpoint)(endpoint);
return (0, js_1.fetchOidcConfig)(discoveryEndpoint, this.requester);
const { endpoint: endpoint } = this.logtoConfig;
const discoveryEndpoint = (0, $944e6f79cbd4667b$export$5d9c34f69c80822b)(endpoint);
return (0, $2FOI4$logtojs.fetchOidcConfig)(discoveryEndpoint, this.requester);
}
async _getJwtVerifyGetKey() {
const { jwksUri } = await this.getOidcConfig();
return (0, jose_1.createRemoteJWKSet)(new URL(jwksUri));
const { jwksUri: jwksUri } = await this.getOidcConfig();
return (0, $2FOI4$jose.createRemoteJWKSet)(new URL(jwksUri));
}
async verifyIdToken(idToken) {
const { appId } = this.logtoConfig;
const { issuer } = await this.getOidcConfig();
const { appId: appId } = this.logtoConfig;
const { issuer: issuer } = await this.getOidcConfig();
const jwtVerifyGetKey = await this.getJwtVerifyGetKey();
try {
await (0, js_1.verifyIdToken)(idToken, appId, issuer, jwtVerifyGetKey);
await (0, $2FOI4$logtojs.verifyIdToken)(idToken, appId, issuer, jwtVerifyGetKey);
} catch (error) {
throw new (0, $91774f8557d77d78$export$877962ca249b8fc8)("invalid_id_token", error);
}
catch (error) {
throw new errors_1.LogtoClientError('invalid_id_token', error);
}
}
saveCodeToken({ refreshToken, idToken, scope, accessToken, expiresIn, }) {
saveCodeToken({ refreshToken: refreshToken , idToken: idToken , scope: scope , accessToken: accessToken , expiresIn: expiresIn }) {
this.refreshToken = refreshToken ?? null;
this.idToken = idToken;
// NOTE: Will add scope to accessTokenKey when needed. (Linear issue LOG-1589)
const accessTokenKey = (0, utils_1.buildAccessTokenKey)();
const accessTokenKey = (0, $944e6f79cbd4667b$export$8f595bd2a47bcea6)();
const expiresAt = Date.now() / 1000 + expiresIn;
this.accessTokenMap.set(accessTokenKey, { token: accessToken, scope, expiresAt });
this.accessTokenMap.set(accessTokenKey, {
token: accessToken,
scope: scope,
expiresAt: expiresAt
});
}
}
exports.default = LogtoClient;
$parcel$exportWildcard(module.exports, $91774f8557d77d78$exports);
//# sourceMappingURL=index.js.map
{
"name": "@logto/browser",
"version": "0.2.2",
"version": "0.2.3-alpha.0",
"source": "./src/index.ts",
"main": "./lib/index.js",
"exports": "./lib/index.js",
"typings": "./lib/index.d.ts",
"exports": {
"require": "./lib/index.js",
"import": "./lib/module.js"
},
"module": "./lib/module.js",
"types": "./lib/index.d.ts",
"files": [

@@ -19,3 +24,4 @@ "lib"

"precommit": "lint-staged",
"build": "rm -rf lib/ && tsc -p tsconfig.build.json",
"check": "tsc --noEmit",
"build": "rm -rf lib/ && pnpm check && parcel build",
"lint": "eslint --ext .ts src",

@@ -27,3 +33,3 @@ "test": "jest",

"dependencies": {
"@logto/js": "^0.2.0",
"@logto/js": "^0.2.3-alpha.0",
"@silverhand/essentials": "^1.1.6",

@@ -37,2 +43,5 @@ "jose": "^4.5.0",

"@jest/types": "^27.5.1",
"@parcel/core": "^2.6.2",
"@parcel/packager-ts": "^2.6.2",
"@parcel/transformer-typescript-types": "^2.6.2",
"@silverhand/eslint-config": "^0.14.0",

@@ -48,2 +57,3 @@ "@silverhand/ts-config": "^0.14.0",

"lint-staged": "^13.0.0",
"parcel": "^2.6.2",
"prettier": "^2.3.2",

@@ -61,3 +71,3 @@ "text-encoder": "^0.0.4",

},
"gitHead": "c8e2ad8ea656887884f9d32c119086d53554c178"
"gitHead": "e9e611773b0e73baa6c05a3f2d545fac64d03707"
}
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