Typed wrapper around the Poki SDK. This package does not bundle the Poki SDK itself; it simply forwards calls and provides TypeScript types.
You still need:
<script src="https://game-cdn.poki.com/scripts/v2/poki-sdk.js"></script>or something similar depending on your game engine.
Documentation: Poki SDK Documentation
npm install @poki/sdkyarn add @poki/sdkMake sure the Poki SDK script is loaded in your page (see above). Then use this package to access the API:
import PokiSDK from '@poki/sdk';
async function boot() {
await PokiSDK.init();
PokiSDK.gameLoadingFinished();
}
boot();If the Poki SDK script is not loaded, this package will throw PokiSDK not loaded on use.
init(options?: InitOptions): Promise<void>setDebug(toggle?: boolean): voidsetLogging(toggle: boolean): void
gameLoadingFinished(): voidgameplayStart(): voidgameplayStop(): void
Commercial Breaks (see documentation for details)
commercialBreak(onStart?: () => void): Promise<void>
Rewarded Breaks (see documentation for details)
rewardedBreak(onStartOrArgs?: (() => void) | RewardedBreakParams): Promise<boolean>
RewardedBreakParams supports onStart?: () => void and size?: 'small' | 'medium' | 'large'.
displayAd(container: HTMLElement, size: string, onCanDestroy?: () => void, onDisplayRendered?: (isEmpty: boolean) => void): voiddestroyAd(container?: HTMLElement): void
Sharing (see documentation for details)
shareableURL(params?: Record<string, any>): Promise<string>getURLParam(key: string): stringgetLanguage(): string
UI (see documentation for details)
movePill(topPercent: number, topPx: number): voidshowLeaderboard(id?: number | null | false): void
measure(category: MeasureCategory, what: string, action: MeasureAction): voidenableEventTracking(cmpIndex?: number): voidcaptureError(err: string | Error): void
getUser(): Promise<User | null>getToken(): Promise<string | null>login(): Promise<void>
openExternalLink(url: string): void
playtestSetCanvas(canvas: HTMLCanvasElement | HTMLCanvasElement[] | null): voidplaytestCaptureHtmlOnce(): voidplaytestCaptureHtmlForce(): voidplaytestCaptureHtmlOn(): voidplaytestCaptureHtmlOff(): void
InitOptions:debug?: boolean,logging?: boolean,submitScore?: (fn: (leaderboard: string, score: number) => void) => voidUser:username: string,avatarUrl: string,optedIn: booleanRewardedBreakSize:'small' | 'medium' | 'large'RewardedBreakParams:onStart?: () => void,size?: RewardedBreakSizeMeasureCategory:'achievement' | 'booster' | 'boss' | 'button' | 'checkpoint' | 'cosmetic' | 'death' | 'drawing' | 'economy' | 'enemy' | 'hint' | 'item' | 'level' | 'mode' | 'pet' | 'player' | 'powerup' | 'puzzle' | 'quest' | 'round' | 'skip-level' | 'stage' | 'tutorial' | 'upgrade' | 'wave' | 'world' | stringMeasureAction:'start' | 'complete' | 'fail' | 'visible' | 'interact' | string
ISC