@lowerdeck/sign 1.0.3 → 1.0.4
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/package.json +11 -5
- package/.turbo/turbo-build.log +0 -13
- package/.turbo/turbo-test.log +0 -73
- package/CHANGELOG.md +0 -28
- package/dist/index.modern.js +0 -2
- package/dist/index.modern.js.map +0 -1
- package/tsconfig.json +0 -8
package/package.json
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lowerdeck/sign",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
|
+
"files": [
|
|
8
|
+
"src/**",
|
|
9
|
+
"dist/**",
|
|
10
|
+
"README.md",
|
|
11
|
+
"package.json"
|
|
12
|
+
],
|
|
7
13
|
"author": "Tobias Herber",
|
|
8
14
|
"license": "Apache 2",
|
|
9
15
|
"type": "module",
|
|
@@ -21,15 +27,15 @@
|
|
|
21
27
|
"scripts": {
|
|
22
28
|
"test": "vitest run --passWithNoTests",
|
|
23
29
|
"lint": "prettier src/**/*.ts --check",
|
|
24
|
-
"build": "microbundle"
|
|
30
|
+
"build": "rm -rf ./dist && microbundle"
|
|
25
31
|
},
|
|
26
32
|
"dependencies": {
|
|
27
|
-
"@lowerdeck/base62": "^1.0.
|
|
28
|
-
"@lowerdeck/id": "^1.0.
|
|
33
|
+
"@lowerdeck/base62": "^1.0.4",
|
|
34
|
+
"@lowerdeck/id": "^1.0.5"
|
|
29
35
|
},
|
|
30
36
|
"devDependencies": {
|
|
31
37
|
"microbundle": "^0.15.1",
|
|
32
|
-
"@lowerdeck/tsconfig": "^1.0.
|
|
38
|
+
"@lowerdeck/tsconfig": "^1.0.1",
|
|
33
39
|
"typescript": "5.8.2",
|
|
34
40
|
"vitest": "^3.1.2"
|
|
35
41
|
}
|
package/.turbo/turbo-build.log
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[0m[2m[35m$[0m [2m[1mmicrobundle[0m
|
|
3
|
-
No name was provided for external module '@lowerdeck/base62' in output.globals – guessing 'base62'
|
|
4
|
-
No name was provided for external module '@lowerdeck/id' in output.globals – guessing 'id'
|
|
5
|
-
[34mBuild "@lowerdeck/sign" to dist:[39m
|
|
6
|
-
[32m683 B[39m: [37mindex.cjs[39m.gz
|
|
7
|
-
[32m608 B[39m: [37mindex.cjs[39m.br
|
|
8
|
-
[32m581 B[39m: [37mindex.module.js[39m.gz
|
|
9
|
-
[32m532 B[39m: [37mindex.module.js[39m.br
|
|
10
|
-
[32m694 B[39m: [37mindex.module.js[39m.gz
|
|
11
|
-
[32m628 B[39m: [37mindex.module.js[39m.br
|
|
12
|
-
[32m776 B[39m: [37mindex.umd.js[39m.gz
|
|
13
|
-
[32m700 B[39m: [37mindex.umd.js[39m.br
|
package/.turbo/turbo-test.log
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
[0m[2m[35m$[0m [2m[1mvitest run --passWithNoTests[0m
|
|
3
|
-
[?25l
|
|
4
|
-
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/Users/tobias/code/metorial/metorial-enterprise/oss/src/packages/backend/sign[39m
|
|
5
|
-
|
|
6
|
-
[?2026h
|
|
7
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m [queued][22m
|
|
8
|
-
|
|
9
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
10
|
-
[2m Tests [22m[1m[32m0 passed[39m[22m[90m (0)[39m
|
|
11
|
-
[2m Start at [22m10:23:52
|
|
12
|
-
[2m Duration [22m101ms
|
|
13
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
14
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 1/4[22m
|
|
15
|
-
|
|
16
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
17
|
-
[2m Tests [22m[1m[32m1 passed[39m[22m[90m (4)[39m
|
|
18
|
-
[2m Start at [22m10:23:52
|
|
19
|
-
[2m Duration [22m306ms
|
|
20
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
21
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 1/4[22m
|
|
22
|
-
|
|
23
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
24
|
-
[2m Tests [22m[1m[32m1 passed[39m[22m[90m (4)[39m
|
|
25
|
-
[2m Start at [22m10:23:52
|
|
26
|
-
[2m Duration [22m910ms
|
|
27
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
28
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 1/4[22m
|
|
29
|
-
|
|
30
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
31
|
-
[2m Tests [22m[1m[32m1 passed[39m[22m[90m (4)[39m
|
|
32
|
-
[2m Start at [22m10:23:52
|
|
33
|
-
[2m Duration [22m1.92s
|
|
34
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
35
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 2/4[22m
|
|
36
|
-
|
|
37
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
38
|
-
[2m Tests [22m[1m[32m2 passed[39m[22m[90m (4)[39m
|
|
39
|
-
[2m Start at [22m10:23:52
|
|
40
|
-
[2m Duration [22m2.22s
|
|
41
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
42
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 2/4[22m
|
|
43
|
-
|
|
44
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
45
|
-
[2m Tests [22m[1m[32m2 passed[39m[22m[90m (4)[39m
|
|
46
|
-
[2m Start at [22m10:23:52
|
|
47
|
-
[2m Duration [22m2.93s
|
|
48
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
49
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 2/4[22m
|
|
50
|
-
|
|
51
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
52
|
-
[2m Tests [22m[1m[32m2 passed[39m[22m[90m (4)[39m
|
|
53
|
-
[2m Start at [22m10:23:52
|
|
54
|
-
[2m Duration [22m3.94s
|
|
55
|
-
[?2026l[?2026h[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K
|
|
56
|
-
[1m[33m ❯ [39m[22msrc/sign.test.ts[2m 3/4[22m
|
|
57
|
-
|
|
58
|
-
[2m Test Files [22m[1m[32m0 passed[39m[22m[90m (1)[39m
|
|
59
|
-
[2m Tests [22m[1m[32m3 passed[39m[22m[90m (4)[39m
|
|
60
|
-
[2m Start at [22m10:23:52
|
|
61
|
-
[2m Duration [22m4.24s
|
|
62
|
-
[?2026l[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K[1A[K [32m✓[39m src/sign.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 4008[2mms[22m[39m
|
|
63
|
-
[32m✓[39m sign[2m > [22msign + verify[32m 3[2mms[22m[39m
|
|
64
|
-
[33m[2m✓[22m[39m sign[2m > [22mexpired [33m 2002[2mms[22m[39m
|
|
65
|
-
[33m[2m✓[22m[39m sign[2m > [22macceptExpired [33m 2003[2mms[22m[39m
|
|
66
|
-
[32m✓[39m sign[2m > [22mstart with prefix[32m 0[2mms[22m[39m
|
|
67
|
-
|
|
68
|
-
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
69
|
-
[2m Tests [22m [1m[32m4 passed[39m[22m[90m (4)[39m
|
|
70
|
-
[2m Start at [22m 10:23:52
|
|
71
|
-
[2m Duration [22m 4.31s[2m (transform 77ms, setup 0ms, collect 96ms, tests 4.01s, environment 0ms, prepare 53ms)[22m
|
|
72
|
-
|
|
73
|
-
[?25h
|
package/CHANGELOG.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# @lowerdeck/sign
|
|
2
|
-
|
|
3
|
-
## 1.0.3
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Fix default entry point
|
|
8
|
-
- Updated dependencies
|
|
9
|
-
- @lowerdeck/base62@1.0.3
|
|
10
|
-
- @lowerdeck/id@1.0.4
|
|
11
|
-
|
|
12
|
-
## 1.0.2
|
|
13
|
-
|
|
14
|
-
### Patch Changes
|
|
15
|
-
|
|
16
|
-
- update versions
|
|
17
|
-
- Updated dependencies
|
|
18
|
-
- @lowerdeck/base62@1.0.2
|
|
19
|
-
- @lowerdeck/id@1.0.3
|
|
20
|
-
|
|
21
|
-
## 1.0.1
|
|
22
|
-
|
|
23
|
-
### Patch Changes
|
|
24
|
-
|
|
25
|
-
- Fix exports
|
|
26
|
-
- Updated dependencies
|
|
27
|
-
- @lowerdeck/base62@1.0.1
|
|
28
|
-
- @lowerdeck/id@1.0.1
|
package/dist/index.modern.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{base62 as e}from"@lowerdeck/base62";import{generatePlainId as t}from"@lowerdeck/id";let r=new Map,a=async e=>{if(r.has(e))return r.get(e);let t=(new TextEncoder).encode(e),a=await crypto.subtle.importKey("raw",t,{name:"HMAC",hash:"SHA-512"},!0,["sign","verify"]);return r.set(e,a),a},i=e=>parseInt(e,36),n=e=>(new TextEncoder).encode(e),s=r=>({sign:async({data:i,expirationMs:s=r.expirationMs})=>{let o=await a(r.key),c=Date.now()+s,y=t(10),w=JSON.stringify([y,i,c]),p=await crypto.subtle.sign("HMAC",o,n(w)),d=e.encode(new Uint8Array(p));return`${r.prefix}${d}_${(e=>e.toString(36))(c)}_${y}`},verify:async({data:t,signature:s,acceptExpired:o=!1})=>{let c=await a(r.key),y=s.slice(r.prefix.length),[w,p,d]=y.split("_"),l=e.decodeRaw(w),f=JSON.stringify([d,t,i(p)]);return!!await crypto.subtle.verify("HMAC",c,l,n(f))&&(!!o||Date.now()<i(p))}}),o={sign:async(t,r)=>{let i=await crypto.subtle.sign("HMAC",await a(r),n(t));return e.encode(new Uint8Array(i))},verify:async(t,r,i)=>{let s=e.decodeRaw(r);return crypto.subtle.verify("HMAC",await a(i),s,n(t))}};export{s as signature,o as signatureBasic};
|
|
2
|
-
//# sourceMappingURL=index.modern.js.map
|
package/dist/index.modern.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.modern.js","sources":["../src/sign.ts"],"sourcesContent":["import { base62 } from '@lowerdeck/base62';\nimport { generatePlainId } from '@lowerdeck/id';\n\nlet importedKeys = new Map<string, CryptoKey>();\nlet importKey = async (keyStr: string) => {\n if (importedKeys.has(keyStr)) return importedKeys.get(keyStr)!;\n\n let encoder = new TextEncoder();\n let secretKeyData = encoder.encode(keyStr);\n let ck = await crypto.subtle.importKey(\n 'raw',\n secretKeyData,\n { name: 'HMAC', hash: 'SHA-512' },\n true,\n ['sign', 'verify']\n );\n\n importedKeys.set(keyStr, ck);\n\n return ck;\n};\n\nlet exp = {\n stringify: (expiry: number) => expiry.toString(36),\n parse: (expiry: string) => parseInt(expiry, 36)\n};\n\nlet encode = (data: string) => new TextEncoder().encode(data);\n\nexport let signature = (opts: { prefix: string; expirationMs: number; key: string }) => ({\n sign: async ({\n data,\n expirationMs = opts.expirationMs\n }: {\n data: string;\n\n expirationMs?: number;\n }) => {\n let key = await importKey(opts.key);\n let expiry = Date.now() + expirationMs;\n\n let id = generatePlainId(10);\n\n let dataToAuthenticate = JSON.stringify([id, data, expiry]);\n let signature = await crypto.subtle.sign('HMAC', key, encode(dataToAuthenticate));\n\n let hmac = base62.encode(new Uint8Array(signature));\n\n return `${opts.prefix}${hmac}_${exp.stringify(expiry)}_${id}`;\n },\n\n verify: async ({\n data,\n signature,\n acceptExpired = false\n }: {\n data: string;\n signature: string;\n acceptExpired?: boolean;\n }) => {\n let key = await importKey(opts.key);\n\n let sigStr = signature.slice(opts.prefix.length);\n let [encodedHmac, expiry, id] = sigStr.split('_');\n\n let hmac = base62.decodeRaw(encodedHmac);\n\n let dataToAuthenticate = JSON.stringify([id, data, exp.parse(expiry)]);\n\n let isValid = await crypto.subtle.verify('HMAC', key, hmac, encode(dataToAuthenticate));\n\n if (!isValid) return false;\n if (acceptExpired) return true;\n\n return Date.now() < exp.parse(expiry);\n }\n});\n\nexport let signatureBasic = {\n sign: async (data: string, key: string) => {\n let signature = await crypto.subtle.sign('HMAC', await importKey(key), encode(data));\n let hmac = base62.encode(new Uint8Array(signature));\n return hmac;\n },\n\n verify: async (data: string, signature: string, key: string) => {\n let hmac = base62.decodeRaw(signature);\n return crypto.subtle.verify('HMAC', await importKey(key), hmac, encode(data));\n }\n};\n"],"names":["importedKeys","Map","importKey","async","has","keyStr","get","secretKeyData","TextEncoder","encode","ck","crypto","subtle","name","hash","set","exp","expiry","parseInt","data","signature","opts","sign","expirationMs","key","Date","now","id","generatePlainId","dataToAuthenticate","JSON","stringify","hmac","base62","Uint8Array","prefix","toString","verify","acceptExpired","sigStr","slice","length","encodedHmac","split","decodeRaw","signatureBasic"],"mappings":"2FAGA,IAAIA,EAAe,IAAIC,IACnBC,EAAYC,UACd,GAAIH,EAAaI,IAAIC,GAAS,OAAOL,EAAaM,IAAID,GAEtD,IACIE,GADU,IAAIC,aACUC,OAAOJ,GAC/BK,QAAWC,OAAOC,OAAOV,UAC3B,MACAK,EACA,CAAEM,KAAM,OAAQC,KAAM,YACtB,EACA,CAAC,OAAQ,WAKX,OAFAd,EAAae,IAAIV,EAAQK,GAElBA,GAGLM,EAEMC,GAAmBC,SAASD,EAAQ,IAG1CR,EAAUU,IAAiB,IAAIX,aAAcC,OAAOU,GAE7CC,EAAaC,IAAiE,CACvFC,KAAMnB,OACJgB,OACAI,aAAAA,EAAeF,EAAKE,iBAMpB,IAAIC,QAAYtB,EAAUmB,EAAKG,KAC3BP,EAASQ,KAAKC,MAAQH,EAEtBI,EAAKC,EAAgB,IAErBC,EAAqBC,KAAKC,UAAU,CAACJ,EAAIR,EAAMF,IAC/CG,QAAkBT,OAAOC,OAAOU,KAAK,OAAQE,EAAKf,EAAOoB,IAEzDG,EAAOC,EAAOxB,OAAO,IAAIyB,WAAWd,IAExC,MAAO,GAAGC,EAAKc,SAASH,KAzBdf,IAAmBA,EAAOmB,SAAS,IAyBbpB,CAAcC,MAAWU,KAG3DU,OAAQlC,OACNgB,OACAC,YACAkB,cAAAA,GAAgB,MAMhB,IAAId,QAAYtB,EAAUmB,EAAKG,KAE3Be,EAASnB,EAAUoB,MAAMnB,EAAKc,OAAOM,SACpCC,EAAazB,EAAQU,GAAMY,EAAOI,MAAM,KAEzCX,EAAOC,EAAOW,UAAUF,GAExBb,EAAqBC,KAAKC,UAAU,CAACJ,EAAIR,EAAMH,EAAUC,KAI7D,cAFoBN,OAAOC,OAAOyB,OAAO,OAAQb,EAAKQ,EAAMvB,EAAOoB,QAG/DS,GAEGb,KAAKC,MAAQV,EAAUC,OAIvB4B,EAAiB,CAC1BvB,KAAMnB,MAAOgB,EAAcK,KACzB,IAAIJ,QAAkBT,OAAOC,OAAOU,KAAK,aAAcpB,EAAUsB,GAAMf,EAAOU,IAE9E,OADWc,EAAOxB,OAAO,IAAIyB,WAAWd,KAI1CiB,OAAQlC,MAAOgB,EAAcC,EAAmBI,KAC9C,IAAIQ,EAAOC,EAAOW,UAAUxB,GAC5B,OAAOT,OAAOC,OAAOyB,OAAO,aAAcnC,EAAUsB,GAAMQ,EAAMvB,EAAOU"}
|