panva/jose
View on GitHub ↗
Unique within the repo — the other 23% repeats across its own files.
Unique across all public code — a further 27% is its own but appears in other public repos too.
Tidy, but not new — the code doesn't repeat itself, yet a large share already exists across other public repos. A strong candidate for pulling from (or publishing as) a shared package.
Worth consolidating — in the code
Real, actionable duplication in this repo's source, most concrete first.
Longest identical blocks
The longest runs of identical consecutive lines copied between two files (indentation ignored) — the most concrete copy-paste. Lift the block into a shared function or module.
| Lines | File A | File B | Cross-repo |
|---|---|---|---|
| 6 | panva/jose/src/jws/compact/verify.ts:15 |
panva/jose/src/jws/flattened/verify.ts:21 |
same repo |
| 6 | panva/jose/src/jws/compact/verify.ts:15 |
panva/jose/src/jws/general/verify.ts:55 |
same repo |
| 6 | panva/jose/src/jws/flattened/verify.ts:21 |
panva/jose/src/jws/general/verify.ts:55 |
same repo |
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 47% | 65 | panva/jose/src/jws/flattened/verify.ts |
panva/jose/src/jws/general/verify.ts |
same repo |
| 69% | 62 | panva/jose/src/jws/compact/verify.ts |
panva/jose/src/jws/flattened/verify.ts |
same repo |
| 41% | 62 | panva/jose/src/jws/compact/verify.ts |
panva/jose/src/jws/general/verify.ts |
same repo |
Duplicate declarations
The same function, variable, class, or type name declared in more than one file — a fast copy-paste signal. Consider extracting a shared definition.
| Files | Declaration | Where |
|---|---|---|
| 8 | fn title |
panva/jose/tap/aes.tspanva/jose/tap/aeskw.tspanva/jose/tap/ecdh.ts+5 more |
| 3 | fn supported |
panva/jose/src/lib/deflate.tspanva/jose/tap/cookbook.tspanva/jose/tap/env.ts |
| 3 | fn testJWTsetFunction |
panva/jose/test/jwt/encrypt.test.tspanva/jose/test/jwt/sign.test.tspanva/jose/test/jwt/unsecured.test.ts |
| 3 | type Vector |
panva/jose/tap/ecdh.tspanva/jose/tap/jwk.tspanva/jose/tap/pem.ts |
| 2 | fn encode |
panva/jose/src/lib/buffer_utils.tspanva/jose/src/util/base64url.ts |
| 2 | type Equals |
panva/jose/test-d/api.tspanva/jose/test-d/fallback.ts |
| 2 | type ExtractableKeyObject |
panva/jose/src/key/export.tspanva/jose/src/lib/asn1.ts |
| 2 | fn failingNumericDate |
panva/jose/test/jwt/decrypt.test.tspanva/jose/test/jwt/verify.test.ts |
| 2 | fn generateKeyPair |
panva/jose/src/key/generate_key_pair.tspanva/jose/test/jwe/integrated_encryption.test.ts |
| 2 | fn getKeys |
panva/jose/tap/encrypt.tspanva/jose/tap/sign.ts |
| 2 | fn isKeyPair |
panva/jose/tap/encrypt.tspanva/jose/tap/sign.ts |
| 2 | fn jwkWithProps |
panva/jose/tap/encrypt.tspanva/jose/tap/sign.ts |
| 2 | type JWSAlgorithm |
panva/jose/src/lib/jws_algorithms.tspanva/jose/src/types.d.ts |
| 2 | fn jwt |
panva/jose/tap/encrypt.tspanva/jose/tap/sign.ts |
| 2 | type keyType |
panva/jose/tap/encrypt.tspanva/jose/tap/sign.ts |
| 2 | fn numericDateNumber |
panva/jose/test/jwt/decrypt.test.tspanva/jose/test/jwt/verify.test.ts |
| 2 | fn pubjwk |
panva/jose/test/jwk/embedded.test.tspanva/jose/test/jws/restrictions.test.ts |
| 2 | fn secretsFor |
panva/jose/tap/aes.tspanva/jose/tap/aeskw.ts |
| 2 | fn tamper |
panva/jose/test/jwe/integrated_encryption.test.tspanva/jose/test/property.test.ts |
| 2 | fn transform |
panva/jose/src/lib/deflate.tspanva/jose/tools/declaration-comments.js |
Docs & prose
Near-identical documentation — often translations (e.g. README.md ⇄ README_zh-CN.md) or mirrored guides. Usually intentional, not cleanup — listed separately so it doesn't inflate the code signal above.
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 62% | 364 | panva/jose/README.md |
panva/jose/docs/README.md |
same repo |
| 55% | 270 | panva/jose/docs/jwt/encrypt/classes/EncryptJWT.md |
panva/jose/docs/jwt/sign/classes/SignJWT.md |
same repo |
| 54% | 233 | panva/jose/docs/jwt/sign/classes/SignJWT.md |
panva/jose/docs/jwt/unsecured/classes/UnsecuredJWT.md |
same repo |
| 53% | 232 | panva/jose/docs/jwt/encrypt/classes/EncryptJWT.md |
panva/jose/docs/jwt/unsecured/classes/UnsecuredJWT.md |
same repo |
| 65% | 192 | panva/jose/docs/jwt/unsecured/classes/UnsecuredJWT.md |
panva/jose/docs/types/interfaces/ProduceJWT.md |
same repo |
| 50% | 192 | panva/jose/docs/jwt/sign/classes/SignJWT.md |
panva/jose/docs/types/interfaces/ProduceJWT.md |
same repo |
| 49% | 192 | panva/jose/docs/jwt/encrypt/classes/EncryptJWT.md |
panva/jose/docs/types/interfaces/ProduceJWT.md |
same repo |
| 76% | 190 | panva/jose/docs/jwt/decrypt/interfaces/JWTDecryptOptions.md |
panva/jose/docs/jwt/verify/interfaces/JWTVerifyOptions.md |
same repo |
| 70% | 186 | panva/jose/docs/jwe/compact/encrypt/classes/CompactEncrypt.md |
panva/jose/docs/jwe/flattened/encrypt/classes/FlattenedEncrypt.md |
same repo |
| 53% | 166 | panva/jose/docs/jwt/decrypt/functions/jwtDecrypt.md |
panva/jose/docs/jwt/verify/functions/jwtVerify.md |
same repo |
| 71% | 165 | panva/jose/docs/jwe/flattened/decrypt/functions/flattenedDecrypt.md |
panva/jose/docs/jwe/general/decrypt/functions/generalDecrypt.md |
same repo |
| 65% | 165 | panva/jose/docs/jws/flattened/verify/functions/flattenedVerify.md |
panva/jose/docs/jws/general/verify/functions/generalVerify.md |
same repo |
| 58% | 165 | panva/jose/docs/jwe/flattened/encrypt/classes/FlattenedEncrypt.md |
panva/jose/docs/jwe/general/encrypt/classes/GeneralEncrypt.md |
same repo |
| 68% | 163 | panva/jose/docs/jws/compact/verify/functions/compactVerify.md |
panva/jose/docs/jws/general/verify/functions/generalVerify.md |
same repo |
| 77% | 162 | panva/jose/docs/jws/compact/verify/functions/compactVerify.md |
panva/jose/docs/jws/flattened/verify/functions/flattenedVerify.md |
same repo |
| 96% | 159 | panva/jose/docs/types/interfaces/CompactJWEHeaderParameters.md |
panva/jose/docs/types/interfaces/JWEHeaderParameters.md |
same repo |
| 97% | 157 | panva/jose/docs/types/interfaces/CompactJWSHeaderParameters.md |
panva/jose/docs/types/interfaces/JWSHeaderParameters.md |
same repo |
| 94% | 155 | panva/jose/docs/types/interfaces/JWSHeaderParameters.md |
panva/jose/docs/types/interfaces/JWTHeaderParameters.md |
same repo |
| 93% | 155 | panva/jose/docs/types/interfaces/CompactJWSHeaderParameters.md |
panva/jose/docs/types/interfaces/JWTHeaderParameters.md |
same repo |
| 74% | 152 | panva/jose/docs/jwe/compact/decrypt/functions/compactDecrypt.md |
panva/jose/docs/jwe/flattened/decrypt/functions/flattenedDecrypt.md |
same repo |
Largest files
Largest files
| LOC | File | Status |
|---|---|---|
| 2446 | panva/jose/CHANGELOG.md | indexed |
| 990 | panva/jose/src/types.d.ts | indexed |
| 714 | panva/jose/test/jwe/general.test.ts | indexed |
| 689 | panva/jose/src/util/errors.ts | indexed |
| 671 | panva/jose/test/jwe/flattened.decrypt.test.ts | indexed |
| 670 | panva/jose/cookbook/jwe.mjs | indexed |
| 628 | panva/jose/test/jwt/verify.test.ts | indexed |
| 610 | panva/jose/test/jwks/remote.test.ts | indexed |
| 603 | panva/jose/test/jwe/flattened.encrypt.test.ts | indexed |
| 546 | panva/jose/src/jwks/remote.ts | indexed |