ngx-firebase 1.1.12 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -11
- package/fesm2022/ngx-firebase.mjs +158 -0
- package/fesm2022/ngx-firebase.mjs.map +1 -0
- package/package.json +40 -30
- package/types/ngx-firebase.d.ts +55 -0
- package/bundles/ngx-firebase-capacitor.umd.js +0 -763
- package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
- package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
- package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.js +0 -718
- package/bundles/ngx-firebase-iap.umd.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.min.js +0 -2
- package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.js +0 -979
- package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.js +0 -801
- package/bundles/ngx-firebase-testing.umd.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.min.js +0 -2
- package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
- package/bundles/ngx-firebase.umd.js +0 -2271
- package/bundles/ngx-firebase.umd.js.map +0 -1
- package/bundles/ngx-firebase.umd.min.js +0 -2
- package/bundles/ngx-firebase.umd.min.js.map +0 -1
- package/capacitor/capacitor.module.d.ts +0 -9
- package/capacitor/interfaces/config.d.ts +0 -12
- package/capacitor/interfaces/index.d.ts +0 -1
- package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
- package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
- package/capacitor/package.json +0 -25
- package/capacitor/public-api.d.ts +0 -3
- package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
- package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
- package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
- package/capacitor/services/index.d.ts +0 -3
- package/esm2015/capacitor/capacitor.module.js +0 -78
- package/esm2015/capacitor/interfaces/config.js +0 -3
- package/esm2015/capacitor/interfaces/index.js +0 -2
- package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
- package/esm2015/capacitor/public-api.js +0 -4
- package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
- package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
- package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
- package/esm2015/capacitor/services/index.js +0 -4
- package/esm2015/iap/iap.module.js +0 -32
- package/esm2015/iap/interfaces/index.js +0 -5
- package/esm2015/iap/ngx-firebase-iap.js +0 -5
- package/esm2015/iap/public-api.js +0 -5
- package/esm2015/iap/services/iap.service.js +0 -317
- package/esm2015/iap/tokens/index.js +0 -4
- package/esm2015/ionic/animations/index.js +0 -30
- package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
- package/esm2015/ionic/components/avatar/index.js +0 -2
- package/esm2015/ionic/components/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/interface.js +0 -2
- package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
- package/esm2015/ionic/ionic.module.js +0 -46
- package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
- package/esm2015/ionic/public-api.js +0 -5
- package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
- package/esm2015/ionic/services/index.js +0 -6
- package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
- package/esm2015/ionic/services/loading-ionic.service.js +0 -46
- package/esm2015/ionic/services/picker-ionic.service.js +0 -44
- package/esm2015/ionic/services/toast-ionic.service.js +0 -49
- package/esm2015/ionic-auth-ui/animations/index.js +0 -30
- package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
- package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
- package/esm2015/ionic-auth-ui/components/index.js +0 -12
- package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
- package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
- package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
- package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
- package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
- package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
- package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
- package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
- package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
- package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
- package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
- package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
- package/esm2015/ionic-auth-ui/pages/index.js +0 -5
- package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
- package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
- package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
- package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
- package/esm2015/ionic-auth-ui/public-api.js +0 -5
- package/esm2015/ngx-firebase.js +0 -6
- package/esm2015/public-api.js +0 -6
- package/esm2015/shared/guards/index.js +0 -3
- package/esm2015/shared/guards/logged-in.guard.js +0 -60
- package/esm2015/shared/guards/verify-email.guard.js +0 -41
- package/esm2015/shared/interfaces/accounts.enum.js +0 -9
- package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
- package/esm2015/shared/interfaces/config.interface.js +0 -61
- package/esm2015/shared/interfaces/index.js +0 -8
- package/esm2015/shared/interfaces/main.interface.js +0 -7
- package/esm2015/shared/interfaces/providers.interface.js +0 -2
- package/esm2015/shared/interfaces/tokens.js +0 -19
- package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
- package/esm2015/shared/services/analytics.service.js +0 -24
- package/esm2015/shared/services/auth-process.service.js +0 -752
- package/esm2015/shared/services/crashlytics.service.js +0 -42
- package/esm2015/shared/services/device-info.service.js +0 -14
- package/esm2015/shared/services/firebase.service.js +0 -37
- package/esm2015/shared/services/firestore-sync.service.js +0 -60
- package/esm2015/shared/services/index.js +0 -10
- package/esm2015/shared/services/performance.service.js +0 -28
- package/esm2015/shared/services/remoteconfig.service.js +0 -49
- package/esm2015/shared/services/ui.service.js +0 -45
- package/esm2015/shared/shared.module.js +0 -175
- package/esm2015/shared/types/DisplayWidth.js +0 -9
- package/esm2015/shared/types/Location.js +0 -2
- package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
- package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
- package/esm2015/shared/types/index.js +0 -5
- package/esm2015/testing/fakeavatar.module.js +0 -22
- package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
- package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
- package/esm2015/testing/fakes/FakeFireService.js +0 -21
- package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
- package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
- package/esm2015/testing/fakes/FakePickerService.js +0 -9
- package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
- package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
- package/esm2015/testing/fakes/FakeUiService.js +0 -26
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
- package/esm2015/testing/fakes/index.js +0 -19
- package/esm2015/testing/ngx-firebase-testing.js +0 -6
- package/esm2015/testing/public-api.js +0 -5
- package/esm2015/testing/test.module.js +0 -66
- package/esm2015/testing/utils/index.js +0 -17
- package/esm2015/testing/utils/patchConsole.js +0 -14
- package/fesm2015/ngx-firebase-capacitor.js +0 -328
- package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
- package/fesm2015/ngx-firebase-iap.js +0 -354
- package/fesm2015/ngx-firebase-iap.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
- package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic.js +0 -495
- package/fesm2015/ngx-firebase-ionic.js.map +0 -1
- package/fesm2015/ngx-firebase-testing.js +0 -388
- package/fesm2015/ngx-firebase-testing.js.map +0 -1
- package/fesm2015/ngx-firebase.js +0 -1482
- package/fesm2015/ngx-firebase.js.map +0 -1
- package/iap/iap.module.d.ts +0 -5
- package/iap/interfaces/index.d.ts +0 -11
- package/iap/ngx-firebase-iap.d.ts +0 -4
- package/iap/ngx-firebase-iap.metadata.json +0 -1
- package/iap/package.json +0 -23
- package/iap/public-api.d.ts +0 -4
- package/iap/services/iap.service.d.ts +0 -47
- package/iap/tokens/index.d.ts +0 -3
- package/ionic/animations/index.d.ts +0 -1
- package/ionic/components/avatar/avatar.component.d.ts +0 -27
- package/ionic/components/avatar/index.d.ts +0 -1
- package/ionic/components/index.d.ts +0 -2
- package/ionic/components/popover-menu/index.d.ts +0 -2
- package/ionic/components/popover-menu/interface.d.ts +0 -6
- package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
- package/ionic/ionic.module.d.ts +0 -2
- package/ionic/ngx-firebase-ionic.d.ts +0 -4
- package/ionic/ngx-firebase-ionic.metadata.json +0 -1
- package/ionic/package.json +0 -30
- package/ionic/public-api.d.ts +0 -4
- package/ionic/services/alerts-ionic.service.d.ts +0 -13
- package/ionic/services/index.d.ts +0 -5
- package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
- package/ionic/services/loading-ionic.service.d.ts +0 -17
- package/ionic/services/picker-ionic.service.d.ts +0 -9
- package/ionic/services/toast-ionic.service.d.ts +0 -11
- package/ionic-auth-ui/animations/index.d.ts +0 -1
- package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
- package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
- package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
- package/ionic-auth-ui/components/index.d.ts +0 -11
- package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
- package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
- package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
- package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
- package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
- package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
- package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
- package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
- package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
- package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
- package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
- package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
- package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
- package/ionic-auth-ui/package.json +0 -30
- package/ionic-auth-ui/pages/index.d.ts +0 -4
- package/ionic-auth-ui/pages/register/index.d.ts +0 -1
- package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
- package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
- package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
- package/ionic-auth-ui/pages/user/index.d.ts +0 -1
- package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
- package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
- package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
- package/ionic-auth-ui/public-api.d.ts +0 -4
- package/ngx-firebase.d.ts +0 -5
- package/ngx-firebase.metadata.json +0 -1
- package/public-api.d.ts +0 -5
- package/shared/guards/index.d.ts +0 -2
- package/shared/guards/logged-in.guard.d.ts +0 -13
- package/shared/guards/verify-email.guard.d.ts +0 -11
- package/shared/interfaces/accounts.enum.d.ts +0 -7
- package/shared/interfaces/authprovider.enum.d.ts +0 -13
- package/shared/interfaces/config.interface.d.ts +0 -63
- package/shared/interfaces/index.d.ts +0 -7
- package/shared/interfaces/main.interface.d.ts +0 -13
- package/shared/interfaces/providers.interface.d.ts +0 -63
- package/shared/interfaces/tokens.d.ts +0 -16
- package/shared/interfaces/ui-providers.interface.d.ts +0 -65
- package/shared/services/analytics.service.d.ts +0 -10
- package/shared/services/auth-process.service.d.ts +0 -172
- package/shared/services/crashlytics.service.d.ts +0 -11
- package/shared/services/device-info.service.d.ts +0 -3
- package/shared/services/firebase.service.d.ts +0 -16
- package/shared/services/firestore-sync.service.d.ts +0 -16
- package/shared/services/index.d.ts +0 -9
- package/shared/services/performance.service.d.ts +0 -12
- package/shared/services/remoteconfig.service.d.ts +0 -18
- package/shared/services/ui.service.d.ts +0 -22
- package/shared/shared.module.d.ts +0 -14
- package/shared/types/DisplayWidth.d.ts +0 -7
- package/shared/types/Location.d.ts +0 -8
- package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
- package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
- package/shared/types/index.d.ts +0 -4
- package/testing/fakeavatar.module.d.ts +0 -2
- package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
- package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
- package/testing/fakes/FakeFireService.d.ts +0 -20
- package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
- package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
- package/testing/fakes/FakePickerService.d.ts +0 -6
- package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
- package/testing/fakes/FakeTranslateService.d.ts +0 -15
- package/testing/fakes/FakeUiService.d.ts +0 -25
- package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
- package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
- package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
- package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
- package/testing/fakes/index.d.ts +0 -16
- package/testing/ngx-firebase-testing.d.ts +0 -5
- package/testing/ngx-firebase-testing.metadata.json +0 -1
- package/testing/package.json +0 -29
- package/testing/public-api.d.ts +0 -4
- package/testing/test.module.d.ts +0 -4
- package/testing/utils/index.d.ts +0 -5
- package/testing/utils/patchConsole.d.ts +0 -4
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Plugins, Capacitor } from '@capacitor/core';
|
|
3
|
-
import { Injectable } from '@angular/core';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const { FirebaseCrashlytics } = Plugins;
|
|
6
|
-
export class CrashlyticsFirebaseCapacitorService {
|
|
7
|
-
constructor() {
|
|
8
|
-
}
|
|
9
|
-
setUserId(uid) {
|
|
10
|
-
if (Capacitor.isPluginAvailable('FirebaseCrashlytics')) {
|
|
11
|
-
FirebaseCrashlytics.setUserId({ userId: uid });
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
recordException(options) {
|
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
if (Capacitor.isPluginAvailable('FirebaseCrashlytics')) {
|
|
17
|
-
yield FirebaseCrashlytics.recordException(options);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
console.log('Crashlytics Exception (not sent)>', options.message, options);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
addLogMessage(message) {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
if (Capacitor.isPluginAvailable('FirebaseCrashlytics')) {
|
|
27
|
-
yield FirebaseCrashlytics.addLogMessage({ message });
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
console.log('Crashlytics Log (not sent)>', message);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
CrashlyticsFirebaseCapacitorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CrashlyticsFirebaseCapacitorService_Factory() { return new CrashlyticsFirebaseCapacitorService(); }, token: CrashlyticsFirebaseCapacitorService, providedIn: "root" });
|
|
36
|
-
CrashlyticsFirebaseCapacitorService.decorators = [
|
|
37
|
-
{ type: Injectable, args: [{ providedIn: 'root' },] }
|
|
38
|
-
];
|
|
39
|
-
CrashlyticsFirebaseCapacitorService.ctorParameters = () => [];
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jhc2hseXRpY3MtZmlyZWJhc2UtY2FwYWNpdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvY2FwYWNpdG9yL3NyYy9zZXJ2aWNlcy9jcmFzaGx5dGljcy1maXJlYmFzZS1jYXBhY2l0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFHeEMsTUFBTSxPQUFPLG1DQUFtQztJQUU1QztJQUVBLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBa0I7UUFDeEIsSUFBSSxTQUFTLENBQUMsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUNwRCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFSyxlQUFlLENBQUMsT0FBd0M7O1lBQzFELElBQUksU0FBUyxDQUFDLGlCQUFpQixDQUFDLHFCQUFxQixDQUFDLEVBQUU7Z0JBQ3BELE1BQU0sbUJBQW1CLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3REO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQzthQUM5RTtRQUNMLENBQUM7S0FBQTtJQUVLLGFBQWEsQ0FBQyxPQUFlOztZQUMvQixJQUFJLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO2dCQUNwRCxNQUFNLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDeEQ7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUN2RDtRQUNMLENBQUM7S0FBQTs7OztZQTNCSixVQUFVLFNBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2lucywgQ2FwYWNpdG9yIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbmltcG9ydCB7IGlPU0V4Y2VwdGlvbiwgQW5kcm9pZEV4Y2VwdGlvbiB9IGZyb20gJ0BjYXBhY2l0b3ItY29tbXVuaXR5L2ZpcmViYXNlLWNyYXNobHl0aWNzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDcmFzaGx5dGljc1Byb3ZpZGVyIH0gZnJvbSAnbmd4LWZpcmViYXNlJztcbmNvbnN0IHsgRmlyZWJhc2VDcmFzaGx5dGljcyB9ID0gUGx1Z2lucztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDcmFzaGx5dGljc0ZpcmViYXNlQ2FwYWNpdG9yU2VydmljZSBpbXBsZW1lbnRzIElDcmFzaGx5dGljc1Byb3ZpZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICkge1xuICAgIH1cblxuICAgIHNldFVzZXJJZCh1aWQ6IHN0cmluZyB8IG51bGwpIHtcbiAgICAgICAgaWYgKENhcGFjaXRvci5pc1BsdWdpbkF2YWlsYWJsZSgnRmlyZWJhc2VDcmFzaGx5dGljcycpKSB7XG4gICAgICAgICAgICBGaXJlYmFzZUNyYXNobHl0aWNzLnNldFVzZXJJZCh7IHVzZXJJZDogdWlkIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVjb3JkRXhjZXB0aW9uKG9wdGlvbnM6IGlPU0V4Y2VwdGlvbiB8IEFuZHJvaWRFeGNlcHRpb24pIHtcbiAgICAgICAgaWYgKENhcGFjaXRvci5pc1BsdWdpbkF2YWlsYWJsZSgnRmlyZWJhc2VDcmFzaGx5dGljcycpKSB7XG4gICAgICAgICAgICBhd2FpdCBGaXJlYmFzZUNyYXNobHl0aWNzLnJlY29yZEV4Y2VwdGlvbihvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDcmFzaGx5dGljcyBFeGNlcHRpb24gKG5vdCBzZW50KT4nLCBvcHRpb25zLm1lc3NhZ2UsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgYWRkTG9nTWVzc2FnZShtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKENhcGFjaXRvci5pc1BsdWdpbkF2YWlsYWJsZSgnRmlyZWJhc2VDcmFzaGx5dGljcycpKSB7XG4gICAgICAgICAgICBhd2FpdCBGaXJlYmFzZUNyYXNobHl0aWNzLmFkZExvZ01lc3NhZ2UoeyBtZXNzYWdlIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ0NyYXNobHl0aWNzIExvZyAobm90IHNlbnQpPicsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { forwardRef, Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { firebase } from '@firebase/app';
|
|
4
|
-
import 'firebase/auth';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "ngx-firebase";
|
|
7
|
-
import * as i2 from "../interfaces/config";
|
|
8
|
-
if (!firebase.auth) {
|
|
9
|
-
throw new Error('firebase.auth is undefined');
|
|
10
|
-
}
|
|
11
|
-
import { Plugins, Capacitor, Device, WebPluginRegistry } from '@capacitor/core';
|
|
12
|
-
import { AuthProvider, FirebaseService, MalSharedConfigToken } from 'ngx-firebase';
|
|
13
|
-
import { MalCapacitorConfigToken } from '../interfaces';
|
|
14
|
-
import { v4 as uuid } from 'uuid';
|
|
15
|
-
import { sha256 } from 'js-sha256';
|
|
16
|
-
WebPluginRegistry;
|
|
17
|
-
const { Browser, CapacitorFirebaseDynamicLinks, CapacitorFirebaseAuth } = Plugins;
|
|
18
|
-
const fireAuth = firebase.auth;
|
|
19
|
-
export class AuthCredentialFactoryCapacitorService {
|
|
20
|
-
constructor(fire, sharedConfig, capConfg) {
|
|
21
|
-
this.fire = fire;
|
|
22
|
-
this.sharedConfig = sharedConfig;
|
|
23
|
-
this.capConfg = capConfg;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Returns true if current platform is webplatform supported by @angular/fire
|
|
27
|
-
*/
|
|
28
|
-
get isWebPlatform() {
|
|
29
|
-
return ['https:', 'http:', 'chrome-extension'].includes(location.protocol);
|
|
30
|
-
}
|
|
31
|
-
deviceSupportsNativeApple() {
|
|
32
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
const deviceInfo = yield Device.getInfo();
|
|
34
|
-
const osMajor = parseInt(deviceInfo.osVersion.split('.')[0], 10);
|
|
35
|
-
if (osMajor >= 13 && Capacitor.platform === 'ios') {
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
else if (Capacitor.platform === 'ios') {
|
|
39
|
-
console.warn('Disabling native-support for signInWithApple as iOS version < 13');
|
|
40
|
-
}
|
|
41
|
-
return false;
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
isProviderSupported(provider) {
|
|
45
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
-
if (this.isWebPlatform) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
switch (provider) {
|
|
50
|
-
case AuthProvider.Apple:
|
|
51
|
-
return !!this.capConfg.signInWithApple || ((yield this.deviceSupportsNativeApple()) && Capacitor.isPluginAvailable('CapacitorFirebaseAuth'));
|
|
52
|
-
case AuthProvider.Google:
|
|
53
|
-
case AuthProvider.Facebook:
|
|
54
|
-
case AuthProvider.Twitter:
|
|
55
|
-
return Capacitor.isPluginAvailable('CapacitorFirebaseAuth');
|
|
56
|
-
default:
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
getCredential(provider) {
|
|
62
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
-
if (!this.isProviderSupported(provider)) {
|
|
64
|
-
throw new Error(`Provider ${provider} is not supported on this platform`);
|
|
65
|
-
}
|
|
66
|
-
if (!CapacitorFirebaseAuth) {
|
|
67
|
-
throw new Error(`CapacitorFirebaseAuth plugin not available`);
|
|
68
|
-
}
|
|
69
|
-
switch (provider) {
|
|
70
|
-
case AuthProvider.Google: {
|
|
71
|
-
const googleAuthProvider = new fireAuth.GoogleAuthProvider();
|
|
72
|
-
this.fire.addLogMessage(`signIn using CapacitorFirebaseAuth; provider=${provider}`);
|
|
73
|
-
const googleRes = yield CapacitorFirebaseAuth.signIn({ providerId: googleAuthProvider.providerId });
|
|
74
|
-
if (googleRes.idToken) {
|
|
75
|
-
this.fire.addLogMessage(`Creating credential using firebase; provider=${provider}`);
|
|
76
|
-
return fireAuth.GoogleAuthProvider.credential(googleRes.idToken);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
case AuthProvider.Facebook: {
|
|
83
|
-
const facebookAuthProvider = new fireAuth.FacebookAuthProvider();
|
|
84
|
-
this.fire.addLogMessage(`signIn using CapacitorFirebaseAuth; provider=${provider}`);
|
|
85
|
-
const facebookRes = yield CapacitorFirebaseAuth.signIn({ providerId: facebookAuthProvider.providerId });
|
|
86
|
-
if (facebookRes.idToken) {
|
|
87
|
-
this.fire.addLogMessage(`Creating credential using firebase; provider=${provider}`);
|
|
88
|
-
return fireAuth.FacebookAuthProvider.credential(facebookRes.idToken);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
case AuthProvider.Apple: {
|
|
95
|
-
if (yield this.deviceSupportsNativeApple()) {
|
|
96
|
-
const appleAuthProvider = new fireAuth.OAuthProvider('apple.com');
|
|
97
|
-
this.fire.addLogMessage(`signIn using CapacitorFirebaseAuth; provider=${provider}`);
|
|
98
|
-
const appleRes = yield CapacitorFirebaseAuth.signIn({ providerId: appleAuthProvider.providerId });
|
|
99
|
-
if (appleRes.idToken) {
|
|
100
|
-
this.fire.addLogMessage(`Creating credential using firebase; provider=${provider}`);
|
|
101
|
-
return appleAuthProvider.credential(appleRes);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
else if (this.capConfg.signInWithApple) {
|
|
108
|
-
const signInConfig = this.capConfg.signInWithApple;
|
|
109
|
-
return yield new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
110
|
-
const nonce = uuid();
|
|
111
|
-
const deepLinkHandler = CapacitorFirebaseDynamicLinks.addListener('deepLinkOpen', (data) => __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
if (data.url && data.url.startsWith(signInConfig.redirectDeekLink)) {
|
|
113
|
-
const params = new URLSearchParams(new URL(data.url).search);
|
|
114
|
-
const idToken = params.get('id_token');
|
|
115
|
-
const error = params.get('error');
|
|
116
|
-
deepLinkHandler.remove();
|
|
117
|
-
browserCloseHandler.remove();
|
|
118
|
-
yield Browser.close();
|
|
119
|
-
if (idToken && !error) {
|
|
120
|
-
const appleAuthProvider = new fireAuth.OAuthProvider('apple.com');
|
|
121
|
-
resolve(appleAuthProvider.credential({ idToken, rawNonce: nonce }));
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
reject(error);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}));
|
|
128
|
-
const browserCloseHandler = Browser.addListener('browserFinished', (data) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
// handle user close of browser (i.e. cancel operation)
|
|
130
|
-
deepLinkHandler.remove();
|
|
131
|
-
browserCloseHandler.remove();
|
|
132
|
-
resolve(null);
|
|
133
|
-
}));
|
|
134
|
-
yield Browser.open({
|
|
135
|
-
url: `${signInConfig.authUrl || 'http://appleid.apple.com/auth/authorize'}`
|
|
136
|
-
+ `?nonce=${encodeURIComponent(sha256(nonce))}`
|
|
137
|
-
+ `&client_id=${encodeURIComponent(signInConfig.clientId)}`
|
|
138
|
-
+ `&redirect_uri=${encodeURIComponent(signInConfig.redirectUrl)}`
|
|
139
|
-
+ `&response_type=code%20id_token&response_mode=form_post`
|
|
140
|
-
});
|
|
141
|
-
}));
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
case AuthProvider.Twitter: {
|
|
145
|
-
const twitterAuthProvider = new fireAuth.TwitterAuthProvider();
|
|
146
|
-
this.fire.addLogMessage(`signIn using CapacitorFirebaseAuth; provider=${provider}`);
|
|
147
|
-
const twitterRes = yield CapacitorFirebaseAuth.signIn({ providerId: twitterAuthProvider.providerId });
|
|
148
|
-
if (twitterRes.idToken && twitterRes.secret) {
|
|
149
|
-
this.fire.addLogMessage(`Creating credential using firebase; provider=${provider}`);
|
|
150
|
-
return fireAuth.TwitterAuthProvider.credential(twitterRes.idToken, twitterRes.secret);
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
return null;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
default:
|
|
157
|
-
this.fire.addLogMessage(`Attempting unsupported native provider; provider=${provider}`);
|
|
158
|
-
throw new Error(`${provider} is not available as a credential provider for this platform`);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
signOut() {
|
|
163
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
-
if (CapacitorFirebaseAuth) {
|
|
165
|
-
this.fire.addLogMessage('signOut using CapacitorFirebaseAuth');
|
|
166
|
-
yield CapacitorFirebaseAuth.signOut({});
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
AuthCredentialFactoryCapacitorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function AuthCredentialFactoryCapacitorService_Factory() { return new AuthCredentialFactoryCapacitorService(i0.ɵɵinject(i1.FirebaseService), i0.ɵɵinject(i1.MalSharedConfigToken), i0.ɵɵinject(i2.MalCapacitorConfigToken)); }, token: AuthCredentialFactoryCapacitorService, providedIn: "root" });
|
|
172
|
-
AuthCredentialFactoryCapacitorService.decorators = [
|
|
173
|
-
{ type: Injectable, args: [{
|
|
174
|
-
providedIn: 'root'
|
|
175
|
-
},] }
|
|
176
|
-
];
|
|
177
|
-
AuthCredentialFactoryCapacitorService.ctorParameters = () => [
|
|
178
|
-
{ type: FirebaseService },
|
|
179
|
-
{ type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => MalSharedConfigToken),] }] },
|
|
180
|
-
{ type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => MalCapacitorConfigToken),] }] }
|
|
181
|
-
];
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1mYWN0b3J5LWNhcGFjaXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZpcmViYXNlL2NhcGFjaXRvci9zcmMvc2VydmljZXMvY3JlZGVudGlhbC1mYWN0b3J5LWNhcGFjaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLGVBQWUsQ0FBQzs7OztBQUV2QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtJQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7Q0FDL0M7QUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEcsT0FBTyxFQUFFLFlBQVksRUFBOEIsZUFBZSxFQUFtQixvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNoSSxPQUFPLEVBQXNCLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbkMsaUJBQWlCLENBQUE7QUFFakIsTUFBTSxFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNsRixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO0FBSy9CLE1BQU0sT0FBTyxxQ0FBcUM7SUFTaEQsWUFDVSxJQUFxQixFQUMwQixZQUE2QixFQUMxQixRQUE0QjtRQUY5RSxTQUFJ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YUFBYSxDQUFDLGdEQUFnRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO3dCQUNwRixPQUFPLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ3ZGO3lCQUFNO3dCQUNMLE9BQU8sSUFBSSxDQUFDO3FCQUNiO2lCQUNGO2dCQUVEO29CQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG9EQUFvRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN4RixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSw4REFBOEQsQ0FBQyxDQUFDO2FBRTlGO1FBQ0gsQ0FBQztLQUFBO0lBRVksT0FBTzs7WUFDbEIsSUFBSSxxQkFBcUIsRUFBRTtnQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMscUNBQXFDLENBQUMsQ0FBQztnQkFDL0QsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDekM7UUFDSCxDQUFDO0tBQUE7Ozs7WUE5SkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFaa0QsZUFBZTs0Q0F3QjdELE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7NENBQzdDLE1BQU0sU0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpcmViYXNlIH0gZnJvbSAnQGZpcmViYXNlL2FwcCc7XG5pbXBvcnQgJ2ZpcmViYXNlL2F1dGgnO1xuaW1wb3J0IHsgQXV0aENyZWRlbnRpYWwgfSBmcm9tICdAZmlyZWJhc2UvYXV0aC10eXBlcyc7XG5pZiAoIWZpcmViYXNlLmF1dGgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdmaXJlYmFzZS5hdXRoIGlzIHVuZGVmaW5lZCcpO1xufVxuaW1wb3J0IHsgR29vZ2xlU2lnbkluUmVzdWx0LCBGYWNlYm9va1NpZ25JblJlc3VsdCwgVHdpdHRlclNpZ25JblJlc3VsdCwgQXBwbGVTaWduSW5SZXN1bHQgfSBmcm9tICdjYXBhY2l0b3ItZmlyZWJhc2UtYXV0aCc7XG5pbXBvcnQgeyBQbHVnaW5zLCBDYXBhY2l0b3IsIERldmljZSwgUGx1Z2luTGlzdGVuZXJIYW5kbGUsIFdlYlBsdWdpblJlZ2lzdHJ5IH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciwgSUNyZWRlbnRpYWxGYWN0b3J5UHJvdmlkZXIsIEZpcmViYXNlU2VydmljZSwgTWFsU2hhcmVkQ29uZmlnLCBNYWxTaGFyZWRDb25maWdUb2tlbiB9IGZyb20gJ25neC1maXJlYmFzZSc7XG5pbXBvcnQgeyBNYWxDYXBhY2l0b3JDb25maWcsIE1hbENhcGFjaXRvckNvbmZpZ1Rva2VuIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tICdqcy1zaGEyNTYnO1xuXG5XZWJQbHVnaW5SZWdpc3RyeVxuXG5jb25zdCB7IEJyb3dzZXIsIENhcGFjaXRvckZpcmViYXNlRHluYW1pY0xpbmtzLCBDYXBhY2l0b3JGaXJlYmFzZUF1dGggfSA9IFBsdWdpbnM7XG5jb25zdCBmaXJlQXV0aCA9IGZpcmViYXNlLmF1dGg7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhDcmVkZW50aWFsRmFjdG9yeUNhcGFjaXRvclNlcnZpY2UgaW1wbGVtZW50cyBJQ3JlZGVudGlhbEZhY3RvcnlQcm92aWRlciB7XG5cbiAgLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgY3VycmVudCBwbGF0Zm9ybSBpcyB3ZWJwbGF0Zm9ybSBzdXBwb3J0ZWQgYnkgQGFuZ3VsYXIvZmlyZVxuICovXG4gIGdldCBpc1dlYlBsYXRmb3JtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBbJ2h0dHBzOicsICdodHRwOicsICdjaHJvbWUtZXh0ZW5zaW9uJ10uaW5jbHVkZXMobG9jYXRpb24ucHJvdG9jb2wpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmaXJlOiBGaXJlYmFzZVNlcnZpY2UsXG4gICAgQEluamVjdChmb3J3YXJkUmVmKCgpID0+IE1hbFNoYXJlZENvbmZpZ1Rva2VuKSkgcHVibGljIHNoYXJlZENvbmZpZzogTWFsU2hhcmVkQ29uZmlnLFxuICAgIEBJbmplY3QoZm9yd2FyZFJlZigoKSA9PiBNYWxDYXBhY2l0b3JDb25maWdUb2tlbikpIHB1YmxpYyBjYXBDb25mZzogTWFsQ2FwYWNpdG9yQ29uZmlnLFxuICApIHtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGV2aWNlU3VwcG9ydHNOYXRpdmVBcHBsZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBkZXZpY2VJbmZvID0gYXdhaXQgRGV2aWNlLmdldEluZm8oKTtcbiAgICBjb25zdCBvc01ham9yID0gcGFyc2VJbnQoZGV2aWNlSW5mby5vc1ZlcnNpb24uc3BsaXQoJy4nKVswXSwgMTApO1xuICAgIGlmIChvc01ham9yID49IDEzICYmIENhcGFjaXRvci5wbGF0Zm9ybSA9PT0gJ2lvcycpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChDYXBhY2l0b3IucGxhdGZvcm0gPT09ICdpb3MnKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Rpc2FibGluZyBuYXRpdmUtc3VwcG9ydCBmb3Igc2lnbkluV2l0aEFwcGxlIGFzIGlPUyB2ZXJzaW9uIDwgMTMnKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzUHJvdmlkZXJTdXBwb3J0ZWQocHJvdmlkZXI6IEF1dGhQcm92aWRlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLmlzV2ViUGxhdGZvcm0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc3dpdGNoIChwcm92aWRlcikge1xuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuQXBwbGU6XG4gICAgICAgIHJldHVybiAhIXRoaXMuY2FwQ29uZmcuc2lnbkluV2l0aEFwcGxlIHx8IChhd2FpdCB0aGlzLmRldmljZVN1cHBvcnRzTmF0aXZlQXBwbGUoKSAmJiBDYXBhY2l0b3IuaXNQbHVnaW5BdmFpbGFibGUoJ0NhcGFjaXRvckZpcmViYXNlQXV0aCcpKTtcblxuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuR29vZ2xlOlxuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuRmFjZWJvb2s6XG4gICAgICBjYXNlIEF1dGhQcm92aWRlci5Ud2l0dGVyOlxuICAgICAgICByZXR1cm4gQ2FwYWNpdG9yLmlzUGx1Z2luQXZhaWxhYmxlKCdDYXBhY2l0b3JGaXJlYmFzZUF1dGgnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDcmVkZW50aWFsKHByb3ZpZGVyOiBBdXRoUHJvdmlkZXIpOiBQcm9taXNlPEF1dGhDcmVkZW50aWFsIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5pc1Byb3ZpZGVyU3VwcG9ydGVkKHByb3ZpZGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQcm92aWRlciAke3Byb3ZpZGVyfSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm1gKTtcbiAgICB9XG4gICAgaWYgKCFDYXBhY2l0b3JGaXJlYmFzZUF1dGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2FwYWNpdG9yRmlyZWJhc2VBdXRoIHBsdWdpbiBub3QgYXZhaWxhYmxlYCk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm92aWRlcikge1xuXG4gICAgICBjYXNlIEF1dGhQcm92aWRlci5Hb29nbGU6IHtcbiAgICAgICAgY29uc3QgZ29vZ2xlQXV0aFByb3ZpZGVyID0gbmV3IGZpcmVBdXRoLkdvb2dsZUF1dGhQcm92aWRlcigpO1xuICAgICAgICB0aGlzLmZpcmUuYWRkTG9nTWVzc2FnZShgc2lnbkluIHVzaW5nIENhcGFjaXRvckZpcmViYXNlQXV0aDsgcHJvdmlkZXI9JHtwcm92aWRlcn1gKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlUmVzOiBHb29nbGVTaWduSW5SZXN1bHRcbiAgICAgICAgICA9IGF3YWl0IENhcGFjaXRvckZpcmViYXNlQXV0aC5zaWduSW4oeyBwcm92aWRlcklkOiBnb29nbGVBdXRoUHJvdmlkZXIucHJvdmlkZXJJZCB9KSBhcyBHb29nbGVTaWduSW5SZXN1bHQ7XG4gICAgICAgIGlmIChnb29nbGVSZXMuaWRUb2tlbikge1xuICAgICAgICAgIHRoaXMuZmlyZS5hZGRMb2dNZXNzYWdlKGBDcmVhdGluZyBjcmVkZW50aWFsIHVzaW5nIGZpcmViYXNlOyBwcm92aWRlcj0ke3Byb3ZpZGVyfWApO1xuICAgICAgICAgIHJldHVybiBmaXJlQXV0aC5Hb29nbGVBdXRoUHJvdmlkZXIuY3JlZGVudGlhbChnb29nbGVSZXMuaWRUb2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuRmFjZWJvb2s6IHtcbiAgICAgICAgY29uc3QgZmFjZWJvb2tBdXRoUHJvdmlkZXIgPSBuZXcgZmlyZUF1dGguRmFjZWJvb2tBdXRoUHJvdmlkZXIoKTtcbiAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoYHNpZ25JbiB1c2luZyBDYXBhY2l0b3JGaXJlYmFzZUF1dGg7IHByb3ZpZGVyPSR7cHJvdmlkZXJ9YCk7XG4gICAgICAgIGNvbnN0IGZhY2Vib29rUmVzOiBGYWNlYm9va1NpZ25JblJlc3VsdFxuICAgICAgICAgID0gYXdhaXQgQ2FwYWNpdG9yRmlyZWJhc2VBdXRoLnNpZ25Jbih7IHByb3ZpZGVySWQ6IGZhY2Vib29rQXV0aFByb3ZpZGVyLnByb3ZpZGVySWQgfSkgYXMgRmFjZWJvb2tTaWduSW5SZXN1bHQ7XG4gICAgICAgIGlmIChmYWNlYm9va1Jlcy5pZFRva2VuKSB7XG4gICAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoYENyZWF0aW5nIGNyZWRlbnRpYWwgdXNpbmcgZmlyZWJhc2U7IHByb3ZpZGVyPSR7cHJvdmlkZXJ9YCk7XG4gICAgICAgICAgcmV0dXJuIGZpcmVBdXRoLkZhY2Vib29rQXV0aFByb3ZpZGVyLmNyZWRlbnRpYWwoZmFjZWJvb2tSZXMuaWRUb2tlbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuQXBwbGU6IHtcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMuZGV2aWNlU3VwcG9ydHNOYXRpdmVBcHBsZSgpKSB7XG4gICAgICAgICAgY29uc3QgYXBwbGVBdXRoUHJvdmlkZXIgPSBuZXcgZmlyZUF1dGguT0F1dGhQcm92aWRlcignYXBwbGUuY29tJyk7XG4gICAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoYHNpZ25JbiB1c2luZyBDYXBhY2l0b3JGaXJlYmFzZUF1dGg7IHByb3ZpZGVyPSR7cHJvdmlkZXJ9YCk7XG4gICAgICAgICAgY29uc3QgYXBwbGVSZXM6IEFwcGxlU2lnbkluUmVzdWx0XG4gICAgICAgICAgICA9IGF3YWl0IENhcGFjaXRvckZpcmViYXNlQXV0aC5zaWduSW4oeyBwcm92aWRlcklkOiBhcHBsZUF1dGhQcm92aWRlci5wcm92aWRlcklkIH0pIGFzIEFwcGxlU2lnbkluUmVzdWx0O1xuICAgICAgICAgIGlmIChhcHBsZVJlcy5pZFRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLmZpcmUuYWRkTG9nTWVzc2FnZShgQ3JlYXRpbmcgY3JlZGVudGlhbCB1c2luZyBmaXJlYmFzZTsgcHJvdmlkZXI9JHtwcm92aWRlcn1gKTtcbiAgICAgICAgICAgIHJldHVybiBhcHBsZUF1dGhQcm92aWRlci5jcmVkZW50aWFsKGFwcGxlUmVzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY2FwQ29uZmcuc2lnbkluV2l0aEFwcGxlKSB7XG4gICAgICAgICAgY29uc3Qgc2lnbkluQ29uZmlnID0gdGhpcy5jYXBDb25mZy5zaWduSW5XaXRoQXBwbGU7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlPEF1dGhDcmVkZW50aWFsIHwgbnVsbD4oYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm9uY2UgPSB1dWlkKCk7XG4gICAgICAgICAgICBjb25zdCBkZWVwTGlua0hhbmRsZXI6IFBsdWdpbkxpc3RlbmVySGFuZGxlID0gQ2FwYWNpdG9yRmlyZWJhc2VEeW5hbWljTGlua3MuYWRkTGlzdGVuZXIoJ2RlZXBMaW5rT3BlbicsIGFzeW5jIChkYXRhOiB7IHVybDogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKGRhdGEudXJsICYmIGRhdGEudXJsLnN0YXJ0c1dpdGgoc2lnbkluQ29uZmlnLnJlZGlyZWN0RGVla0xpbmspKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMKGRhdGEudXJsKS5zZWFyY2gpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBwYXJhbXMuZ2V0KCdpZF90b2tlbicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcGFyYW1zLmdldCgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICBkZWVwTGlua0hhbmRsZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgYnJvd3NlckNsb3NlSGFuZGxlci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBCcm93c2VyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgaWYgKGlkVG9rZW4gJiYgIWVycm9yKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBhcHBsZUF1dGhQcm92aWRlciA9IG5ldyBmaXJlQXV0aC5PQXV0aFByb3ZpZGVyKCdhcHBsZS5jb20nKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoYXBwbGVBdXRoUHJvdmlkZXIuY3JlZGVudGlhbCh7IGlkVG9rZW4sIHJhd05vbmNlOiBub25jZSB9KSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGJyb3dzZXJDbG9zZUhhbmRsZXI6IFBsdWdpbkxpc3RlbmVySGFuZGxlID0gQnJvd3Nlci5hZGRMaXN0ZW5lcignYnJvd3NlckZpbmlzaGVkJywgYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAvLyBoYW5kbGUgdXNlciBjbG9zZSBvZiBicm93c2VyIChpLmUuIGNhbmNlbCBvcGVyYXRpb24pXG4gICAgICAgICAgICAgIGRlZXBMaW5rSGFuZGxlci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgYnJvd3NlckNsb3NlSGFuZGxlci5yZW1vdmUoKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYXdhaXQgQnJvd3Nlci5vcGVuKHtcbiAgICAgICAgICAgICAgdXJsOiBgJHtzaWduSW5Db25maWcuYXV0aFVybCB8fCAnaHR0cDovL2FwcGxlaWQuYXBwbGUuY29tL2F1dGgvYXV0aG9yaXplJ31gXG4gICAgICAgICAgICAgICAgKyBgP25vbmNlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNoYTI1Nihub25jZSkpfWBcbiAgICAgICAgICAgICAgICArIGAmY2xpZW50X2lkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNpZ25JbkNvbmZpZy5jbGllbnRJZCl9YFxuICAgICAgICAgICAgICAgICsgYCZyZWRpcmVjdF91cmk9JHtlbmNvZGVVUklDb21wb25lbnQoc2lnbkluQ29uZmlnLnJlZGlyZWN0VXJsKX1gXG4gICAgICAgICAgICAgICAgKyBgJnJlc3BvbnNlX3R5cGU9Y29kZSUyMGlkX3Rva2VuJnJlc3BvbnNlX21vZGU9Zm9ybV9wb3N0YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FzZSBBdXRoUHJvdmlkZXIuVHdpdHRlcjoge1xuICAgICAgICBjb25zdCB0d2l0dGVyQXV0aFByb3ZpZGVyID0gbmV3IGZpcmVBdXRoLlR3aXR0ZXJBdXRoUHJvdmlkZXIoKTtcbiAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoYHNpZ25JbiB1c2luZyBDYXBhY2l0b3JGaXJlYmFzZUF1dGg7IHByb3ZpZGVyPSR7cHJvdmlkZXJ9YCk7XG4gICAgICAgIGNvbnN0IHR3aXR0ZXJSZXM6IFR3aXR0ZXJTaWduSW5SZXN1bHRcbiAgICAgICAgICA9IGF3YWl0IENhcGFjaXRvckZpcmViYXNlQXV0aC5zaWduSW4oeyBwcm92aWRlcklkOiB0d2l0dGVyQXV0aFByb3ZpZGVyLnByb3ZpZGVySWQgfSkgYXMgVHdpdHRlclNpZ25JblJlc3VsdDtcbiAgICAgICAgaWYgKHR3aXR0ZXJSZXMuaWRUb2tlbiAmJiB0d2l0dGVyUmVzLnNlY3JldCkge1xuICAgICAgICAgIHRoaXMuZmlyZS5hZGRMb2dNZXNzYWdlKGBDcmVhdGluZyBjcmVkZW50aWFsIHVzaW5nIGZpcmViYXNlOyBwcm92aWRlcj0ke3Byb3ZpZGVyfWApO1xuICAgICAgICAgIHJldHVybiBmaXJlQXV0aC5Ud2l0dGVyQXV0aFByb3ZpZGVyLmNyZWRlbnRpYWwodHdpdHRlclJlcy5pZFRva2VuLCB0d2l0dGVyUmVzLnNlY3JldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5maXJlLmFkZExvZ01lc3NhZ2UoYEF0dGVtcHRpbmcgdW5zdXBwb3J0ZWQgbmF0aXZlIHByb3ZpZGVyOyBwcm92aWRlcj0ke3Byb3ZpZGVyfWApO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvdmlkZXJ9IGlzIG5vdCBhdmFpbGFibGUgYXMgYSBjcmVkZW50aWFsIHByb3ZpZGVyIGZvciB0aGlzIHBsYXRmb3JtYCk7XG5cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2lnbk91dCgpIHtcbiAgICBpZiAoQ2FwYWNpdG9yRmlyZWJhc2VBdXRoKSB7XG4gICAgICB0aGlzLmZpcmUuYWRkTG9nTWVzc2FnZSgnc2lnbk91dCB1c2luZyBDYXBhY2l0b3JGaXJlYmFzZUF1dGgnKTtcbiAgICAgIGF3YWl0IENhcGFjaXRvckZpcmViYXNlQXV0aC5zaWduT3V0KHt9KTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export * from './analytics-firebase-capacitor.service';
|
|
2
|
-
export * from './crashlytics-firebase-capacitor.service';
|
|
3
|
-
export * from './credential-factory-capacitor.service';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvY2FwYWNpdG9yL3NyYy9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5hbHl0aWNzLWZpcmViYXNlLWNhcGFjaXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY3Jhc2hseXRpY3MtZmlyZWJhc2UtY2FwYWNpdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVkZW50aWFsLWZhY3RvcnktY2FwYWNpdG9yLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// @angular/*
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { InAppPurchase2 } from '@ionic-native/in-app-purchase-2/ngx';
|
|
4
|
-
import { MalSharedConfigToken } from 'ngx-firebase';
|
|
5
|
-
import { MalIAPOptionsToken } from './tokens';
|
|
6
|
-
export class MalIAPModule {
|
|
7
|
-
static forRoot(options) {
|
|
8
|
-
return {
|
|
9
|
-
ngModule: MalIAPModule,
|
|
10
|
-
providers: [
|
|
11
|
-
{ provide: MalIAPOptionsToken, useValue: options },
|
|
12
|
-
{
|
|
13
|
-
provide: InAppPurchase2,
|
|
14
|
-
useFactory: functionsInAppPurchase2Factory,
|
|
15
|
-
deps: [MalSharedConfigToken]
|
|
16
|
-
},
|
|
17
|
-
]
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
MalIAPModule.decorators = [
|
|
22
|
-
{ type: NgModule, args: [{},] }
|
|
23
|
-
];
|
|
24
|
-
function functionsInAppPurchase2Factory(sharedConfig) {
|
|
25
|
-
if (false === sharedConfig.services.inAppPurchase) {
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
return new InAppPurchase2();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFwLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXJlYmFzZS9pYXAvc3JjL2lhcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQW1CLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc5QyxNQUFNLE9BQU8sWUFBWTtJQUV2QixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQXNCO1FBQ25DLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQ1A7Z0JBQ0UsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtnQkFDbEQ7b0JBQ0UsT0FBTyxFQUFFLGNBQWM7b0JBQ3ZCLFVBQVUsRUFBRSw4QkFBOEI7b0JBQzFDLElBQUksRUFBRSxDQUFDLG9CQUFvQixDQUFDO2lCQUM3QjthQUNGO1NBQ0osQ0FBQztJQUNKLENBQUM7OztZQWhCRixRQUFRLFNBQUMsRUFBRTs7QUFvQlosU0FBUyw4QkFBOEIsQ0FBQyxZQUE2QjtJQUNuRSxJQUFJLEtBQUssS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRTtRQUNqRCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtTQUFNO1FBQ0wsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0tBQzdCO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBhbmd1bGFyLypcbmltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbkFwcFB1cmNoYXNlMiB9IGZyb20gJ0Bpb25pYy1uYXRpdmUvaW4tYXBwLXB1cmNoYXNlLTIvbmd4JztcbmltcG9ydCB7IE1hbFNoYXJlZENvbmZpZywgTWFsU2hhcmVkQ29uZmlnVG9rZW4gfSBmcm9tICduZ3gtZmlyZWJhc2UnO1xuaW1wb3J0IHsgTWFsSUFQT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYWxJQVBPcHRpb25zVG9rZW4gfSBmcm9tICcuL3Rva2Vucyc7XG5cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBNYWxJQVBNb2R1bGUge1xuXG4gIHN0YXRpYyBmb3JSb290KG9wdGlvbnM6IE1hbElBUE9wdGlvbnMpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE1hbElBUE1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTWFsSUFQTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOlxuICAgICAgICBbXG4gICAgICAgICAgeyBwcm92aWRlOiBNYWxJQVBPcHRpb25zVG9rZW4sIHVzZVZhbHVlOiBvcHRpb25zIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogSW5BcHBQdXJjaGFzZTIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBmdW5jdGlvbnNJbkFwcFB1cmNoYXNlMkZhY3RvcnksXG4gICAgICAgICAgICBkZXBzOiBbTWFsU2hhcmVkQ29uZmlnVG9rZW5dXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgIH07XG4gIH1cblxufVxuXG5mdW5jdGlvbiBmdW5jdGlvbnNJbkFwcFB1cmNoYXNlMkZhY3Rvcnkoc2hhcmVkQ29uZmlnOiBNYWxTaGFyZWRDb25maWcpOiBJbkFwcFB1cmNoYXNlMiB8IHVuZGVmaW5lZCB7XG4gIGlmIChmYWxzZSA9PT0gc2hhcmVkQ29uZmlnLnNlcnZpY2VzLmluQXBwUHVyY2hhc2UpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgSW5BcHBQdXJjaGFzZTIoKTtcbiAgfVxufSJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export var IAPProductTypes;
|
|
2
|
-
(function (IAPProductTypes) {
|
|
3
|
-
IAPProductTypes["PAID_SUBSCRIPTION"] = "PAID_SUBSCRIPTION";
|
|
4
|
-
})(IAPProductTypes || (IAPProductTypes = {}));
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmlyZWJhc2UvaWFwL3NyYy9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGVBRVg7QUFGRCxXQUFZLGVBQWU7SUFDdkIsMERBQXVDLENBQUE7QUFDM0MsQ0FBQyxFQUZXLGVBQWUsS0FBZixlQUFlLFFBRTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFQUHJvZHVjdE9wdGlvbnMgfSBmcm9tICdAaW9uaWMtbmF0aXZlL2luLWFwcC1wdXJjaGFzZS0yL25neCc7XG5cbmV4cG9ydCBlbnVtIElBUFByb2R1Y3RUeXBlcyB7XG4gICAgUEFJRF9TVUJTQ1JJUFRJT04gPSAnUEFJRF9TVUJTQ1JJUFRJT04nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFsSUFQUHJvZHVjdE9wdGlvbnMgZXh0ZW5kcyBJQVBQcm9kdWN0T3B0aW9ucyB7XG4gICAgdHlwZTogSUFQUHJvZHVjdFR5cGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hbElBUE9wdGlvbnMge1xuICAgIHZhbGlkYXRvclVybDogc3RyaW5nO1xuICAgIHByb2R1Y3RzOiBNYWxJQVBQcm9kdWN0T3B0aW9uc1tdO1xufVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZpcmViYXNlLWlhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXJlYmFzZS9pYXAvc3JjL25neC1maXJlYmFzZS1pYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './iap.module';
|
|
2
|
-
export * from './interfaces';
|
|
3
|
-
export * from './tokens';
|
|
4
|
-
export * from './services/iap.service';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1maXJlYmFzZS9pYXAvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFFN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxVQUFVLENBQUM7QUFFekIsY0FBYyx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vaWFwLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL3Rva2Vucyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvaWFwLnNlcnZpY2UnO1xuIl19
|