{"version":3,"sources":["../src/providers/memory.ts","../src/providers/rest.ts"],"names":["DEFAULT_TREE_DEPTH","MerkleTree"],"mappings":"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","file":"chunk-TCR6ZGWP.cjs","sourcesContent":["/**\n * Memory Provider\n *\n * In-memory ASP member storage. Data is lost when the process exits.\n * Use for tests, scripts, and prototyping.\n */\n\nimport { MerkleTree, DEFAULT_TREE_DEPTH } from '../core/tree.js'\nimport type { IASPProvider, MerkleProof } from '../core/types.js'\n\nexport interface MemoryProviderConfig {\n  /** Merkle tree depth (default: 20) */\n  treeDepth?: number\n}\n\nexport class MemoryProvider implements IASPProvider {\n  readonly name = 'Memory'\n  readonly treeDepth: number\n  private members: Set<bigint> = new Set()\n\n  constructor(config?: MemoryProviderConfig) {\n    this.treeDepth = config?.treeDepth ?? DEFAULT_TREE_DEPTH\n  }\n\n  async addMember(identity: bigint): Promise<void> {\n    if (identity === 0n) throw new Error('Identity cannot be zero')\n    this.members.add(identity)\n  }\n\n  async removeMember(identity: bigint): Promise<void> {\n    this.members.delete(identity)\n  }\n\n  async getMembers(): Promise<bigint[]> {\n    return [...this.members]\n  }\n\n  async hasMember(identity: bigint): Promise<boolean> {\n    return this.members.has(identity)\n  }\n\n  async getRoot(): Promise<bigint> {\n    const members = [...this.members]\n    if (members.length === 0) return 0n\n    if (members.length === 1) return members[0]!\n    const tree = this.buildTree(members)\n    return tree.getRoot()\n  }\n\n  async getMerkleProof(identity: bigint): Promise<MerkleProof> {\n    const members = [...this.members]\n    const tree = this.buildTree(members)\n    const index = tree.indexOf(identity)\n    if (index === -1) throw new Error('Identity not found in tree')\n    return tree.getProof(index)\n  }\n\n  private buildTree(members: bigint[]): MerkleTree {\n    const tree = new MerkleTree(this.treeDepth)\n    for (const m of members) {\n      tree.insert(m)\n    }\n    return tree\n  }\n}\n","/**\n * REST Provider\n *\n * Delegates ASP member storage to a backend REST API.\n * Use for production ASP services.\n *\n * Expected API endpoints:\n *   GET    /members           → { members: string[] }\n *   POST   /members           → { identity: string } → 201\n *   DELETE /members/:identity  → 204\n *   GET    /root              → { root: string }\n *   GET    /proof/:identity   → MerkleProof\n */\n\nimport type { IASPProvider, MerkleProof } from '../core/types.js'\nimport { DEFAULT_TREE_DEPTH } from '../core/tree.js'\n\nexport interface RESTProviderConfig {\n  /** Base URL of the ASP backend API */\n  baseUrl: string\n  /** Optional API key for authentication */\n  apiKey?: string\n  /** Merkle tree depth (default: 20) */\n  treeDepth?: number\n  /** Custom fetch implementation (default: global fetch) */\n  fetch?: typeof fetch\n}\n\nexport class RESTProvider implements IASPProvider {\n  readonly name = 'REST API'\n  readonly treeDepth: number\n  private readonly baseUrl: string\n  private readonly headers: Record<string, string>\n  private readonly fetchFn: typeof fetch\n\n  constructor(config: RESTProviderConfig) {\n    this.treeDepth = config.treeDepth ?? DEFAULT_TREE_DEPTH\n    this.baseUrl = config.baseUrl.replace(/\\/$/, '') // strip trailing slash\n    this.headers = {\n      'Content-Type': 'application/json',\n      ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n    }\n    this.fetchFn = config.fetch ?? globalThis.fetch.bind(globalThis)\n  }\n\n  async addMember(identity: bigint): Promise<void> {\n    if (identity === 0n) throw new Error('Identity cannot be zero')\n    const res = await this.fetchFn(`${this.baseUrl}/members`, {\n      method: 'POST',\n      headers: this.headers,\n      body: JSON.stringify({ identity: identity.toString() }),\n    })\n    if (!res.ok) throw new Error(`Failed to add member: ${res.status} ${res.statusText}`)\n  }\n\n  async removeMember(identity: bigint): Promise<void> {\n    const res = await this.fetchFn(`${this.baseUrl}/members/${identity}`, {\n      method: 'DELETE',\n      headers: this.headers,\n    })\n    if (!res.ok) throw new Error(`Failed to remove member: ${res.status} ${res.statusText}`)\n  }\n\n  async getMembers(): Promise<bigint[]> {\n    const res = await this.fetchFn(`${this.baseUrl}/members`, {\n      headers: this.headers,\n    })\n    if (!res.ok) throw new Error(`Failed to get members: ${res.status} ${res.statusText}`)\n    const data = (await res.json()) as { members: string[] }\n    return data.members.map(s => BigInt(s))\n  }\n\n  async hasMember(identity: bigint): Promise<boolean> {\n    const members = await this.getMembers()\n    return members.includes(identity)\n  }\n\n  async getRoot(): Promise<bigint> {\n    const res = await this.fetchFn(`${this.baseUrl}/root`, {\n      headers: this.headers,\n    })\n    if (!res.ok) throw new Error(`Failed to get root: ${res.status} ${res.statusText}`)\n    const data = (await res.json()) as { root: string }\n    return BigInt(data.root)\n  }\n\n  async getMerkleProof(identity: bigint): Promise<MerkleProof> {\n    const res = await this.fetchFn(`${this.baseUrl}/proof/${identity}`, {\n      headers: this.headers,\n    })\n    if (!res.ok) throw new Error(`Failed to get proof: ${res.status} ${res.statusText}`)\n    const data = (await res.json()) as {\n      pathElements: string[]\n      pathIndices: number[]\n      leafIndex: number\n      root: string\n    }\n    return {\n      pathElements: data.pathElements.map(s => BigInt(s)),\n      pathIndices: data.pathIndices,\n      leafIndex: data.leafIndex,\n      root: BigInt(data.root),\n    }\n  }\n}\n"]}