@ya-accelerators/nextjs-framework 0.0.60 → 0.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,4 +5,4 @@ export type TokenSet = {
5
5
  expiresAtSec: number;
6
6
  scope?: string;
7
7
  };
8
- export declare const options: (authorize?: (email: string, password: string, params?: string) => Promise<TokenSet | undefined>, refresh?: (refreshToken: string) => Promise<TokenSet | undefined>) => NextAuthOptions;
8
+ export declare const options: (authorize?: (email: string, password: string) => Promise<TokenSet | undefined>, refresh?: (refreshToken: string) => Promise<TokenSet | undefined>, externalAuthorize?: (credential: string) => Promise<TokenSet | undefined>) => NextAuthOptions;
@@ -19,7 +19,7 @@ const dedupedRefresh = (refreshToken, refresh) => {
19
19
  inflightRefreshes.set(refreshToken, p);
20
20
  return p;
21
21
  };
22
- export const options = (authorize, refresh) => ({
22
+ export const options = (authorize, refresh, externalAuthorize) => ({
23
23
  secret: (() => {
24
24
  if (!defaultServerEnv.NEXTAUTH_SECRET)
25
25
  throw new Error('NEXTAUTH_SECRET is not set');
@@ -42,22 +42,28 @@ export const options = (authorize, refresh) => ({
42
42
  credentials: {
43
43
  email: { type: 'email' },
44
44
  password: { type: 'password' },
45
- params: { type: 'object' },
45
+ credential: { type: 'text' },
46
46
  },
47
47
  async authorize(credentials) {
48
48
  if (!credentials) {
49
49
  return null;
50
50
  }
51
- if (!authorize) {
52
- return null;
53
- }
54
51
  try {
55
- const ret = await authorize(credentials.email, credentials.password, credentials.params);
56
- if (!ret) {
52
+ // Route an app-supplied opaque credential (e.g. a MicroHub OIDC broker
53
+ // one-time code) through externalAuthorize; otherwise fall back to the
54
+ // email/password path. Either callback maps to a TokenSet or undefined.
55
+ let tokenSet;
56
+ if (credentials.credential && externalAuthorize) {
57
+ tokenSet = await externalAuthorize(credentials.credential);
58
+ }
59
+ else if (authorize) {
60
+ tokenSet = await authorize(credentials.email, credentials.password);
61
+ }
62
+ if (!tokenSet) {
57
63
  return null;
58
64
  }
59
65
  return {
60
- tokenSet: ret,
66
+ tokenSet,
61
67
  };
62
68
  }
63
69
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/next-auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/next-auth/index.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,iCAAiC,CAAA;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AASrC,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAyC,CAAA;AAE1E,MAAM,cAAc,GAAG,CACrB,YAAoB,EACpB,OAAgE,EACjC,EAAE;IACjC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IACF,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,SAA8E,EAC9E,OAAiE,EACjE,iBAAyE,EACxD,EAAE,CAAC,CAAC;IACrB,MAAM,EAAE,CAAC,GAAG,EAAE;QACZ,IAAI,CAAC,gBAAgB,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;QACpF,IACE,gBAAgB,CAAC,UAAU,KAAK,wBAAwB;YACxD,gBAAgB,CAAC,UAAU,KAAK,KAAK;YACrC,gBAAgB,CAAC,eAAe,KAAK,gCAAgC,EACrE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAChG,CAAC;QACD,OAAO,gBAAgB,CAAC,eAAe,CAAA;IACzC,CAAC,CAAC,EAAE;IACJ,KAAK,EAAE;QACL,MAAM,EAAE,SAAS;KAClB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QACzB,QAAQ,EAAE,KAAK;KAChB;IACD,SAAS,EAAE;QACT,mBAAmB,CAAC;YAClB,WAAW,EAAE;gBACX,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;gBACxB,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;aAC7B;YACD,KAAK,CAAC,SAAS,CAAC,WAAW;gBACzB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,IAAI,CAAC;oBACH,uEAAuE;oBACvE,uEAAuE;oBACvE,wEAAwE;oBACxE,IAAI,QAA8B,CAAA;oBAClC,IAAI,WAAW,CAAC,UAAU,IAAI,iBAAiB,EAAE,CAAC;wBAChD,QAAQ,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;oBAC5D,CAAC;yBAAM,IAAI,SAAS,EAAE,CAAC;wBACrB,QAAQ,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;oBACrE,CAAC;oBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,IAAI,CAAA;oBACb,CAAC;oBACD,OAAO;wBACL,QAAQ;qBACD,CAAA;gBACX,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,uEAAuE;oBACvE,0EAA0E;oBAC1E,qEAAqE;oBACrE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;oBAChD,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;SACF,CAAC;KACH;IACD,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;YAC9B,IAAI,KAAK,EAAE,WAAW,EAAE,CAAC;gBACvB,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;YACzC,CAAC;YACD,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC7B,CAAC;YACD,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YAC7B,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7B,yEAAyE;YACzE,qCAAqC;YACrC,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAA;gBAC7C,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA;gBAC/C,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA;gBAC/C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;gBACjC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;gBACvB,OAAO,KAAK,CAAA;YACd,CAAC;YACD,sEAAsE;YACtE,mEAAmE;YACnE,uEAAuE;YACvE,uEAAuE;YACvE,qEAAqE;YACrE,kBAAkB;YAClB,IACE,OAAO;gBACP,KAAK,CAAC,YAAY;gBAClB,KAAK,CAAC,YAAY;gBAClB,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,YAAY,GAAG,kBAAkB,EAC5D,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;oBACnE,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAA;oBAChF,CAAC;oBACD,OAAO;wBACL,GAAG,KAAK;wBACR,WAAW,EAAE,SAAS,CAAC,WAAW;wBAClC,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,KAAK,EAAE,SAAS,CAAC,KAAK;wBACtB,KAAK,EAAE,SAAS;qBACjB,CAAA;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC9C,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAA;gBAChF,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,GAAG,OAAO,GAAG,GAAG,EAAE,CAAA;YAC3B,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;YAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;YACxE,OAAO,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;QACpF,CAAC;KACF;CACF,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,64 @@
1
+ // next-intl/server ships untransformed ESM; options() pulls it in transitively
2
+ // through the Util barrel (env → util → util/date). Mock it so the module graph
3
+ // loads — these bindings are never exercised by the routing tests below.
4
+ jest.mock('next-intl/server', () => ({
5
+ getTimeZone: jest.fn(),
6
+ getTranslations: jest.fn(),
7
+ }));
8
+ // options() eagerly reads defaultServerEnv (server proxy) when building the config:
9
+ // it validates NODE_ENV / DEPLOY_ENV against the framework enums and requires a
10
+ // NEXTAUTH_SECRET. jest defaults NODE_ENV to 'test' (rejected by the enum), so pin
11
+ // the env to valid values before any options() call. NODE_ENV is a read-only typed
12
+ // property, so assign through Object.assign.
13
+ Object.assign(process.env, {
14
+ NODE_ENV: 'development',
15
+ DEPLOY_ENV: 'dev',
16
+ NEXTAUTH_SECRET: 'test-secret-not-used-at-runtime',
17
+ });
18
+ import { options } from './index';
19
+ const tokenSet = {
20
+ accessToken: 'access',
21
+ refreshToken: 'refresh',
22
+ expiresAtSec: 1_000,
23
+ scope: 'read',
24
+ };
25
+ // next-auth's CredentialsProvider wraps our config: at runtime the real authorize
26
+ // lives on provider.options (the published type declares it at the top level).
27
+ const getAuthorize = (authorize, externalAuthorize) => {
28
+ const provider = options(authorize, undefined, externalAuthorize).providers[0];
29
+ return provider.options.authorize;
30
+ };
31
+ const req = {};
32
+ describe('Lib.nextAuth options() authorize routing', () => {
33
+ test('routes a non-empty credential to externalAuthorize', async () => {
34
+ const externalAuthorize = jest.fn(async () => tokenSet);
35
+ const authorize = jest.fn(async () => undefined);
36
+ const result = await getAuthorize(authorize, externalAuthorize)({ email: '', password: '', credential: 'one-time-code' }, req);
37
+ expect(externalAuthorize).toHaveBeenCalledWith('one-time-code');
38
+ expect(authorize).not.toHaveBeenCalled();
39
+ expect(result).toEqual({ tokenSet });
40
+ });
41
+ test('routes email/password to authorize when credential is empty', async () => {
42
+ const externalAuthorize = jest.fn(async () => undefined);
43
+ const authorize = jest.fn(async () => tokenSet);
44
+ const result = await getAuthorize(authorize, externalAuthorize)({ email: 'a@example.com', password: 'pw', credential: '' }, req);
45
+ expect(authorize).toHaveBeenCalledWith('a@example.com', 'pw');
46
+ expect(externalAuthorize).not.toHaveBeenCalled();
47
+ expect(result).toEqual({ tokenSet });
48
+ });
49
+ test('falls back to authorize when credential is present but externalAuthorize is not wired', async () => {
50
+ const authorize = jest.fn(async () => tokenSet);
51
+ const result = await getAuthorize(authorize, undefined)({ email: 'a@example.com', password: 'pw', credential: 'ignored-code' }, req);
52
+ expect(authorize).toHaveBeenCalledWith('a@example.com', 'pw');
53
+ expect(result).toEqual({ tokenSet });
54
+ });
55
+ test('returns null when the routed callback yields undefined', async () => {
56
+ const result = await getAuthorize(async () => undefined, undefined)({ email: 'a@example.com', password: 'pw', credential: '' }, req);
57
+ expect(result).toBeNull();
58
+ });
59
+ test('returns null when no applicable callback is wired', async () => {
60
+ const result = await getAuthorize(undefined, undefined)({ email: '', password: '', credential: 'code' }, req);
61
+ expect(result).toBeNull();
62
+ });
63
+ });
64
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/lib/next-auth/index.test.ts"],"names":[],"mappings":"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"}