Installation
The SDK is available on the public npm registry. No special configuration required.
Package Managers
npm
npm install @mission_sciences/provider-sdk
Yarn
yarn add @mission_sciences/provider-sdk
pnpm
pnpm add @mission_sciences/provider-sdk
CDN (Development Only)
<script src="https://unpkg.com/@mission_sciences/provider-sdk/dist/index.umd.js"></script>
Serving in Non-Bundled Applications
For simple applications without a bundler, serve the SDK files directly:
Express.js example:
const path = require('path');
// Serve SDK from node_modules
app.use(
'/sdk',
express.static(
path.join(__dirname, 'node_modules/@mission_sciences/provider-sdk/dist')
)
);
HTML usage:
<!-- Load SDK via UMD build -->
<script src="/sdk/marketplace-sdk.umd.js"></script>
<script>
const { MarketplaceSDK } = window.MarketplaceSDK;
// Initialize SDK...
</script>
Prerequisites
- Node.js: >= 16.x
- Package Manager: npm, yarn, or pnpm
- Build Tool: Vite, Webpack, or similar (for bundling)
- TypeScript (optional but recommended): >= 5.0
Marketplace Requirements
Your application must be registered in the General Wisdom marketplace with:
- Unique
applicationId - Redirect URL for session end
- JWKS public key endpoint (production)
Quick Initialization
Recommended: Use environment for Auto-Resolution
Setting environment to 'production', 'demo', or 'dev' auto-resolves all endpoint fields:
import MarketplaceSDK from '@mission_sciences/provider-sdk';
const sdk = new MarketplaceSDK({
applicationId: 'your-app-id',
apiKey: 'gwsk_YOUR_API_KEY_HERE',
environment: 'production', // resolves apiEndpoint, jwksUri, marketplaceUrl
hooks: {
onSessionStart: async (context) => {
console.log('Session started for user:', context.userId);
},
onSessionEnd: async (context) => {
console.log('Session ended:', context.reason);
},
},
});
await sdk.initialize();
You can override any auto-resolved field by setting it explicitly.
Manual Endpoint Configuration
import MarketplaceSDK from '@mission_sciences/provider-sdk';
const sdk = new MarketplaceSDK({
applicationId: 'your-app-id',
apiKey: 'gwsk_YOUR_API_KEY_HERE',
jwksUri: 'https://api.generalwisdom.com/.well-known/jwks.json',
hooks: {
onSessionStart: async (context) => {
console.log('Session started for user:', context.userId);
},
onSessionEnd: async (context) => {
console.log('Session ended:', context.reason);
},
},
});
await sdk.initialize();
How It Works
┌──────────────┐ ┌───────────────┐ ┌─────────────┐
│ Marketplace │ ─JWT──> │ Your App │ ─Hooks─>│ Your Auth │
│ PWA │ │ (SDK Init) │ │ System │
└──────────────┘ └───────────────┘ └─────────────┘
│ │ │
│ Validates JWT Provisions
│ Starts timer User account
│ │ │
└────<Redirect On End>────┴────<Session Data>──────┘
Next Steps
- Configuration — Environment settings and SDK options
- Hooks — Lifecycle hooks for session events
- Default UI — Built-in session controls widget