@atproto/identity 0.0.1

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.
Files changed (65) hide show
  1. package/README.md +3 -0
  2. package/babel.config.js +3 -0
  3. package/build.js +23 -0
  4. package/dist/atp-did.d.ts +14 -0
  5. package/dist/atproto-data.d.ts +7 -0
  6. package/dist/base-resolver.d.ts +16 -0
  7. package/dist/did/atproto-data.d.ts +8 -0
  8. package/dist/did/base-resolver.d.ts +15 -0
  9. package/dist/did/did-resolver.d.ts +8 -0
  10. package/dist/did/index.d.ts +5 -0
  11. package/dist/did/logger.d.ts +2 -0
  12. package/dist/did/memory-cache.d.ts +17 -0
  13. package/dist/did/plc-resolver.d.ts +9 -0
  14. package/dist/did/web-resolver.d.ts +9 -0
  15. package/dist/did-cache.d.ts +8 -0
  16. package/dist/errors.d.ts +21 -0
  17. package/dist/handle/index.d.ts +8 -0
  18. package/dist/id-resolver.d.ts +8 -0
  19. package/dist/identity-resolver.d.ts +8 -0
  20. package/dist/index.d.ts +5 -0
  21. package/dist/index.js +28963 -0
  22. package/dist/index.js.map +7 -0
  23. package/dist/logger.d.ts +2 -0
  24. package/dist/memory-cache.d.ts +18 -0
  25. package/dist/plc-resolver.d.ts +9 -0
  26. package/dist/resolver.d.ts +9 -0
  27. package/dist/src/atp-did.d.ts +14 -0
  28. package/dist/src/errors.d.ts +5 -0
  29. package/dist/src/index.d.ts +4 -0
  30. package/dist/src/logger.d.ts +2 -0
  31. package/dist/src/plc/resolver.d.ts +6 -0
  32. package/dist/src/plc-resolver.d.ts +6 -0
  33. package/dist/src/resolver.d.ts +14 -0
  34. package/dist/src/web/db.d.ts +17 -0
  35. package/dist/src/web/resolver.d.ts +6 -0
  36. package/dist/src/web/server.d.ts +18 -0
  37. package/dist/src/web-resolver.d.ts +6 -0
  38. package/dist/tsconfig.build.tsbuildinfo +1 -0
  39. package/dist/types.d.ts +124 -0
  40. package/dist/web-resolver.d.ts +10 -0
  41. package/jest.config.js +6 -0
  42. package/package.json +40 -0
  43. package/src/did/atproto-data.ts +120 -0
  44. package/src/did/base-resolver.ts +91 -0
  45. package/src/did/did-resolver.ts +33 -0
  46. package/src/did/index.ts +5 -0
  47. package/src/did/memory-cache.ts +55 -0
  48. package/src/did/plc-resolver.ts +27 -0
  49. package/src/did/web-resolver.ts +45 -0
  50. package/src/errors.ts +29 -0
  51. package/src/handle/index.ts +60 -0
  52. package/src/id-resolver.ts +14 -0
  53. package/src/index.ts +5 -0
  54. package/src/types.ts +64 -0
  55. package/test.env +2 -0
  56. package/test.log +4816 -0
  57. package/tests/did-cache.test.ts +103 -0
  58. package/tests/did-resolver.test.ts +116 -0
  59. package/tests/handle-resolver.test.ts +65 -0
  60. package/tests/web/db.ts +65 -0
  61. package/tests/web/server.ts +105 -0
  62. package/tsconfig.build.json +4 -0
  63. package/tsconfig.build.tsbuildinfo +1 -0
  64. package/tsconfig.json +13 -0
  65. package/update-pkg.js +14 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # ATP DID Resolver
2
+
3
+ A library for resolving ATP's Decentralized ID methods.
@@ -0,0 +1,3 @@
1
+ module.exports = {
2
+ presets: [['@babel/preset-env']],
3
+ }
package/build.js ADDED
@@ -0,0 +1,23 @@
1
+ const pkgJson = require('@npmcli/package-json')
2
+ const { nodeExternalsPlugin } = require('esbuild-node-externals')
3
+
4
+ const buildShallow =
5
+ process.argv.includes('--shallow') || process.env.ATP_BUILD_SHALLOW === 'true'
6
+
7
+ if (process.argv.includes('--update-main-to-dist')) {
8
+ return pkgJson
9
+ .load(__dirname)
10
+ .then((pkg) => pkg.update({ main: 'dist/index.js' }))
11
+ .then((pkg) => pkg.save())
12
+ }
13
+
14
+ require('esbuild').build({
15
+ logLevel: 'info',
16
+ entryPoints: ['src/index.ts'],
17
+ sourcemap: true,
18
+ bundle: true,
19
+ sourcemap: true,
20
+ outdir: 'dist',
21
+ platform: 'node',
22
+ plugins: buildShallow ? [nodeExternalsPlugin()] : [],
23
+ })
@@ -0,0 +1,14 @@
1
+ import { DIDDocument } from 'did-resolver';
2
+ export declare type AtpData = {
3
+ did: string;
4
+ signingKey: string;
5
+ recoveryKey: string;
6
+ handle: string;
7
+ atpPds: string;
8
+ };
9
+ export declare const getDid: (doc: DIDDocument) => string;
10
+ export declare const getKey: (doc: DIDDocument, id: string) => string | undefined;
11
+ export declare const getHandle: (doc: DIDDocument) => string | undefined;
12
+ export declare const getAtpPds: (doc: DIDDocument) => string | undefined;
13
+ export declare const parseToAtpDocument: (doc: DIDDocument) => Partial<AtpData>;
14
+ export declare const ensureAtpDocument: (doc: DIDDocument) => AtpData;
@@ -0,0 +1,7 @@
1
+ import { DidDocument, AtprotoData } from './types';
2
+ export declare const getDid: (doc: DidDocument) => string;
3
+ export declare const getKey: (doc: DidDocument) => string | undefined;
4
+ export declare const getHandle: (doc: DidDocument) => string | undefined;
5
+ export declare const getPds: (doc: DidDocument) => string | undefined;
6
+ export declare const parseToAtprotoDocument: (doc: DidDocument) => Partial<AtprotoData>;
7
+ export declare const ensureAtpDocument: (doc: DidDocument) => AtprotoData;
@@ -0,0 +1,16 @@
1
+ import { AtprotoData, DidDocument } from './types';
2
+ import { DidCache } from './did-cache';
3
+ export declare abstract class BaseResolver {
4
+ cache?: DidCache | undefined;
5
+ constructor(cache?: DidCache | undefined);
6
+ abstract resolveDidNoCheck(did: string): Promise<unknown | null>;
7
+ validateDidDoc(did: string, val: unknown): DidDocument;
8
+ resolveDidNoCache(did: string): Promise<DidDocument | null>;
9
+ refreshCache(did: string): Promise<void>;
10
+ resolveDid(did: string, forceRefresh?: boolean): Promise<DidDocument | null>;
11
+ ensureResolveDid(did: string, forceRefresh?: boolean): Promise<DidDocument>;
12
+ resolveAtprotoData(did: string, forceRefresh?: boolean): Promise<AtprotoData>;
13
+ resolveAtprotoKey(did: string, forceRefresh?: boolean): Promise<string>;
14
+ verifySignature(did: string, data: Uint8Array, sig: Uint8Array, forceRefresh?: boolean): Promise<boolean>;
15
+ }
16
+ export default BaseResolver;
@@ -0,0 +1,8 @@
1
+ import { DidDocument, AtprotoData } from '../types';
2
+ export declare const getDid: (doc: DidDocument) => string;
3
+ export declare const getKey: (doc: DidDocument) => string | undefined;
4
+ export declare const getHandle: (doc: DidDocument) => string | undefined;
5
+ export declare const getPds: (doc: DidDocument) => string | undefined;
6
+ export declare const getFeedGen: (doc: DidDocument) => string | undefined;
7
+ export declare const parseToAtprotoDocument: (doc: DidDocument) => Partial<AtprotoData>;
8
+ export declare const ensureAtpDocument: (doc: DidDocument) => AtprotoData;
@@ -0,0 +1,15 @@
1
+ import { DidCache, AtprotoData, DidDocument } from '../types';
2
+ export declare abstract class BaseResolver {
3
+ cache?: DidCache | undefined;
4
+ constructor(cache?: DidCache | undefined);
5
+ abstract resolveNoCheck(did: string): Promise<unknown | null>;
6
+ validateDidDoc(did: string, val: unknown): DidDocument;
7
+ resolveNoCache(did: string): Promise<DidDocument | null>;
8
+ refreshCache(did: string): Promise<void>;
9
+ resolve(did: string, forceRefresh?: boolean): Promise<DidDocument | null>;
10
+ ensureResolve(did: string, forceRefresh?: boolean): Promise<DidDocument>;
11
+ resolveAtprotoData(did: string, forceRefresh?: boolean): Promise<AtprotoData>;
12
+ resolveAtprotoKey(did: string, forceRefresh?: boolean): Promise<string>;
13
+ verifySignature(did: string, data: Uint8Array, sig: Uint8Array, forceRefresh?: boolean): Promise<boolean>;
14
+ }
15
+ export default BaseResolver;
@@ -0,0 +1,8 @@
1
+ import { DidResolverOpts } from '../types';
2
+ import BaseResolver from './base-resolver';
3
+ export declare class DidResolver extends BaseResolver {
4
+ methods: Record<string, BaseResolver>;
5
+ constructor(opts: DidResolverOpts);
6
+ resolveNoCheck(did: string): Promise<unknown>;
7
+ }
8
+ export default DidResolver;
@@ -0,0 +1,5 @@
1
+ export * from './web-resolver';
2
+ export * from './plc-resolver';
3
+ export * from './did-resolver';
4
+ export * from './atproto-data';
5
+ export * from './memory-cache';
@@ -0,0 +1,2 @@
1
+ export declare const logger: import("pino").default.Logger<import("pino").default.LoggerOptions>;
2
+ export default logger;
@@ -0,0 +1,17 @@
1
+ import { DidCache, CacheResult, DidDocument } from '../types';
2
+ declare type CacheVal = {
3
+ doc: DidDocument;
4
+ updatedAt: number;
5
+ };
6
+ export declare class MemoryCache implements DidCache {
7
+ staleTTL: number;
8
+ maxTTL: number;
9
+ constructor(staleTTL?: number, maxTTL?: number);
10
+ cache: Map<string, CacheVal>;
11
+ cacheDid(did: string, doc: DidDocument): Promise<void>;
12
+ refreshCache(did: string, getDoc: () => Promise<DidDocument | null>): Promise<void>;
13
+ checkCache(did: string): Promise<CacheResult | null>;
14
+ clearEntry(did: string): Promise<void>;
15
+ clear(): Promise<void>;
16
+ }
17
+ export {};
@@ -0,0 +1,9 @@
1
+ import BaseResolver from './base-resolver';
2
+ import { DidCache } from '../types';
3
+ export declare class DidPlcResolver extends BaseResolver {
4
+ plcUrl: string;
5
+ timeout: number;
6
+ cache?: DidCache | undefined;
7
+ constructor(plcUrl: string, timeout: number, cache?: DidCache | undefined);
8
+ resolveNoCheck(did: string): Promise<unknown>;
9
+ }
@@ -0,0 +1,9 @@
1
+ import BaseResolver from './base-resolver';
2
+ import { DidCache } from '../types';
3
+ export declare const DOC_PATH = "/.well-known/did.json";
4
+ export declare class DidWebResolver extends BaseResolver {
5
+ timeout: number;
6
+ cache?: DidCache | undefined;
7
+ constructor(timeout: number, cache?: DidCache | undefined);
8
+ resolveNoCheck(did: string): Promise<unknown>;
9
+ }
@@ -0,0 +1,8 @@
1
+ import { CacheResult, DidDocument } from './types';
2
+ export declare abstract class DidCache {
3
+ abstract cacheDid(did: string, doc: DidDocument): Promise<void>;
4
+ abstract checkCache(did: string): Promise<CacheResult | null>;
5
+ abstract refreshCache(did: string, getDoc: () => Promise<DidDocument | null>): Promise<void>;
6
+ abstract clearEntry(did: string): Promise<void>;
7
+ abstract clear(): Promise<void>;
8
+ }
@@ -0,0 +1,21 @@
1
+ export declare class DidNotFoundError extends Error {
2
+ did: string;
3
+ constructor(did: string);
4
+ }
5
+ export declare class PoorlyFormattedDidError extends Error {
6
+ did: string;
7
+ constructor(did: string);
8
+ }
9
+ export declare class UnsupportedDidMethodError extends Error {
10
+ did: string;
11
+ constructor(did: string);
12
+ }
13
+ export declare class PoorlyFormattedDidDocumentError extends Error {
14
+ did: string;
15
+ doc: unknown;
16
+ constructor(did: string, doc: unknown);
17
+ }
18
+ export declare class UnsupportedDidWebPathError extends Error {
19
+ did: string;
20
+ constructor(did: string);
21
+ }
@@ -0,0 +1,8 @@
1
+ import { HandleResolverOpts } from '../types';
2
+ export declare class HandleResolver {
3
+ timeout: number;
4
+ constructor(opts?: HandleResolverOpts);
5
+ resolve(handle: string): Promise<string | undefined>;
6
+ resolveDns(handle: string): Promise<string | undefined>;
7
+ resolveHttp(handle: string, signal?: AbortSignal): Promise<string | undefined>;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { HandleResolver } from './handle';
2
+ import DidResolver from './did/did-resolver';
3
+ import { IdentityResolverOpts } from './types';
4
+ export declare class IdResolver {
5
+ handle: HandleResolver;
6
+ did: DidResolver;
7
+ constructor(opts?: IdentityResolverOpts);
8
+ }
@@ -0,0 +1,8 @@
1
+ import { HandleResolver } from './handle';
2
+ import DidResolver from './did/did-resolver';
3
+ import { IdentityResolverOpts } from './types';
4
+ export declare class IdentityResolver {
5
+ handle: HandleResolver;
6
+ did: DidResolver;
7
+ constructor(opts?: Partial<IdentityResolverOpts>);
8
+ }
@@ -0,0 +1,5 @@
1
+ export * from './did';
2
+ export * from './handle';
3
+ export * from './id-resolver';
4
+ export * from './errors';
5
+ export * from './types';