supertokens-node
Version:
NodeJS driver for SuperTokens core
260 lines (259 loc) • 10.5 kB
JavaScript
;
/* Copyright (c) 2021, VRAI Labs and/or its affiliates. All rights reserved.
*
* This software is licensed under the Apache License, Version 2.0 (the
* "License") as published by the Apache Software Foundation.
*
* You may not use this file except in compliance with the License. You may
* obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
var __createBinding =
(this && this.__createBinding) ||
(Object.create
? function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = {
enumerable: true,
get: function () {
return m[k];
},
};
}
Object.defineProperty(o, k2, desc);
}
: function (o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
});
var __setModuleDefault =
(this && this.__setModuleDefault) ||
(Object.create
? function (o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}
: function (o, v) {
o["default"] = v;
});
var __importStar =
(this && this.__importStar) ||
(function () {
var ownKeys = function (o) {
ownKeys =
Object.getOwnPropertyNames ||
function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null)
for (var k = ownKeys(mod), i = 0; i < k.length; i++)
if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.User =
exports.RecipeUserId =
exports.PluginError =
exports.Error =
exports.getAvailableFirstFactors =
exports.isRecipeInitialized =
exports.getRequestFromUserContext =
exports.convertToRecipeUserId =
exports.listUsersByAccountInfo =
exports.getUser =
exports.updateOrDeleteUserIdMappingInfo =
exports.deleteUserIdMapping =
exports.getUserIdMapping =
exports.createUserIdMapping =
exports.deleteUser =
exports.getUsersNewestFirst =
exports.getUsersOldestFirst =
exports.getUserCount =
exports.getAllCORSHeaders =
exports.init =
void 0;
const supertokens_1 = __importDefault(require("./supertokens"));
const error_1 = __importStar(require("./error"));
const recipeUserId_1 = __importDefault(require("./recipeUserId"));
const user_1 = require("./user");
const utils_1 = require("./utils");
const multifactorauth_1 = require("./recipe/multifactorauth");
// For Express
class SuperTokensWrapper {
static getAllCORSHeaders() {
return supertokens_1.default.getInstanceOrThrowError().getAllCORSHeaders();
}
static getUserCount(includeRecipeIds, tenantId, userContext) {
return supertokens_1.default
.getInstanceOrThrowError()
.getUserCount(includeRecipeIds, tenantId, (0, utils_1.getUserContext)(userContext));
}
static getUsersOldestFirst(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.getRecipeInstanceOrThrow("accountlinking")
.recipeInterfaceImpl.getUsers(
Object.assign(Object.assign({ timeJoinedOrder: "ASC" }, input), {
userContext: (0, utils_1.getUserContext)(input.userContext),
})
);
}
static getUsersNewestFirst(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.getRecipeInstanceOrThrow("accountlinking")
.recipeInterfaceImpl.getUsers(
Object.assign(Object.assign({ timeJoinedOrder: "DESC" }, input), {
userContext: (0, utils_1.getUserContext)(input.userContext),
})
);
}
static createUserIdMapping(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.createUserIdMapping(
Object.assign(Object.assign({}, input), { userContext: (0, utils_1.getUserContext)(input.userContext) })
);
}
static getUserIdMapping(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.getUserIdMapping(
Object.assign(Object.assign({}, input), { userContext: (0, utils_1.getUserContext)(input.userContext) })
);
}
static deleteUserIdMapping(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.deleteUserIdMapping(
Object.assign(Object.assign({}, input), { userContext: (0, utils_1.getUserContext)(input.userContext) })
);
}
static updateOrDeleteUserIdMappingInfo(input) {
return supertokens_1.default
.getInstanceOrThrowError()
.updateOrDeleteUserIdMappingInfo(
Object.assign(Object.assign({}, input), { userContext: (0, utils_1.getUserContext)(input.userContext) })
);
}
static async getUser(userId, userContext) {
return await supertokens_1.default
.getInstanceOrThrowError()
.getRecipeInstanceOrThrow("accountlinking")
.recipeInterfaceImpl.getUser({
userId,
userContext: (0, utils_1.getUserContext)(userContext),
});
}
static async listUsersByAccountInfo(tenantId, accountInfo, doUnionOfAccountInfo = false, userContext) {
return await supertokens_1.default
.getInstanceOrThrowError()
.getRecipeInstanceOrThrow("accountlinking")
.recipeInterfaceImpl.listUsersByAccountInfo({
tenantId,
accountInfo,
doUnionOfAccountInfo,
userContext: (0, utils_1.getUserContext)(userContext),
});
}
static async deleteUser(userId, removeAllLinkedAccounts = true, userContext) {
return await supertokens_1.default
.getInstanceOrThrowError()
.getRecipeInstanceOrThrow("accountlinking")
.recipeInterfaceImpl.deleteUser({
userId,
removeAllLinkedAccounts,
userContext: (0, utils_1.getUserContext)(userContext),
});
}
static convertToRecipeUserId(recipeUserId) {
return new recipeUserId_1.default(recipeUserId);
}
static getRequestFromUserContext(userContext) {
return supertokens_1.default.getInstanceOrThrowError().getRequestFromUserContext(userContext);
}
static isRecipeInitialized(recipeId) {
return supertokens_1.default
.getInstanceOrThrowError()
.recipeModules.map((recipe) => recipe.getRecipeId())
.includes(recipeId);
}
static async getAvailableFirstFactors(tenantId, session, userContext) {
const factorIds = Object.values(multifactorauth_1.FactorIds);
try {
const { AuthUtils } = require("./authUtils");
const availableFirstFactors = await AuthUtils.filterOutInvalidFirstFactorsOrThrowIfAllAreInvalid(
factorIds,
tenantId,
!!session,
(0, utils_1.getUserContext)(userContext)
);
return availableFirstFactors;
} catch (error) {
if (error instanceof error_1.default) {
if (error.type === error_1.default.BAD_INPUT_ERROR) {
return [];
}
}
throw error;
}
}
}
SuperTokensWrapper.init = supertokens_1.default.init;
SuperTokensWrapper.Error = error_1.default;
SuperTokensWrapper.PluginError = error_1.SuperTokensPluginError;
SuperTokensWrapper.RecipeUserId = recipeUserId_1.default;
SuperTokensWrapper.User = user_1.User;
exports.default = SuperTokensWrapper;
exports.init = SuperTokensWrapper.init;
exports.getAllCORSHeaders = SuperTokensWrapper.getAllCORSHeaders;
exports.getUserCount = SuperTokensWrapper.getUserCount;
exports.getUsersOldestFirst = SuperTokensWrapper.getUsersOldestFirst;
exports.getUsersNewestFirst = SuperTokensWrapper.getUsersNewestFirst;
exports.deleteUser = SuperTokensWrapper.deleteUser;
exports.createUserIdMapping = SuperTokensWrapper.createUserIdMapping;
exports.getUserIdMapping = SuperTokensWrapper.getUserIdMapping;
exports.deleteUserIdMapping = SuperTokensWrapper.deleteUserIdMapping;
exports.updateOrDeleteUserIdMappingInfo = SuperTokensWrapper.updateOrDeleteUserIdMappingInfo;
exports.getUser = SuperTokensWrapper.getUser;
exports.listUsersByAccountInfo = SuperTokensWrapper.listUsersByAccountInfo;
exports.convertToRecipeUserId = SuperTokensWrapper.convertToRecipeUserId;
exports.getRequestFromUserContext = SuperTokensWrapper.getRequestFromUserContext;
exports.isRecipeInitialized = SuperTokensWrapper.isRecipeInitialized;
exports.getAvailableFirstFactors = SuperTokensWrapper.getAvailableFirstFactors;
exports.Error = SuperTokensWrapper.Error;
exports.PluginError = SuperTokensWrapper.PluginError;
var recipeUserId_2 = require("./recipeUserId");
Object.defineProperty(exports, "RecipeUserId", {
enumerable: true,
get: function () {
return __importDefault(recipeUserId_2).default;
},
});
var user_2 = require("./user");
Object.defineProperty(exports, "User", {
enumerable: true,
get: function () {
return user_2.User;
},
});