@aranova/tracking-next 0.9.1 → 0.10.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 +7 -2
- package/dist/index.d.mts +62 -1
- package/dist/index.d.ts +62 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -200,10 +200,15 @@ const sales = createSalesClient<AranovaService>({
|
|
|
200
200
|
endpoint: process.env.ARANOVA_TRACKING_ENDPOINT!,
|
|
201
201
|
});
|
|
202
202
|
const { items, next_cursor } = await sales.list({ limit: 50 });
|
|
203
|
+
const summary = await sales.summary({ range: '30d' }); // currency-grouped aggregations
|
|
203
204
|
```
|
|
204
205
|
|
|
205
|
-
|
|
206
|
-
|
|
206
|
+
`sales.summary({ range })` returns revenue and average order value per currency,
|
|
207
|
+
distinct customers, by-service / by-currency / by-category breakdowns, and a
|
|
208
|
+
revenue/count trend — a secret-key read scoped to the key's business.
|
|
209
|
+
|
|
210
|
+
A public-key client calling `list`/`summary`/`get`/`update`/`delete` gets a `403`
|
|
211
|
+
telling it to use a secret key server-side.
|
|
207
212
|
|
|
208
213
|
Generate the typed `AranovaService` union from your dashboard services with the CLI
|
|
209
214
|
(install it as a **devDependency**):
|
package/dist/index.d.mts
CHANGED
|
@@ -1503,6 +1503,61 @@ interface SaleListQuery extends SaleFilters {
|
|
|
1503
1503
|
limit?: number;
|
|
1504
1504
|
cursor?: string | null;
|
|
1505
1505
|
}
|
|
1506
|
+
declare const TRACKING_RANGES: readonly ["24h", "7d", "30d"];
|
|
1507
|
+
type TrackingOverviewRange = (typeof TRACKING_RANGES)[number];
|
|
1508
|
+
/** Query input for `SalesClient.summary()` — filters + range + options. */
|
|
1509
|
+
interface SaleSummaryQuery extends SaleFilters {
|
|
1510
|
+
range: TrackingOverviewRange;
|
|
1511
|
+
/** Include the per-category line-item breakdown (extra join; default false). */
|
|
1512
|
+
include_categories?: boolean;
|
|
1513
|
+
/** Surface soft-deleted services individually (flagged "(deleted)") instead of
|
|
1514
|
+
* rolling them into a single "Deleted services" bucket. Default false. */
|
|
1515
|
+
include_deleted_services?: boolean;
|
|
1516
|
+
/** Cap on the by-service / by-category rows (1–50, default 10). */
|
|
1517
|
+
top_n?: number;
|
|
1518
|
+
}
|
|
1519
|
+
interface CurrencyRevenue {
|
|
1520
|
+
currency: SupportedCurrency;
|
|
1521
|
+
sale_count: number;
|
|
1522
|
+
revenue_cents: number;
|
|
1523
|
+
average_order_value_cents: number;
|
|
1524
|
+
}
|
|
1525
|
+
interface SalesServiceBreakdown {
|
|
1526
|
+
service_id: string | null;
|
|
1527
|
+
service_key: string | null;
|
|
1528
|
+
/** "Unassigned" when the sale has no service. */
|
|
1529
|
+
service_label: string | null;
|
|
1530
|
+
currency: SupportedCurrency;
|
|
1531
|
+
sale_count: number;
|
|
1532
|
+
revenue_cents: number;
|
|
1533
|
+
}
|
|
1534
|
+
interface SalesCategoryBreakdown {
|
|
1535
|
+
category: string | null;
|
|
1536
|
+
currency: SupportedCurrency;
|
|
1537
|
+
/** sum(unit_price_cents * quantity) — advisory, not authoritative. */
|
|
1538
|
+
revenue_cents: number;
|
|
1539
|
+
/** Decimal string. */
|
|
1540
|
+
quantity: string;
|
|
1541
|
+
}
|
|
1542
|
+
interface SalesTrendPoint {
|
|
1543
|
+
bucket_start: string;
|
|
1544
|
+
currency: SupportedCurrency;
|
|
1545
|
+
sale_count: number;
|
|
1546
|
+
revenue_cents: number;
|
|
1547
|
+
}
|
|
1548
|
+
interface SaleSummary {
|
|
1549
|
+
range: TrackingOverviewRange;
|
|
1550
|
+
business_id: string | null;
|
|
1551
|
+
metrics: {
|
|
1552
|
+
sale_count: number;
|
|
1553
|
+
distinct_customers: number;
|
|
1554
|
+
by_currency: CurrencyRevenue[];
|
|
1555
|
+
};
|
|
1556
|
+
by_service: SalesServiceBreakdown[];
|
|
1557
|
+
by_currency: CurrencyRevenue[];
|
|
1558
|
+
by_category: SalesCategoryBreakdown[];
|
|
1559
|
+
series: SalesTrendPoint[];
|
|
1560
|
+
}
|
|
1506
1561
|
|
|
1507
1562
|
/** Shared config for every sales HTTP helper. */
|
|
1508
1563
|
interface SalesTransportConfig {
|
|
@@ -1542,6 +1597,12 @@ interface SalesClient<TService extends string = string> {
|
|
|
1542
1597
|
occurred_at?: string;
|
|
1543
1598
|
}): Promise<Sale>;
|
|
1544
1599
|
list(query?: SaleListQuery): Promise<SaleCursorPage>;
|
|
1600
|
+
/**
|
|
1601
|
+
* Currency-grouped aggregations for the key's business (revenue per currency,
|
|
1602
|
+
* AOV, distinct customers, by-service / by-currency / by-category breakdowns,
|
|
1603
|
+
* and a revenue/count trend). Secret key only — a public key gets a `403`.
|
|
1604
|
+
*/
|
|
1605
|
+
summary(query: SaleSummaryQuery): Promise<SaleSummary>;
|
|
1545
1606
|
get(id: string): Promise<Sale>;
|
|
1546
1607
|
update(id: string, patch: Omit<SaleUpdateInput, 'service'> & {
|
|
1547
1608
|
service?: TService | null;
|
|
@@ -1803,4 +1864,4 @@ interface CreateTrackingResult<TRegistry extends TriggerRegistryConfig> {
|
|
|
1803
1864
|
*/
|
|
1804
1865
|
declare function createTracking<TRegistry extends TriggerRegistryConfig>(options: CreateTrackingOptions<TRegistry>): CreateTrackingResult<TRegistry>;
|
|
1805
1866
|
|
|
1806
|
-
export { AranovaApiError, type AutomaticEventName, ConsentBanner, type ConsentBannerProps, ConsentState, type CreateTrackingOptions, type CreateTrackingResult, type CtaClickConfig, type CtaClickMetadata, type EventConfig, type EventMetadata, type EventName, type FormStartConfig, type FormStartMetadata, type FormSubmitConfig, type FormSubmitMetadata, GoogleAdsTracking, type GoogleAdsTrackingProps, type JsonValue, type ManualEventName, type MultiPageSessionConfig, type MultiPageSessionMetadata, type PageViewConfig, type PageViewMetadata, type PhoneClickConfig, type PhoneClickMetadata, type PublicServiceItem, type RegisteredAutomaticEvents, type RegisteredManualEvents, type Sale, type SaleCursorPage, type SaleInput, type SaleItem, type SaleItemInput, type SaleListPage, type SaleListQuery, type SaleUpdateInput, type SalesClient, type SalesClientConfig, type SalesTransportConfig, type ScrollDepthConfig, type ScrollDepthMetadata, type SpecificPageName, type SpecificPageVisitConfig, type SpecificPageVisitMetadata, type SupportedCurrency, TRACKING_PARAM_KEYS, type TimeOnSiteConfig, type TimeOnSiteMetadata, type TrackingClient, TrackingClientContext, TrackingEventCreatePayload, TrackingInstallSurface, TrackingParams, type TrackingProviderProps, TrackingSessionUpsertPayload, type TriggerRegistryConfig, type TypedTrackEventOptions, type TypedTrackingClient, type UseConsentResult, captureTrackingParamsFromLocation, createSalesClient, createTracking, createTrackingClientContext, createTrackingEventCreatePayload, createTrackingSessionUpsertPayload, fetchServices, formatMoney, fromMinor, getConsentState, resetConsent, setConsentState, toMinor, useConsent, useConsentState, useGclid, useTrackingParams };
|
|
1867
|
+
export { AranovaApiError, type AutomaticEventName, ConsentBanner, type ConsentBannerProps, ConsentState, type CreateTrackingOptions, type CreateTrackingResult, type CtaClickConfig, type CtaClickMetadata, type CurrencyRevenue, type EventConfig, type EventMetadata, type EventName, type FormStartConfig, type FormStartMetadata, type FormSubmitConfig, type FormSubmitMetadata, GoogleAdsTracking, type GoogleAdsTrackingProps, type JsonValue, type ManualEventName, type MultiPageSessionConfig, type MultiPageSessionMetadata, type PageViewConfig, type PageViewMetadata, type PhoneClickConfig, type PhoneClickMetadata, type PublicServiceItem, type RegisteredAutomaticEvents, type RegisteredManualEvents, type Sale, type SaleCursorPage, type SaleInput, type SaleItem, type SaleItemInput, type SaleListPage, type SaleListQuery, type SaleSummary, type SaleSummaryQuery, type SaleUpdateInput, type SalesCategoryBreakdown, type SalesClient, type SalesClientConfig, type SalesServiceBreakdown, type SalesTransportConfig, type SalesTrendPoint, type ScrollDepthConfig, type ScrollDepthMetadata, type SpecificPageName, type SpecificPageVisitConfig, type SpecificPageVisitMetadata, type SupportedCurrency, TRACKING_PARAM_KEYS, type TimeOnSiteConfig, type TimeOnSiteMetadata, type TrackingClient, TrackingClientContext, TrackingEventCreatePayload, TrackingInstallSurface, type TrackingOverviewRange, TrackingParams, type TrackingProviderProps, TrackingSessionUpsertPayload, type TriggerRegistryConfig, type TypedTrackEventOptions, type TypedTrackingClient, type UseConsentResult, captureTrackingParamsFromLocation, createSalesClient, createTracking, createTrackingClientContext, createTrackingEventCreatePayload, createTrackingSessionUpsertPayload, fetchServices, formatMoney, fromMinor, getConsentState, resetConsent, setConsentState, toMinor, useConsent, useConsentState, useGclid, useTrackingParams };
|
package/dist/index.d.ts
CHANGED
|
@@ -1503,6 +1503,61 @@ interface SaleListQuery extends SaleFilters {
|
|
|
1503
1503
|
limit?: number;
|
|
1504
1504
|
cursor?: string | null;
|
|
1505
1505
|
}
|
|
1506
|
+
declare const TRACKING_RANGES: readonly ["24h", "7d", "30d"];
|
|
1507
|
+
type TrackingOverviewRange = (typeof TRACKING_RANGES)[number];
|
|
1508
|
+
/** Query input for `SalesClient.summary()` — filters + range + options. */
|
|
1509
|
+
interface SaleSummaryQuery extends SaleFilters {
|
|
1510
|
+
range: TrackingOverviewRange;
|
|
1511
|
+
/** Include the per-category line-item breakdown (extra join; default false). */
|
|
1512
|
+
include_categories?: boolean;
|
|
1513
|
+
/** Surface soft-deleted services individually (flagged "(deleted)") instead of
|
|
1514
|
+
* rolling them into a single "Deleted services" bucket. Default false. */
|
|
1515
|
+
include_deleted_services?: boolean;
|
|
1516
|
+
/** Cap on the by-service / by-category rows (1–50, default 10). */
|
|
1517
|
+
top_n?: number;
|
|
1518
|
+
}
|
|
1519
|
+
interface CurrencyRevenue {
|
|
1520
|
+
currency: SupportedCurrency;
|
|
1521
|
+
sale_count: number;
|
|
1522
|
+
revenue_cents: number;
|
|
1523
|
+
average_order_value_cents: number;
|
|
1524
|
+
}
|
|
1525
|
+
interface SalesServiceBreakdown {
|
|
1526
|
+
service_id: string | null;
|
|
1527
|
+
service_key: string | null;
|
|
1528
|
+
/** "Unassigned" when the sale has no service. */
|
|
1529
|
+
service_label: string | null;
|
|
1530
|
+
currency: SupportedCurrency;
|
|
1531
|
+
sale_count: number;
|
|
1532
|
+
revenue_cents: number;
|
|
1533
|
+
}
|
|
1534
|
+
interface SalesCategoryBreakdown {
|
|
1535
|
+
category: string | null;
|
|
1536
|
+
currency: SupportedCurrency;
|
|
1537
|
+
/** sum(unit_price_cents * quantity) — advisory, not authoritative. */
|
|
1538
|
+
revenue_cents: number;
|
|
1539
|
+
/** Decimal string. */
|
|
1540
|
+
quantity: string;
|
|
1541
|
+
}
|
|
1542
|
+
interface SalesTrendPoint {
|
|
1543
|
+
bucket_start: string;
|
|
1544
|
+
currency: SupportedCurrency;
|
|
1545
|
+
sale_count: number;
|
|
1546
|
+
revenue_cents: number;
|
|
1547
|
+
}
|
|
1548
|
+
interface SaleSummary {
|
|
1549
|
+
range: TrackingOverviewRange;
|
|
1550
|
+
business_id: string | null;
|
|
1551
|
+
metrics: {
|
|
1552
|
+
sale_count: number;
|
|
1553
|
+
distinct_customers: number;
|
|
1554
|
+
by_currency: CurrencyRevenue[];
|
|
1555
|
+
};
|
|
1556
|
+
by_service: SalesServiceBreakdown[];
|
|
1557
|
+
by_currency: CurrencyRevenue[];
|
|
1558
|
+
by_category: SalesCategoryBreakdown[];
|
|
1559
|
+
series: SalesTrendPoint[];
|
|
1560
|
+
}
|
|
1506
1561
|
|
|
1507
1562
|
/** Shared config for every sales HTTP helper. */
|
|
1508
1563
|
interface SalesTransportConfig {
|
|
@@ -1542,6 +1597,12 @@ interface SalesClient<TService extends string = string> {
|
|
|
1542
1597
|
occurred_at?: string;
|
|
1543
1598
|
}): Promise<Sale>;
|
|
1544
1599
|
list(query?: SaleListQuery): Promise<SaleCursorPage>;
|
|
1600
|
+
/**
|
|
1601
|
+
* Currency-grouped aggregations for the key's business (revenue per currency,
|
|
1602
|
+
* AOV, distinct customers, by-service / by-currency / by-category breakdowns,
|
|
1603
|
+
* and a revenue/count trend). Secret key only — a public key gets a `403`.
|
|
1604
|
+
*/
|
|
1605
|
+
summary(query: SaleSummaryQuery): Promise<SaleSummary>;
|
|
1545
1606
|
get(id: string): Promise<Sale>;
|
|
1546
1607
|
update(id: string, patch: Omit<SaleUpdateInput, 'service'> & {
|
|
1547
1608
|
service?: TService | null;
|
|
@@ -1803,4 +1864,4 @@ interface CreateTrackingResult<TRegistry extends TriggerRegistryConfig> {
|
|
|
1803
1864
|
*/
|
|
1804
1865
|
declare function createTracking<TRegistry extends TriggerRegistryConfig>(options: CreateTrackingOptions<TRegistry>): CreateTrackingResult<TRegistry>;
|
|
1805
1866
|
|
|
1806
|
-
export { AranovaApiError, type AutomaticEventName, ConsentBanner, type ConsentBannerProps, ConsentState, type CreateTrackingOptions, type CreateTrackingResult, type CtaClickConfig, type CtaClickMetadata, type EventConfig, type EventMetadata, type EventName, type FormStartConfig, type FormStartMetadata, type FormSubmitConfig, type FormSubmitMetadata, GoogleAdsTracking, type GoogleAdsTrackingProps, type JsonValue, type ManualEventName, type MultiPageSessionConfig, type MultiPageSessionMetadata, type PageViewConfig, type PageViewMetadata, type PhoneClickConfig, type PhoneClickMetadata, type PublicServiceItem, type RegisteredAutomaticEvents, type RegisteredManualEvents, type Sale, type SaleCursorPage, type SaleInput, type SaleItem, type SaleItemInput, type SaleListPage, type SaleListQuery, type SaleUpdateInput, type SalesClient, type SalesClientConfig, type SalesTransportConfig, type ScrollDepthConfig, type ScrollDepthMetadata, type SpecificPageName, type SpecificPageVisitConfig, type SpecificPageVisitMetadata, type SupportedCurrency, TRACKING_PARAM_KEYS, type TimeOnSiteConfig, type TimeOnSiteMetadata, type TrackingClient, TrackingClientContext, TrackingEventCreatePayload, TrackingInstallSurface, TrackingParams, type TrackingProviderProps, TrackingSessionUpsertPayload, type TriggerRegistryConfig, type TypedTrackEventOptions, type TypedTrackingClient, type UseConsentResult, captureTrackingParamsFromLocation, createSalesClient, createTracking, createTrackingClientContext, createTrackingEventCreatePayload, createTrackingSessionUpsertPayload, fetchServices, formatMoney, fromMinor, getConsentState, resetConsent, setConsentState, toMinor, useConsent, useConsentState, useGclid, useTrackingParams };
|
|
1867
|
+
export { AranovaApiError, type AutomaticEventName, ConsentBanner, type ConsentBannerProps, ConsentState, type CreateTrackingOptions, type CreateTrackingResult, type CtaClickConfig, type CtaClickMetadata, type CurrencyRevenue, type EventConfig, type EventMetadata, type EventName, type FormStartConfig, type FormStartMetadata, type FormSubmitConfig, type FormSubmitMetadata, GoogleAdsTracking, type GoogleAdsTrackingProps, type JsonValue, type ManualEventName, type MultiPageSessionConfig, type MultiPageSessionMetadata, type PageViewConfig, type PageViewMetadata, type PhoneClickConfig, type PhoneClickMetadata, type PublicServiceItem, type RegisteredAutomaticEvents, type RegisteredManualEvents, type Sale, type SaleCursorPage, type SaleInput, type SaleItem, type SaleItemInput, type SaleListPage, type SaleListQuery, type SaleSummary, type SaleSummaryQuery, type SaleUpdateInput, type SalesCategoryBreakdown, type SalesClient, type SalesClientConfig, type SalesServiceBreakdown, type SalesTransportConfig, type SalesTrendPoint, type ScrollDepthConfig, type ScrollDepthMetadata, type SpecificPageName, type SpecificPageVisitConfig, type SpecificPageVisitMetadata, type SupportedCurrency, TRACKING_PARAM_KEYS, type TimeOnSiteConfig, type TimeOnSiteMetadata, type TrackingClient, TrackingClientContext, TrackingEventCreatePayload, TrackingInstallSurface, type TrackingOverviewRange, TrackingParams, type TrackingProviderProps, TrackingSessionUpsertPayload, type TriggerRegistryConfig, type TypedTrackEventOptions, type TypedTrackingClient, type UseConsentResult, captureTrackingParamsFromLocation, createSalesClient, createTracking, createTrackingClientContext, createTrackingEventCreatePayload, createTrackingSessionUpsertPayload, fetchServices, formatMoney, fromMinor, getConsentState, resetConsent, setConsentState, toMinor, useConsent, useConsentState, useGclid, useTrackingParams };
|
package/dist/index.js
CHANGED
|
@@ -1190,6 +1190,16 @@ function createSalesClient(config) {
|
|
|
1190
1190
|
...cursor !== void 0 ? { cursor } : {}
|
|
1191
1191
|
});
|
|
1192
1192
|
},
|
|
1193
|
+
async summary(query) {
|
|
1194
|
+
const { range, include_categories, include_deleted_services, top_n, ...filters } = query;
|
|
1195
|
+
return salesRequest(config, "POST", "/sales/summary", {
|
|
1196
|
+
filters,
|
|
1197
|
+
range,
|
|
1198
|
+
...include_categories !== void 0 ? { include_categories } : {},
|
|
1199
|
+
...include_deleted_services !== void 0 ? { include_deleted_services } : {},
|
|
1200
|
+
...top_n !== void 0 ? { top_n } : {}
|
|
1201
|
+
});
|
|
1202
|
+
},
|
|
1193
1203
|
async get(id) {
|
|
1194
1204
|
return salesRequest(config, "GET", `/sales/${id}`);
|
|
1195
1205
|
},
|
|
@@ -1494,7 +1504,7 @@ function GoogleAdsTracking(props) {
|
|
|
1494
1504
|
var import_navigation = require("next/navigation");
|
|
1495
1505
|
|
|
1496
1506
|
// package.json
|
|
1497
|
-
var version = "0.
|
|
1507
|
+
var version = "0.10.0";
|
|
1498
1508
|
|
|
1499
1509
|
// src/factory.tsx
|
|
1500
1510
|
var import_react3 = require("react");
|