UNPKG

pricing4ts

Version:

![NPM Version](https://img.shields.io/npm/v/pricing4ts) Pricing4TS is a TypeScript-based toolkit designed to enhance the server-side functionality of a pricing-driven SaaS by enabling the seamless integration of pricing plans into the application logic. T

61 lines (54 loc) 1.74 kB
import { ValueType, FeatureType, RenderMode } from './types'; export type PaymentType = 'CARD' | 'GATEWAY' | 'INVOICE' | 'ACH' | 'WIRE_TRANSFER' | 'OTHER'; export type IntegrationType = 'API' | 'EXTENSION' | 'IDENTITY_PROVIDER' | 'WEB_SAAS' | 'MARKETPLACE' | 'EXTERNAL_DEVICE'; export type AutomationType = 'BOT' | 'FILTERING' | 'TRACKING' | 'TASK_AUTOMATION'; export interface Feature { name: string; description?: string; tag?: string; valueType: ValueType; defaultValue: string | number | boolean | PaymentType[]; value?: string | number | boolean | PaymentType[]; expression?: string; serverExpression?: string; type: FeatureType; integrationType?: IntegrationType; pricingUrls?: string[]; docUrl?: string; automationType?: AutomationType; render: RenderMode; } export function getNumberOfFeatures(features: Record<string, Feature>) { return Object.keys(features).length; } export function getFeatureNames(features: Record<string, Feature>) { return Object.values(features).map(feature => feature.name); } export function isIntegrationType(string: string): boolean{ return ( string === 'API' || string === 'EXTENSION' || string === 'IDENTITY_PROVIDER' || string === 'WEB_SAAS' || string === 'MARKETPLACE' || string === 'EXTERNAL_DEVICE' ); } export function isAutomationType(string: string): boolean{ return ( string === 'BOT' || string === 'FILTERING' || string === 'TRACKING' || string === 'TASK_AUTOMATION' ); } export function isPaymentType(string: string): boolean{ return ( string === 'CARD' || string === 'GATEWAY' || string === 'INVOICE' || string === 'ACH' || string === 'WIRE_TRANSFER' || string === 'OTHER' ); }