Socket
Socket
Sign inDemoInstall

@workos-inc/node

Package Overview
Dependencies
Maintainers
0
Versions
155
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@workos-inc/node - npm Package Compare versions

Comparing version 7.10.0 to 7.11.0

lib/common/crypto/crypto-provider.d.ts

2

lib/common/net/node-client.d.ts
/// <reference types="node" />
import { HttpClient, HttpClientResponse } from './http-client';
import { HttpClientInterface, HttpClientResponseInterface, RequestOptions } from '../interfaces/http-client.interface';
import * as http_ from 'http';
import * as http_ from 'node:http';
export declare class NodeHttpClient extends HttpClient implements HttpClientInterface {

@@ -6,0 +6,0 @@ readonly baseURL: string;

@@ -37,4 +37,4 @@ "use strict";

const http_client_1 = require("./http-client");
const http_ = __importStar(require("http"));
const https_ = __importStar(require("https"));
const http_ = __importStar(require("node:http"));
const https_ = __importStar(require("node:https"));
// `import * as http_ from 'http'` creates a "Module Namespace Exotic Object"

@@ -41,0 +41,0 @@ // which is immune to monkey-patching, whereas http_.default (in an ES Module context)

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

import { HttpClient } from './common/net/http-client';
import { Webhooks } from './webhooks/webhooks';
import { WorkOS } from './workos';
import { WorkOSOptions } from './common/interfaces';
export * from './audit-logs/interfaces';

@@ -14,3 +17,8 @@ export * from './common/exceptions';

export * from './user-management/interfaces';
export { WorkOS };
export default WorkOS;
declare class WorkOSNode extends WorkOS {
/** @override */
createHttpClient(options: WorkOSOptions, userAgent: string): HttpClient;
/** @override */
createWebhookClient(): Webhooks;
}
export { WorkOSNode as WorkOS };

@@ -18,4 +18,8 @@ "use strict";

exports.WorkOS = void 0;
const node_crypto_provider_1 = require("./common/crypto/node-crypto-provider");
const subtle_crypto_provider_1 = require("./common/crypto/subtle-crypto-provider");
const fetch_client_1 = require("./common/net/fetch-client");
const node_client_1 = require("./common/net/node-client");
const webhooks_1 = require("./webhooks/webhooks");
const workos_1 = require("./workos");
Object.defineProperty(exports, "WorkOS", { enumerable: true, get: function () { return workos_1.WorkOS; } });
__exportStar(require("./audit-logs/interfaces"), exports);

@@ -33,3 +37,27 @@ __exportStar(require("./common/exceptions"), exports);

__exportStar(require("./user-management/interfaces"), exports);
// tslint:disable-next-line:no-default-export
exports.default = workos_1.WorkOS;
class WorkOSNode extends workos_1.WorkOS {
/** @override */
createHttpClient(options, userAgent) {
var _a;
const opts = Object.assign(Object.assign({}, options.config), { headers: Object.assign(Object.assign({}, (_a = options.config) === null || _a === void 0 ? void 0 : _a.headers), { Authorization: `Bearer ${this.key}`, 'User-Agent': userAgent }) });
if (typeof fetch !== 'undefined' ||
typeof options.fetchFn !== 'undefined') {
return new fetch_client_1.FetchHttpClient(this.baseURL, opts, options.fetchFn);
}
else {
return new node_client_1.NodeHttpClient(this.baseURL, opts);
}
}
/** @override */
createWebhookClient() {
let cryptoProvider;
if (typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined') {
cryptoProvider = new subtle_crypto_provider_1.SubtleCryptoProvider();
}
else {
cryptoProvider = new node_crypto_provider_1.NodeCryptoProvider();
}
return new webhooks_1.Webhooks(cryptoProvider);
}
}
exports.WorkOS = WorkOSNode;

@@ -5,5 +5,8 @@ import { PostOptions } from '../../common/interfaces';

name: string;
allowProfilesOutsideOrganization?: boolean;
domainData?: DomainData[];
/**
* @deprecated If you need to allow sign-ins from any email domain, contact support@workos.com.
*/
allowProfilesOutsideOrganization?: boolean;
/**
* @deprecated Use `domain_data` instead.

@@ -15,5 +18,8 @@ */

name: string;
allow_profiles_outside_organization?: boolean;
domain_data?: DomainData[];
/**
* @deprecated If you need to allow sign-ins from any email domain, contact support@workos.com.
*/
allow_profiles_outside_organization?: boolean;
/**
* @deprecated Use `domain_data` instead.

@@ -20,0 +26,0 @@ */

@@ -5,5 +5,8 @@ import { DomainData } from './domain-data.interface';

name: string;
allowProfilesOutsideOrganization?: boolean;
domainData?: DomainData[];
/**
* @deprecated If you need to allow sign-ins from any email domain, contact support@workos.com.
*/
allowProfilesOutsideOrganization?: boolean;
/**
* @deprecated Use `domain_data` instead.

@@ -15,5 +18,8 @@ */

name: string;
allow_profiles_outside_organization?: boolean;
domain_data?: DomainData[];
/**
* @deprecated If you need to allow sign-ins from any email domain, contact support@workos.com.
*/
allow_profiles_outside_organization?: boolean;
/**
* @deprecated Use `domain_data` instead.

@@ -20,0 +26,0 @@ */

@@ -11,2 +11,13 @@ "use strict";

};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
Object.defineProperty(exports, "__esModule", { value: true });

@@ -187,3 +198,4 @@ exports.UserManagement = void 0;

return __awaiter(this, void 0, void 0, function* () {
return new pagination_1.AutoPaginatable(yield (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/user_management/users/${options.userId}/auth_factors`, factor_serializer_1.deserializeFactor, options), (params) => (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/user_management/users/${options.userId}/auth_factors`, factor_serializer_1.deserializeFactor, params), options);
const { userId } = options, restOfOptions = __rest(options, ["userId"]);
return new pagination_1.AutoPaginatable(yield (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/user_management/users/${userId}/auth_factors`, factor_serializer_1.deserializeFactor, restOfOptions), (params) => (0, fetch_and_deserialize_1.fetchAndDeserialize)(this.workos, `/user_management/users/${userId}/auth_factors`, factor_serializer_1.deserializeFactor, params), restOfOptions);
});

@@ -190,0 +202,0 @@ }

import { Event } from '../common/interfaces';
import { CryptoProvider } from '../common/crypto/crypto-provider';
export declare class Webhooks {
private cryptoProvider;
constructor(subtleCrypto?: typeof crypto.subtle);
constructor(cryptoProvider: CryptoProvider);
constructEvent({ payload, sigHeader, secret, tolerance, }: {

@@ -6,0 +7,0 @@ payload: unknown;

@@ -15,11 +15,5 @@ "use strict";

const serializers_1 = require("../common/serializers");
const crypto_1 = require("../common/crypto");
class Webhooks {
constructor(subtleCrypto) {
if (typeof crypto !== 'undefined' && typeof crypto.subtle !== 'undefined') {
this.cryptoProvider = new crypto_1.SubtleCryptoProvider(subtleCrypto);
}
else {
this.cryptoProvider = new crypto_1.NodeCryptoProvider();
}
constructor(cryptoProvider) {
this.cryptoProvider = cryptoProvider;
}

@@ -26,0 +20,0 @@ constructEvent({ payload, sigHeader, secret, tolerance = 180000, }) {

@@ -20,3 +20,4 @@ "use strict";

const exceptions_1 = require("../common/exceptions");
const crypto_2 = require("../common/crypto");
const node_crypto_provider_1 = require("../common/crypto/node-crypto-provider");
const subtle_crypto_provider_1 = require("../common/crypto/subtle-crypto-provider");
describe('Webhooks', () => {

@@ -195,3 +196,3 @@ let payload;

// tslint:disable-next-line
expect(workos.webhooks['cryptoProvider']).toBeInstanceOf(crypto_2.SubtleCryptoProvider);
expect(workos.webhooks['cryptoProvider']).toBeInstanceOf(subtle_crypto_provider_1.SubtleCryptoProvider);
});

@@ -202,4 +203,4 @@ });

it('returns the same for the Node crypto and Web Crypto versions', () => __awaiter(void 0, void 0, void 0, function* () {
const nodeCryptoProvider = new crypto_2.NodeCryptoProvider();
const subtleCryptoProvider = new crypto_2.SubtleCryptoProvider();
const nodeCryptoProvider = new node_crypto_provider_1.NodeCryptoProvider();
const subtleCryptoProvider = new subtle_crypto_provider_1.SubtleCryptoProvider();
const stringifiedPayload = JSON.stringify(payload);

@@ -214,4 +215,4 @@ const payloadHMAC = `${timestamp}.${stringifiedPayload}`;

it('returns the same for the Node crypto and Web Crypto versions', () => __awaiter(void 0, void 0, void 0, function* () {
const nodeCryptoProvider = new crypto_2.NodeCryptoProvider();
const subtleCryptoProvider = new crypto_2.SubtleCryptoProvider();
const nodeCryptoProvider = new node_crypto_provider_1.NodeCryptoProvider();
const subtleCryptoProvider = new subtle_crypto_provider_1.SubtleCryptoProvider();
const signature = yield workos.webhooks.computeSignature(timestamp, payload, secret);

@@ -218,0 +219,0 @@ expect(nodeCryptoProvider.secureCompare(signature, signatureHash)).toEqual(subtleCryptoProvider.secureCompare(signature, signatureHash));

@@ -13,2 +13,3 @@ import { GetOptions, PostOptions, PutOptions, WorkOSOptions } from './common/interfaces';

import { UserManagement } from './user-management/user-management';
import { HttpClient } from './common/net/http-client';
export declare class WorkOS {

@@ -18,3 +19,3 @@ readonly key?: string | undefined;

readonly baseURL: string;
private readonly client;
readonly client: HttpClient;
readonly auditLogs: AuditLogs;

@@ -32,2 +33,4 @@ readonly directorySync: DirectorySync;

constructor(key?: string | undefined, options?: WorkOSOptions);
createWebhookClient(): Webhooks;
createHttpClient(options: WorkOSOptions, userAgent: string): HttpClient;
get version(): string;

@@ -34,0 +37,0 @@ post<Result = any, Entity = any>(path: string, entity: Entity, options?: PostOptions): Promise<{

@@ -26,8 +26,9 @@ "use strict";

const bad_request_exception_1 = require("./common/exceptions/bad-request.exception");
const net_1 = require("./common/net");
const VERSION = '7.10.0';
const http_client_1 = require("./common/net/http-client");
const subtle_crypto_provider_1 = require("./common/crypto/subtle-crypto-provider");
const fetch_client_1 = require("./common/net/fetch-client");
const VERSION = '7.11.0';
const DEFAULT_HOSTNAME = 'api.workos.com';
class WorkOS {
constructor(key, options = {}) {
var _a;
this.key = key;

@@ -42,3 +43,2 @@ this.options = options;

this.sso = new sso_1.SSO(this);
this.webhooks = new webhooks_1.Webhooks();
this.mfa = new mfa_1.Mfa(this);

@@ -69,4 +69,12 @@ this.events = new events_1.Events(this);

}
this.client = (0, net_1.createHttpClient)(this.baseURL, Object.assign(Object.assign({}, options.config), { headers: Object.assign(Object.assign({}, (_a = options.config) === null || _a === void 0 ? void 0 : _a.headers), { Authorization: `Bearer ${this.key}`, 'User-Agent': userAgent }) }), options.fetchFn);
this.webhooks = this.createWebhookClient();
this.client = this.createHttpClient(options, userAgent);
}
createWebhookClient() {
return new webhooks_1.Webhooks(new subtle_crypto_provider_1.SubtleCryptoProvider());
}
createHttpClient(options, userAgent) {
var _a;
return new fetch_client_1.FetchHttpClient(this.baseURL, Object.assign(Object.assign({}, options.config), { headers: Object.assign(Object.assign({}, (_a = options.config) === null || _a === void 0 ? void 0 : _a.headers), { Authorization: `Bearer ${this.key}`, 'User-Agent': userAgent }) }));
}
get version() {

@@ -154,3 +162,3 @@ return VERSION;

var _a;
if (!(error instanceof net_1.HttpClientError)) {
if (!(error instanceof http_client_1.HttpClientError)) {
throw new Error(`Unexpected error: ${error}`);

@@ -157,0 +165,0 @@ }

@@ -19,5 +19,8 @@ "use strict";

const exceptions_1 = require("./common/exceptions");
const workos_1 = require("./workos");
const index_1 = require("./index");
const index_worker_1 = require("./index.worker");
const rate_limit_exceeded_exception_1 = require("./common/exceptions/rate-limit-exceeded.exception");
const net_1 = require("./common/net");
const fetch_client_1 = require("./common/net/fetch-client");
const node_client_1 = require("./common/net/node-client");
const subtle_crypto_provider_1 = require("./common/crypto/subtle-crypto-provider");
describe('WorkOS', () => {

@@ -37,3 +40,3 @@ beforeEach(() => jest_fetch_mock_1.default.resetMocks());

it('throws a NoApiKeyFoundException error', () => __awaiter(void 0, void 0, void 0, function* () {
expect(() => new workos_1.WorkOS()).toThrowError(exceptions_1.NoApiKeyProvidedException);
expect(() => new index_1.WorkOS()).toThrowError(exceptions_1.NoApiKeyProvidedException);
}));

@@ -44,3 +47,3 @@ });

process.env.WORKOS_API_KEY = 'sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU';
expect(() => new workos_1.WorkOS()).not.toThrow();
expect(() => new index_1.WorkOS()).not.toThrow();
}));

@@ -50,3 +53,3 @@ });

it('initializes', () => __awaiter(void 0, void 0, void 0, function* () {
expect(() => new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU')).not.toThrow();
expect(() => new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU')).not.toThrow();
}));

@@ -56,3 +59,3 @@ });

it('sets baseURL', () => {
const workos = new workos_1.WorkOS('foo', { https: false });
const workos = new index_1.WorkOS('foo', { https: false });
expect(workos.baseURL).toEqual('http://api.workos.com');

@@ -63,3 +66,3 @@ });

it('sets baseURL', () => {
const workos = new workos_1.WorkOS('foo', { apiHostname: 'localhost' });
const workos = new index_1.WorkOS('foo', { apiHostname: 'localhost' });
expect(workos.baseURL).toEqual('https://localhost');

@@ -70,3 +73,3 @@ });

it('sets baseURL', () => {
const workos = new workos_1.WorkOS('foo', {
const workos = new index_1.WorkOS('foo', {
apiHostname: 'localhost',

@@ -81,3 +84,3 @@ port: 4000,

(0, test_utils_1.fetchOnce)('{}', { headers: { 'X-Request-ID': 'a-request-id' } });
const workos = new workos_1.WorkOS('sk_test', {
const workos = new index_1.WorkOS('sk_test', {
config: {

@@ -99,3 +102,3 @@ headers: {

const packageJson = JSON.parse(yield promises_1.default.readFile('package.json', 'utf8'));
const workos = new workos_1.WorkOS('sk_test', {
const workos = new index_1.WorkOS('sk_test', {
appInfo: {

@@ -116,3 +119,3 @@ name: 'fooApp',

const packageJson = JSON.parse(yield promises_1.default.readFile('package.json', 'utf8'));
const workos = new workos_1.WorkOS('sk_test');
const workos = new index_1.WorkOS('sk_test');
yield workos.post('/somewhere', {});

@@ -128,3 +131,3 @@ expect((0, test_utils_1.fetchHeaders)()).toMatchObject({

const packageJson = JSON.parse(yield promises_1.default.readFile('package.json', 'utf8'));
const workos = new workos_1.WorkOS('sk_test');
const workos = new index_1.WorkOS('sk_test');
yield workos.post('/somewhere', {});

@@ -138,6 +141,6 @@ expect((0, test_utils_1.fetchHeaders)()).toMatchObject({

it('automatically uses the fetch HTTP client', () => {
const workos = new workos_1.WorkOS('sk_test');
const workos = new index_1.WorkOS('sk_test');
// Bracket notation gets past private visibility
// tslint:disable-next-line
expect(workos['client']).toBeInstanceOf(net_1.FetchHttpClient);
expect(workos['client']).toBeInstanceOf(fetch_client_1.FetchHttpClient);
});

@@ -148,3 +151,3 @@ });

it('matches the version in `package.json`', () => __awaiter(void 0, void 0, void 0, function* () {
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
// Read `package.json` using file I/O instead of `require` so we don't run

@@ -161,3 +164,3 @@ // into issues with the `require` cache.

(0, test_utils_1.fetchOnce)({ message }, { status: 404, headers: { 'X-Request-ID': 'a-request-id' } });
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.post('/path', {})).rejects.toStrictEqual(new exceptions_1.NotFoundException({

@@ -173,3 +176,3 @@ message,

(0, test_utils_1.fetchOnce)({ code, message }, { status: 404, headers: { 'X-Request-ID': 'a-request-id' } });
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.post('/path', {})).rejects.toMatchObject({

@@ -185,3 +188,3 @@ code,

(0, test_utils_1.fetchOnce)({ code }, { status: 404, headers: { 'X-Request-ID': 'a-request-id' } });
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.post(path, {})).rejects.toMatchObject({

@@ -200,3 +203,3 @@ code,

});
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.post('/path', {})).rejects.toStrictEqual(new exceptions_1.GenericServerException(500, undefined, {}, 'a-request-id'));

@@ -211,3 +214,3 @@ }));

});
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.post('/path', {})).rejects.toStrictEqual(new exceptions_1.OauthException(400, 'a-request-id', 'error', 'error description', { error: 'error', error_description: 'error description' }));

@@ -224,3 +227,3 @@ }));

});
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield expect(workos.get('/path')).rejects.toStrictEqual(new rate_limit_exceeded_exception_1.RateLimitExceededException('Too many requests', 'a-request-id', 10));

@@ -232,3 +235,3 @@ }));

(0, test_utils_1.fetchOnce)();
const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
const workos = new index_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
yield workos.post('/somewhere', null);

@@ -249,14 +252,23 @@ expect((0, test_utils_1.fetchBody)({ raw: true })).toBe('');

it('automatically uses the node HTTP client', () => {
const workos = new workos_1.WorkOS('sk_test_key');
const workos = new index_1.WorkOS('sk_test_key');
// tslint:disable-next-line
expect(workos['client']).toBeInstanceOf(net_1.NodeHttpClient);
expect(workos['client']).toBeInstanceOf(node_client_1.NodeHttpClient);
});
it('uses a fetch function if provided', () => {
const workos = new workos_1.WorkOS('sk_test_key', {
const workos = new index_1.WorkOS('sk_test_key', {
fetchFn,
});
// tslint:disable-next-line
expect(workos['client']).toBeInstanceOf(net_1.FetchHttpClient);
expect(workos['client']).toBeInstanceOf(fetch_client_1.FetchHttpClient);
});
});
describe('when in a worker environment', () => {
it('uses the worker client', () => {
const workos = new index_worker_1.WorkOS('sk_test_key');
// tslint:disable-next-line
expect(workos['client']).toBeInstanceOf(fetch_client_1.FetchHttpClient);
// tslint:disable-next-line
expect(workos.webhooks['cryptoProvider']).toBeInstanceOf(subtle_crypto_provider_1.SubtleCryptoProvider);
});
});
});
{
"version": "7.10.0",
"version": "7.11.0",
"name": "@workos-inc/node",

@@ -18,4 +18,2 @@ "author": "WorkOS",

},
"main": "lib/index.js",
"typings": "lib/index.d.ts",
"files": [

@@ -32,2 +30,3 @@ "lib/"

"scripts": {
"clean": "rm -rf lib",
"build": "tsc -p .",

@@ -56,3 +55,12 @@ "lint": "tslint -p tsconfig.json -c tslint.json",

"typescript": "5.1.6"
},
"exports": {
"types": "./types/index.d.ts",
"worker": {
"import": "./lib/index.worker.js"
},
"default": {
"import": "./lib/index.js"
}
}
}
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