TypeScript SDK
একটি প্যাকেজ, ছয়টি এন্ট্রি পয়েন্ট। আপনার রানটাইমের সাথে যেটি মেলে সেটি ইমপোর্ট করুন, ট্রি-শেকিং বিল্ড বাকিগুলি আপনার বান্ডল থেকে বাদ রাখে।
যেখানে প্রকাশিত
@prodantix/sdk on npm.
ইনস্টল
bun add @prodantix/sdkএন্ট্রি পয়েন্ট
প্রতিটি সাবপাথ নিজস্ব ESM ও CommonJS বিল্ড এবং নিজস্ব টাইপ নিয়ে আসে। রুটটি রানটাইম-নিরপেক্ষ, আর বাকিগুলি একটি নির্দিষ্ট রানটাইমের যা দরকার তা যোগ করে।
| Subpath | What it exports |
|---|---|
| @prodantix/sdk | ProdantixClient, createClient, evaluateFlag, FlagsClient, MessagesClient |
| @prodantix/sdk/web | createWebClient, installAutocapture, installSessionReplay, WebTransport |
| @prodantix/sdk/node | createNodeClient |
| @prodantix/sdk/csp | prodantixConnectSrc, prodantixScriptSrc |
| @prodantix/sdk/chat | mountChat, ChatClient, ChatPanel, resolveAppearance |
| @prodantix/sdk/messenger | fetchMessengerConfig, cachedMessengerConfig, MESSENGER_CACHE_KEY |
@prodantix/sdk
ক্লায়েন্ট, ফ্ল্যাগ মূল্যায়নকারী, এবং স্টোরেজ ও ট্রান্সপোর্ট ইন্টারফেস। এখানে কিছুই DOM স্পর্শ করে না, তাই আপনি নিজের স্টোরেজ, ট্রান্সপোর্ট, ক্লক বা আইডি ফ্যাক্টরি দিয়ে যেকোনো জায়গায় চালাতে পারেন।
import { createClient, MemoryStorage } from '@prodantix/sdk';
const prodantix = createClient({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
storage: new MemoryStorage(),
});
prodantix.capture('order.completed', { properties: { amount: 4200, currency: 'XAF' } });
await prodantix.flush();@prodantix/sdk/web
একই ক্লায়েন্টের উপরে ব্রাউজার ওয়্যারিং: লোকাল স্টোরেজে সংরক্ষণ, পেজ লুকালে বিকন দিয়ে পাঠানো, এবং পেজভিউ ও ক্লিকের অটোক্যাপচার। রিপ্লে হোস্ট না দেওয়া পর্যন্ত সেশন রিপ্লে বন্ধ থাকে।
import { createWebClient } from '@prodantix/sdk/web';
const prodantix = createWebClient({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
flagsHost: 'https://api.prodantix.com',
autocaptureOptions: { clicks: true, pageviews: true },
});
prodantix.identify('user-42', { set: { plan: 'pro' } });
if (await prodantix.isFeatureEnabled('new-checkout')) {
// ...
}
// Every per-flag read records one $feature_flag_called exposure.
const variant = await prodantix.getVariant('new-checkout');
if (variant?.key === 'treatment') {
// ...
}
// A flag targeting a cohort reads this user's memberships from the store;
// pass them yourself to skip the lookup.
if (await prodantix.isFeatureEnabledLocal('members', { cohorts: ['<cohort id>'] })) {
// ...
}@prodantix/sdk/node
একই ক্লায়েন্ট, সার্ভারের ডিফল্ট নিয়ে। ইভেন্টগুলি বাফারে জমা হয়ে পটভূমিতে পাঠানো হয়, তাই প্রসেস শেষ হওয়ার আগে shutdown কল করুন, নইলে শেষ ব্যাচটি কখনও বের হবে না।
import { createNodeClient } from '@prodantix/sdk/node';
// A node client streams flag changes over Socket.IO by default and refetches
// the snapshot on push; streamFlags: false leaves only the 30s poll.
const prodantix = createNodeClient({
apiKey: process.env.PRODANTIX_PUBLIC_KEY,
host: 'https://eu.api.prodantix.com',
streamFlags: true,
});
prodantix.capture('job.completed', { properties: { queue: 'emails' } });
await prodantix.shutdown();@prodantix/sdk/csp
একটি অ্যাপকে Prodantix-এ পৌঁছাতে যে কনটেন্ট সিকিউরিটি পলিসি সোর্সগুলি লাগে। এটি React বা ব্রাউজার থেকে কিছুই ইমপোর্ট করে না, তাই একটি বিল্ড কনফিগ ফাইল সরাসরি এটি পড়তে পারে।
import { prodantixConnectSrc, prodantixScriptSrc } from '@prodantix/sdk/csp';
const hosts = {
ingest: 'https://eu.api.prodantix.com',
edge: 'https://eu.edge.prodantix.com',
replay: 'https://eu.replay.prodantix.com',
};
const policy = [
`connect-src ${prodantixConnectSrc(hosts)}`,
`script-src ${prodantixScriptSrc(hosts)}`,
].join('; ');@prodantix/sdk/chat
সাপোর্ট উইজেট। এটি মাউন্ট করলে এমন একটি হ্যান্ডেল পাবেন যা খোলে, বন্ধ করে, ধ্বংস করে এবং পরিচয় দেয়। এটি একটি বন্ধ শ্যাডো রুটের ভিতরে আঁকা হয়, তাই হোস্ট পেজের স্টাইল কখনও এতে পৌঁছায় না।
import { mountChat } from '@prodantix/sdk/chat';
const messenger = mountChat({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.edge.prodantix.com',
distinctId: prodantix.distinctId,
});
document.querySelector('#help')?.addEventListener('click', () => messenger.open());@prodantix/sdk/messenger
উইজেটের পেছনের সেটিংস রিডার: এটি একটি প্রকল্পের মেসেঞ্জার কনফিগারেশন আনে, ক্যাশ করে, এবং প্রকল্পটি মেসেঞ্জার চালু রেখেছে কি না তা জানায়। স্বয়ংচালিত স্নিপেট বিল্ডটি আলাদাভাবে তৈরি হয় এবং এই সাবপাথ দিয়ে পাওয়া যায় না।
import { fetchMessengerConfig } from '@prodantix/sdk/messenger';
const config = await fetchMessengerConfig({
apiKey: PRODANTIX_PUBLIC_KEY,
host: 'https://eu.edge.prodantix.com',
});
if (config?.enabled) {
// the project has the messenger switched on
}