ngx-universal-zone 1.0.7 → 2.0.1
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 +2 -0
- package/analytics/index.d.ts +237 -4
- package/database/index.d.ts +122 -6
- package/fesm2022/ngx-universal-zone-analytics.mjs +12 -12
- package/fesm2022/ngx-universal-zone-analytics.mjs.map +1 -1
- package/fesm2022/ngx-universal-zone-database.mjs +8 -22
- package/fesm2022/ngx-universal-zone-database.mjs.map +1 -1
- package/fesm2022/ngx-universal-zone-pipes.mjs +6 -6
- package/fesm2022/ngx-universal-zone-pipes.mjs.map +1 -1
- package/fesm2022/ngx-universal-zone-pub-sub.mjs +7 -7
- package/fesm2022/ngx-universal-zone-pub-sub.mjs.map +1 -1
- package/fesm2022/ngx-universal-zone-ui.mjs +20 -20
- package/fesm2022/ngx-universal-zone-ui.mjs.map +1 -1
- package/fesm2022/ngx-universal-zone.mjs +20 -34
- package/fesm2022/ngx-universal-zone.mjs.map +1 -1
- package/index.d.ts +184 -3
- package/package.json +4 -4
- package/pipes/index.d.ts +29 -2
- package/pub-sub/index.d.ts +37 -2
- package/ui/index.d.ts +56 -5
- package/analytics/analytics.module.d.ts +0 -2
- package/analytics/base-analytics.service.d.ts +0 -135
- package/analytics/firebase-analytics.service.d.ts +0 -81
- package/analytics/router-analytics.service.d.ts +0 -16
- package/database/db-base.service.d.ts +0 -37
- package/database/db-setting-constant.d.ts +0 -7
- package/database/db-web.service.d.ts +0 -50
- package/database/db.module.d.ts +0 -9
- package/database/schema.service.d.ts +0 -25
- package/pipes/formateDate.pipe.d.ts +0 -8
- package/pipes/safe.pipe.d.ts +0 -18
- package/pub-sub/i-hash.d.ts +0 -10
- package/pub-sub/ngx-pub-sub.module.d.ts +0 -7
- package/pub-sub/ngx-pub-sub.service.d.ts +0 -27
- package/pub-sub/subject-type.enum.d.ts +0 -5
- package/public-api.d.ts +0 -6
- package/shared/app-injector.d.ts +0 -6
- package/shared/app-setting.service.d.ts +0 -18
- package/shared/flag-based-preloading-strategy.d.ts +0 -12
- package/shared/helper.service.d.ts +0 -15
- package/shared/message-bus/index.d.ts +0 -4
- package/shared/message-bus/message-bus.d.ts +0 -15
- package/shared/message-bus/message-bus.testing.d.ts +0 -9
- package/shared/message-bus/messages.d.ts +0 -2
- package/shared/message-bus/models.d.ts +0 -39
- package/shared/universal-zone.provider.d.ts +0 -2
- package/ui/directives/directives.module.d.ts +0 -9
- package/ui/directives/long-ress.directive.d.ts +0 -21
- package/ui/directives/only-number.directive.d.ts +0 -7
- package/ui/no-data/no-data.component.d.ts +0 -13
- package/ui/no-data/no-data.module.d.ts +0 -8
package/README.md
ADDED
package/analytics/index.d.ts
CHANGED
|
@@ -1,4 +1,237 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Provider } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
|
|
5
|
+
interface IAnalyticsConfig {
|
|
6
|
+
apiKey: string;
|
|
7
|
+
authDomain: string;
|
|
8
|
+
projectId: string;
|
|
9
|
+
storageBucket: string;
|
|
10
|
+
messagingSenderId: string;
|
|
11
|
+
appId: string;
|
|
12
|
+
measurementId: string;
|
|
13
|
+
}
|
|
14
|
+
interface IAnalyticsService {
|
|
15
|
+
/**
|
|
16
|
+
* Track page view
|
|
17
|
+
*/
|
|
18
|
+
trackPageView(pageName: string, pageTitle?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Track button click events
|
|
21
|
+
*/
|
|
22
|
+
trackButtonClick(buttonName: string, buttonLocation?: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Track user navigation events
|
|
25
|
+
*/
|
|
26
|
+
trackNavigation(from: string, to: string, method?: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Track user actions in the app
|
|
29
|
+
*/
|
|
30
|
+
trackUserAction(action: string, category: string, label?: string, value?: number): void;
|
|
31
|
+
/**
|
|
32
|
+
* Track business-specific events
|
|
33
|
+
*/
|
|
34
|
+
trackBusinessEvent(eventName: string, parameters: {
|
|
35
|
+
[key: string]: any;
|
|
36
|
+
}): void;
|
|
37
|
+
/**
|
|
38
|
+
* Track errors that occur in the app
|
|
39
|
+
*/
|
|
40
|
+
trackError(errorMessage: string, errorLocation: string, errorType?: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Set user ID for analytics
|
|
43
|
+
*/
|
|
44
|
+
setUserId(userId: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Set user properties
|
|
47
|
+
*/
|
|
48
|
+
setUserProperties(properties: {
|
|
49
|
+
[key: string]: any;
|
|
50
|
+
}): void;
|
|
51
|
+
/**
|
|
52
|
+
* Test analytics functionality
|
|
53
|
+
*/
|
|
54
|
+
testAnalytics(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Get analytics debug info
|
|
57
|
+
*/
|
|
58
|
+
getDebugInfo(): any;
|
|
59
|
+
/**
|
|
60
|
+
* Dashboard specific events
|
|
61
|
+
*/
|
|
62
|
+
trackDashboardEvents: {
|
|
63
|
+
dashboardViewed(): void;
|
|
64
|
+
dashboardButtonClicked(buttonType: string): void;
|
|
65
|
+
storeInfoClicked(): void;
|
|
66
|
+
lottieAnimationCompleted(): void;
|
|
67
|
+
syncStatusViewed(status: string): void;
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
declare abstract class BaseAnalyticsService implements IAnalyticsService {
|
|
71
|
+
protected isDebugMode: boolean;
|
|
72
|
+
protected eventCount: number;
|
|
73
|
+
abstract trackPageView(pageName: string, pageTitle?: string): void;
|
|
74
|
+
abstract trackButtonClick(buttonName: string, buttonLocation?: string): void;
|
|
75
|
+
abstract trackNavigation(from: string, to: string, method?: string): void;
|
|
76
|
+
abstract trackUserAction(action: string, category: string, label?: string, value?: number): void;
|
|
77
|
+
abstract trackBusinessEvent(eventName: string, parameters: {
|
|
78
|
+
[key: string]: any;
|
|
79
|
+
}): void;
|
|
80
|
+
abstract trackError(errorMessage: string, errorLocation: string, errorType?: string): void;
|
|
81
|
+
abstract setUserId(userId: string): void;
|
|
82
|
+
abstract setUserProperties(properties: {
|
|
83
|
+
[key: string]: any;
|
|
84
|
+
}): void;
|
|
85
|
+
abstract testAnalytics(): void;
|
|
86
|
+
abstract getDebugInfo(): any;
|
|
87
|
+
/**
|
|
88
|
+
* Dashboard specific events
|
|
89
|
+
*/
|
|
90
|
+
abstract trackDashboardEvents: {
|
|
91
|
+
dashboardViewed(): void;
|
|
92
|
+
dashboardButtonClicked(buttonType: string): void;
|
|
93
|
+
storeInfoClicked(): void;
|
|
94
|
+
lottieAnimationCompleted(): void;
|
|
95
|
+
syncStatusViewed(status: string): void;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Internal method to track event count in debug mode
|
|
99
|
+
*/
|
|
100
|
+
protected incrementEventCount(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Log debug information
|
|
103
|
+
*/
|
|
104
|
+
protected logDebug(message: string, data?: any): void;
|
|
105
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseAnalyticsService, never>;
|
|
106
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BaseAnalyticsService>;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* No-op implementation for development environment
|
|
110
|
+
*/
|
|
111
|
+
declare class NoOpAnalyticsService extends BaseAnalyticsService {
|
|
112
|
+
trackPageView(pageName: string, pageTitle?: string): void;
|
|
113
|
+
trackButtonClick(buttonName: string, buttonLocation?: string): void;
|
|
114
|
+
trackNavigation(from: string, to: string, method?: string): void;
|
|
115
|
+
trackUserAction(action: string, category: string, label?: string, value?: number): void;
|
|
116
|
+
trackBusinessEvent(eventName: string, parameters: {
|
|
117
|
+
[key: string]: any;
|
|
118
|
+
}): void;
|
|
119
|
+
trackError(errorMessage: string, errorLocation: string, errorType?: string): void;
|
|
120
|
+
setUserId(userId: string): void;
|
|
121
|
+
setUserProperties(properties: {
|
|
122
|
+
[key: string]: any;
|
|
123
|
+
}): void;
|
|
124
|
+
testAnalytics(): void;
|
|
125
|
+
getDebugInfo(): any;
|
|
126
|
+
/**
|
|
127
|
+
* Dashboard specific events
|
|
128
|
+
*/
|
|
129
|
+
trackDashboardEvents: {
|
|
130
|
+
dashboardViewed: () => void;
|
|
131
|
+
dashboardButtonClicked: (buttonType: string) => void;
|
|
132
|
+
storeInfoClicked: () => void;
|
|
133
|
+
lottieAnimationCompleted: () => void;
|
|
134
|
+
syncStatusViewed: (status: string) => void;
|
|
135
|
+
};
|
|
136
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NoOpAnalyticsService, never>;
|
|
137
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NoOpAnalyticsService>;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
interface IFirebaseAnalytics {
|
|
141
|
+
logEvent: (eventName: string, parameters?: {
|
|
142
|
+
[key: string]: any;
|
|
143
|
+
}) => void;
|
|
144
|
+
setUserId: (userId: string) => void;
|
|
145
|
+
setUserProperties: (properties: {
|
|
146
|
+
[key: string]: any;
|
|
147
|
+
}) => void;
|
|
148
|
+
setCurrentScreen: (screenName: string) => void;
|
|
149
|
+
}
|
|
150
|
+
declare class FirebaseAnalyticsService extends BaseAnalyticsService {
|
|
151
|
+
private analytics;
|
|
152
|
+
private config;
|
|
153
|
+
constructor();
|
|
154
|
+
/**
|
|
155
|
+
* Initialize Firebase Analytics
|
|
156
|
+
*/
|
|
157
|
+
initialize(analytics: IFirebaseAnalytics, config: IAnalyticsConfig, isDebugMode?: boolean): void;
|
|
158
|
+
/**
|
|
159
|
+
* Monitor gtag calls for debugging
|
|
160
|
+
*/
|
|
161
|
+
private monitorGtagCalls;
|
|
162
|
+
/**
|
|
163
|
+
* Track page view
|
|
164
|
+
*/
|
|
165
|
+
trackPageView(pageName: string, pageTitle?: string): void;
|
|
166
|
+
/**
|
|
167
|
+
* Track button click events
|
|
168
|
+
*/
|
|
169
|
+
trackButtonClick(buttonName: string, buttonLocation?: string): void;
|
|
170
|
+
/**
|
|
171
|
+
* Track user navigation events
|
|
172
|
+
*/
|
|
173
|
+
trackNavigation(from: string, to: string, method?: string): void;
|
|
174
|
+
/**
|
|
175
|
+
* Track user actions in the app
|
|
176
|
+
*/
|
|
177
|
+
trackUserAction(action: string, category: string, label?: string, value?: number): void;
|
|
178
|
+
/**
|
|
179
|
+
* Track business-specific events
|
|
180
|
+
*/
|
|
181
|
+
trackBusinessEvent(eventName: string, parameters: {
|
|
182
|
+
[key: string]: any;
|
|
183
|
+
}): void;
|
|
184
|
+
/**
|
|
185
|
+
* Track errors that occur in the app
|
|
186
|
+
*/
|
|
187
|
+
trackError(errorMessage: string, errorLocation: string, errorType?: string): void;
|
|
188
|
+
/**
|
|
189
|
+
* Set user ID for analytics
|
|
190
|
+
*/
|
|
191
|
+
setUserId(userId: string): void;
|
|
192
|
+
/**
|
|
193
|
+
* Set user properties
|
|
194
|
+
*/
|
|
195
|
+
setUserProperties(properties: {
|
|
196
|
+
[key: string]: any;
|
|
197
|
+
}): void;
|
|
198
|
+
/**
|
|
199
|
+
* Test analytics functionality
|
|
200
|
+
*/
|
|
201
|
+
testAnalytics(): void;
|
|
202
|
+
/**
|
|
203
|
+
* Get analytics debug info
|
|
204
|
+
*/
|
|
205
|
+
getDebugInfo(): any;
|
|
206
|
+
/**
|
|
207
|
+
* Dashboard specific events
|
|
208
|
+
*/
|
|
209
|
+
trackDashboardEvents: {
|
|
210
|
+
dashboardViewed: () => void;
|
|
211
|
+
dashboardButtonClicked: (buttonType: string) => void;
|
|
212
|
+
storeInfoClicked: () => void;
|
|
213
|
+
lottieAnimationCompleted: () => void;
|
|
214
|
+
syncStatusViewed: (status: string) => void;
|
|
215
|
+
};
|
|
216
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FirebaseAnalyticsService, never>;
|
|
217
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<FirebaseAnalyticsService>;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
declare class RouterAnalyticsService {
|
|
221
|
+
private router;
|
|
222
|
+
private analyticsService;
|
|
223
|
+
private previousUrl;
|
|
224
|
+
private currentUrl;
|
|
225
|
+
constructor(router: Router, analyticsService: BaseAnalyticsService);
|
|
226
|
+
private initializeRouterTracking;
|
|
227
|
+
private trackPageView;
|
|
228
|
+
private trackNavigation;
|
|
229
|
+
private getPageNameFromUrl;
|
|
230
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RouterAnalyticsService, never>;
|
|
231
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RouterAnalyticsService>;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
declare function provideUzAnalytics(): Provider[];
|
|
235
|
+
|
|
236
|
+
export { BaseAnalyticsService, FirebaseAnalyticsService, NoOpAnalyticsService, RouterAnalyticsService, provideUzAnalytics };
|
|
237
|
+
export type { IAnalyticsConfig, IAnalyticsService, IFirebaseAnalytics };
|
package/database/index.d.ts
CHANGED
|
@@ -1,6 +1,122 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
4
|
+
import Dexie from 'dexie';
|
|
5
|
+
|
|
6
|
+
interface ITableOptions {
|
|
7
|
+
name: string;
|
|
8
|
+
columns: Array<{
|
|
9
|
+
name: any;
|
|
10
|
+
isPrimaryKey?: any;
|
|
11
|
+
type?: any;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
declare class SchemaService {
|
|
15
|
+
schema: {
|
|
16
|
+
stores: ITableOptions[];
|
|
17
|
+
};
|
|
18
|
+
tables: Record<string, string>;
|
|
19
|
+
private _config;
|
|
20
|
+
/**
|
|
21
|
+
* Represents a SchemaService that manages the database schema.
|
|
22
|
+
*/
|
|
23
|
+
constructor();
|
|
24
|
+
get config(): DbServiceConfig;
|
|
25
|
+
init(config: DbServiceConfig): void;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SchemaService, never>;
|
|
27
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SchemaService>;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
declare class DbWebService extends Dexie implements DbService {
|
|
31
|
+
private config;
|
|
32
|
+
private schemaService;
|
|
33
|
+
private _db;
|
|
34
|
+
private dbInitialized;
|
|
35
|
+
constructor(config: DbServiceConfig, schemaService: SchemaService);
|
|
36
|
+
dbInitialized$: Observable<any>;
|
|
37
|
+
get Db(): Dexie;
|
|
38
|
+
putLocal(store: any, data: any): Promise<{
|
|
39
|
+
rowsAffected: any;
|
|
40
|
+
insertId: any;
|
|
41
|
+
}>;
|
|
42
|
+
putLocalRx(store: any, data: any): Observable<unknown>;
|
|
43
|
+
get<T>(store: string, key: any): Promise<T>;
|
|
44
|
+
getRx<T>(store: string, key: any): Observable<T>;
|
|
45
|
+
getByFieldName<T>(storeName: any, fieldName: any, key: any): Promise<Array<T>>;
|
|
46
|
+
getAll<T>(store: string, opt?: DbFilter): Promise<T>;
|
|
47
|
+
getAllRx<T>(store: string, opt?: DbFilter): Observable<T>;
|
|
48
|
+
remove(store: any, key: any): Promise<any>;
|
|
49
|
+
removeRx(store: any, key: any): Observable<any>;
|
|
50
|
+
removeAll(store: any): Promise<void>;
|
|
51
|
+
removeAllRx(store: string): Observable<any[]>;
|
|
52
|
+
count(store: any, opts?: {
|
|
53
|
+
key: any;
|
|
54
|
+
}): Promise<number>;
|
|
55
|
+
countRx(store: any, opts?: {
|
|
56
|
+
key: any;
|
|
57
|
+
}): Observable<number>;
|
|
58
|
+
deleteDb(): Promise<unknown>;
|
|
59
|
+
deleteTable(store: any): Observable<void>;
|
|
60
|
+
}
|
|
61
|
+
interface DbFilter {
|
|
62
|
+
key?: any;
|
|
63
|
+
value?: any;
|
|
64
|
+
keyRange?: KeyRangeType;
|
|
65
|
+
pageIndex?: number;
|
|
66
|
+
pageSize?: number;
|
|
67
|
+
sortBy?: any;
|
|
68
|
+
sortType?: 'asc' | 'desc';
|
|
69
|
+
}
|
|
70
|
+
declare enum KeyRangeType {
|
|
71
|
+
equalToIgnoreCase = 1,
|
|
72
|
+
startsWithIgnoreCase = 2,
|
|
73
|
+
equalTo = 3,
|
|
74
|
+
notEqualTo = 4
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
declare class DbServiceConfig {
|
|
78
|
+
dbName: string;
|
|
79
|
+
schema: ITableOptions[];
|
|
80
|
+
}
|
|
81
|
+
declare enum DbServiceType {
|
|
82
|
+
IndexDd = 0,
|
|
83
|
+
Sqlite = 1
|
|
84
|
+
}
|
|
85
|
+
declare abstract class DbService {
|
|
86
|
+
dbInitialized$: Observable<any>;
|
|
87
|
+
get Db(): any;
|
|
88
|
+
putLocal(store: any, data: any): Promise<{
|
|
89
|
+
rowsAffected: any;
|
|
90
|
+
insertId: any;
|
|
91
|
+
}>;
|
|
92
|
+
putLocalRx(store: any, data: any): Observable<any>;
|
|
93
|
+
get<T>(store: string, key: any): Promise<T>;
|
|
94
|
+
getRx<T>(store: string, key: any): Observable<T>;
|
|
95
|
+
getAll<T>(store: string, opt?: DbFilter): Promise<T>;
|
|
96
|
+
getAllRx<T>(store: string, opt?: DbFilter): Observable<T>;
|
|
97
|
+
remove(store: any, id: any): Promise<any>;
|
|
98
|
+
removeRx(store: any, key: any): Observable<any>;
|
|
99
|
+
removeAll(store: any): Promise<any>;
|
|
100
|
+
removeAllRx(store: string): Observable<any>;
|
|
101
|
+
count(store: any, opts?: {
|
|
102
|
+
key: any;
|
|
103
|
+
}): Promise<number>;
|
|
104
|
+
countRx(store: any, opts?: {
|
|
105
|
+
key: any;
|
|
106
|
+
}): Observable<number>;
|
|
107
|
+
deleteDb(): Promise<any>;
|
|
108
|
+
deleteTable(store: any): Observable<void>;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
declare class DbSettingConstant {
|
|
112
|
+
static readonly SETTING = "setting";
|
|
113
|
+
}
|
|
114
|
+
declare const DbSettingConfig: {
|
|
115
|
+
schema: ITableOptions;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
declare function dbFactory(schemaSvc: SchemaService): DbWebService;
|
|
119
|
+
declare function provideDb(): EnvironmentProviders;
|
|
120
|
+
|
|
121
|
+
export { DbService, DbServiceConfig, DbServiceType, DbSettingConfig, DbSettingConstant, DbWebService, KeyRangeType, SchemaService, dbFactory, provideDb };
|
|
122
|
+
export type { DbFilter, ITableOptions };
|
|
@@ -29,10 +29,10 @@ class BaseAnalyticsService {
|
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
33
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
32
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BaseAnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
33
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BaseAnalyticsService, providedIn: 'root' }); }
|
|
34
34
|
}
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
35
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: BaseAnalyticsService, decorators: [{
|
|
36
36
|
type: Injectable,
|
|
37
37
|
args: [{
|
|
38
38
|
providedIn: 'root'
|
|
@@ -99,10 +99,10 @@ class NoOpAnalyticsService extends BaseAnalyticsService {
|
|
|
99
99
|
eventCount: this.eventCount
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
103
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
102
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NoOpAnalyticsService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
103
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NoOpAnalyticsService, providedIn: 'root' }); }
|
|
104
104
|
}
|
|
105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
105
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: NoOpAnalyticsService, decorators: [{
|
|
106
106
|
type: Injectable,
|
|
107
107
|
args: [{
|
|
108
108
|
providedIn: 'root'
|
|
@@ -303,10 +303,10 @@ class FirebaseAnalyticsService extends BaseAnalyticsService {
|
|
|
303
303
|
config: this.config
|
|
304
304
|
};
|
|
305
305
|
}
|
|
306
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
307
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
306
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FirebaseAnalyticsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
307
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FirebaseAnalyticsService, providedIn: 'root' }); }
|
|
308
308
|
}
|
|
309
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FirebaseAnalyticsService, decorators: [{
|
|
310
310
|
type: Injectable,
|
|
311
311
|
args: [{
|
|
312
312
|
providedIn: 'root'
|
|
@@ -375,10 +375,10 @@ class RouterAnalyticsService {
|
|
|
375
375
|
// Default: remove leading slash and take first segment
|
|
376
376
|
return cleanUrl.replace('/', '').split('/')[0] || 'unknown';
|
|
377
377
|
}
|
|
378
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
379
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
378
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: RouterAnalyticsService, deps: [{ token: i1.Router }, { token: BaseAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
379
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: RouterAnalyticsService, providedIn: 'root' }); }
|
|
380
380
|
}
|
|
381
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
381
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: RouterAnalyticsService, decorators: [{
|
|
382
382
|
type: Injectable,
|
|
383
383
|
args: [{
|
|
384
384
|
providedIn: 'root'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-universal-zone-analytics.mjs","sources":["../../../projects/ngx-universal-zone/analytics/base-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/firebase-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/router-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/analytics.module.ts","../../../projects/ngx-universal-zone/analytics/ngx-universal-zone-analytics.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface IAnalyticsConfig {\n apiKey: string;\n authDomain: string;\n projectId: string;\n storageBucket: string;\n messagingSenderId: string;\n appId: string;\n measurementId: string;\n}\n\nexport interface IAnalyticsService {\n /**\n * Track page view\n */\n trackPageView(pageName: string, pageTitle?: string): void;\n \n /**\n * Track button click events\n */\n trackButtonClick(buttonName: string, buttonLocation?: string): void;\n \n /**\n * Track user navigation events\n */\n trackNavigation(from: string, to: string, method?: string): void;\n \n /**\n * Track user actions in the app\n */\n trackUserAction(action: string, category: string, label?: string, value?: number): void;\n \n /**\n * Track business-specific events\n */\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void;\n \n /**\n * Track errors that occur in the app\n */\n trackError(errorMessage: string, errorLocation: string, errorType?: string): void;\n \n /**\n * Set user ID for analytics\n */\n setUserId(userId: string): void;\n \n /**\n * Set user properties\n */\n setUserProperties(properties: { [key: string]: any }): void;\n \n /**\n * Test analytics functionality\n */\n testAnalytics(): void;\n \n /**\n * Get analytics debug info\n */\n getDebugInfo(): any;\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents: {\n dashboardViewed(): void;\n dashboardButtonClicked(buttonType: string): void;\n storeInfoClicked(): void;\n lottieAnimationCompleted(): void;\n syncStatusViewed(status: string): void;\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class BaseAnalyticsService implements IAnalyticsService {\n protected isDebugMode = false;\n protected eventCount = 0;\n \n abstract trackPageView(pageName: string, pageTitle?: string): void;\n abstract trackButtonClick(buttonName: string, buttonLocation?: string): void;\n abstract trackNavigation(from: string, to: string, method?: string): void;\n abstract trackUserAction(action: string, category: string, label?: string, value?: number): void;\n abstract trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void;\n abstract trackError(errorMessage: string, errorLocation: string, errorType?: string): void;\n abstract setUserId(userId: string): void;\n abstract setUserProperties(properties: { [key: string]: any }): void;\n abstract testAnalytics(): void;\n abstract getDebugInfo(): any;\n \n /**\n * Dashboard specific events\n */\n abstract trackDashboardEvents: {\n dashboardViewed(): void;\n dashboardButtonClicked(buttonType: string): void;\n storeInfoClicked(): void;\n lottieAnimationCompleted(): void;\n syncStatusViewed(status: string): void;\n };\n \n /**\n * Internal method to track event count in debug mode\n */\n protected incrementEventCount() {\n if (this.isDebugMode) {\n this.eventCount++;\n console.log(`[Analytics] Total events tracked: ${this.eventCount}`);\n }\n }\n\n /**\n * Log debug information\n */\n protected logDebug(message: string, data?: any) {\n if (this.isDebugMode) {\n console.log(`[Analytics] ${message}`, {\n ...data,\n timestamp: new Date().toISOString()\n });\n }\n }\n}\n\n/**\n * No-op implementation for development environment\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NoOpAnalyticsService extends BaseAnalyticsService {\n trackPageView(pageName: string, pageTitle?: string): void {\n this.logDebug(`[Dev] Page View: ${pageName}`, { pageTitle });\n }\n\n trackButtonClick(buttonName: string, buttonLocation?: string): void {\n this.logDebug(`[Dev] Button Click: ${buttonName}`, { buttonLocation });\n }\n\n trackNavigation(from: string, to: string, method?: string): void {\n this.logDebug(`[Dev] Navigation: ${from} -> ${to}`, { method });\n }\n\n trackUserAction(action: string, category: string, label?: string, value?: number): void {\n this.logDebug(`[Dev] User Action: ${action}`, { category, label, value });\n }\n\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void {\n this.logDebug(`[Dev] Business Event: ${eventName}`, parameters);\n }\n\n trackError(errorMessage: string, errorLocation: string, errorType?: string): void {\n this.logDebug(`[Dev] Error: ${errorMessage}`, { errorLocation, errorType });\n }\n\n setUserId(userId: string): void {\n this.logDebug(`[Dev] Set User ID: ${userId}`);\n }\n\n setUserProperties(properties: { [key: string]: any }): void {\n this.logDebug(`[Dev] Set User Properties:`, properties);\n }\n\n testAnalytics(): void {\n console.log('[Dev] Analytics test - no-op implementation');\n }\n\n getDebugInfo(): any {\n return {\n implementation: 'no-op',\n isDebugMode: this.isDebugMode,\n eventCount: this.eventCount\n };\n }\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents = {\n dashboardViewed: () => {\n this.logDebug('[Dev] Dashboard viewed');\n },\n \n dashboardButtonClicked: (buttonType: string) => {\n this.logDebug(`[Dev] Dashboard button clicked: ${buttonType}`);\n },\n \n storeInfoClicked: () => {\n this.logDebug('[Dev] Store info clicked');\n },\n \n lottieAnimationCompleted: () => {\n this.logDebug('[Dev] Lottie animation completed');\n },\n \n syncStatusViewed: (status: string) => {\n this.logDebug(`[Dev] Sync status viewed: ${status}`);\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { BaseAnalyticsService, IAnalyticsConfig } from './base-analytics.service';\n\n// Firebase Analytics types (to avoid importing Firebase directly in the base library)\nexport interface IFirebaseAnalytics {\n logEvent: (eventName: string, parameters?: { [key: string]: any }) => void;\n setUserId: (userId: string) => void;\n setUserProperties: (properties: { [key: string]: any }) => void;\n setCurrentScreen: (screenName: string) => void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirebaseAnalyticsService extends BaseAnalyticsService {\n private analytics: IFirebaseAnalytics | null = null;\n private config: IAnalyticsConfig | null = null;\n \n constructor() {\n super();\n }\n\n /**\n * Initialize Firebase Analytics\n */\n initialize(analytics: IFirebaseAnalytics, config: IAnalyticsConfig, isDebugMode: boolean = false) {\n this.analytics = analytics;\n this.config = config;\n this.isDebugMode = isDebugMode;\n \n if (this.isDebugMode) {\n console.log('[Firebase Analytics] Service initialized in debug mode');\n console.log('[Firebase Analytics] Config:', config);\n this.monitorGtagCalls();\n }\n }\n\n /**\n * Monitor gtag calls for debugging\n */\n private monitorGtagCalls() {\n const originalGtag = (window as any).gtag;\n if (originalGtag) {\n (window as any).gtag = (...args: any[]) => {\n console.log('[Firebase Analytics] gtag call:', args);\n return originalGtag.apply(window, args);\n };\n }\n }\n\n /**\n * Track page view\n */\n trackPageView(pageName: string, pageTitle?: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Page View: ${pageName}`, { page_title: pageTitle });\n \n // Set current screen\n this.analytics.setCurrentScreen(pageName);\n \n // Log page view event\n this.analytics.logEvent('page_view', {\n page_name: pageName,\n page_title: pageTitle || pageName\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track button click events\n */\n trackButtonClick(buttonName: string, buttonLocation?: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Button Click: ${buttonName}`, { location: buttonLocation });\n \n this.analytics.logEvent('button_click', {\n button_name: buttonName,\n button_location: buttonLocation || 'unknown'\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track user navigation events\n */\n trackNavigation(from: string, to: string, method: string = 'click'): void {\n if (!this.analytics) return;\n \n this.logDebug(`Navigation: ${from} -> ${to}`, { method });\n \n this.analytics.logEvent('navigation', {\n from_page: from,\n to_page: to,\n method: method\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track user actions in the app\n */\n trackUserAction(action: string, category: string, label?: string, value?: number): void {\n if (!this.analytics) return;\n \n this.logDebug(`User Action: ${action}`, { category, label, value });\n \n this.analytics.logEvent('user_action', {\n action: action,\n category: category,\n label: label || '',\n value: value || 0\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track business-specific events\n */\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void {\n if (!this.analytics) return;\n \n this.logDebug(`Business Event: ${eventName}`, parameters);\n \n this.analytics.logEvent(eventName, parameters);\n \n this.incrementEventCount();\n }\n\n /**\n * Track errors that occur in the app\n */\n trackError(errorMessage: string, errorLocation: string, errorType: string = 'runtime'): void {\n if (!this.analytics) return;\n \n this.logDebug(`Error: ${errorMessage}`, { location: errorLocation, type: errorType });\n \n this.analytics.logEvent('error', {\n error_message: errorMessage,\n error_location: errorLocation,\n error_type: errorType\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Set user ID for analytics\n */\n setUserId(userId: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Set User ID: ${userId}`);\n \n this.analytics.setUserId(userId);\n }\n\n /**\n * Set user properties\n */\n setUserProperties(properties: { [key: string]: any }): void {\n if (!this.analytics) return;\n \n this.logDebug(`Set User Properties:`, properties);\n \n this.analytics.setUserProperties(properties);\n }\n\n /**\n * Test analytics functionality\n */\n testAnalytics(): void {\n console.log('[Analytics] Testing Firebase Analytics...');\n console.log('[Analytics] Analytics initialized:', !!this.analytics);\n console.log('[Analytics] Config:', this.config);\n \n if (!this.analytics) {\n console.error('[Analytics] Analytics not initialized! Call initialize() first.');\n return;\n }\n \n // Test events\n this.trackBusinessEvent('analytics_test', {\n test_type: 'manual_validation',\n timestamp: Date.now(),\n user_agent: navigator.userAgent\n });\n \n this.trackPageView('test_page', 'Analytics Test Page');\n this.trackButtonClick('test_button', 'analytics_validation');\n \n console.log('[Analytics] Test events sent.');\n }\n\n /**\n * Get analytics debug info\n */\n getDebugInfo(): any {\n return {\n isDebugMode: this.isDebugMode,\n eventCount: this.eventCount,\n analyticsInitialized: !!this.analytics,\n config: this.config\n };\n }\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents = {\n dashboardViewed: () => {\n this.trackPageView('dashboard', 'Dashboard');\n },\n \n dashboardButtonClicked: (buttonType: string) => {\n this.trackButtonClick(`dashboard_${buttonType}`, 'dashboard');\n this.trackBusinessEvent('dashboard_action', {\n action_type: buttonType,\n screen: 'dashboard'\n });\n },\n \n storeInfoClicked: () => {\n this.trackButtonClick('store_info', 'dashboard');\n this.trackBusinessEvent('store_interaction', {\n action: 'info_clicked',\n screen: 'dashboard'\n });\n },\n \n lottieAnimationCompleted: () => {\n this.trackUserAction('lottie_animation_completed', 'ui_interaction', 'dashboard');\n },\n \n syncStatusViewed: (status: string) => {\n this.trackBusinessEvent('sync_status_viewed', {\n status: status,\n screen: 'dashboard'\n });\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { BaseAnalyticsService } from './base-analytics.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouterAnalyticsService {\n private previousUrl: string = '';\n private currentUrl: string = '';\n\n constructor(\n private router: Router,\n private analyticsService: BaseAnalyticsService\n ) {\n this.initializeRouterTracking();\n }\n\n private initializeRouterTracking() {\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n \n // Track page view\n this.trackPageView(event.url);\n \n // Track navigation if we have a previous URL\n if (this.previousUrl && this.previousUrl !== this.currentUrl) {\n this.trackNavigation(this.previousUrl, this.currentUrl);\n }\n });\n }\n\n private trackPageView(url: string) {\n try {\n const pageName = this.getPageNameFromUrl(url);\n if (this.analyticsService && typeof this.analyticsService.trackPageView === 'function') {\n this.analyticsService.trackPageView(pageName, `Page: ${pageName}`);\n }\n } catch (error) {\n console.warn('[RouterAnalytics] Error tracking page view:', error);\n }\n }\n\n private trackNavigation(from: string, to: string) {\n try {\n const fromPage = this.getPageNameFromUrl(from);\n const toPage = this.getPageNameFromUrl(to);\n if (this.analyticsService && typeof this.analyticsService.trackNavigation === 'function') {\n this.analyticsService.trackNavigation(fromPage, toPage, 'router_navigation');\n }\n } catch (error) {\n console.warn('[RouterAnalytics] Error tracking navigation:', error);\n }\n }\n\n private getPageNameFromUrl(url: string): string {\n // Remove query parameters and fragments\n const cleanUrl = url.split('?')[0].split('#')[0];\n \n // Handle specific routes\n if (cleanUrl === '/' || cleanUrl === '/home') return 'dashboard';\n if (cleanUrl.startsWith('/admin')) return 'admin';\n if (cleanUrl.startsWith('/checkout')) return 'checkout';\n if (cleanUrl.startsWith('/auth')) return 'auth';\n if (cleanUrl.startsWith('/store')) return 'store';\n \n // Default: remove leading slash and take first segment\n return cleanUrl.replace('/', '').split('/')[0] || 'unknown';\n }\n}\n","import { Provider } from '@angular/core';\nimport { BaseAnalyticsService, NoOpAnalyticsService } from './base-analytics.service';\nimport { RouterAnalyticsService } from './router-analytics.service';\n\nexport function provideUzAnalytics(): Provider[] {\n return [\n {\n provide: BaseAnalyticsService,\n useClass: NoOpAnalyticsService\n },\n RouterAnalyticsService,\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.BaseAnalyticsService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-universal-zone-analytics.mjs","sources":["../../../projects/ngx-universal-zone/analytics/base-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/firebase-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/router-analytics.service.ts","../../../projects/ngx-universal-zone/analytics/analytics.module.ts","../../../projects/ngx-universal-zone/analytics/ngx-universal-zone-analytics.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nexport interface IAnalyticsConfig {\n apiKey: string;\n authDomain: string;\n projectId: string;\n storageBucket: string;\n messagingSenderId: string;\n appId: string;\n measurementId: string;\n}\n\nexport interface IAnalyticsService {\n /**\n * Track page view\n */\n trackPageView(pageName: string, pageTitle?: string): void;\n \n /**\n * Track button click events\n */\n trackButtonClick(buttonName: string, buttonLocation?: string): void;\n \n /**\n * Track user navigation events\n */\n trackNavigation(from: string, to: string, method?: string): void;\n \n /**\n * Track user actions in the app\n */\n trackUserAction(action: string, category: string, label?: string, value?: number): void;\n \n /**\n * Track business-specific events\n */\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void;\n \n /**\n * Track errors that occur in the app\n */\n trackError(errorMessage: string, errorLocation: string, errorType?: string): void;\n \n /**\n * Set user ID for analytics\n */\n setUserId(userId: string): void;\n \n /**\n * Set user properties\n */\n setUserProperties(properties: { [key: string]: any }): void;\n \n /**\n * Test analytics functionality\n */\n testAnalytics(): void;\n \n /**\n * Get analytics debug info\n */\n getDebugInfo(): any;\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents: {\n dashboardViewed(): void;\n dashboardButtonClicked(buttonType: string): void;\n storeInfoClicked(): void;\n lottieAnimationCompleted(): void;\n syncStatusViewed(status: string): void;\n };\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport abstract class BaseAnalyticsService implements IAnalyticsService {\n protected isDebugMode = false;\n protected eventCount = 0;\n \n abstract trackPageView(pageName: string, pageTitle?: string): void;\n abstract trackButtonClick(buttonName: string, buttonLocation?: string): void;\n abstract trackNavigation(from: string, to: string, method?: string): void;\n abstract trackUserAction(action: string, category: string, label?: string, value?: number): void;\n abstract trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void;\n abstract trackError(errorMessage: string, errorLocation: string, errorType?: string): void;\n abstract setUserId(userId: string): void;\n abstract setUserProperties(properties: { [key: string]: any }): void;\n abstract testAnalytics(): void;\n abstract getDebugInfo(): any;\n \n /**\n * Dashboard specific events\n */\n abstract trackDashboardEvents: {\n dashboardViewed(): void;\n dashboardButtonClicked(buttonType: string): void;\n storeInfoClicked(): void;\n lottieAnimationCompleted(): void;\n syncStatusViewed(status: string): void;\n };\n \n /**\n * Internal method to track event count in debug mode\n */\n protected incrementEventCount() {\n if (this.isDebugMode) {\n this.eventCount++;\n console.log(`[Analytics] Total events tracked: ${this.eventCount}`);\n }\n }\n\n /**\n * Log debug information\n */\n protected logDebug(message: string, data?: any) {\n if (this.isDebugMode) {\n console.log(`[Analytics] ${message}`, {\n ...data,\n timestamp: new Date().toISOString()\n });\n }\n }\n}\n\n/**\n * No-op implementation for development environment\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NoOpAnalyticsService extends BaseAnalyticsService {\n trackPageView(pageName: string, pageTitle?: string): void {\n this.logDebug(`[Dev] Page View: ${pageName}`, { pageTitle });\n }\n\n trackButtonClick(buttonName: string, buttonLocation?: string): void {\n this.logDebug(`[Dev] Button Click: ${buttonName}`, { buttonLocation });\n }\n\n trackNavigation(from: string, to: string, method?: string): void {\n this.logDebug(`[Dev] Navigation: ${from} -> ${to}`, { method });\n }\n\n trackUserAction(action: string, category: string, label?: string, value?: number): void {\n this.logDebug(`[Dev] User Action: ${action}`, { category, label, value });\n }\n\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void {\n this.logDebug(`[Dev] Business Event: ${eventName}`, parameters);\n }\n\n trackError(errorMessage: string, errorLocation: string, errorType?: string): void {\n this.logDebug(`[Dev] Error: ${errorMessage}`, { errorLocation, errorType });\n }\n\n setUserId(userId: string): void {\n this.logDebug(`[Dev] Set User ID: ${userId}`);\n }\n\n setUserProperties(properties: { [key: string]: any }): void {\n this.logDebug(`[Dev] Set User Properties:`, properties);\n }\n\n testAnalytics(): void {\n console.log('[Dev] Analytics test - no-op implementation');\n }\n\n getDebugInfo(): any {\n return {\n implementation: 'no-op',\n isDebugMode: this.isDebugMode,\n eventCount: this.eventCount\n };\n }\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents = {\n dashboardViewed: () => {\n this.logDebug('[Dev] Dashboard viewed');\n },\n \n dashboardButtonClicked: (buttonType: string) => {\n this.logDebug(`[Dev] Dashboard button clicked: ${buttonType}`);\n },\n \n storeInfoClicked: () => {\n this.logDebug('[Dev] Store info clicked');\n },\n \n lottieAnimationCompleted: () => {\n this.logDebug('[Dev] Lottie animation completed');\n },\n \n syncStatusViewed: (status: string) => {\n this.logDebug(`[Dev] Sync status viewed: ${status}`);\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { BaseAnalyticsService, IAnalyticsConfig } from './base-analytics.service';\n\n// Firebase Analytics types (to avoid importing Firebase directly in the base library)\nexport interface IFirebaseAnalytics {\n logEvent: (eventName: string, parameters?: { [key: string]: any }) => void;\n setUserId: (userId: string) => void;\n setUserProperties: (properties: { [key: string]: any }) => void;\n setCurrentScreen: (screenName: string) => void;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirebaseAnalyticsService extends BaseAnalyticsService {\n private analytics: IFirebaseAnalytics | null = null;\n private config: IAnalyticsConfig | null = null;\n \n constructor() {\n super();\n }\n\n /**\n * Initialize Firebase Analytics\n */\n initialize(analytics: IFirebaseAnalytics, config: IAnalyticsConfig, isDebugMode: boolean = false) {\n this.analytics = analytics;\n this.config = config;\n this.isDebugMode = isDebugMode;\n \n if (this.isDebugMode) {\n console.log('[Firebase Analytics] Service initialized in debug mode');\n console.log('[Firebase Analytics] Config:', config);\n this.monitorGtagCalls();\n }\n }\n\n /**\n * Monitor gtag calls for debugging\n */\n private monitorGtagCalls() {\n const originalGtag = (window as any).gtag;\n if (originalGtag) {\n (window as any).gtag = (...args: any[]) => {\n console.log('[Firebase Analytics] gtag call:', args);\n return originalGtag.apply(window, args);\n };\n }\n }\n\n /**\n * Track page view\n */\n trackPageView(pageName: string, pageTitle?: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Page View: ${pageName}`, { page_title: pageTitle });\n \n // Set current screen\n this.analytics.setCurrentScreen(pageName);\n \n // Log page view event\n this.analytics.logEvent('page_view', {\n page_name: pageName,\n page_title: pageTitle || pageName\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track button click events\n */\n trackButtonClick(buttonName: string, buttonLocation?: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Button Click: ${buttonName}`, { location: buttonLocation });\n \n this.analytics.logEvent('button_click', {\n button_name: buttonName,\n button_location: buttonLocation || 'unknown'\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track user navigation events\n */\n trackNavigation(from: string, to: string, method: string = 'click'): void {\n if (!this.analytics) return;\n \n this.logDebug(`Navigation: ${from} -> ${to}`, { method });\n \n this.analytics.logEvent('navigation', {\n from_page: from,\n to_page: to,\n method: method\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track user actions in the app\n */\n trackUserAction(action: string, category: string, label?: string, value?: number): void {\n if (!this.analytics) return;\n \n this.logDebug(`User Action: ${action}`, { category, label, value });\n \n this.analytics.logEvent('user_action', {\n action: action,\n category: category,\n label: label || '',\n value: value || 0\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Track business-specific events\n */\n trackBusinessEvent(eventName: string, parameters: { [key: string]: any }): void {\n if (!this.analytics) return;\n \n this.logDebug(`Business Event: ${eventName}`, parameters);\n \n this.analytics.logEvent(eventName, parameters);\n \n this.incrementEventCount();\n }\n\n /**\n * Track errors that occur in the app\n */\n trackError(errorMessage: string, errorLocation: string, errorType: string = 'runtime'): void {\n if (!this.analytics) return;\n \n this.logDebug(`Error: ${errorMessage}`, { location: errorLocation, type: errorType });\n \n this.analytics.logEvent('error', {\n error_message: errorMessage,\n error_location: errorLocation,\n error_type: errorType\n });\n \n this.incrementEventCount();\n }\n\n /**\n * Set user ID for analytics\n */\n setUserId(userId: string): void {\n if (!this.analytics) return;\n \n this.logDebug(`Set User ID: ${userId}`);\n \n this.analytics.setUserId(userId);\n }\n\n /**\n * Set user properties\n */\n setUserProperties(properties: { [key: string]: any }): void {\n if (!this.analytics) return;\n \n this.logDebug(`Set User Properties:`, properties);\n \n this.analytics.setUserProperties(properties);\n }\n\n /**\n * Test analytics functionality\n */\n testAnalytics(): void {\n console.log('[Analytics] Testing Firebase Analytics...');\n console.log('[Analytics] Analytics initialized:', !!this.analytics);\n console.log('[Analytics] Config:', this.config);\n \n if (!this.analytics) {\n console.error('[Analytics] Analytics not initialized! Call initialize() first.');\n return;\n }\n \n // Test events\n this.trackBusinessEvent('analytics_test', {\n test_type: 'manual_validation',\n timestamp: Date.now(),\n user_agent: navigator.userAgent\n });\n \n this.trackPageView('test_page', 'Analytics Test Page');\n this.trackButtonClick('test_button', 'analytics_validation');\n \n console.log('[Analytics] Test events sent.');\n }\n\n /**\n * Get analytics debug info\n */\n getDebugInfo(): any {\n return {\n isDebugMode: this.isDebugMode,\n eventCount: this.eventCount,\n analyticsInitialized: !!this.analytics,\n config: this.config\n };\n }\n\n /**\n * Dashboard specific events\n */\n trackDashboardEvents = {\n dashboardViewed: () => {\n this.trackPageView('dashboard', 'Dashboard');\n },\n \n dashboardButtonClicked: (buttonType: string) => {\n this.trackButtonClick(`dashboard_${buttonType}`, 'dashboard');\n this.trackBusinessEvent('dashboard_action', {\n action_type: buttonType,\n screen: 'dashboard'\n });\n },\n \n storeInfoClicked: () => {\n this.trackButtonClick('store_info', 'dashboard');\n this.trackBusinessEvent('store_interaction', {\n action: 'info_clicked',\n screen: 'dashboard'\n });\n },\n \n lottieAnimationCompleted: () => {\n this.trackUserAction('lottie_animation_completed', 'ui_interaction', 'dashboard');\n },\n \n syncStatusViewed: (status: string) => {\n this.trackBusinessEvent('sync_status_viewed', {\n status: status,\n screen: 'dashboard'\n });\n }\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd } from '@angular/router';\nimport { filter } from 'rxjs/operators';\nimport { BaseAnalyticsService } from './base-analytics.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RouterAnalyticsService {\n private previousUrl: string = '';\n private currentUrl: string = '';\n\n constructor(\n private router: Router,\n private analyticsService: BaseAnalyticsService\n ) {\n this.initializeRouterTracking();\n }\n\n private initializeRouterTracking() {\n this.router.events\n .pipe(filter(event => event instanceof NavigationEnd))\n .subscribe((event: NavigationEnd) => {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n \n // Track page view\n this.trackPageView(event.url);\n \n // Track navigation if we have a previous URL\n if (this.previousUrl && this.previousUrl !== this.currentUrl) {\n this.trackNavigation(this.previousUrl, this.currentUrl);\n }\n });\n }\n\n private trackPageView(url: string) {\n try {\n const pageName = this.getPageNameFromUrl(url);\n if (this.analyticsService && typeof this.analyticsService.trackPageView === 'function') {\n this.analyticsService.trackPageView(pageName, `Page: ${pageName}`);\n }\n } catch (error) {\n console.warn('[RouterAnalytics] Error tracking page view:', error);\n }\n }\n\n private trackNavigation(from: string, to: string) {\n try {\n const fromPage = this.getPageNameFromUrl(from);\n const toPage = this.getPageNameFromUrl(to);\n if (this.analyticsService && typeof this.analyticsService.trackNavigation === 'function') {\n this.analyticsService.trackNavigation(fromPage, toPage, 'router_navigation');\n }\n } catch (error) {\n console.warn('[RouterAnalytics] Error tracking navigation:', error);\n }\n }\n\n private getPageNameFromUrl(url: string): string {\n // Remove query parameters and fragments\n const cleanUrl = url.split('?')[0].split('#')[0];\n \n // Handle specific routes\n if (cleanUrl === '/' || cleanUrl === '/home') return 'dashboard';\n if (cleanUrl.startsWith('/admin')) return 'admin';\n if (cleanUrl.startsWith('/checkout')) return 'checkout';\n if (cleanUrl.startsWith('/auth')) return 'auth';\n if (cleanUrl.startsWith('/store')) return 'store';\n \n // Default: remove leading slash and take first segment\n return cleanUrl.replace('/', '').split('/')[0] || 'unknown';\n }\n}\n","import { Provider } from '@angular/core';\nimport { BaseAnalyticsService, NoOpAnalyticsService } from './base-analytics.service';\nimport { RouterAnalyticsService } from './router-analytics.service';\n\nexport function provideUzAnalytics(): Provider[] {\n return [\n {\n provide: BaseAnalyticsService,\n useClass: NoOpAnalyticsService\n },\n RouterAnalyticsService,\n ];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.BaseAnalyticsService"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Observable, Subject, switchMap, of, forkJoin } from 'rxjs';
|
|
2
2
|
import Dexie from 'dexie';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable,
|
|
4
|
+
import { Injectable, makeEnvironmentProviders } from '@angular/core';
|
|
5
5
|
|
|
6
6
|
// @ts-ignore
|
|
7
7
|
class DbServiceConfig {
|
|
@@ -323,10 +323,10 @@ class SchemaService {
|
|
|
323
323
|
this.schema.stores.forEach((s) => this.tables[s.name] = s.name);
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
327
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
326
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SchemaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
327
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SchemaService }); }
|
|
328
328
|
}
|
|
329
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SchemaService, decorators: [{
|
|
330
330
|
type: Injectable
|
|
331
331
|
}], ctorParameters: () => [] });
|
|
332
332
|
|
|
@@ -350,30 +350,16 @@ const DbSettingConfig = {
|
|
|
350
350
|
}
|
|
351
351
|
};
|
|
352
352
|
|
|
353
|
-
|
|
354
|
-
function dbFactory(schemaSvc, customDbService) {
|
|
353
|
+
function dbFactory(schemaSvc) {
|
|
355
354
|
const dbConfig = schemaSvc.config;
|
|
356
|
-
|
|
357
|
-
// If a custom DbService is provided (e.g., SQLite), instantiate it
|
|
358
|
-
return inject(customDbService, { optional: false });
|
|
359
|
-
}
|
|
360
|
-
switch (dbConfig.dbType) {
|
|
361
|
-
case DbServiceType.IndexDd:
|
|
362
|
-
return new DbWebService(dbConfig, schemaSvc);
|
|
363
|
-
// Remove Sqlite case from here
|
|
364
|
-
default:
|
|
365
|
-
throw new Error('Unsupported dbType or missing customDbService');
|
|
366
|
-
}
|
|
355
|
+
return new DbWebService(dbConfig, schemaSvc);
|
|
367
356
|
}
|
|
368
|
-
|
|
369
|
-
* Optionally accepts a custom DbService class (e.g., from ngx-ionic-zone).
|
|
370
|
-
*/
|
|
371
|
-
function provideDb(customDbService) {
|
|
357
|
+
function provideDb() {
|
|
372
358
|
const providers = [
|
|
373
359
|
SchemaService,
|
|
374
360
|
{
|
|
375
361
|
provide: DbService,
|
|
376
|
-
useFactory: (schemaSvc) => dbFactory(schemaSvc
|
|
362
|
+
useFactory: (schemaSvc) => dbFactory(schemaSvc),
|
|
377
363
|
deps: [SchemaService],
|
|
378
364
|
}
|
|
379
365
|
];
|