Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Override fix #205

Merged
merged 7 commits into from
Nov 3, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions lib/build/recipe/emailpassword/recipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ const recipe_1 = require("../emailverification/recipe");
const recipeImplementation_1 = require("./recipeImplementation");
const implementation_1 = require("./api/implementation");
const querier_1 = require("../../querier");
const supertokens_js_override_1 = require("supertokens-js-override");
class Recipe extends recipeModule_1.default {
constructor(recipeId, appInfo, isInServerlessEnv, config, recipes) {
super(recipeId, appInfo);
Expand Down Expand Up @@ -170,10 +171,16 @@ class Recipe extends recipeModule_1.default {
isInServerlessEnv,
Object.assign({}, this.config.emailVerificationFeature)
);
this.recipeInterfaceImpl = this.config.override.functions(
recipeImplementation_1.default(querier_1.Querier.getNewInstanceOrThrowError(recipeId))
);
this.apiImpl = this.config.override.apis(implementation_1.default());
{
let builder = new supertokens_js_override_1.default(
recipeImplementation_1.default(querier_1.Querier.getNewInstanceOrThrowError(recipeId))
);
this.recipeInterfaceImpl = builder.override(this.config.override.functions).build();
}
{
let builder = new supertokens_js_override_1.default(implementation_1.default());
this.apiImpl = builder.override(this.config.override.apis).build();
}
}
static getInstanceOrThrowError() {
if (Recipe.instance !== undefined) {
Expand Down
43 changes: 31 additions & 12 deletions lib/build/recipe/emailpassword/types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,27 @@ import {
} from "../emailverification";
import { TypeInput as TypeInputEmailVerification } from "../emailverification/types";
import { BaseRequest, BaseResponse } from "../../framework";
import OverrideableBuilder from "supertokens-js-override";
export declare type TypeNormalisedInput = {
signUpFeature: TypeNormalisedInputSignUp;
signInFeature: TypeNormalisedInputSignIn;
resetPasswordUsingTokenFeature: TypeNormalisedInputResetPasswordUsingTokenFeature;
emailVerificationFeature: TypeInputEmailVerification;
override: {
functions: (originalImplementation: RecipeInterface) => RecipeInterface;
apis: (originalImplementation: APIInterface) => APIInterface;
functions: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
emailVerificationFeature?: {
functions?: (originalImplementation: EmailVerificationRecipeInterface) => EmailVerificationRecipeInterface;
apis?: (originalImplementation: EmailVerificationAPIInterface) => EmailVerificationAPIInterface;
functions?: (
originalImplementation: EmailVerificationRecipeInterface,
builder?: OverrideableBuilder<EmailVerificationRecipeInterface>
) => EmailVerificationRecipeInterface;
apis?: (
originalImplementation: EmailVerificationAPIInterface,
builder?: OverrideableBuilder<EmailVerificationAPIInterface>
) => EmailVerificationAPIInterface;
};
};
};
Expand Down Expand Up @@ -78,11 +88,20 @@ export declare type TypeInput = {
resetPasswordUsingTokenFeature?: TypeInputResetPasswordUsingTokenFeature;
emailVerificationFeature?: TypeInputEmailVerificationFeature;
override?: {
functions?: (originalImplementation: RecipeInterface) => RecipeInterface;
apis?: (originalImplementation: APIInterface) => APIInterface;
functions?: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis?: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
emailVerificationFeature?: {
functions?: (originalImplementation: EmailVerificationRecipeInterface) => EmailVerificationRecipeInterface;
apis?: (originalImplementation: EmailVerificationAPIInterface) => EmailVerificationAPIInterface;
functions?: (
originalImplementation: EmailVerificationRecipeInterface,
builder?: OverrideableBuilder<EmailVerificationRecipeInterface>
) => EmailVerificationRecipeInterface;
apis?: (
originalImplementation: EmailVerificationAPIInterface,
builder?: OverrideableBuilder<EmailVerificationAPIInterface>
) => EmailVerificationAPIInterface;
};
};
};
Expand Down Expand Up @@ -144,7 +163,7 @@ export declare const InputSchema: {
};
additionalProperties: boolean;
};
export interface RecipeInterface {
export declare type RecipeInterface = {
signUp(input: {
email: string;
password: string;
Expand Down Expand Up @@ -195,7 +214,7 @@ export interface RecipeInterface {
}): Promise<{
status: "OK" | "UNKNOWN_USER_ID_ERROR" | "EMAIL_ALREADY_EXISTS_ERROR";
}>;
}
};
export declare type APIOptions = {
recipeImplementation: RecipeInterface;
emailVerificationRecipeImplementation: EmailVerificationRecipeInterface;
Expand All @@ -205,7 +224,7 @@ export declare type APIOptions = {
req: BaseRequest;
res: BaseResponse;
};
export interface APIInterface {
export declare type APIInterface = {
emailExistsGET:
| undefined
| ((input: {
Expand Down Expand Up @@ -272,4 +291,4 @@ export interface APIInterface {
status: "EMAIL_ALREADY_EXISTS_ERROR";
}
>);
}
};
15 changes: 11 additions & 4 deletions lib/build/recipe/emailverification/recipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ const emailVerify_1 = require("./api/emailVerify");
const recipeImplementation_1 = require("./recipeImplementation");
const implementation_1 = require("./api/implementation");
const querier_1 = require("../../querier");
const supertokens_js_override_1 = require("supertokens-js-override");
class Recipe extends recipeModule_1.default {
constructor(recipeId, appInfo, isInServerlessEnv, config) {
super(recipeId, appInfo);
Expand Down Expand Up @@ -111,10 +112,16 @@ class Recipe extends recipeModule_1.default {
};
this.config = utils_1.validateAndNormaliseUserInput(this, appInfo, config);
this.isInServerlessEnv = isInServerlessEnv;
this.recipeInterfaceImpl = this.config.override.functions(
recipeImplementation_1.default(querier_1.Querier.getNewInstanceOrThrowError(recipeId))
);
this.apiImpl = this.config.override.apis(implementation_1.default());
{
let builder = new supertokens_js_override_1.default(
recipeImplementation_1.default(querier_1.Querier.getNewInstanceOrThrowError(recipeId))
);
this.recipeInterfaceImpl = builder.override(this.config.override.functions).build();
}
{
let builder = new supertokens_js_override_1.default(implementation_1.default());
this.apiImpl = builder.override(this.config.override.apis).build();
}
}
static getInstanceOrThrowError() {
if (Recipe.instance !== undefined) {
Expand Down
23 changes: 15 additions & 8 deletions lib/build/recipe/emailverification/types.d.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,35 @@
// @ts-nocheck
import { BaseRequest, BaseResponse } from "../../framework";
import OverrideableBuilder from "supertokens-js-override";
export declare type TypeInput = {
getEmailForUserId: (userId: string) => Promise<string>;
getEmailVerificationURL?: (user: User) => Promise<string>;
createAndSendCustomEmail?: (user: User, emailVerificationURLWithToken: string) => Promise<void>;
override?: {
functions?: (originalImplementation: RecipeInterface) => RecipeInterface;
apis?: (originalImplementation: APIInterface) => APIInterface;
functions?: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis?: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
};
};
export declare type TypeNormalisedInput = {
getEmailForUserId: (userId: string) => Promise<string>;
getEmailVerificationURL: (user: User) => Promise<string>;
createAndSendCustomEmail: (user: User, emailVerificationURLWithToken: string) => Promise<void>;
override: {
functions: (originalImplementation: RecipeInterface) => RecipeInterface;
apis: (originalImplementation: APIInterface) => APIInterface;
functions: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
};
};
export declare type User = {
id: string;
email: string;
};
export interface RecipeInterface {
export declare type RecipeInterface = {
createEmailVerificationToken(input: {
userId: string;
email: string;
Expand Down Expand Up @@ -59,7 +66,7 @@ export interface RecipeInterface {
}): Promise<{
status: "OK";
}>;
}
};
export declare type APIOptions = {
recipeImplementation: RecipeInterface;
config: TypeNormalisedInput;
Expand All @@ -68,7 +75,7 @@ export declare type APIOptions = {
req: BaseRequest;
res: BaseResponse;
};
export interface APIInterface {
export declare type APIInterface = {
verifyEmailPOST:
| undefined
| ((input: {
Expand Down Expand Up @@ -98,4 +105,4 @@ export interface APIInterface {
}) => Promise<{
status: "EMAIL_ALREADY_VERIFIED_ERROR" | "OK";
}>);
}
};
19 changes: 15 additions & 4 deletions lib/build/recipe/jwt/recipe.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ const implementation_1 = require("./api/implementation");
const constants_1 = require("./constants");
const recipeImplementation_1 = require("./recipeImplementation");
const utils_1 = require("./utils");
const supertokens_js_override_1 = require("supertokens-js-override");
class Recipe extends recipeModule_1.default {
constructor(recipeId, appInfo, isInServerlessEnv, config) {
super(recipeId, appInfo);
Expand All @@ -71,10 +72,20 @@ class Recipe extends recipeModule_1.default {
});
this.config = utils_1.validateAndNormaliseUserInput(this, appInfo, config);
this.isInServerlessEnv = isInServerlessEnv;
this.recipeInterfaceImpl = this.config.override.functions(
recipeImplementation_1.default(querier_1.Querier.getNewInstanceOrThrowError(recipeId), this.config, appInfo)
);
this.apiImpl = this.config.override.apis(implementation_1.default());
{
let builder = new supertokens_js_override_1.default(
recipeImplementation_1.default(
querier_1.Querier.getNewInstanceOrThrowError(recipeId),
this.config,
appInfo
)
);
this.recipeInterfaceImpl = builder.override(this.config.override.functions).build();
}
{
let builder = new supertokens_js_override_1.default(implementation_1.default());
this.apiImpl = builder.override(this.config.override.apis).build();
}
}
/* Init functions */
static getInstanceOrThrowError() {
Expand Down
23 changes: 15 additions & 8 deletions lib/build/recipe/jwt/types.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// @ts-nocheck
import { BaseRequest, BaseResponse } from "../../framework";
import OverrideableBuilder from "supertokens-js-override";
export declare type JsonWebKey = {
kty: string;
kid: string;
Expand All @@ -11,15 +12,21 @@ export declare type JsonWebKey = {
export declare type TypeInput = {
jwtValiditySeconds?: number;
override?: {
functions?: (originalImplementation: RecipeInterface) => RecipeInterface;
apis?: (originalImplementation: APIInterface) => APIInterface;
functions?: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis?: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
};
};
export declare type TypeNormalisedInput = {
jwtValiditySeconds: number;
override: {
functions: (originalImplementation: RecipeInterface) => RecipeInterface;
apis: (originalImplementation: APIInterface) => APIInterface;
functions: (
originalImplementation: RecipeInterface,
builder?: OverrideableBuilder<RecipeInterface>
) => RecipeInterface;
apis: (originalImplementation: APIInterface, builder?: OverrideableBuilder<APIInterface>) => APIInterface;
};
};
export declare type APIOptions = {
Expand All @@ -30,7 +37,7 @@ export declare type APIOptions = {
req: BaseRequest;
res: BaseResponse;
};
export interface RecipeInterface {
export declare type RecipeInterface = {
createJWT(input: {
payload?: any;
validitySeconds?: number;
Expand All @@ -47,8 +54,8 @@ export interface RecipeInterface {
status: "OK";
keys: JsonWebKey[];
}>;
}
export interface APIInterface {
};
export declare type APIInterface = {
getJWKSGET:
| undefined
| ((input: {
Expand All @@ -57,4 +64,4 @@ export interface APIInterface {
status: "OK";
keys: JsonWebKey[];
}>);
}
};
26 changes: 13 additions & 13 deletions lib/build/recipe/session/faunadb/recipeImplementation.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class RecipeImplementation {
}
return constants_1.FAUNADB_TOKEN_TIME_LAG_MILLI;
}
let accessTokenLifetime = yield this.originalImplementation.getAccessTokenLifeTimeMS.bind(this)();
let accessTokenLifetime = yield this.originalImplementation.getAccessTokenLifeTimeMS();
let faunaResponse = yield this.config.faunaDBClient.query(
this.q.Create(this.q.Tokens(), {
instance: this.q.Ref(this.q.Collection(this.config.userCollectionName), userId),
Expand All @@ -69,7 +69,7 @@ class RecipeImplementation {
sessionData[constants_1.FAUNADB_SESSION_KEY] = fdat;
}
return getModifiedSession(
yield this.originalImplementation.createNewSession.bind(this)({
yield this.originalImplementation.createNewSession({
res,
userId,
accessTokenPayload,
Expand All @@ -80,19 +80,19 @@ class RecipeImplementation {
};
this.getSession = function ({ req, res, options }) {
return __awaiter(this, void 0, void 0, function* () {
let originalSession = yield this.originalImplementation.getSession.bind(this)({ req, res, options });
let originalSession = yield this.originalImplementation.getSession({ req, res, options });
if (originalSession === undefined) {
return undefined;
}
return getModifiedSession(originalSession);
});
};
this.getSessionInformation = function ({ sessionHandle }) {
return this.originalImplementation.getSessionInformation.bind(this)({ sessionHandle });
return this.originalImplementation.getSessionInformation({ sessionHandle });
};
this.refreshSession = function ({ req, res }) {
return __awaiter(this, void 0, void 0, function* () {
let originalSession = yield this.originalImplementation.refreshSession.bind(this)({ req, res });
let originalSession = yield this.originalImplementation.refreshSession({ req, res });
let session = getModifiedSession(originalSession);
let fdat = yield this.getFDAT(session.getUserId());
// we do not use the accessFaunaDBTokenFromFrontend boolean here so that
Expand All @@ -110,31 +110,31 @@ class RecipeImplementation {
});
};
this.revokeAllSessionsForUser = function ({ userId }) {
return this.originalImplementation.revokeAllSessionsForUser.bind(this)({ userId });
return this.originalImplementation.revokeAllSessionsForUser({ userId });
};
this.getAllSessionHandlesForUser = function ({ userId }) {
return this.originalImplementation.getAllSessionHandlesForUser.bind(this)({ userId });
return this.originalImplementation.getAllSessionHandlesForUser({ userId });
};
this.revokeSession = function ({ sessionHandle }) {
return this.originalImplementation.revokeSession.bind(this)({ sessionHandle });
return this.originalImplementation.revokeSession({ sessionHandle });
};
this.revokeMultipleSessions = function ({ sessionHandles }) {
return this.originalImplementation.revokeMultipleSessions.bind(this)({ sessionHandles });
return this.originalImplementation.revokeMultipleSessions({ sessionHandles });
};
this.updateSessionData = function ({ sessionHandle, newSessionData }) {
return this.originalImplementation.updateSessionData.bind(this)({ sessionHandle, newSessionData });
return this.originalImplementation.updateSessionData({ sessionHandle, newSessionData });
};
this.updateAccessTokenPayload = function (input) {
return this.originalImplementation.updateAccessTokenPayload.bind(this)(input);
return this.originalImplementation.updateAccessTokenPayload(input);
};
this.getAccessTokenLifeTimeMS = function () {
return __awaiter(this, void 0, void 0, function* () {
return this.originalImplementation.getAccessTokenLifeTimeMS.bind(this)();
return this.originalImplementation.getAccessTokenLifeTimeMS();
});
};
this.getRefreshTokenLifeTimeMS = function () {
return __awaiter(this, void 0, void 0, function* () {
return this.originalImplementation.getRefreshTokenLifeTimeMS.bind(this)();
return this.originalImplementation.getRefreshTokenLifeTimeMS();
});
};
this.originalImplementation = originalImplementation;
Expand Down
Loading