Skip to content

Commit

Permalink
feat: automatically generate declaration files (#310)
Browse files Browse the repository at this point in the history
* feat: automatically generate declaration files
* chore: add NamiPaywallEvent type
  • Loading branch information
joshvermaire authored Jun 20, 2024
1 parent 74fbc48 commit 4637061
Show file tree
Hide file tree
Showing 11 changed files with 329 additions and 414 deletions.
121 changes: 8 additions & 113 deletions src/Nami.d.ts
Original file line number Diff line number Diff line change
@@ -1,113 +1,8 @@
export const Nami: {
configure: (
config: NamiConfiguration,
resultCallback?: (resultObject: { success: boolean }) => void,
) => void;
};

export type NamiConfiguration = {
'appPlatformID-apple': string;
'appPlatformID-android': string;
logLevel: string;
namiCommands?: string[];
namiLanguageCode?: NamiLanguageCodes;
initialConfig?: string;
};

export type NamiLanguageCodes =
| 'af'
| 'ar'
| 'ar-dz'
| 'ast'
| 'az'
| 'bg'
| 'be'
| 'bn'
| 'br'
| 'bs'
| 'ca'
| 'cs'
| 'cy'
| 'da'
| 'de'
| 'dsb'
| 'el'
| 'en'
| 'en-au'
| 'en-gb'
| 'eo'
| 'es'
| 'es-ar'
| 'es-co'
| 'es-mx'
| 'es-ni'
| 'es-ve'
| 'et'
| 'eu'
| 'fa'
| 'fi'
| 'fr'
| 'fy'
| 'ga'
| 'gd'
| 'gl'
| 'he'
| 'hi'
| 'hr'
| 'hsb'
| 'hu'
| 'hy'
| 'ia'
| 'id'
| 'ig'
| 'io'
| 'is'
| 'it'
| 'ja'
| 'ka'
| 'kab'
| 'kk'
| 'km'
| 'kn'
| 'ko'
| 'ky'
| 'lb'
| 'lt'
| 'lv'
| 'mk'
| 'ml'
| 'mn'
| 'mr'
| 'my'
| 'nb'
| 'ne'
| 'nl'
| 'nn'
| 'os'
| 'pa'
| 'pl'
| 'pt'
| 'pt-br'
| 'ro'
| 'ru'
| 'sk'
| 'sl'
| 'sq'
| 'sr'
| 'sr-latn'
| 'sv'
| 'sw'
| 'ta'
| 'te'
| 'tg'
| 'th'
| 'tk'
| 'tr'
| 'tt'
| 'udm'
| 'uk'
| 'ur'
| 'uz'
| 'vi'
| 'zh-hans'
| 'zh-hant';
import { NamiConfiguration } from './types';
export declare const NamiBridge: any, NamiManager: any;
export interface INami {
configure: (config: NamiConfiguration, resultCallback?: (resultObject: {
success: boolean;
}) => void) => void;
}
export declare const Nami: INami;
112 changes: 16 additions & 96 deletions src/NamiCampaignManager.d.ts
Original file line number Diff line number Diff line change
@@ -1,98 +1,18 @@
import { EmitterSubscription } from 'react-native';
import { NamiPaywallAction, NamiPurchase, NamiSKU } from './types';

export const NamiCampaignManager: {
allCampaigns: () => Promise<Array<NamiCampaign>>;
isCampaignAvailable(campaignSource: string | null): Promise<boolean>;
launch: (
label?: string,
withUrl?: string,
context?: PaywallLaunchContext,
resultCallback?: (success: boolean, error?: LaunchCampaignError) => void,
actionCallback?: (
action: NamiPaywallAction,
campaignId: string,
paywallId: string,
campaignName?: string,
campaignType?: string,
campaignLabel?: string,
campaignUrl?: string,
paywallName?: string,
segmentId?: string,
externalSegmentId?: string,
deeplinkUrl?: string,
skuId?: string,
componentChangeId?: string,
componentChangeName?: string,
purchaseError?: string,
purchases?: NamiPurchase[],
) => void,
) => void;
refresh: () => void;
registerAvailableCampaignsHandler: (
callback: (availableCampaigns: NamiCampaign[]) => void,
) => EmitterSubscription['remove'];
};

export type NamiCampaign = {
id: string;
rule: string;
segment: string;
paywall: string;
type: NamiCampaignRule;
value?: string | null;
};

export enum NamiCampaignRule {
DEFAULT = 'default',
LABEL = 'label',
UNKNOWN = 'unknown',
URL = 'url',
import { NativeEventEmitter, EmitterSubscription } from 'react-native';
import { LaunchCampaignError, NamiCampaign, NamiPaywallAction, NamiPurchase, PaywallLaunchContext } from './types';
export declare const RNNamiCampaignManager: any;
export declare enum NamiCampaignManagerEvents {
ResultCampaign = "ResultCampaign",
AvailableCampaignsChanged = "AvailableCampaignsChanged"
}

export enum LaunchCampaignError {
DEFAULT_CAMPAIGN_NOT_FOUND = 0,
LABELED_CAMPAIGN_NOT_FOUND = 1,
CAMPAIGN_DATA_NOT_FOUND = 2,
PAYWALL_ALREADY_DISPLAYED = 3,
SDK_NOT_INITIALIZED = 4,
interface ICampaignManager {
launchSubscription: EmitterSubscription | undefined;
emitter: NativeEventEmitter;
allCampaigns: () => Promise<Array<NamiCampaign>>;
isCampaignAvailable(campaignSource: string | null): Promise<boolean>;
launch: (label?: string, withUrl?: string, context?: PaywallLaunchContext, resultCallback?: (success: boolean, error?: LaunchCampaignError) => void, actionCallback?: (action: NamiPaywallAction, campaignId: string, paywallId: string, campaignName?: string, campaignType?: string, campaignLabel?: string, campaignUrl?: string, paywallName?: string, segmentId?: string, externalSegmentId?: string, deeplinkUrl?: string, skuId?: string, componentChangeId?: string, componentChangeName?: string, purchaseError?: string, purchases?: NamiPurchase[]) => void) => void;
refresh: () => void;
registerAvailableCampaignsHandler: (callback: (availableCampaigns: NamiCampaign[]) => void) => EmitterSubscription['remove'];
}

export enum LaunchCampaignResultAction {
FAILURE = 'FAILURE',
SUCCESS = 'SUCCESS',
}

export type FailureResultObject = {
error: string;
};

export type PaywallLaunchContext = {
productGroups?: string[];
customAttributes?: {
[key: string]: string;
};
};

export type NamiPaywallEvent = {
action: NamiPaywallAction;
campaignId?: string;
campaignName?: string;
campaignType?: string;
campaignLabel?: string;
campaignUrl?: string;
paywallId?: string;
paywallName?: string;
componentChange?: NamiPaywallComponentChange;
segmentId?: string;
externalSegmentId?: string;
deeplinkUrl?: string;
sku?: NamiSKU;
purchaseError?: string;
purchases?: NamiPurchase[];
};

export type NamiPaywallComponentChange = {
id?: string;
name?: string;
};
export declare const NamiCampaignManager: ICampaignManager;
export {};
66 changes: 27 additions & 39 deletions src/NamiCustomerManager.d.ts
Original file line number Diff line number Diff line change
@@ -1,39 +1,27 @@
import { EmitterSubscription } from 'react-native';
import { AccountStateAction } from './types';

export const NamiCustomerManager: {
setCustomerAttribute: (key: string, value: string) => void;
getCustomerAttribute: (key: string) => Promise<string | undefined>;
clearCustomerAttribute: (key: string) => void;
clearAllCustomerAttributes: () => void;
journeyState: () => Promise<CustomerJourneyState | undefined>;
isLoggedIn: () => Promise<boolean>;
loggedInId: () => Promise<string | undefined>;
deviceId: () => Promise<string>;
login: (customerId: string) => void;
logout: () => void;
registerJourneyStateHandler: (
callback: (journeyState: CustomerJourneyState) => void,
) => EmitterSubscription['remove'];
registerAccountStateHandler: (
callback: (
action: AccountStateAction,
success: boolean,
error?: number,
) => void,
) => EmitterSubscription['remove'];
clearCustomerDataPlatformId: () => void;
setCustomerDataPlatformId: (platformId: string) => void;
setAnonymousMode: (anonymousMode: boolean) => void;
inAnonymousMode: () => Promise<boolean>;
};

export type CustomerJourneyState = {
formerSubscriber: boolean;
inGracePeriod: boolean;
inTrialPeriod: boolean;
inIntroOfferPeriod: boolean;
isCancelled: boolean;
inPause: boolean;
inAccountHold: boolean;
};
import { NativeEventEmitter, EmitterSubscription } from 'react-native';
import { AccountStateAction, CustomerJourneyState } from './types';
export declare const RNNamiCustomerManager: any;
export declare enum NamiCustomerManagerEvents {
JourneyStateChanged = "JourneyStateChanged",
AccountStateChanged = "AccountStateChanged"
}
export interface INamiCustomerManager {
emitter: NativeEventEmitter;
setCustomerAttribute: (key: string, value: string) => void;
getCustomerAttribute: (key: string) => Promise<string | undefined>;
clearCustomerAttribute: (key: string) => void;
clearAllCustomerAttributes: () => void;
journeyState: () => Promise<CustomerJourneyState | undefined>;
isLoggedIn: () => Promise<boolean>;
loggedInId: () => Promise<string | undefined>;
deviceId: () => Promise<string>;
login: (customerId: string) => void;
logout: () => void;
registerJourneyStateHandler: (callback: (journeyState: CustomerJourneyState) => void) => EmitterSubscription['remove'];
registerAccountStateHandler: (callback: (action: AccountStateAction, success: boolean, error?: number) => void) => EmitterSubscription['remove'];
clearCustomerDataPlatformId: () => void;
setCustomerDataPlatformId: (platformId: string) => void;
setAnonymousMode: (anonymousMode: boolean) => void;
inAnonymousMode: () => Promise<boolean>;
}
export declare const NamiCustomerManager: INamiCustomerManager;
38 changes: 15 additions & 23 deletions src/NamiEntitlementManager.d.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,15 @@
import { EmitterSubscription } from 'react-native';
import { NamiPurchase, NamiSKU } from './types';

export const NamiEntitlementManager: {
active: () => Promise<Array<NamiEntitlement>>;
isEntitlementActive: (label?: string) => boolean;
refresh: (
resultCallback?: (entitlements?: NamiEntitlement[]) => void,
) => void;
registerActiveEntitlementsHandler: (
callback: (activeEntitlements: NamiEntitlement[]) => void,
) => EmitterSubscription['remove'];
clearProvisionalEntitlementGrants: () => void;
};

export type NamiEntitlement = {
activePurchases: NamiPurchase[];
desc: string;
name: string;
purchasedSkus: NamiSKU[];
referenceId: string;
relatedSkus: NamiSKU[];
};
import { NativeEventEmitter, EmitterSubscription } from 'react-native';
import { NamiEntitlement } from './types';
export declare const RNNamiEntitlementManager: any;
export declare enum NamiEntitlementManagerEvents {
EntitlementsChanged = "EntitlementsChanged"
}
export interface INamiEntitlementManager {
emitter: NativeEventEmitter;
active: () => Promise<Array<NamiEntitlement>>;
isEntitlementActive: (label?: string) => boolean;
refresh: (resultCallback?: (entitlements?: NamiEntitlement[]) => void) => void;
registerActiveEntitlementsHandler: (callback: (activeEntitlements: NamiEntitlement[]) => void) => EmitterSubscription['remove'];
clearProvisionalEntitlementGrants: () => void;
}
export declare const NamiEntitlementManager: INamiEntitlementManager;
12 changes: 7 additions & 5 deletions src/NamiMLManager.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export const NamiMLManager: {
coreAction: (label: string) => void;
enterCoreContent: (label: string | string[]) => void;
exitCoreContent: (label: string | string[]) => void;
};
export declare const NamiMLManagerBridge: any;
export interface INamiMLManager {
coreAction: (label: string) => void;
enterCoreContent: (label: string | string[]) => void;
exitCoreContent: (label: string | string[]) => void;
}
export declare const NamiMLManager: INamiMLManager;
8 changes: 5 additions & 3 deletions src/NamiManager.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export const NamiManager: {
sdkConfigured: () => Promise<boolean>;
};
export declare const RNNamiManager: any;
export interface INamiManager {
sdkConfigured: () => Promise<boolean>;
}
export declare const NamiManager: INamiManager;
Loading

0 comments on commit 4637061

Please sign in to comment.