@ya-accelerators/nextjs-framework 0.0.88 → 0.0.90
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.
- package/dist/constants.d.ts +3 -1
- package/dist/constants.js +5 -3
- package/dist/constants.js.map +1 -1
- package/dist/constants.public.d.ts +3 -0
- package/dist/constants.public.js +8 -0
- package/dist/constants.public.js.map +1 -0
- package/dist/env.client.js +1 -1
- package/dist/env.client.js.map +1 -1
- package/dist/env.d.ts +2 -3
- package/dist/env.js +13 -11
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/next-auth/index.js +3 -17
- package/dist/lib/next-auth/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/constants.d.ts
CHANGED
package/dist/constants.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
//
|
|
3
|
-
|
|
1
|
+
export const authConstants = {
|
|
2
|
+
// Refresh the access token this many seconds before its declared expiry, so
|
|
3
|
+
// downstream calls never race the expiry window on long-running requests.
|
|
4
|
+
REFRESH_LEEWAY_SEC: 300,
|
|
5
|
+
};
|
|
4
6
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,4EAA4E;IAC5E,0EAA0E;IAC1E,kBAAkB,EAAE,GAAG;CACxB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const constants = {
|
|
2
|
+
// Shared OAuth dev redirector (see `docker.md § Shared OAuth dev redirector`). In dev, provider OAuth
|
|
3
|
+
// `redirect_uri` points here because providers reject `http://*.orb.local`; the redirector 302s the browser
|
|
4
|
+
// back to the app's local return URL carried in `state`. One shared AWS-hosted instance for every product ×
|
|
5
|
+
// engineer, entity-invariant — a code constant, not env. Only used when DEPLOY_ENV === 'dev'.
|
|
6
|
+
OAUTH_DEV_REDIRECTOR_URL: 'https://jbilvarnjxcewv7spngtoaowia0krqmu.lambda-url.eu-north-1.on.aws/',
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=constants.public.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.public.js","sourceRoot":"","sources":["../../src/constants.public.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,sGAAsG;IACtG,4GAA4G;IAC5G,4GAA4G;IAC5G,8FAA8F;IAC9F,wBAAwB,EAAE,wEAAwE;CACnG,CAAA"}
|
package/dist/env.client.js
CHANGED
|
@@ -3,7 +3,7 @@ import { z } from 'zod';
|
|
|
3
3
|
import { Util } from './util/index';
|
|
4
4
|
export const defaultClientEnv = Util.createEnvProxy(false, z.object({
|
|
5
5
|
NEXT_PUBLIC_DEPLOY_ENV: z.enum(['dev', 'stg', 'prd']),
|
|
6
|
-
NEXT_PUBLIC_LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).optional(),
|
|
6
|
+
NEXT_PUBLIC_LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).optional(), // When unset, the threshold defaults to debug on local dev and info on stg/prd (see logger).
|
|
7
7
|
}), () => ({
|
|
8
8
|
NEXT_PUBLIC_DEPLOY_ENV: process.env.NEXT_PUBLIC_DEPLOY_ENV,
|
|
9
9
|
NEXT_PUBLIC_LOG_LEVEL: process.env.NEXT_PUBLIC_LOG_LEVEL,
|
package/dist/env.client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.client.js","sourceRoot":"","sources":["../../src/env.client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CACjD,KAAK,EACL,CAAC,CAAC,MAAM,CAAC;IACP,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"env.client.js","sourceRoot":"","sources":["../../src/env.client.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CACjD,KAAK,EACL,CAAC,CAAC,MAAM,CAAC;IACP,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrD,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,6FAA6F;CAC5K,CAAC,EACF,GAAG,EAAE,CAAC,CAAC;IACL,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB;IAC1D,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;CACzD,CAAC,CACH,CAAA"}
|
package/dist/env.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
export declare const defaultServerEnv: {
|
|
2
2
|
NODE_ENV: "development" | "production";
|
|
3
3
|
DEPLOY_ENV: "dev" | "stg" | "prd";
|
|
4
|
-
|
|
4
|
+
NEXTAUTH_URL: string;
|
|
5
|
+
NEXTAUTH_SECRET: string;
|
|
5
6
|
LOG_LEVEL?: "error" | "debug" | "info" | "warn" | undefined;
|
|
6
|
-
NEXTAUTH_URL?: string | undefined;
|
|
7
|
-
NEXTAUTH_SECRET?: string | undefined;
|
|
8
7
|
};
|
package/dist/env.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { Util } from './util/index';
|
|
3
3
|
export const defaultServerEnv = Util.createEnvProxy(true, z.object({
|
|
4
|
-
//
|
|
4
|
+
// ---- Common
|
|
5
5
|
NODE_ENV: z.enum(['development', 'production']),
|
|
6
6
|
DEPLOY_ENV: z.enum(['dev', 'stg', 'prd']),
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
NEXTAUTH_SECRET: z.string().optional(),
|
|
7
|
+
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).optional(), // When unset, the threshold defaults to debug on local dev and info on stg/prd (see logger).
|
|
8
|
+
// ---- Package
|
|
9
|
+
NEXTAUTH_URL: z.url(),
|
|
10
|
+
NEXTAUTH_SECRET: z.string().min(1),
|
|
12
11
|
}), () => ({
|
|
13
|
-
//
|
|
12
|
+
// --- Common
|
|
14
13
|
NODE_ENV: process.env.NODE_ENV,
|
|
15
14
|
DEPLOY_ENV: process.env.DEPLOY_ENV,
|
|
16
|
-
NEXT_PHASE: process.env.NEXT_PHASE,
|
|
17
15
|
LOG_LEVEL: process.env.LOG_LEVEL,
|
|
18
|
-
//
|
|
19
|
-
NEXTAUTH_URL: process.env.
|
|
20
|
-
|
|
16
|
+
// ---- Package
|
|
17
|
+
NEXTAUTH_URL: process.env.NEXT_PHASE === 'phase-production-build'
|
|
18
|
+
? process.env.NEXTAUTH_URL || 'https://build-only-not-used-at-runtime.invalid'
|
|
19
|
+
: process.env.NEXTAUTH_URL,
|
|
20
|
+
NEXTAUTH_SECRET: process.env.NEXT_PHASE === 'phase-production-build'
|
|
21
|
+
? process.env.NEXTAUTH_SECRET || 'build-only-not-used-at-runtime'
|
|
22
|
+
: process.env.NEXTAUTH_SECRET,
|
|
21
23
|
}));
|
|
22
24
|
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CACjD,IAAI,EACJ,CAAC,CAAC,MAAM,CAAC;IACP,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAEnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CACjD,IAAI,EACJ,CAAC,CAAC,MAAM,CAAC;IACP,cAAc;IACd,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC/C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,6FAA6F;IAC/J,eAAe;IACf,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE;IACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,CAAC,EACF,GAAG,EAAE,CAAC,CAAC;IACL,aAAa;IACb,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;IAC9B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;IAClC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS;IAChC,eAAe;IACf,YAAY,EACV,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,wBAAwB;QACjD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,gDAAgD;QAC9E,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;IAC9B,eAAe,EACb,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,wBAAwB;QACjD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,gCAAgC;QACjE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe;CAClC,CAAC,CACH,CAAA"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,MAAM,CAAA;AACpB,cAAc,QAAQ,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,OAAO,CAAA;AACrB,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,MAAM,CAAA;AACpB,cAAc,QAAQ,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import CredentialsProvider from 'next-auth/providers/credentials';
|
|
2
|
-
import {
|
|
2
|
+
import { authConstants } from '../../constants';
|
|
3
3
|
import { defaultServerEnv } from '../../env';
|
|
4
4
|
import { logger } from '../../logger';
|
|
5
5
|
// Process-local single-flight for refresh(): concurrent jwt() invocations with
|
|
@@ -21,21 +21,7 @@ const dedupedRefresh = (refreshToken, refresh) => {
|
|
|
21
21
|
};
|
|
22
22
|
export const options = (authorize, refresh, externalAuthorize) => {
|
|
23
23
|
return {
|
|
24
|
-
secret:
|
|
25
|
-
// next build (page-data collection) evaluates this module but never signs anything —
|
|
26
|
-
// the secret is a runtime-only concern (Secrets Manager / dev .env). Build must not require it.
|
|
27
|
-
if (defaultServerEnv.NEXT_PHASE === 'phase-production-build') {
|
|
28
|
-
return defaultServerEnv.NEXTAUTH_SECRET ?? 'build-only-not-used-at-runtime';
|
|
29
|
-
}
|
|
30
|
-
if (!defaultServerEnv.NEXTAUTH_SECRET) {
|
|
31
|
-
throw new Error('NEXTAUTH_SECRET is not set');
|
|
32
|
-
}
|
|
33
|
-
if (defaultServerEnv.DEPLOY_ENV !== 'dev' &&
|
|
34
|
-
defaultServerEnv.NEXTAUTH_SECRET === 'build-only-not-used-at-runtime') {
|
|
35
|
-
throw new Error('NEXTAUTH_SECRET must be replaced with a real secret in non-dev environments');
|
|
36
|
-
}
|
|
37
|
-
return defaultServerEnv.NEXTAUTH_SECRET;
|
|
38
|
-
})(),
|
|
24
|
+
secret: defaultServerEnv.NEXTAUTH_SECRET,
|
|
39
25
|
pages: {
|
|
40
26
|
signIn: '/signin',
|
|
41
27
|
},
|
|
@@ -115,7 +101,7 @@ export const options = (authorize, refresh, externalAuthorize) => {
|
|
|
115
101
|
if (refresh &&
|
|
116
102
|
token.refreshToken &&
|
|
117
103
|
token.expiresAtSec &&
|
|
118
|
-
Date.now() / 1000 >= token.expiresAtSec - REFRESH_LEEWAY_SEC) {
|
|
104
|
+
Date.now() / 1000 >= token.expiresAtSec - authConstants.REFRESH_LEEWAY_SEC) {
|
|
119
105
|
try {
|
|
120
106
|
const refreshed = await dedupedRefresh(token.refreshToken, refresh);
|
|
121
107
|
if (!refreshed) {
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/next-auth/index.ts"],"names":[],"mappings":"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"}
|