{"_id":"@besar1/simple-sdk-loader","name":"@besar1/simple-sdk-loader","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@besar1/simple-sdk-loader","version":"1.0.0","type":"module","description":"Dynamic loader for simple-sdk with version management","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","jsdelivr":"dist/index.umd.js","scripts":{"build":"rollup -c","dev":"rollup -c -w","lint":"biome lint src/","format":"biome format --write src/","prepublishOnly":"pnpm build"},"keywords":["sdk","loader","dynamic","typescript","frontend"],"author":{"name":"besar1"},"license":"MIT","publishConfig":{"access":"public"},"devDependencies":{"@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-typescript":"^11.1.5","rollup":"^4.9.6","rollup-plugin-dts":"^6.1.0","@besar1/simple-sdk":"workspace:*","tslib":"^2.6.2","typescript":"^5.3.3"},"peerDependencies":{"typescript":">=4.0.0"},"_id":"@besar1/simple-sdk-loader@1.0.0","_nodeVersion":"20.18.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-mxrdBNlRcY7M+4QYVBXKZh9v8F9Ud0XIwYXmBbNFp3dGe1u7d0K2kiHpZT9jsxVWiQcKVii+a6oc8I9C1+RuuQ==","shasum":"ffc87c2dfe490c290758d18eb790af4a4d720908","tarball":"https://registry.npmjs.org/@besar1/simple-sdk-loader/-/simple-sdk-loader-1.0.0.tgz","fileCount":9,"unpackedSize":63508,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD7oDNYhOz8fqPHXwnife2FOoospWRjW6dywkzXilKomQIgAuKUMFkLPSgmYU6UQawf8ug+CkIUutKieh3GvEw/it8="}]},"_npmUser":{"name":"besar1","email":"besar@syntacticops.com"},"directories":{},"maintainers":[{"name":"besar1","email":"besar@syntacticops.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/simple-sdk-loader_1.0.0_1748531739141_0.6656508124028018"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-29T15:15:39.069Z","1.0.0":"2025-05-29T15:15:39.336Z","modified":"2025-05-29T15:15:39.543Z"},"maintainers":[{"name":"besar1","email":"besar@syntacticops.com"}],"description":"Dynamic loader for simple-sdk with version management","keywords":["sdk","loader","dynamic","typescript","frontend"],"author":{"name":"besar1"},"license":"MIT","readme":"# Simple SDK Loader\n\nA dynamic loader for `@besar1/simple-sdk` that can load different versions from NPM or CDN based on configuration.\n\n## Installation\n\n```bash\nnpm install @besar1/simple-sdk-loader\n# or\npnpm add @besar1/simple-sdk-loader\n# or\nyarn add @besar1/simple-sdk-loader\n```\n\n## Usage\n\n### Loading from NPM\n\n```typescript\nimport { SimpleSDKLoader } from '@besar1/simple-sdk-loader';\n\nconst loader = new SimpleSDKLoader({\n  package: 'npm',\n  version: '1.0.0' // optional, defaults to 'latest'\n});\n\nconst sdk = await loader.load();\nconst result = await sdk.doSomething();\nconsole.log(result);\n```\n\n**Note**: For NPM loading with specific versions, the loader uses ESM imports from CDN since dynamic imports can't specify package versions directly. For 'latest' version, it first tries to import locally installed packages, then falls back to CDN.\n\n### Loading from CDN\n\n```typescript\nimport { SimpleSDKLoader } from '@besar1/simple-sdk-loader';\n\nconst loader = new SimpleSDKLoader({\n  package: 'umd',\n  version: '1.0.0',\n  cdnUrl: 'https://unpkg.com' // optional, defaults to unpkg\n});\n\nconst sdk = await loader.load();\nconst result = await sdk.doSomething();\nconsole.log(result);\n```\n\n### Browser Usage\n\n```html\n<script src=\"https://unpkg.com/@besar1/simple-sdk-loader@latest/dist/index.umd.js\"></script>\n<script>\n  const loader = new SimpleSDKLoader.SimpleSDKLoader({\n    package: 'umd',\n    version: 'latest'\n  });\n  \n  loader.load().then(sdk => {\n    return sdk.doSomething();\n  }).then(result => {\n    console.log(result);\n  });\n</script>\n```\n\n## API\n\n### `SimpleSDKLoader`\n\n#### Constructor\n```typescript\nnew SimpleSDKLoader(config: LoaderConfig, options?: LoaderOptions)\n```\n\n#### Configuration\n```typescript\ninterface LoaderConfig {\n  package: 'npm' | 'umd';\n  version?: string | 'latest';\n  cdnUrl?: string; // Custom CDN URL for UMD loading\n}\n\ninterface LoaderOptions {\n  timeout?: number; // Timeout for loading SDK (default: 10000ms)\n  retries?: number; // Number of retries for failed loads (default: 3)\n}\n```\n\n#### Methods\n- `load(): Promise<SDKClient>` - Load the SDK and return the client instance\n- `getSDK(): SDKClient | null` - Get the currently loaded SDK instance\n- `isLoaded(): boolean` - Check if SDK is loaded\n- `getConfig(): LoaderConfig` - Get current configuration\n\n## Version Loading Strategy\n\n### NPM Package Loading (`package: 'npm'`)\n- **Latest version**: Tries local import first, falls back to CDN ESM\n- **Specific version**: Always loads from CDN using ESM format\n- **URL format**: `https://unpkg.com/@besar1/simple-sdk@{version}/dist/index.esm.js`\n\n### CDN Loading (`package: 'umd'`)\n- **Any version**: Loads UMD bundle from CDN\n- **URL format**: `https://unpkg.com/@besar1/simple-sdk@{version}/dist/index.umd.js`\n\n## Features\n\n- ✅ Dynamic loading from NPM or CDN\n- ✅ **Version-specific loading**: Load exact versions specified in configuration\n- ✅ TypeScript support with proper type re-exports\n- ✅ Configurable timeouts and retries\n- ✅ Browser and Node.js support\n- ✅ Custom CDN URL support\n- ✅ Fallback strategies for different environments\n\n## How it works\n\n1. **NPM Loading**: \n   - For 'latest': Tries dynamic import of locally installed package, falls back to CDN ESM\n   - For specific versions: Uses CDN ESM imports with version-specific URLs\n2. **CDN Loading**: Dynamically injects script tags to load UMD bundles from CDN\n3. **Type Safety**: Re-exports types from the core SDK to ensure interface compatibility\n4. **Version Management**: Constructs version-specific URLs for precise version loading\n\n## License\n\nMIT ","readmeFilename":"README.md","_rev":"1-3dce7ef8e70db6ace154003095428af8"}