{"_id":"@adfinia/sdk-web","_rev":"11-9f9ee74dcc727f7e93343cdf741552c0","name":"@adfinia/sdk-web","dist-tags":{"latest":"1.5.0"},"versions":{"1.0.0":{"name":"@adfinia/sdk-web","version":"1.0.0","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.0.0","maintainers":[{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"}],"homepage":"https://github.com/infinia-net/adfinia-web-sdk","bugs":{"url":"https://github.com/infinia-net/adfinia-web-sdk/issues"},"dist":{"shasum":"5f3bbcb564ebad14ef8b634f5a2d9aa57de606a7","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.0.0.tgz","fileCount":21,"integrity":"sha512-wo6H+5thGwqZNOTWY4fSkRCKUnii3+kZVvPKZOAopDAh5IV5FVmKm+eJyhYZ5tKZT6agYgLwbMugAtqjlmh0nw==","signatures":[{"sig":"MEYCIQCtozovdSKDW3cyX7VRVxTlL8+6r3rDta/QO4ZAtHc1oQIhAOMRgd1fidekE/hUnDAjBoYw40iypsusPbv4qRItHeCh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269062},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3167abbbcff399889febd1adadf36908cf17c5aa","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/infinia-net/adfinia-web-sdk.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.0.0_1779453898136_0.04479040999636541","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adfinia/sdk-web","version":"1.0.1","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.0.1","maintainers":[{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"54a5523534466f8ca7222752b2a7ba0065a8301a","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.0.1.tgz","fileCount":21,"integrity":"sha512-l5sdvnp+R1tkM8WoijwQ4uU4TorglGW/wUttETDd9jYr+fwG4/iV4JBCUV4eytGyULGqJu07Exa/IgAsVgWdsw==","signatures":[{"sig":"MEUCIQC6u41sBkIxc1x5zi7LUi0JnAYfwaO1ujlMfjtmYNGU0AIgCpRaXKwFhzHeMd5Kuhwcx6TP0K7TuXxjdnRLlGWzQh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273834},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4feb76e9b439a85062dabdd39b6d7919008b25c6","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.0.1_1779454392350_0.8729550760408222","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@adfinia/sdk-web","version":"1.1.0","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.1.0","maintainers":[{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"57644ab8f78adda074fe2cf01b00f91127b11fb4","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.1.0.tgz","fileCount":22,"integrity":"sha512-E5t5AUhgb++S1t0DO3f+XYaCf8XCLBEMznNMhfKJ/pNtFva7Y5hq2blxzG+4xlX4wzLkt0Zs1NrFvTBfkmvXsg==","signatures":[{"sig":"MEUCIC0thv3g/DwufnCjQjbaoeF+f4J+5ENH95yzr5QQeMxRAiEA8xVKpVeY45Vc9by0HzAEK3ijWlDXZ9WLPdZY2lptacE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":292574},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e9c1fcee2664b04ed5b4ce89f16c25d8713861eb","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.1.0_1780387216996_0.3875912428379713","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@adfinia/sdk-web","version":"1.2.0","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.2.0","maintainers":[{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"c6dd6784cf4f14e141aefcc8a490cee827e6d1fa","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.2.0.tgz","fileCount":24,"integrity":"sha512-T8JnXspe2LFvIksyrrCzWgw9hIX4XtcJS5eSf5RrmDH1fi2c1IAMmKvaNq1W6O8a4KDUgMUiCaVL3RI2oJSNJg==","signatures":[{"sig":"MEUCIC+9HBwGeOcbaBIFz0Q35wUF+h8NbJrQtg2kQTbXEXGOAiEAlxzPHZSCmPOBsSHk+AbvBvkgH0Nh0dG0FHCusxgtkmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":494892},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3a30731587b983b86d17e023f5b9c248d73f9e71","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"},"jsdelivr":"./dist/adfinia.iife.js","deprecated":"Superseded by 1.3.0 — dropped v1.1.0 identify fields; upgrade to 1.3.0","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.2.0_1780900766364_0.8388107805639271","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@adfinia/sdk-web","version":"1.3.0","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.3.0","maintainers":[{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"3e174b701a2ea7c2825efdb6b5d1ee0ba665d50a","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.3.0.tgz","fileCount":25,"integrity":"sha512-gOa9staHgyxTuJJaY27eaHOcj52l7OfJQ2XrY+n3HgLor3U6FgrJUiQ/6tIOi0eWH6fk60THiyod/PTu9qCHWA==","signatures":[{"sig":"MEUCIG+QLTbieArpA3ShUxrPOVsncBUC47Vk7oLc3TVlPjPjAiEAqffAIdlYQzrRWNgjcNEgAPzHuhL9jWFg7jfNBYunmBo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":519561},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c64eb9ffde2f821ae5f7b27415fad153a12f776f","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harsh.ganatra@netgroup.ai"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.3.0_1780901345888_0.3261058772461618","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@adfinia/sdk-web","version":"1.3.1","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.3.1","maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"841e0a849ebc2bed876115e940cdcc782346ecc1","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.3.1.tgz","fileCount":25,"integrity":"sha512-AWjRNhR34z/oe8evzHebsZ3pb5zPYzCA/ssykdb4IL4hnFhR14iNl7+D5+sLB1M7iv7D5H9PsCFChcQwrU4upQ==","signatures":[{"sig":"MEUCIQD3sIM3RkAf+wb8B8x329IHm/JB7VbLUxpmK1lFbcUEHAIgDq7dbxNBfHd8wLi1La+QKQMpxpuzvxni0xmujrkUoMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513662},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"787f573c74573dfda68e8ae299f22f71e6a9b1b7","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harshkganatra@gmail.com"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"11.11.1","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.3.1_1782735733646_0.5706214461154291","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@adfinia/sdk-web","version":"1.3.2","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.3.2","maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"e18640c65ee489109eff4fff9d76528dfba67dea","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.3.2.tgz","fileCount":25,"integrity":"sha512-aQXnoas6tW8FvB4u0Pcfte4EyJDmb3caaYU039I+xI7iQJcau0GgtXOBQT/wWwlWSc3L5oG5fWVh1+pu9AEGbw==","signatures":[{"sig":"MEUCIQCGJ1P3euALld2tUUHU0PqB6KkYoxMWsfPU6smS9YTE8wIgCOJi4GrNdXieDByt1vtrB6PnAQHPmQuL34gWCt8Rw+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":514368},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c7c65c2d1a27cb00dba005862ce099fac218887f","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harshkganatra@gmail.com"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.3.2_1782885982326_0.9438830790987693","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@adfinia/sdk-web","version":"1.4.0","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.4.0","maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"dc73c435aacf8d69b13f3b7103d38720bc576b4e","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.4.0.tgz","fileCount":25,"integrity":"sha512-/zUb+q8Bv34koEAECCiRTF7GtRNo/jdV+nzZ0aOmT4NsmLEqTCqvkfmTYuriwPGfKQu3YKK4pk/bW8d+IqZ/sg==","signatures":[{"sig":"MEQCIDuQEakpA70RZPuc0IuWpbF3DVZOuL0q6RiM/7NYzl9lAiB5qlXg6oKkt8QRoSnS0y+mlif5FbdgYlP+efTMAbqePw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":517083},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"cfd4dd560f9aaaab1022c484df8cecf3fc3b3953","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harshkganatra@gmail.com"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.4.0_1784725772281_0.6184125540162582","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@adfinia/sdk-web","version":"1.4.1","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","_id":"@adfinia/sdk-web@1.4.1","maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"homepage":"https://github.com/Adfinia/sdk-web#readme","bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"dist":{"shasum":"f4018478451c1ef67e5271f186fbc258892aba38","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.4.1.tgz","fileCount":25,"integrity":"sha512-WvakqRLChKzrRUF3kDiZHrbjnTKKcaIilwlcWdDhYr2Pbq6UsTqjKU73W7bAor3b+7xKEuQVxKkG/IOD0rWC1Q==","signatures":[{"sig":"MEQCIHIfHTm9Zkswo8p0PwuALdNENAVqgTmoA51Kk6KSTJL3AiBLtwdbARDYU63IFHzgn3YgT1EcWMmPVRWy3C2HLqjvCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551140},"main":"./dist/index.cjs","types":"./dist/index.d.ts","unpkg":"./dist/adfinia.iife.js","module":"./dist/index.js","browser":"./dist/adfinia.iife.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b125a46908ba4f454bc29e07ebd82b0b48f4a30f","scripts":{"dev":"tsup --watch","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","test:watch":"vitest","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"harshganatra93","email":"harshkganatra@gmail.com"},"jsdelivr":"./dist/adfinia.iife.js","repository":{"url":"git+https://github.com/Adfinia/sdk-web.git","type":"git"},"_npmVersion":"10.8.2","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.2","vitest":"^1.6.0","happy-dom":"^14.10.0","typescript":"^5.4.0","@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-web_1.4.1_1784732991984_0.5683330856588074","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@adfinia/sdk-web","version":"1.5.0","description":"Official Adfinia SDK for web — first-party event + identify ingestion.","license":"MIT","author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"homepage":"https://github.com/Adfinia/sdk-web#readme","repository":{"type":"git","url":"git+https://github.com/Adfinia/sdk-web.git"},"bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","browser":"./dist/adfinia.iife.js","unpkg":"./dist/adfinia.iife.js","jsdelivr":"./dist/adfinia.iife.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit && tsc --noEmit -p tsconfig.test.json","lint":"tsc --noEmit","size":"tsup && du -h dist/*.js dist/*.cjs"},"devDependencies":{"@types/node":"^20.11.0","@vitest/coverage-v8":"^1.6.0","happy-dom":"^14.10.0","tsup":"^8.0.2","typescript":"^5.4.0","vitest":"^1.6.0"},"engines":{"node":">=18"},"sideEffects":false,"_id":"@adfinia/sdk-web@1.5.0","gitHead":"4ab5a3bc1de78bce32ec6c014296600b8577857a","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ncxpw2VahI26wYNGuXKZWEfnBBga53UVctMuHv4pPNCYazCXfK7IDzbyvI2K6on9gADkY00/+kGs3L34nT0aBQ==","shasum":"7a4796544b30daf66137bbf637d830b342f488db","tarball":"https://registry.npmjs.org/@adfinia/sdk-web/-/sdk-web-1.5.0.tgz","fileCount":26,"unpackedSize":681553,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHzlC9AmRDv9nzKSVyYLXR6dD0QpJ56/0BIeEC8tjpwUAiEAr7kSZni5te5+2SxAOxbQD/UIwpK2q0PuV7CpO9nP6m8="}]},"_npmUser":{"name":"harshganatra93","email":"harshkganatra@gmail.com"},"directories":{},"maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-web_1.5.0_1784880369218_0.6409440998386249"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-22T12:44:57.891Z","modified":"2026-07-24T08:06:09.579Z","1.0.0":"2026-05-22T12:44:58.316Z","1.0.1":"2026-05-22T12:53:12.496Z","1.1.0":"2026-06-02T08:00:17.124Z","1.2.0":"2026-06-08T06:39:26.497Z","1.3.0":"2026-06-08T06:49:06.055Z","1.3.1":"2026-06-29T12:22:13.827Z","1.3.2":"2026-07-01T06:06:22.524Z","1.4.0":"2026-07-22T13:09:32.446Z","1.4.1":"2026-07-22T15:09:52.134Z","1.5.0":"2026-07-24T08:06:09.424Z"},"bugs":{"url":"https://github.com/Adfinia/sdk-web/issues"},"author":{"name":"Infinia New Emerging Technologies","email":"engineering@adfinia.com"},"license":"MIT","homepage":"https://github.com/Adfinia/sdk-web#readme","keywords":["adfinia","analytics","events","tracking","cdp","identify","sdk"],"repository":{"type":"git","url":"git+https://github.com/Adfinia/sdk-web.git"},"description":"Official Adfinia SDK for web — first-party event + identify ingestion.","maintainers":[{"name":"harshganatra93","email":"harshkganatra@gmail.com"}],"readme":"# @adfinia/sdk-web\n\nAdfinia Web SDK — event + identify ingest for browser apps. Around 19.5 KB minified for the IIFE bundle (~6 KB gzipped); tree-shakes further in modern bundlers.\n\n- Tiny: ESM, CJS, and `<script>`-friendly IIFE builds.\n- Reliable: events buffer to `localStorage` and survive page reloads, crashes, and offline windows. Last-mile delivery uses `navigator.sendBeacon` on tab close so the final batch lands even when the page is unloading.\n- Consent-aware: opt-out by default until your consent callback says yes.\n- Privacy-first context: browser context (page, viewport, locale, referrer, user-agent) is **opt-in** via `autoContext: true`. Default OFF.\n- Typed: full TypeScript types exported.\n\n---\n\n## Install\n\n```bash\nnpm install @adfinia/sdk-web\n# or\npnpm add @adfinia/sdk-web\n# or\nyarn add @adfinia/sdk-web\n```\n\nOr drop the IIFE bundle in via `<script>`:\n\n```html\n<script src=\"https://cdn.adfinia.com/sdk-web/1.1.0/adfinia.iife.js\"></script>\n<script>\n  Adfinia.init({ writeKey: 'pk_live_...' })\n  Adfinia.track('Page Viewed')\n</script>\n```\n\n---\n\n## Quickstart\n\n```ts\nimport { Adfinia } from '@adfinia/sdk-web'\n\nAdfinia.init({\n  writeKey: 'pk_live_your_public_key_here',\n  consent: () => window.__cookieBanner?.allowsAnalytics === true,\n})\n\nAdfinia.identify('cust_42', {\n  email: 'ahmed@example.ae',\n  first_name: 'Ahmed',\n  language: 'en-AE',\n  country: 'AE',\n  city: 'Dubai',\n  source: 'sdk_web',\n  utm_source: 'google',\n  utm_campaign: 'ramadan_2026',\n})\nAdfinia.track('Order Completed', { order_id: 'o_123', total: 49.99 })\nAdfinia.page('Pricing')\n```\n\n### `identify()` traits\n\nThe full `IdentifyTraits` interface (added in `1.1.0`, mirrors the api\n`IdentifyTraits` contract) accepts the following optional fields:\n\n| Field | Type | Notes |\n|-------|------|-------|\n| `email` | `string` | Resolves to an `email` alias on the identity graph. |\n| `phone` | `string` | E.164. Resolves to a `phone` alias. |\n| `device_id` | `string` | Resolves to a `device_id` alias. |\n| `external_id` | `string` | Tenant-side CRM / external system ID. |\n| `first_name` / `last_name` | `string` | |\n| `language` | `string` | BCP 47 — e.g. `en-AE`, `ar-AE`, `hi-IN`. |\n| `timezone` | `string` | IANA — e.g. `Asia/Dubai`. |\n| `country` | `string` | ISO 3166-1 alpha-2 — e.g. `AE`. |\n| `city` | `string` | Free text. |\n| `whatsapp` | `string` | E.164. Separate channel from `phone`. |\n| `gender` | `'male' \\| 'female' \\| 'non_binary' \\| 'prefer_not_to_say'` | |\n| `date_of_birth` | `string` | ISO 8601 date — `YYYY-MM-DD`. |\n| `source` | `IdentifySource` | Closed enum — see `src/types.ts`. Web defaults to `sdk_web` when callers omit it server-side. |\n| `utm_source` / `utm_medium` / `utm_campaign` / `utm_term` / `utm_content` | `string` | First-touch lands on contact creation; last-touch on every Identify carrying any UTM key. |\n| `extra` | `Record<string, string>` | Open-ended bag for tenant-specific custom fields. |\n\nUnset fields are omitted from the JSON body (never `null` / empty\nstring); the server treats them as \"leave existing value alone\".\n\n> **Note on imports.** The named-import form above is the recommended shape and matches the [SDK integration guide](https://docs.adfinia.com/user-guide/sdk-integration#web). The default-import form `import Adfinia from '@adfinia/sdk-web'` is the legacy alias kept for backwards-compat with consumers who started against `1.0.0` (which only shipped the default export). Both forms resolve to the same singleton.\n>\n> For advanced cases that need their own client instance (multi-tenant SSR, isolated test contexts), import the underlying class: `import { AdfiniaClient } from '@adfinia/sdk-web'`.\n\n---\n\n## API reference\n\n| Method | Notes |\n|--------|-------|\n| `Adfinia.init(config)` | One-shot. Subsequent calls are ignored. |\n| `Adfinia.identify(customerId, traits?)` | Customer-id form. |\n| `Adfinia.identify({ customerId, externalId?, anonymousId?, traits?, context? })` | Object form. `externalId` is a tenant-owned stable id (e.g. wallet hash). `context` is merged on top of auto-context. |\n| `Adfinia.track(event, properties?, { context?, externalId? }?)` | Event name + properties + per-call context / external id. |\n| `Adfinia.page(name?, properties?, { context?, externalId? }?)` | Page view. Auto-captures URL/title/referrer if no args. |\n| `Adfinia.screen(name?, properties?, { context?, externalId? }?)` | Parity hook for mobile SDKs; identical to `page()` on web. |\n| `Adfinia.setConsent(channels, status)` | Write-only consent. `channels` is a single channel string or an array; `status` is `'opted_in'` or `'opted_out'`. Channels are open strings (not an enum) - the backend owns the valid-channel registry. Emits one `consent_updated` event with `channels` always an array. No read method by design. |\n| `Adfinia.optIn(channels)` | Shorthand for `setConsent(channels, 'opted_in')`. |\n| `Adfinia.optOut(channels)` | Shorthand for `setConsent(channels, 'opted_out')`. Safe from a GTM tag (`window.Adfinia.optOut(['email','sms'])`); never throws. |\n| `Adfinia.alias(newId, previousId?)` | **Deprecated (no-op).** There is no server-side alias handler; this method does nothing and will be removed in the next major version. Anonymous sessions are promoted to a known customer automatically by `identify()` (the identify event carries the live anonymous_id). |\n| `Adfinia.reset()` | Logout — mints a new anonymous_id and clears external_id. |\n| `Adfinia.flush()` | Promise — drains the queue and resolves when the in-flight batch settles. Use before a critical navigation. |\n| `Adfinia.registerWebPush({ vapidPublicKey, ... })` | Promise — registers a web-push subscription (service worker + permission + PushManager). See [Web push](#web-push). |\n| `Adfinia.notifications.list({ status?, cursor?, limit? })` | Promise — a page of in-app notifications: `{ data, nextCursor, hasMore }`. See [In-app inbox](#in-app-inbox). |\n| `Adfinia.notifications.markRead(id)` | Promise&lt;boolean&gt; — mark one notification read. |\n| `Adfinia.notifications.markAllRead()` | Promise&lt;boolean&gt; — mark all read for the current contact. |\n| `Adfinia.notifications.subscribe(handler, options?)` | Live SSE subscription. Returns `{ unsubscribe() }`. Replays unread on connect. |\n| `Adfinia.notifications.trackOpened(n)` / `trackClicked(n)` | Emit `notification_opened` / `notification_clicked` track events. |\n\n### `AdfiniaConfig`\n\n| Field | Type | Default | Notes |\n|-------|------|---------|-------|\n| `writeKey` | `string` | — | **Required.** Tenant write-only public key (`pk_live_…` / `pk_test_…`). |\n| `host` | `string` | `https://api.adfinia.com` | Override for self-hosted ingress. |\n| `debug` | `boolean` | `false` | Log SDK internals to `console.debug`. |\n| `consent` | `() => boolean` | undefined | Consent gate. Returning `false` drops events silently. |\n| `autoContext` | `boolean` | `false` | Opt in to automatic browser-context enrichment (page_path, page_url, referrer, user_agent, locale, timezone, viewport, screen_resolution) **plus first-touch acquisition** (UTM tags, ad click IDs, landing page). Off by default — privacy-first. |\n| `autoPage` | `boolean` | `true` | Auto-fire `page()` on load + SPA route change (pushState/replaceState/popstate). Set `false` to wire page views by hand. |\n| `flushAt` | `number` | `50` | Flush immediately once N events are buffered. |\n| `flushIntervalMs` | `number` | `5000` | Otherwise, flush every N ms. |\n| `maxQueueSize` | `number` | `1000` | Oldest events drop when this fills up. |\n\n### Browser context: `autoContext`\n\nBy default the SDK ships only library identifiers + the message envelope. To enrich every event with browser context, opt in:\n\n```ts\nAdfinia.init({\n  writeKey: 'pk_live_…',\n  autoContext: true, // collect page_path, page_url, referrer, user_agent, locale, timezone, viewport, screen_resolution\n})\n```\n\nPer-call context wins on key collision:\n\n```ts\nAdfinia.track('Order Completed', { total: 49.99 }, {\n  context: { experiment_variant: 'checkout_v3' },\n})\n```\n\nThe auto-context keys map 1:1 to the server's `context map[string]string` contract. Caller-supplied context is layered on last, so anything you pass in `{ context }` always overrides what the SDK auto-collects.\n\n### External identity (`external_id`)\n\nPass a tenant-owned stable identifier — a wallet hash, a CRM key, anything you control — as `externalId`. It's persisted client-side and emitted on the wire as `external_id`. The server resolves identity in the order `customer_id > external_id > anonymous_id`.\n\n```ts\n// At wallet connect / login:\nAdfinia.identify({ externalId: walletAddress, traits: { country: 'AE' } })\n\n// Or per call, before you have a full identify:\nAdfinia.track('wallet_connected', { is_new_wallet: true }, { externalId: walletAddress })\n```\n\nOnce set (via `identify` or a per-call option), `external_id` rides every subsequent event automatically until `reset()`.\n\n### Acquisition (first-touch attribution)\n\nWhen `autoContext: true`, the SDK reads acquisition signals from the **first** session URL and persists them — later events keep the original attribution even after the query string is gone:\n\n- UTM tags: `utm_source / utm_medium / utm_campaign / utm_term / utm_content` → `campaign.utm_*`\n- Ad click IDs: `gclid / fbclid / ttclid / sc / msclkid` → `campaign.*`\n- Landing page → `page.landing`\n\nNo code beyond `autoContext: true` — land the user with `?utm_source=google&gclid=…` and the attribution sticks for the whole session.\n\n### Auto page tracking (SPAs)\n\nBy default (`autoPage: true`) the SDK fires `page()` on the initial load and on every SPA route change — it hooks `history.pushState`, `history.replaceState`, and `popstate`, de-duped by path+search so you never get a double-fire. Hash-only changes don't count as a new page.\n\n```ts\nAdfinia.init({ writeKey: 'pk_live_…' }) // page views are automatic\n\n// Wiring them by hand instead? Turn it off:\nAdfinia.init({ writeKey: 'pk_live_…', autoPage: false })\nrouter.afterEach(() => Adfinia.page())\n```\n\n### Web push\n\n`Adfinia.registerWebPush(config)` runs the full browser opt-in: register a service worker, request Notification permission, `PushManager.subscribe` with your tenant VAPID public key, and POST the subscription to Adfinia. It also emits `notification_permission_prompted/granted/denied` track events.\n\n```ts\nconst result = await Adfinia.registerWebPush({\n  vapidPublicKey: 'BEl62iUY…',     // tenant VAPID public key (base64url P-256)\n  serviceWorkerUrl: '/adfinia-sw.js', // default; host this at your web root\n})\nif (result.ok) {\n  console.log('subscribed', result.endpoint)\n} else {\n  console.log('not subscribed —', result.reason) // 'permission_denied' | 'unsupported' | …\n}\n```\n\n**Service worker hosting.** The service worker **must** be served from your web root (a SW only controls pages at or below its own URL). Copy it from the package after install:\n\n```bash\ncp node_modules/@adfinia/sdk-web/dist/adfinia-sw.js ./public/adfinia-sw.js\n```\n\nThe worker shows the notification and emits `push_received` / `push_clicked` back to Adfinia. If you serve it from a sub-path, set the `Service-Worker-Allowed` response header and pass `scope` to `registerWebPush`.\n\n> **VAPID key.** Get your tenant VAPID public key from the Adfinia console (Settings → Channels → Push). You can pass it as `vapidPublicKey`, or set `fetchVapidFromConfig: true` to have the SDK pull it from `/sdk/config` (requires server support for that field).\n>\n> **iOS.** Web push works on Android + desktop Chrome/Firefox/Edge today. iOS Safari 16.4+ supports web push only for home-screen-added PWAs — lead with email/SMS there.\n\n### In-app inbox\n\n`Adfinia.notifications` is a framework-agnostic data client for the in-app notification inbox. It ships **no UI** — you render the bell, list, and toasts; the SDK gives you typed notifications, a live stream, and the open/click events.\n\n```ts\n// 1. Page through the inbox (cursor-paginated).\nconst page = await Adfinia.notifications.list({ status: 'unread', limit: 20 })\nrenderList(page.data)\nif (page.hasMore) {\n  const next = await Adfinia.notifications.list({ cursor: page.nextCursor! })\n}\n\n// 2. Subscribe to live updates. On connect the handler is called once per\n//    currently-unread notification (replay), then once per new one (SSE).\nconst sub = Adfinia.notifications.subscribe((n) => {\n  showToast(n) // { id, title, body, severity, deep_link?, ... }\n})\n\n// 3. Mark read + record engagement when the user interacts.\nasync function onOpen(n) {\n  Adfinia.notifications.trackOpened(n)   // -> notification_opened\n  await Adfinia.notifications.markRead(n.id)\n}\nfunction onClick(n) {\n  Adfinia.notifications.trackClicked(n)  // -> notification_clicked\n  if (n.deep_link) router.push(n.deep_link)\n}\n\nawait Adfinia.notifications.markAllRead()\n\n// 4. Tear down (e.g. on logout / unmount).\nsub.unsubscribe()\n```\n\nThe `InboxNotification` shape is `{ id, contact_id, title, body, severity('info'|'success'|'warning'|'error'), dismissable, deep_link?, data?, read, created_at, read_at?, expires_at? }`.\n\n**Identity.** The inbox is keyed on the current contact. The SDK resolves `contact_id` from the active identity in the server's order — `customer_id > external_id > anonymous_id`. Call `identify(...)` first, or pass `{ contactId }` explicitly to any method.\n\n**Live stream vs push.** `subscribe()` opens an `EventSource` that runs **in the page** — it's the foreground channel for a live inbox while the tab is open. It's complementary to [web push](#web-push): the service worker delivers **background** system notifications when the tab is closed. Use both. Where `EventSource` is unavailable, `subscribe()` still replays unread on connect; only the live push part is skipped.\n\n> **Auth.** `EventSource` can't set an `Authorization` header, so the write key + SDK version ride the stream URL as query params — the gateway accepts both forms (same as the `sendBeacon` unload path).\n\n### Last-mile delivery on unload\n\nOn tab close / hide, the SDK drains the queue via `navigator.sendBeacon` (with a `fetch({ keepalive: true })` fallback). This survives the unloading page so the final batch reliably reaches the server. The auth + SDK-version travel as query params on the beacon URL because `sendBeacon` can't set custom headers — the gateway accepts both forms.\n\nFor navigations you control, prefer the explicit `await Adfinia.flush()`:\n\n```ts\nAdfinia.track('CTA Clicked', { cta: 'upgrade' })\nawait Adfinia.flush()\nrouter.push('/upgrade')\n```\n\n---\n\n## Consent integration\n\nThe SDK ships with a consent gate. Pass a `consent` callback that returns the user's current opt-in state — it runs on **every** `track / identify / page / screen / alias` call. If it returns `false`, the SDK drops the call silently. The callback can flip from `false` to `true` mid-session without re-initialisation.\n\nFor UAE PDPL, India DPDP, EU GDPR: pair the gate with `Adfinia.reset()` when the user revokes — that clears any client-side identifier you'd otherwise still hold.\n\nFull consent-architecture write-up: [docs.adfinia.com/user-guide/consent](https://docs.adfinia.com/user-guide/consent).\n\n---\n\n## Bundle output\n\n| Format | File | Raw size | Use when |\n|--------|------|----------|----------|\n| ESM | `dist/index.js` | ~36 KB | Bundler-driven apps (Next.js, Vite, Webpack). Tree-shakes to ~10 KB gzipped. |\n| CJS | `dist/index.cjs` | ~36 KB | Node.js + legacy bundlers. |\n| IIFE | `dist/adfinia.iife.js` | ~19.5 KB | Direct `<script>` include, CDN drop-in, Google Tag Manager. |\n| SW | `dist/adfinia-sw.js` | ~3.5 KB | Web-push service worker. Host at your web root (not bundled). |\n| Types | `dist/index.d.ts` | ~16 KB | TypeScript autocomplete + type-checking. |\n\nSizes are pre-gzip; the IIFE bundle gzips to roughly 6 KB on the wire. The IIFE bundle exposes `window.Adfinia` and self-bootstraps — no `import` needed.\n\n---\n\n## Looking for the full integration guide?\n\n[docs.adfinia.com/user-guide/sdk-integration#web](https://docs.adfinia.com/user-guide/sdk-integration#web) — covers CSP, Next.js App Router patterns, SPA routing, consent banners, e-commerce conversion tracking, and self-hosted ingest configuration.\n\n---\n\n## Browser support\n\n| Browser | Version |\n|---------|---------|\n| Chrome / Edge | last 2 majors |\n| Firefox | last 2 majors |\n| Safari | iOS 14+, macOS 14+ |\n| Node.js | 18+ (for server-side use) |\n\nThe SDK uses `fetch`, `crypto.getRandomValues`, and `localStorage`. All are polyfill-free on the supported set. In SSR contexts it gracefully degrades — `localStorage` falls back to in-memory.\n\n---\n\n## Issues + contributing\n\n- Bugs and feature requests: [github.com/Adfinia/sdk-web/issues](https://github.com/Adfinia/sdk-web/issues)\n- Contributing guide: [CONTRIBUTING.md](./CONTRIBUTING.md)\n- Email: engineering@adfinia.com\n\n---\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}