@estokad/next 0.1.0
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/LICENSE +17 -0
- package/README.md +96 -0
- package/dist/components.d.ts +58 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +87 -0
- package/dist/components.js.map +1 -0
- package/dist/draft.d.ts +21 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +101 -0
- package/dist/draft.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/overlay-route.d.ts +2 -0
- package/dist/overlay-route.d.ts.map +1 -0
- package/dist/overlay-route.js +38 -0
- package/dist/overlay-route.js.map +1 -0
- package/dist/overlay.bundle.js +535 -0
- package/dist/provider.d.ts +11 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +26 -0
- package/dist/provider.js.map +1 -0
- package/dist/rich-text.d.ts +18 -0
- package/dist/rich-text.d.ts.map +1 -0
- package/dist/rich-text.js +68 -0
- package/dist/rich-text.js.map +1 -0
- package/dist/token.d.ts +23 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +139 -0
- package/dist/token.js.map +1 -0
- package/package.json +56 -0
package/dist/token.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface DraftTokenPayload {
|
|
2
|
+
readonly workspace: string;
|
|
3
|
+
readonly path: string;
|
|
4
|
+
/** Unix epoch seconds. */
|
|
5
|
+
readonly exp: number;
|
|
6
|
+
}
|
|
7
|
+
export interface VerifyResult {
|
|
8
|
+
readonly ok: boolean;
|
|
9
|
+
readonly payload?: DraftTokenPayload;
|
|
10
|
+
readonly reason?: 'malformed' | 'signature_mismatch' | 'expired' | 'workspace_mismatch' | 'path_mismatch';
|
|
11
|
+
}
|
|
12
|
+
export declare function signDraftToken(secret: string, payload: DraftTokenPayload): string;
|
|
13
|
+
export declare function verifyDraftToken(secret: string, token: string, expected?: {
|
|
14
|
+
workspace?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
}): VerifyResult;
|
|
17
|
+
/** Verify an RS256 JWS preview token against the JWKS at `jwksUrl`.
|
|
18
|
+
* Same return shape as `verifyDraftToken` (HMAC). */
|
|
19
|
+
export declare function verifyDraftTokenJwks(jwksUrl: string, token: string, expected?: {
|
|
20
|
+
workspace?: string;
|
|
21
|
+
path?: string;
|
|
22
|
+
}): Promise<VerifyResult>;
|
|
23
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,0BAA0B;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EACZ,WAAW,GACX,oBAAoB,GACpB,SAAS,GACT,oBAAoB,GACpB,eAAe,CAAA;CACpB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAIjF;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,YAAY,CA8Bd;AAkDD;sDACsD;AACtD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,YAAY,CAAC,CAoDvB"}
|
package/dist/token.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// Preview token codecs — HMAC (M3.6b/c) and RS256 JWS (M3.6d).
|
|
2
|
+
//
|
|
3
|
+
// HMAC format: `<b64url(payload)>.<b64url(hmac)>`
|
|
4
|
+
// JWS format: `<b64url(header)>.<b64url(payload)>.<b64url(sig)>`
|
|
5
|
+
// where header.alg = 'RS256' and header.kid identifies
|
|
6
|
+
// the workspace's public key in the JWKS feed.
|
|
7
|
+
//
|
|
8
|
+
// Customers fetch the JWKS once per process (cached for the JWK's
|
|
9
|
+
// Cache-Control TTL) and verify with the matching kid. KMS migration
|
|
10
|
+
// replaces the local PEM with a KMS reference on the API side; the JWKS
|
|
11
|
+
// + JWS shape stays so verifiers don't change.
|
|
12
|
+
//
|
|
13
|
+
// `node:crypto` is fine for both Node and the Edge runtime in Next.js 15
|
|
14
|
+
// (Vercel ships it on Edge; Cloudflare Workers polyfills it). If a
|
|
15
|
+
// customer hits a runtime that lacks it, swap to Web Crypto in a follow-up.
|
|
16
|
+
import { createHmac, createPublicKey, createVerify, timingSafeEqual, } from 'node:crypto';
|
|
17
|
+
export function signDraftToken(secret, payload) {
|
|
18
|
+
const bodyB64 = b64urlEncode(Buffer.from(JSON.stringify(payload), 'utf8'));
|
|
19
|
+
const sigB64 = hmacB64url(secret, bodyB64);
|
|
20
|
+
return `${bodyB64}.${sigB64}`;
|
|
21
|
+
}
|
|
22
|
+
export function verifyDraftToken(secret, token, expected) {
|
|
23
|
+
const parts = token.split('.');
|
|
24
|
+
if (parts.length !== 2)
|
|
25
|
+
return { ok: false, reason: 'malformed' };
|
|
26
|
+
const [bodyB64, sigB64] = parts;
|
|
27
|
+
const expectedSigB64 = hmacB64url(secret, bodyB64);
|
|
28
|
+
// Constant-time compare. Rejecting early on length mismatch is fine —
|
|
29
|
+
// length is part of the public wire format, not the secret.
|
|
30
|
+
const a = Buffer.from(sigB64, 'utf8');
|
|
31
|
+
const b = Buffer.from(expectedSigB64, 'utf8');
|
|
32
|
+
if (a.length !== b.length || !timingSafeEqual(a, b)) {
|
|
33
|
+
return { ok: false, reason: 'signature_mismatch' };
|
|
34
|
+
}
|
|
35
|
+
let payload;
|
|
36
|
+
try {
|
|
37
|
+
payload = JSON.parse(b64urlDecode(bodyB64).toString('utf8'));
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return { ok: false, reason: 'malformed' };
|
|
41
|
+
}
|
|
42
|
+
if (typeof payload.exp !== 'number' || payload.exp < Math.floor(Date.now() / 1000)) {
|
|
43
|
+
return { ok: false, reason: 'expired' };
|
|
44
|
+
}
|
|
45
|
+
if (expected?.workspace && payload.workspace !== expected.workspace) {
|
|
46
|
+
return { ok: false, reason: 'workspace_mismatch' };
|
|
47
|
+
}
|
|
48
|
+
if (expected?.path && payload.path !== expected.path) {
|
|
49
|
+
return { ok: false, reason: 'path_mismatch' };
|
|
50
|
+
}
|
|
51
|
+
return { ok: true, payload };
|
|
52
|
+
}
|
|
53
|
+
function hmacB64url(secret, data) {
|
|
54
|
+
return b64urlEncode(createHmac('sha256', secret).update(data).digest());
|
|
55
|
+
}
|
|
56
|
+
function b64urlEncode(buf) {
|
|
57
|
+
return buf.toString('base64').replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
58
|
+
}
|
|
59
|
+
function b64urlDecode(s) {
|
|
60
|
+
const padded = s.replace(/-/g, '+').replace(/_/g, '/') + '='.repeat((4 - (s.length % 4)) % 4);
|
|
61
|
+
return Buffer.from(padded, 'base64');
|
|
62
|
+
}
|
|
63
|
+
const jwksCache = new Map();
|
|
64
|
+
/** Fetch (or read from cache) the JWKS at the URL and return its keys.
|
|
65
|
+
* Cache TTL respects Cache-Control max-age, default 5 minutes. */
|
|
66
|
+
async function fetchJwks(jwksUrl) {
|
|
67
|
+
const cached = jwksCache.get(jwksUrl);
|
|
68
|
+
if (cached && Date.now() - cached.fetchedAt < cached.maxAgeMs)
|
|
69
|
+
return cached.keys;
|
|
70
|
+
const res = await fetch(jwksUrl, { cache: 'no-store' });
|
|
71
|
+
if (!res.ok)
|
|
72
|
+
throw new Error(`JWKS fetch ${res.status}`);
|
|
73
|
+
const body = (await res.json());
|
|
74
|
+
const keys = body.keys ?? [];
|
|
75
|
+
const cacheControl = res.headers.get('Cache-Control') ?? '';
|
|
76
|
+
const maxAge = /max-age=(\d+)/.exec(cacheControl);
|
|
77
|
+
const maxAgeMs = maxAge ? parseInt(maxAge[1], 10) * 1000 : 300_000;
|
|
78
|
+
jwksCache.set(jwksUrl, { fetchedAt: Date.now(), maxAgeMs, keys });
|
|
79
|
+
return keys;
|
|
80
|
+
}
|
|
81
|
+
/** Verify an RS256 JWS preview token against the JWKS at `jwksUrl`.
|
|
82
|
+
* Same return shape as `verifyDraftToken` (HMAC). */
|
|
83
|
+
export async function verifyDraftTokenJwks(jwksUrl, token, expected) {
|
|
84
|
+
const parts = token.split('.');
|
|
85
|
+
if (parts.length !== 3)
|
|
86
|
+
return { ok: false, reason: 'malformed' };
|
|
87
|
+
const [headerB64, payloadB64, sigB64] = parts;
|
|
88
|
+
let header;
|
|
89
|
+
try {
|
|
90
|
+
header = JSON.parse(b64urlDecode(headerB64).toString('utf8'));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return { ok: false, reason: 'malformed' };
|
|
94
|
+
}
|
|
95
|
+
if (header.alg !== 'RS256' || !header.kid)
|
|
96
|
+
return { ok: false, reason: 'malformed' };
|
|
97
|
+
let keys;
|
|
98
|
+
try {
|
|
99
|
+
keys = await fetchJwks(jwksUrl);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return { ok: false, reason: 'signature_mismatch' };
|
|
103
|
+
}
|
|
104
|
+
const jwk = keys.find((k) => k.kid === header.kid);
|
|
105
|
+
if (!jwk)
|
|
106
|
+
return { ok: false, reason: 'signature_mismatch' };
|
|
107
|
+
let publicKey;
|
|
108
|
+
try {
|
|
109
|
+
// node:crypto's KeyObject supports JWK directly via this overload.
|
|
110
|
+
const nodeJwk = { kty: jwk.kty, n: jwk.n, e: jwk.e };
|
|
111
|
+
publicKey = createPublicKey({ key: nodeJwk, format: 'jwk' });
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return { ok: false, reason: 'signature_mismatch' };
|
|
115
|
+
}
|
|
116
|
+
const ok = createVerify('RSA-SHA256')
|
|
117
|
+
.update(`${headerB64}.${payloadB64}`)
|
|
118
|
+
.verify(publicKey, b64urlDecode(sigB64));
|
|
119
|
+
if (!ok)
|
|
120
|
+
return { ok: false, reason: 'signature_mismatch' };
|
|
121
|
+
let payload;
|
|
122
|
+
try {
|
|
123
|
+
payload = JSON.parse(b64urlDecode(payloadB64).toString('utf8'));
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return { ok: false, reason: 'malformed' };
|
|
127
|
+
}
|
|
128
|
+
if (typeof payload.exp !== 'number' || payload.exp < Math.floor(Date.now() / 1000)) {
|
|
129
|
+
return { ok: false, reason: 'expired' };
|
|
130
|
+
}
|
|
131
|
+
if (expected?.workspace && payload.workspace !== expected.workspace) {
|
|
132
|
+
return { ok: false, reason: 'workspace_mismatch' };
|
|
133
|
+
}
|
|
134
|
+
if (expected?.path && payload.path !== expected.path) {
|
|
135
|
+
return { ok: false, reason: 'path_mismatch' };
|
|
136
|
+
}
|
|
137
|
+
return { ok: true, payload };
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@estokad/next",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Next.js adapter: draft mode helpers, EstokadProvider, auto-tagging Estokad.* components.",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/ELIASspaceMercer/estokad.git",
|
|
10
|
+
"directory": "packages/sdk-next"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://docs.estokad.com/docs/api",
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public"
|
|
15
|
+
},
|
|
16
|
+
"main": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./draft": {
|
|
24
|
+
"types": "./dist/draft.d.ts",
|
|
25
|
+
"import": "./dist/draft.js"
|
|
26
|
+
},
|
|
27
|
+
"./overlay-route": {
|
|
28
|
+
"types": "./dist/overlay-route.d.ts",
|
|
29
|
+
"import": "./dist/overlay-route.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"files": [
|
|
33
|
+
"dist"
|
|
34
|
+
],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@estokad/sdk": "0.1.0"
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"next": "^15.0.0",
|
|
40
|
+
"react": "^19.0.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/node": "^22.10.0",
|
|
44
|
+
"@types/react": "^19.0.0",
|
|
45
|
+
"next": "^15.1.0",
|
|
46
|
+
"react": "^19.0.0",
|
|
47
|
+
"typescript": "^5.7.0",
|
|
48
|
+
"vitest": "^2.1.0"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "tsc -p tsconfig.json && node scripts/vendor-overlay.mjs",
|
|
52
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
53
|
+
"test": "vitest run --passWithNoTests",
|
|
54
|
+
"lint": "eslint ."
|
|
55
|
+
}
|
|
56
|
+
}
|