shared-features 0.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.
Files changed (60) hide show
  1. package/README.md +200 -0
  2. package/dist/AdPanel-D0BiV6Xb.cjs +88 -0
  3. package/dist/AdPanel-D0BiV6Xb.cjs.map +1 -0
  4. package/dist/AdPanel-RGRBf4ub.js +89 -0
  5. package/dist/AdPanel-RGRBf4ub.js.map +1 -0
  6. package/dist/analytics-6shJHRZG.cjs +463 -0
  7. package/dist/analytics-6shJHRZG.cjs.map +1 -0
  8. package/dist/analytics-Bbmodnm_.js +442 -0
  9. package/dist/analytics-Bbmodnm_.js.map +1 -0
  10. package/dist/components/ads/AdPanel.d.ts +12 -0
  11. package/dist/components/ads/AdPanel.d.ts.map +1 -0
  12. package/dist/components/ads/index.d.ts +9 -0
  13. package/dist/components/ads/index.d.ts.map +1 -0
  14. package/dist/components/index.cjs +5 -0
  15. package/dist/components/index.cjs.map +1 -0
  16. package/dist/components/index.d.ts +9 -0
  17. package/dist/components/index.d.ts.map +1 -0
  18. package/dist/components/index.js +5 -0
  19. package/dist/components/index.js.map +1 -0
  20. package/dist/firebase/config.d.ts +77 -0
  21. package/dist/firebase/config.d.ts.map +1 -0
  22. package/dist/firebase/init.d.ts +55 -0
  23. package/dist/firebase/init.d.ts.map +1 -0
  24. package/dist/hooks/index.cjs +6 -0
  25. package/dist/hooks/index.cjs.map +1 -0
  26. package/dist/hooks/index.d.ts +10 -0
  27. package/dist/hooks/index.d.ts.map +1 -0
  28. package/dist/hooks/index.js +6 -0
  29. package/dist/hooks/index.js.map +1 -0
  30. package/dist/hooks/useCampaigns.d.ts +59 -0
  31. package/dist/hooks/useCampaigns.d.ts.map +1 -0
  32. package/dist/index.cjs +37 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.ts +25 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +37 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/services/analytics.d.ts +32 -0
  39. package/dist/services/analytics.d.ts.map +1 -0
  40. package/dist/services/campaigns.d.ts +31 -0
  41. package/dist/services/campaigns.d.ts.map +1 -0
  42. package/dist/services/index.cjs +18 -0
  43. package/dist/services/index.cjs.map +1 -0
  44. package/dist/services/index.d.ts +10 -0
  45. package/dist/services/index.d.ts.map +1 -0
  46. package/dist/services/index.js +18 -0
  47. package/dist/services/index.js.map +1 -0
  48. package/dist/types/campaigns.d.ts +378 -0
  49. package/dist/types/campaigns.d.ts.map +1 -0
  50. package/dist/types/index.cjs +49 -0
  51. package/dist/types/index.cjs.map +1 -0
  52. package/dist/types/index.d.ts +10 -0
  53. package/dist/types/index.d.ts.map +1 -0
  54. package/dist/types/index.js +49 -0
  55. package/dist/types/index.js.map +1 -0
  56. package/dist/useCampaigns-3NxODLLs.js +98 -0
  57. package/dist/useCampaigns-3NxODLLs.js.map +1 -0
  58. package/dist/useCampaigns-BNOHpETm.cjs +97 -0
  59. package/dist/useCampaigns-BNOHpETm.cjs.map +1 -0
  60. package/package.json +90 -0
@@ -0,0 +1,55 @@
1
+ import { FirebaseApp } from 'firebase/app';
2
+ import { Firestore } from 'firebase/firestore';
3
+ import { Auth } from 'firebase/auth';
4
+ import { SharedFeaturesConfig } from './config';
5
+ /**
6
+ * Initialize shared-features with the given configuration.
7
+ *
8
+ * This creates a secondary Firebase app connection to aoneahsan.com's
9
+ * Firebase project, separate from the consumer project's own Firebase.
10
+ *
11
+ * @param config - Configuration object
12
+ * @returns Initialized state object
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { initSharedFeatures } from 'shared-features';
17
+ *
18
+ * const sharedFeatures = initSharedFeatures({
19
+ * firebaseConfig: {
20
+ * apiKey: import.meta.env.VITE_ZAIONS_FIREBASE_API_KEY,
21
+ * authDomain: 'aoneahsan-portfolio.firebaseapp.com',
22
+ * projectId: 'aoneahsan-portfolio',
23
+ * },
24
+ * projectId: 'ztools',
25
+ * projectName: 'ZTools',
26
+ * platform: 'web',
27
+ * });
28
+ * ```
29
+ */
30
+ export declare function initSharedFeatures(config: SharedFeaturesConfig): Promise<{
31
+ app: FirebaseApp;
32
+ db: Firestore;
33
+ auth: Auth;
34
+ }>;
35
+ /**
36
+ * Get the shared-features Firebase app instance.
37
+ * Throws if not initialized.
38
+ */
39
+ export declare function getSharedFeaturesApp(): FirebaseApp;
40
+ /**
41
+ * Get the shared-features Firestore instance.
42
+ * Throws if not initialized.
43
+ */
44
+ export declare function getSharedFeaturesDb(): Firestore;
45
+ /**
46
+ * Get the shared-features Auth instance.
47
+ * Throws if not initialized.
48
+ */
49
+ export declare function getSharedFeaturesAuth(): Auth;
50
+ /**
51
+ * Get the device ID for anonymous tracking.
52
+ * Returns null if not initialized.
53
+ */
54
+ export declare function getDeviceId(): string | null;
55
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/firebase/init.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA0B,WAAW,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAgB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAW,IAAI,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,oBAAoB,EAIrB,MAAM,UAAU,CAAC;AAkDlB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAoD1D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,CAOlD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAO/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAE3C"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const useCampaigns = require("../useCampaigns-BNOHpETm.cjs");
4
+ exports.useCampaign = useCampaigns.useCampaign;
5
+ exports.useCampaigns = useCampaigns.useCampaigns;
6
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hooks Index
3
+ *
4
+ * Re-exports all React hooks from the shared-features package.
5
+ *
6
+ * @author Ahsan Mahmood <aoneahsan@gmail.com>
7
+ */
8
+ export { useCampaigns, useCampaign } from './useCampaigns';
9
+ export type { UseCampaignsOptions, UseCampaignsResult } from './useCampaigns';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { a, u } from "../useCampaigns-3NxODLLs.js";
2
+ export {
3
+ a as useCampaign,
4
+ u as useCampaigns
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,59 @@
1
+ import { CampaignWithProduct, AdPlacement, SmallPanelVariant, LargePanelVariant } from '../types/campaigns';
2
+ export interface UseCampaignsOptions {
3
+ /** Placement to fetch campaigns for */
4
+ placement: AdPlacement;
5
+ /** Maximum number of campaigns to fetch */
6
+ maxCampaigns?: number;
7
+ /** Whether to auto-fetch on mount (default: true) */
8
+ autoFetch?: boolean;
9
+ /** Default variant for small placements */
10
+ defaultSmallVariant?: SmallPanelVariant;
11
+ /** Default variant for large placements */
12
+ defaultLargeVariant?: LargePanelVariant;
13
+ }
14
+ export interface UseCampaignsResult {
15
+ /** List of eligible campaigns with product data */
16
+ campaigns: CampaignWithProduct[];
17
+ /** Single campaign (first eligible) - convenience accessor */
18
+ campaign: CampaignWithProduct | null;
19
+ /** Whether campaigns are being fetched */
20
+ loading: boolean;
21
+ /** Error message if fetch failed */
22
+ error: string | null;
23
+ /** Refetch campaigns */
24
+ refetch: () => Promise<void>;
25
+ /** Record impression for a campaign */
26
+ recordImpression: (campaign: CampaignWithProduct) => Promise<void>;
27
+ /** Record click for a campaign */
28
+ recordClick: (campaign: CampaignWithProduct) => Promise<void>;
29
+ /** Record close/dismiss for a campaign */
30
+ recordClose: (campaign: CampaignWithProduct) => Promise<void>;
31
+ }
32
+ /**
33
+ * Hook to fetch and manage campaigns for a specific placement
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * const { campaigns, loading, recordImpression, recordClick } = useCampaigns({
38
+ * placement: 'footer_slider',
39
+ * maxCampaigns: 5,
40
+ * });
41
+ *
42
+ * if (loading) return <Spinner />;
43
+ *
44
+ * return (
45
+ * <AdSlider
46
+ * campaigns={campaigns}
47
+ * onImpression={recordImpression}
48
+ * onClick={recordClick}
49
+ * />
50
+ * );
51
+ * ```
52
+ */
53
+ export declare function useCampaigns(options: UseCampaignsOptions): UseCampaignsResult;
54
+ /**
55
+ * Hook to fetch a single campaign for a placement
56
+ * Convenience wrapper around useCampaigns
57
+ */
58
+ export declare function useCampaign(options: Omit<UseCampaignsOptions, 'maxCampaigns'>): UseCampaignsResult;
59
+ //# sourceMappingURL=useCampaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCampaigns.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaigns.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,SAAS,EAAE,WAAW,CAAC;IACvB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;IACxC,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,kBAAkB;IACjC,mDAAmD;IACnD,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,8DAA8D;IAC9D,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wBAAwB;IACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,uCAAuC;IACvC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,kCAAkC;IAClC,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,0CAA0C;IAC1C,WAAW,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAgH7E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,sBAE7E"}
package/dist/index.cjs ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const analytics = require("./analytics-6shJHRZG.cjs");
4
+ const types_index = require("./types/index.cjs");
5
+ const useCampaigns = require("./useCampaigns-BNOHpETm.cjs");
6
+ const AdPanel = require("./AdPanel-D0BiV6Xb.cjs");
7
+ exports.clearCampaignsCache = analytics.clearCampaignsCache;
8
+ exports.clearProductsCache = analytics.clearProductsCache;
9
+ exports.fetchActiveCampaigns = analytics.fetchActiveCampaigns;
10
+ exports.fetchCampaigns = analytics.fetchCampaigns;
11
+ exports.fetchProducts = analytics.fetchProducts;
12
+ exports.getCampaignById = analytics.getCampaignById;
13
+ exports.getCampaignHistory = analytics.getCampaignHistory;
14
+ exports.getConfig = analytics.getConfig;
15
+ exports.getDeviceId = analytics.getDeviceId;
16
+ exports.getEligibleCampaignIds = analytics.getEligibleCampaignIds;
17
+ exports.getProductById = analytics.getProductById;
18
+ exports.getSharedFeaturesApp = analytics.getSharedFeaturesApp;
19
+ exports.getSharedFeaturesAuth = analytics.getSharedFeaturesAuth;
20
+ exports.getSharedFeaturesDb = analytics.getSharedFeaturesDb;
21
+ exports.initSharedFeatures = analytics.initSharedFeatures;
22
+ exports.isEligibleForCampaign = analytics.isEligibleForCampaign;
23
+ exports.isInitialized = analytics.isInitialized;
24
+ exports.recordImpression = analytics.recordImpression;
25
+ exports.trackClick = analytics.trackClick;
26
+ exports.trackClose = analytics.trackClose;
27
+ exports.trackImpression = analytics.trackImpression;
28
+ exports.COLLECTIONS = types_index.COLLECTIONS;
29
+ exports.DEFAULT_CAMPAIGN_PRIORITY = types_index.DEFAULT_CAMPAIGN_PRIORITY;
30
+ exports.DEFAULT_FREQUENCY_DAYS = types_index.DEFAULT_FREQUENCY_DAYS;
31
+ exports.PLACEMENT_NAMES = types_index.PLACEMENT_NAMES;
32
+ exports.PLATFORM_NAMES = types_index.PLATFORM_NAMES;
33
+ exports.VARIANT_NAMES = types_index.VARIANT_NAMES;
34
+ exports.useCampaign = useCampaigns.useCampaign;
35
+ exports.useCampaigns = useCampaigns.useCampaigns;
36
+ exports.AdPanel = AdPanel.AdPanel;
37
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * shared-features
3
+ *
4
+ * Centralized common features for Zaions projects.
5
+ * All data is managed from aoneahsan.com admin panel.
6
+ *
7
+ * Features:
8
+ * - Advertising campaigns (cross-promotion)
9
+ * - Products catalog
10
+ * - Contact forms (coming soon)
11
+ * - Feature requests (coming soon)
12
+ * - Payment options (coming soon)
13
+ * - Social links (coming soon)
14
+ * - Developer info (coming soon)
15
+ *
16
+ * @author Ahsan Mahmood <aoneahsan@gmail.com>
17
+ * @license MIT
18
+ */
19
+ export { initSharedFeatures, getSharedFeaturesApp, getSharedFeaturesDb, getSharedFeaturesAuth, getDeviceId, } from './firebase/init';
20
+ export { getConfig, isInitialized, } from './firebase/config';
21
+ export * from './types';
22
+ export * from './services';
23
+ export * from './hooks';
24
+ export * from './components';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,mBAAmB,CAAC;AAM3B,cAAc,SAAS,CAAC;AAMxB,cAAc,YAAY,CAAC;AAM3B,cAAc,SAAS,CAAC;AAMxB,cAAc,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ import { m, n, h, f, k, j, u, d, c, s, l, g, b, a, i, q, e, r, o, p, t } from "./analytics-Bbmodnm_.js";
2
+ import { COLLECTIONS, DEFAULT_CAMPAIGN_PRIORITY, DEFAULT_FREQUENCY_DAYS, PLACEMENT_NAMES, PLATFORM_NAMES, VARIANT_NAMES } from "./types/index.js";
3
+ import { a as a2, u as u2 } from "./useCampaigns-3NxODLLs.js";
4
+ import { A } from "./AdPanel-RGRBf4ub.js";
5
+ export {
6
+ A as AdPanel,
7
+ COLLECTIONS,
8
+ DEFAULT_CAMPAIGN_PRIORITY,
9
+ DEFAULT_FREQUENCY_DAYS,
10
+ PLACEMENT_NAMES,
11
+ PLATFORM_NAMES,
12
+ VARIANT_NAMES,
13
+ m as clearCampaignsCache,
14
+ n as clearProductsCache,
15
+ h as fetchActiveCampaigns,
16
+ f as fetchCampaigns,
17
+ k as fetchProducts,
18
+ j as getCampaignById,
19
+ u as getCampaignHistory,
20
+ d as getConfig,
21
+ c as getDeviceId,
22
+ s as getEligibleCampaignIds,
23
+ l as getProductById,
24
+ g as getSharedFeaturesApp,
25
+ b as getSharedFeaturesAuth,
26
+ a as getSharedFeaturesDb,
27
+ i as initSharedFeatures,
28
+ q as isEligibleForCampaign,
29
+ e as isInitialized,
30
+ r as recordImpression,
31
+ o as trackClick,
32
+ p as trackClose,
33
+ t as trackImpression,
34
+ a2 as useCampaign,
35
+ u2 as useCampaigns
36
+ };
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,32 @@
1
+ import { AdPlacement, AdVariant, RecordImpressionInput, AdHistoryEntry } from '../types/campaigns';
2
+ /**
3
+ * Check if user is eligible to see a campaign (based on frequency capping)
4
+ */
5
+ export declare function isEligibleForCampaign(campaignId: string, _frequencyDays?: number): Promise<boolean>;
6
+ /**
7
+ * Get all campaigns the user is currently eligible to see
8
+ */
9
+ export declare function getEligibleCampaignIds(): Promise<string[]>;
10
+ /**
11
+ * Get local ad history for a campaign
12
+ */
13
+ export declare function getCampaignHistory(campaignId: string): Promise<AdHistoryEntry | null>;
14
+ /**
15
+ * Record an ad impression, click, or close
16
+ *
17
+ * This sends the event to the centralized Firebase and updates local history.
18
+ */
19
+ export declare function recordImpression(input: RecordImpressionInput, frequencyDays?: number): Promise<void>;
20
+ /**
21
+ * Convenience function to record an impression
22
+ */
23
+ export declare function trackImpression(campaignId: string, productId: string, placement: AdPlacement, variant: AdVariant, frequencyDays?: number): Promise<void>;
24
+ /**
25
+ * Convenience function to record a click
26
+ */
27
+ export declare function trackClick(campaignId: string, productId: string, placement: AdPlacement, variant: AdVariant): Promise<void>;
28
+ /**
29
+ * Convenience function to record a close/dismiss
30
+ */
31
+ export declare function trackClose(campaignId: string, productId: string, placement: AdPlacement, variant: AdVariant): Promise<void>;
32
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/services/analytics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAEV,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,cAAc,EACf,MAAM,oBAAoB,CAAC;AA2G5B;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,cAAc,GAAE,MAAW,GAC1B,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOhE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGhC;AAMD;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,aAAa,GAAE,MAAW,GACzB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,SAAS,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,31 @@
1
+ import { Campaign, CampaignWithProduct, Product, AdPlacement, FetchCampaignsOptions } from '../types/campaigns';
2
+ /**
3
+ * Fetch all products from Firestore
4
+ */
5
+ export declare function fetchProducts(): Promise<Product[]>;
6
+ /**
7
+ * Get a product by ID (uses cache if available)
8
+ */
9
+ export declare function getProductById(productId: string): Promise<Product | null>;
10
+ /**
11
+ * Fetch campaigns with optional filters
12
+ */
13
+ export declare function fetchCampaigns(options?: FetchCampaignsOptions): Promise<Campaign[]>;
14
+ /**
15
+ * Fetch active campaigns for a specific placement
16
+ * Returns campaigns with resolved product data
17
+ */
18
+ export declare function fetchActiveCampaigns(placement: AdPlacement): Promise<CampaignWithProduct[]>;
19
+ /**
20
+ * Get a single campaign by ID
21
+ */
22
+ export declare function getCampaignById(campaignId: string): Promise<Campaign | null>;
23
+ /**
24
+ * Clear the campaigns cache (useful for manual refresh)
25
+ */
26
+ export declare function clearCampaignsCache(): void;
27
+ /**
28
+ * Clear the products cache
29
+ */
30
+ export declare function clearProductsCache(): void;
31
+ //# sourceMappingURL=campaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/services/campaigns.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,OAAO,EACP,WAAW,EAEX,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAsG5B;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CASxD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAmBzB;AAMD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAgErB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAqChC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAM1B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const analytics = require("../analytics-6shJHRZG.cjs");
4
+ exports.clearCampaignsCache = analytics.clearCampaignsCache;
5
+ exports.clearProductsCache = analytics.clearProductsCache;
6
+ exports.fetchActiveCampaigns = analytics.fetchActiveCampaigns;
7
+ exports.fetchCampaigns = analytics.fetchCampaigns;
8
+ exports.fetchProducts = analytics.fetchProducts;
9
+ exports.getCampaignById = analytics.getCampaignById;
10
+ exports.getCampaignHistory = analytics.getCampaignHistory;
11
+ exports.getEligibleCampaignIds = analytics.getEligibleCampaignIds;
12
+ exports.getProductById = analytics.getProductById;
13
+ exports.isEligibleForCampaign = analytics.isEligibleForCampaign;
14
+ exports.recordImpression = analytics.recordImpression;
15
+ exports.trackClick = analytics.trackClick;
16
+ exports.trackClose = analytics.trackClose;
17
+ exports.trackImpression = analytics.trackImpression;
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Services Index
3
+ *
4
+ * Re-exports all services from the shared-features package.
5
+ *
6
+ * @author Ahsan Mahmood <aoneahsan@gmail.com>
7
+ */
8
+ export { fetchCampaigns, fetchActiveCampaigns, getCampaignById, fetchProducts, getProductById, clearCampaignsCache, clearProductsCache, } from './campaigns';
9
+ export { recordImpression, trackImpression, trackClick, trackClose, isEligibleForCampaign, getEligibleCampaignIds, getCampaignHistory, } from './analytics';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { m, n, h, f, k, j, u, s, l, q, r, o, p, t } from "../analytics-Bbmodnm_.js";
2
+ export {
3
+ m as clearCampaignsCache,
4
+ n as clearProductsCache,
5
+ h as fetchActiveCampaigns,
6
+ f as fetchCampaigns,
7
+ k as fetchProducts,
8
+ j as getCampaignById,
9
+ u as getCampaignHistory,
10
+ s as getEligibleCampaignIds,
11
+ l as getProductById,
12
+ q as isEligibleForCampaign,
13
+ r as recordImpression,
14
+ o as trackClick,
15
+ p as trackClose,
16
+ t as trackImpression
17
+ };
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}