{"_id":"@ambalay-maps/client-sdk","_rev":"2-18d7731387b087d79fa07d6f9a09084e","name":"@ambalay-maps/client-sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@ambalay-maps/client-sdk","version":"0.1.0","keywords":["ambalay","maps","sdk","geocoding","routing","matrix","maplibre"],"license":"UNLICENSED","_id":"@ambalay-maps/client-sdk@0.1.0","maintainers":[{"name":"mav_tech","email":"notthismichael@gmail.com"}],"dist":{"shasum":"fc3c9feebc9a21d959c77507ec4384cf81ef7635","tarball":"https://registry.npmjs.org/@ambalay-maps/client-sdk/-/client-sdk-0.1.0.tgz","fileCount":41,"integrity":"sha512-ixWWcC0JX2kj7kvaVTG/2gheLpoZM+jSkaCXw0TBNbqSeyEiFMjcXQGXPllt8mC2KzdM2Qy06CqmiD62FGyZfg==","signatures":[{"sig":"MEQCIAF2wg70Xk/HS3XEU5nZgy6TdaR4j45dKFJkonZZDZVuAiAmYeqLIDSunYwV8MG4a8JeYqTUEk/TcNM+YhHpx2pXWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81317},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"d3bfd6abdd7cbd5ae997cfc8ca9bc0638c972828","scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"mav_tech","email":"notthismichael@gmail.com"},"_npmVersion":"10.9.4","description":"TypeScript SDK for Ambalay Maps services.","directories":{},"sideEffects":false,"_nodeVersion":"22.21.0","dependencies":{"maplibre-gl":"^5.24.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/client-sdk_0.1.0_1781669573989_0.8460645893940562","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ambalay-maps/client-sdk","version":"0.2.0","description":"TypeScript SDK for Ambalay Maps services.","license":"UNLICENSED","type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","keywords":["ambalay","maps","sdk","geocoding","routing","matrix","maplibre"],"publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./react":{"types":"./dist/react/index.d.ts","import":"./dist/react/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.json","prepack":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"dependencies":{"maplibre-gl":"^5.24.0"},"peerDependencies":{"react":">=18.0.0 || >=19.0.0"},"peerDependenciesMeta":{"react":{"optional":true}},"devDependencies":{"@types/react":"^19.2.14","react":"^19.2.4","typescript":"^5.9.3"},"_id":"@ambalay-maps/client-sdk@0.2.0","gitHead":"53d1a47d98e09dcb9fdc910f07b84ea48094d6d3","_nodeVersion":"22.21.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-6Ln4qVrChO3LOyN2CxHp9oRI9AwPKdtQzPdbgQMAA2IZ9H4nf4N43QD2Qt9kE3n9/bGF8ZXx+YdRIxsYOSxwng==","shasum":"36067f95378b8074fddc700f06f4611e1b98f1ce","tarball":"https://registry.npmjs.org/@ambalay-maps/client-sdk/-/client-sdk-0.2.0.tgz","fileCount":47,"unpackedSize":86729,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCdV9dLt2kJqmwYeDHiPFBD/4ZLLrfyRIPE8W4k4wvc/AIhALulhQWL2IAcD0fjmqW90eIOFF3mOqEiBGik4xaUIGsP"}]},"_npmUser":{"name":"mav_tech","email":"notthismichael@gmail.com"},"directories":{},"maintainers":[{"name":"mav_tech","email":"notthismichael@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/client-sdk_0.2.0_1781763983059_0.7303275608030899"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-17T04:12:53.824Z","modified":"2026-06-18T06:26:23.397Z","0.1.0":"2026-06-17T04:12:54.222Z","0.2.0":"2026-06-18T06:26:23.217Z"},"license":"UNLICENSED","keywords":["ambalay","maps","sdk","geocoding","routing","matrix","maplibre"],"description":"TypeScript SDK for Ambalay Maps services.","maintainers":[{"name":"mav_tech","email":"notthismichael@gmail.com"}],"readme":"# Ambalay Maps Client SDK\n\nOfficial TypeScript client for authenticated Ambalay Maps services.\n\n## Install\n\n```sh\nnpm install @ambalay-maps/client-sdk\n```\n\n## Quick Start\n\n```ts\nimport { createAmbalayClient } from '@ambalay-maps/client-sdk'\n\nconst client = createAmbalayClient({\n  baseUrl: 'https://api.dev.ambalaymaps.com',\n  apiKey: 'YOUR_API_KEY',\n})\n\nconst places = await client.geocoding.search({\n  term: 'Addis Ababa',\n  limit: 5,\n})\n```\n\n## API Key Access\n\nAPI keys can be limited to selected services. Check the available services once when the key changes, then enable only the features the key supports.\n\n```ts\nconst access = await client.apiKey.getAllowedServices()\n\nif (access.allowedServices.includes('GEO_CODING')) {\n  const places = await client.geocoding.search({ term: 'Bole', limit: 5 })\n}\n```\n\n## Geocoding\n\n```ts\nconst results = await client.geocoding.search({\n  term: 'Meskel Square',\n  limit: 10,\n})\n\nconst place = await client.geocoding.reverse({\n  lat: 8.9806,\n  lon: 38.7578,\n})\n```\n\n## Routing\n\n```ts\nconst route = await client.routing.route({\n  source: { lat: 8.9806, lon: 38.7578 },\n  destination: { lat: 8.99, lon: 38.76 },\n  costing: 'AUTO',\n})\n```\n\n## Matrix\n\n```ts\nconst matrix = await client.matrix.calculate({\n  sources: [{ lat: 8.9806, lon: 38.7578 }],\n  targets: [{ lat: 8.99, lon: 38.76 }],\n  costing: 'AUTO',\n})\n```\n\n## Browser Map\n\n```ts\nimport 'maplibre-gl/dist/maplibre-gl.css'\nimport { createAmbalayMap } from '@ambalay-maps/client-sdk'\n\nconst map = createAmbalayMap({\n  container: 'map',\n  baseUrl: 'https://api.dev.ambalaymaps.com',\n  apiKey: 'YOUR_API_KEY',\n  center: [38.7578, 8.9806],\n  zoom: 12,\n})\n\nmap.remove()\n```\n\nThe SDK uses only authenticated `/services/*` endpoints. It does not call `/public/services/*`. Map style configuration is intentionally internal for now.\n\n## React Map\n\n```tsx\nimport 'maplibre-gl/dist/maplibre-gl.css'\nimport { AmbalayMap } from '@ambalay-maps/client-sdk/react'\n\nexport function MapView() {\n  return (\n    <AmbalayMap\n      baseUrl=\"https://api.dev.ambalaymaps.com\"\n      apiKey=\"YOUR_API_KEY\"\n      center={[38.7578, 8.9806]}\n      zoom={12}\n      style={{ height: 500 }}\n      onClick={(event) => {\n        console.log(event.lat, event.lon)\n      }}\n    />\n  )\n}\n```\n","readmeFilename":"README.md"}