UNPKG

@ng-web-apis/payment-request

Version:

This is a library for declarative use of Payment Request API with Angular

1 lines 10.8 kB
{"version":3,"file":"ng-web-apis-payment-request.mjs","sources":["../../../libs/payment-request/src/directives/payment-item/payment-item.directive.ts","../../../libs/payment-request/src/directives/payment/payment.directive.ts","../../../libs/payment-request/src/tokens/payment-methods.ts","../../../libs/payment-request/src/tokens/payment-options.ts","../../../libs/payment-request/src/tokens/payment-request-support.ts","../../../libs/payment-request/src/services/payment-request.service.ts","../../../libs/payment-request/src/utils/is-error.ts","../../../libs/payment-request/src/directives/payment-submit/payment-submit.directive.ts","../../../libs/payment-request/src/payment-request.ts","../../../libs/payment-request/src/ng-web-apis-payment-request.ts"],"sourcesContent":["import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[waPaymentItem][paymentAmount][paymentLabel]',\n inputs: ['amount: paymentAmount', 'label: paymentLabel', 'pending: paymentPending'],\n})\nexport class WaPaymentItem implements PaymentItem {\n public amount!: PaymentCurrencyAmount;\n public label!: string;\n public pending?: boolean;\n}\n","import {contentChildren, Directive, effect} from '@angular/core';\n\nimport {type WaPaymentShippingOption} from '../../tokens/payment-options';\nimport {WaPaymentItem} from '../payment-item/payment-item.directive';\n\n@Directive({\n selector: '[waPayment][paymentTotal]',\n inputs: [\n 'total: paymentTotal',\n 'id: paymentId',\n 'modifiers: paymentModifiers',\n 'shippingOptions: paymentShippingOptions',\n ],\n})\nexport class WaPayment implements PaymentDetailsInit {\n public total!: PaymentItem;\n public id?: string;\n public modifiers?: PaymentDetailsModifier[];\n public shippingOptions?: WaPaymentShippingOption[];\n public displayItems?: PaymentItem[];\n protected readonly paymentItems = contentChildren(WaPaymentItem);\n\n protected readonly sync = effect(() => {\n this.displayItems = [...this.paymentItems()];\n });\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const WA_PAYMENT_METHODS = new InjectionToken<PaymentMethodData[]>(\n ngDevMode ? '[WA_PAYMENT_METHODS]' : '',\n {factory: () => [{supportedMethods: 'basic-card'}]},\n);\n","import {InjectionToken} from '@angular/core';\n\nexport interface WaPaymentOptions {\n requestBillingAddress?: boolean;\n requestPayerEmail?: boolean;\n requestPayerName?: boolean;\n requestPayerPhone?: boolean;\n requestShipping?: boolean;\n shippingType?: 'delivery' | 'pickup' | 'shipping';\n}\n\nexport interface WaPaymentShippingOption {\n amount: PaymentCurrencyAmount;\n id: string;\n label: string;\n selected?: boolean;\n}\n\nexport const WA_PAYMENT_OPTIONS = new InjectionToken<WaPaymentOptions>(\n ngDevMode ? '[WA_PAYMENT_OPTIONS]' : '',\n {factory: () => ({})},\n);\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\n\ndeclare global {\n interface Window {\n PaymentRequest: PaymentRequest;\n }\n}\n\nexport const WA_PAYMENT_REQUEST_SUPPORT = new InjectionToken<boolean>(\n ngDevMode ? '[WA_PAYMENT_REQUEST_SUPPORT]' : '',\n {factory: () => !!inject(WA_WINDOW).PaymentRequest},\n);\n","import {inject, Injectable} from '@angular/core';\n\nimport {WA_PAYMENT_METHODS} from '../tokens/payment-methods';\nimport {WA_PAYMENT_OPTIONS, type WaPaymentOptions} from '../tokens/payment-options';\nimport {WA_PAYMENT_REQUEST_SUPPORT} from '../tokens/payment-request-support';\n\n@Injectable({providedIn: 'root'})\nexport class WaPaymentRequestService {\n private readonly supported = inject(WA_PAYMENT_REQUEST_SUPPORT);\n private readonly paymentMethods = inject(WA_PAYMENT_METHODS);\n private readonly paymentOptions = inject(WA_PAYMENT_OPTIONS);\n\n public async request(\n details: PaymentDetailsInit,\n methods: PaymentMethodData[] = this.paymentMethods,\n options: WaPaymentOptions = this.paymentOptions,\n ): Promise<PaymentResponse> {\n if (!this.supported) {\n return Promise.reject(\n new Error('Payment Request is not supported in your browser'),\n );\n }\n\n // eslint-disable-next-line compat/compat\n const gateway = new PaymentRequest(methods, details, options);\n\n return gateway\n .canMakePayment()\n .then(async (canPay) =>\n canPay\n ? gateway.show(details)\n : Promise.reject(\n new Error('Payment Request cannot make the payment'),\n ),\n );\n }\n}\n","export function isError(item: unknown): item is DOMException | Error {\n return item instanceof Error || item instanceof DOMException;\n}\n","import {Directive, ElementRef, inject} from '@angular/core';\nimport {outputFromObservable} from '@angular/core/rxjs-interop';\nimport {catchError, filter, from, fromEvent, of, share, switchMap} from 'rxjs';\n\nimport {WaPaymentRequestService} from '../../services/payment-request.service';\nimport {WA_PAYMENT_METHODS} from '../../tokens/payment-methods';\nimport {WA_PAYMENT_OPTIONS} from '../../tokens/payment-options';\nimport {isError} from '../../utils/is-error';\nimport {WaPayment} from '../payment/payment.directive';\n\n@Directive({selector: '[waPaymentSubmit]'})\nexport class WaPaymentSubmit {\n private readonly paymentHost = inject(WaPayment);\n private readonly paymentRequest = inject(WaPaymentRequestService);\n private readonly nativeElement: HTMLElement = inject(ElementRef).nativeElement;\n private readonly methods = inject(WA_PAYMENT_METHODS);\n private readonly options = inject(WA_PAYMENT_OPTIONS);\n\n private readonly requests$ = fromEvent(this.nativeElement, 'click').pipe(\n switchMap(() =>\n from(\n this.paymentRequest.request(\n {...this.paymentHost},\n this.methods,\n this.options,\n ),\n ).pipe(catchError((error) => of(error))),\n ),\n share(),\n );\n\n public readonly waPaymentSubmit = outputFromObservable(\n this.requests$.pipe(filter((response) => !isError(response))),\n );\n\n public readonly waPaymentError = outputFromObservable(\n this.requests$.pipe(filter(isError)),\n );\n}\n","import {WaPayment} from './directives/payment/payment.directive';\nimport {WaPaymentItem} from './directives/payment-item/payment-item.directive';\nimport {WaPaymentSubmit} from './directives/payment-submit/payment-submit.directive';\n\nexport const WaPaymentRequest = [WaPayment, WaPaymentItem, WaPaymentSubmit] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAMa,aAAa,CAAA;AACf,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,OAAO;wGAHL,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,CAAA,EAAA,KAAA,EAAA,CAAA,cAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8CAA8C;AACxD,oBAAA,MAAM,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AACtF,iBAAA;;;MCSY,SAAS,CAAA;AACX,IAAA,KAAK;AACL,IAAA,EAAE;AACF,IAAA,SAAS;AACT,IAAA,eAAe;AACf,IAAA,YAAY;AACA,IAAA,YAAY,GAAG,eAAe,CAAC,aAAa,wDAAC;AAE7C,IAAA,IAAI,GAAG,MAAM,CAAC,MAAK;QAClC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;AAChD,IAAA,CAAC,gDAAC;wGAVO,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,SAAS,uSAMgC,aAAa,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FANtD,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,MAAM,EAAE;wBACJ,qBAAqB;wBACrB,eAAe;wBACf,6BAA6B;wBAC7B,yCAAyC;AAC5C,qBAAA;AACJ,iBAAA;oGAOqD,aAAa,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AClB5D,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAChD,SAAS,GAAG,sBAAsB,GAAG,EAAE,EACvC,EAAC,OAAO,EAAE,MAAM,CAAC,EAAC,gBAAgB,EAAE,YAAY,EAAC,CAAC,EAAC;;ACchD,MAAM,kBAAkB,GAAG,IAAI,cAAc,CAChD,SAAS,GAAG,sBAAsB,GAAG,EAAE,EACvC,EAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAC;;ACXlB,MAAM,0BAA0B,GAAG,IAAI,cAAc,CACxD,SAAS,GAAG,8BAA8B,GAAG,EAAE,EAC/C,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAC;;MCJ1C,uBAAuB,CAAA;AACf,IAAA,SAAS,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC3C,IAAA,cAAc,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAErD,IAAA,MAAM,OAAO,CAChB,OAA2B,EAC3B,OAAA,GAA+B,IAAI,CAAC,cAAc,EAClD,OAAA,GAA4B,IAAI,CAAC,cAAc,EAAA;AAE/C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,OAAO,OAAO,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAChE;QACL;;QAGA,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;AAE7D,QAAA,OAAO;AACF,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,OAAO,MAAM,KACf;AACI,cAAE,OAAO,CAAC,IAAI,CAAC,OAAO;AACtB,cAAE,OAAO,CAAC,MAAM,CACV,IAAI,KAAK,CAAC,yCAAyC,CAAC,CACvD,CACV;IACT;wGA5BS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cADX,MAAM,EAAA,CAAA;;4FAClB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;ACN1B,SAAU,OAAO,CAAC,IAAa,EAAA;AACjC,IAAA,OAAO,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,YAAY;AAChE;;MCSa,eAAe,CAAA;AACP,IAAA,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AAC/B,IAAA,cAAc,GAAG,MAAM,CAAC,uBAAuB,CAAC;AAChD,IAAA,aAAa,GAAgB,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AAC7D,IAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACpC,IAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAEpC,IAAA,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,CACpE,SAAS,CAAC,MACN,IAAI,CACA,IAAI,CAAC,cAAc,CAAC,OAAO,CACvB,EAAC,GAAG,IAAI,CAAC,WAAW,EAAC,EACrB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,CACf,CACJ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAC3C,EACD,KAAK,EAAE,CACV;IAEe,eAAe,GAAG,oBAAoB,CAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChE;AAEe,IAAA,cAAc,GAAG,oBAAoB,CACjD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CACvC;wGA1BQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,SAAS;mBAAC,EAAC,QAAQ,EAAE,mBAAmB,EAAC;;;ACNnC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe;;ACJ1E;;AAEG;;;;"}