@contractspec/lib.metering 1.57.0 → 1.59.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.
Files changed (65) hide show
  1. package/dist/aggregation/index.d.ts +119 -122
  2. package/dist/aggregation/index.d.ts.map +1 -1
  3. package/dist/aggregation/index.js +257 -265
  4. package/dist/analytics/posthog-metering-reader.d.ts +32 -36
  5. package/dist/analytics/posthog-metering-reader.d.ts.map +1 -1
  6. package/dist/analytics/posthog-metering-reader.js +239 -179
  7. package/dist/analytics/posthog-metering.d.ts +30 -34
  8. package/dist/analytics/posthog-metering.d.ts.map +1 -1
  9. package/dist/analytics/posthog-metering.js +45 -45
  10. package/dist/browser/aggregation/index.js +265 -0
  11. package/dist/browser/analytics/posthog-metering-reader.js +266 -0
  12. package/dist/browser/analytics/posthog-metering.js +45 -0
  13. package/dist/browser/contracts/index.js +617 -0
  14. package/dist/browser/docs/index.js +62 -0
  15. package/dist/browser/docs/metering.docblock.js +62 -0
  16. package/dist/browser/entities/index.js +350 -0
  17. package/dist/browser/events.js +228 -0
  18. package/dist/browser/index.js +1879 -0
  19. package/dist/browser/metering.capability.js +28 -0
  20. package/dist/browser/metering.feature.js +52 -0
  21. package/dist/contracts/index.d.ts +1076 -1082
  22. package/dist/contracts/index.d.ts.map +1 -1
  23. package/dist/contracts/index.js +616 -1030
  24. package/dist/docs/index.d.ts +2 -1
  25. package/dist/docs/index.d.ts.map +1 -0
  26. package/dist/docs/index.js +63 -1
  27. package/dist/docs/metering.docblock.d.ts +2 -1
  28. package/dist/docs/metering.docblock.d.ts.map +1 -0
  29. package/dist/docs/metering.docblock.js +17 -22
  30. package/dist/entities/index.d.ts +186 -191
  31. package/dist/entities/index.d.ts.map +1 -1
  32. package/dist/entities/index.js +340 -407
  33. package/dist/events.d.ts +411 -417
  34. package/dist/events.d.ts.map +1 -1
  35. package/dist/events.js +226 -414
  36. package/dist/index.d.ts +9 -8
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +1880 -10
  39. package/dist/metering.capability.d.ts +2 -7
  40. package/dist/metering.capability.d.ts.map +1 -1
  41. package/dist/metering.capability.js +29 -33
  42. package/dist/metering.feature.d.ts +1 -6
  43. package/dist/metering.feature.d.ts.map +1 -1
  44. package/dist/metering.feature.js +51 -132
  45. package/dist/node/aggregation/index.js +265 -0
  46. package/dist/node/analytics/posthog-metering-reader.js +266 -0
  47. package/dist/node/analytics/posthog-metering.js +45 -0
  48. package/dist/node/contracts/index.js +617 -0
  49. package/dist/node/docs/index.js +62 -0
  50. package/dist/node/docs/metering.docblock.js +62 -0
  51. package/dist/node/entities/index.js +350 -0
  52. package/dist/node/events.js +228 -0
  53. package/dist/node/index.js +1879 -0
  54. package/dist/node/metering.capability.js +28 -0
  55. package/dist/node/metering.feature.js +52 -0
  56. package/package.json +133 -34
  57. package/dist/aggregation/index.js.map +0 -1
  58. package/dist/analytics/posthog-metering-reader.js.map +0 -1
  59. package/dist/analytics/posthog-metering.js.map +0 -1
  60. package/dist/contracts/index.js.map +0 -1
  61. package/dist/docs/metering.docblock.js.map +0 -1
  62. package/dist/entities/index.js.map +0 -1
  63. package/dist/events.js.map +0 -1
  64. package/dist/metering.capability.js.map +0 -1
  65. package/dist/metering.feature.js.map +0 -1
@@ -1,156 +1,153 @@
1
- //#region src/aggregation/index.d.ts
2
1
  /**
3
2
  * Usage aggregation engine.
4
3
  *
5
4
  * Provides periodic aggregation of usage records into summaries
6
5
  * for efficient billing and reporting queries.
7
6
  */
8
- type PeriodType = 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';
9
- type AggregationType = 'COUNT' | 'SUM' | 'AVG' | 'MAX' | 'MIN' | 'LAST';
10
- interface UsageRecord {
11
- id: string;
12
- metricKey: string;
13
- subjectType: string;
14
- subjectId: string;
15
- quantity: number;
16
- timestamp: Date;
7
+ export type PeriodType = 'HOURLY' | 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';
8
+ export type AggregationType = 'COUNT' | 'SUM' | 'AVG' | 'MAX' | 'MIN' | 'LAST';
9
+ export interface UsageRecord {
10
+ id: string;
11
+ metricKey: string;
12
+ subjectType: string;
13
+ subjectId: string;
14
+ quantity: number;
15
+ timestamp: Date;
17
16
  }
18
- interface UsageSummary {
19
- id: string;
20
- metricKey: string;
21
- subjectType: string;
22
- subjectId: string;
23
- periodType: PeriodType;
24
- periodStart: Date;
25
- periodEnd: Date;
26
- totalQuantity: number;
27
- recordCount: number;
28
- minQuantity?: number;
29
- maxQuantity?: number;
30
- avgQuantity?: number;
31
- }
32
- interface MetricDefinition {
33
- key: string;
34
- aggregationType: AggregationType;
35
- }
36
- interface UsageStorage {
37
- /**
38
- * Get unaggregated records for a period.
39
- */
40
- getUnaggregatedRecords(options: {
41
- metricKey?: string;
17
+ export interface UsageSummary {
18
+ id: string;
19
+ metricKey: string;
20
+ subjectType: string;
21
+ subjectId: string;
22
+ periodType: PeriodType;
42
23
  periodStart: Date;
43
24
  periodEnd: Date;
44
- limit?: number;
45
- }): Promise<UsageRecord[]>;
46
- /**
47
- * Mark records as aggregated.
48
- */
49
- markRecordsAggregated(recordIds: string[], aggregatedAt: Date): Promise<void>;
50
- /**
51
- * Get or create a summary record.
52
- */
53
- upsertSummary(summary: Omit<UsageSummary, 'id'>): Promise<UsageSummary>;
54
- /**
55
- * Get metric definition.
56
- */
57
- getMetric(key: string): Promise<MetricDefinition | null>;
58
- /**
59
- * List all active metrics.
60
- */
61
- listMetrics(): Promise<MetricDefinition[]>;
25
+ totalQuantity: number;
26
+ recordCount: number;
27
+ minQuantity?: number;
28
+ maxQuantity?: number;
29
+ avgQuantity?: number;
62
30
  }
63
- interface AggregationOptions {
64
- /** Storage implementation */
65
- storage: UsageStorage;
66
- /** Batch size for processing records */
67
- batchSize?: number;
31
+ export interface MetricDefinition {
32
+ key: string;
33
+ aggregationType: AggregationType;
68
34
  }
69
- interface AggregateParams {
70
- /** Period type to aggregate */
71
- periodType: PeriodType;
72
- /** Period start time */
73
- periodStart: Date;
74
- /** Period end time (optional, defaults to period boundary) */
75
- periodEnd?: Date;
76
- /** Specific metric to aggregate (optional, aggregates all if not specified) */
77
- metricKey?: string;
35
+ export interface UsageStorage {
36
+ /**
37
+ * Get unaggregated records for a period.
38
+ */
39
+ getUnaggregatedRecords(options: {
40
+ metricKey?: string;
41
+ periodStart: Date;
42
+ periodEnd: Date;
43
+ limit?: number;
44
+ }): Promise<UsageRecord[]>;
45
+ /**
46
+ * Mark records as aggregated.
47
+ */
48
+ markRecordsAggregated(recordIds: string[], aggregatedAt: Date): Promise<void>;
49
+ /**
50
+ * Get or create a summary record.
51
+ */
52
+ upsertSummary(summary: Omit<UsageSummary, 'id'>): Promise<UsageSummary>;
53
+ /**
54
+ * Get metric definition.
55
+ */
56
+ getMetric(key: string): Promise<MetricDefinition | null>;
57
+ /**
58
+ * List all active metrics.
59
+ */
60
+ listMetrics(): Promise<MetricDefinition[]>;
61
+ }
62
+ export interface AggregationOptions {
63
+ /** Storage implementation */
64
+ storage: UsageStorage;
65
+ /** Batch size for processing records */
66
+ batchSize?: number;
67
+ }
68
+ export interface AggregateParams {
69
+ /** Period type to aggregate */
70
+ periodType: PeriodType;
71
+ /** Period start time */
72
+ periodStart: Date;
73
+ /** Period end time (optional, defaults to period boundary) */
74
+ periodEnd?: Date;
75
+ /** Specific metric to aggregate (optional, aggregates all if not specified) */
76
+ metricKey?: string;
78
77
  }
79
- interface AggregationResult {
80
- periodType: PeriodType;
81
- periodStart: Date;
82
- periodEnd: Date;
83
- recordsProcessed: number;
84
- summariesCreated: number;
85
- summariesUpdated: number;
86
- errors: AggregationError[];
78
+ export interface AggregationResult {
79
+ periodType: PeriodType;
80
+ periodStart: Date;
81
+ periodEnd: Date;
82
+ recordsProcessed: number;
83
+ summariesCreated: number;
84
+ summariesUpdated: number;
85
+ errors: AggregationError[];
87
86
  }
88
- interface AggregationError {
89
- metricKey: string;
90
- subjectType: string;
91
- subjectId: string;
92
- error: string;
87
+ export interface AggregationError {
88
+ metricKey: string;
89
+ subjectType: string;
90
+ subjectId: string;
91
+ error: string;
93
92
  }
94
93
  /**
95
94
  * Get the start of a period for a given date.
96
95
  */
97
- declare function getPeriodStart(date: Date, periodType: PeriodType): Date;
96
+ export declare function getPeriodStart(date: Date, periodType: PeriodType): Date;
98
97
  /**
99
98
  * Get the end of a period for a given date.
100
99
  */
101
- declare function getPeriodEnd(date: Date, periodType: PeriodType): Date;
100
+ export declare function getPeriodEnd(date: Date, periodType: PeriodType): Date;
102
101
  /**
103
102
  * Format a period key for grouping.
104
103
  */
105
- declare function formatPeriodKey(date: Date, periodType: PeriodType): string;
104
+ export declare function formatPeriodKey(date: Date, periodType: PeriodType): string;
106
105
  /**
107
106
  * Usage aggregator.
108
107
  *
109
108
  * Aggregates usage records into summaries based on period type.
110
109
  */
111
- declare class UsageAggregator {
112
- private storage;
113
- private batchSize;
114
- constructor(options: AggregationOptions);
115
- /**
116
- * Aggregate usage records for a period.
117
- */
118
- aggregate(params: AggregateParams): Promise<AggregationResult>;
119
- /**
120
- * Group records by metric, subject, and period.
121
- */
122
- private groupRecords;
123
- /**
124
- * Aggregate a group of records into a summary.
125
- */
126
- private aggregateGroup;
127
- /**
128
- * Calculate aggregation values.
129
- */
130
- private calculateAggregation;
110
+ export declare class UsageAggregator {
111
+ private storage;
112
+ private batchSize;
113
+ constructor(options: AggregationOptions);
114
+ /**
115
+ * Aggregate usage records for a period.
116
+ */
117
+ aggregate(params: AggregateParams): Promise<AggregationResult>;
118
+ /**
119
+ * Group records by metric, subject, and period.
120
+ */
121
+ private groupRecords;
122
+ /**
123
+ * Aggregate a group of records into a summary.
124
+ */
125
+ private aggregateGroup;
126
+ /**
127
+ * Calculate aggregation values.
128
+ */
129
+ private calculateAggregation;
131
130
  }
132
131
  /**
133
132
  * In-memory usage storage for testing.
134
133
  */
135
- declare class InMemoryUsageStorage implements UsageStorage {
136
- private records;
137
- private summaries;
138
- private metrics;
139
- addRecord(record: UsageRecord): void;
140
- addMetric(metric: MetricDefinition): void;
141
- getUnaggregatedRecords(options: {
142
- metricKey?: string;
143
- periodStart: Date;
144
- periodEnd: Date;
145
- limit?: number;
146
- }): Promise<UsageRecord[]>;
147
- markRecordsAggregated(recordIds: string[]): Promise<void>;
148
- upsertSummary(summary: Omit<UsageSummary, 'id'>): Promise<UsageSummary>;
149
- getMetric(key: string): Promise<MetricDefinition | null>;
150
- listMetrics(): Promise<MetricDefinition[]>;
151
- getSummaries(): UsageSummary[];
152
- clear(): void;
134
+ export declare class InMemoryUsageStorage implements UsageStorage {
135
+ private records;
136
+ private summaries;
137
+ private metrics;
138
+ addRecord(record: UsageRecord): void;
139
+ addMetric(metric: MetricDefinition): void;
140
+ getUnaggregatedRecords(options: {
141
+ metricKey?: string;
142
+ periodStart: Date;
143
+ periodEnd: Date;
144
+ limit?: number;
145
+ }): Promise<UsageRecord[]>;
146
+ markRecordsAggregated(recordIds: string[]): Promise<void>;
147
+ upsertSummary(summary: Omit<UsageSummary, 'id'>): Promise<UsageSummary>;
148
+ getMetric(key: string): Promise<MetricDefinition | null>;
149
+ listMetrics(): Promise<MetricDefinition[]>;
150
+ getSummaries(): UsageSummary[];
151
+ clear(): void;
153
152
  }
154
- //#endregion
155
- export { AggregateParams, AggregationError, AggregationOptions, AggregationResult, AggregationType, InMemoryUsageStorage, MetricDefinition, PeriodType, UsageAggregator, UsageRecord, UsageStorage, UsageSummary, formatPeriodKey, getPeriodEnd, getPeriodStart };
156
153
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/aggregation/index.ts"],"mappings":";;AASA;;;;;KAAY,UAAA;AAAA,KACA,eAAA;AAAA,UAEK,WAAA;EACf,EAAA;EACA,SAAA;EACA,WAAA;EACA,SAAA;EACA,QAAA;EACA,SAAA,EAAW,IAAA;AAAA;AAAA,UAGI,YAAA;EACf,EAAA;EACA,SAAA;EACA,WAAA;EACA,SAAA;EACA,UAAA,EAAY,UAAA;EACZ,WAAA,EAAa,IAAA;EACb,SAAA,EAAW,IAAA;EACX,aAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;AAAA;AAAA,UAGe,gBAAA;EACf,GAAA;EACA,eAAA,EAAiB,eAAA;AAAA;AAAA,UAGF,YAAA;EAhBf;;;EAoBA,sBAAA,CAAuB,OAAA;IACrB,SAAA;IACA,WAAA,EAAa,IAAA;IACb,SAAA,EAAW,IAAA;IACX,KAAA;EAAA,IACE,OAAA,CAAQ,WAAA;EAnBZ;;;EAwBA,qBAAA,CAAsB,SAAA,YAAqB,YAAA,EAAc,IAAA,GAAO,OAAA;EAtBrD;AAGb;;EAwBE,aAAA,CAAc,OAAA,EAAS,IAAA,CAAK,YAAA,UAAsB,OAAA,CAAQ,YAAA;EAtB1B;;;EA2BhC,SAAA,CAAU,GAAA,WAAc,OAAA,CAAQ,gBAAA;EA3BA;;AAGlC;EA6BE,WAAA,IAAe,OAAA,CAAQ,gBAAA;AAAA;AAAA,UAGR,kBAAA;EAzBF;EA2Bb,OAAA,EAAS,YAAA;EAzBL;EA2BJ,SAAA;AAAA;AAAA,UAGe,eAAA;EApBQ;EAsBvB,UAAA,EAAY,UAAA;EAtBsC;EAwBlD,WAAA,EAAa,IAAA;EAnBW;EAqBxB,SAAA,GAAY,IAAA;EAhBG;EAkBf,SAAA;AAAA;AAAA,UAGe,iBAAA;EACf,UAAA,EAAY,UAAA;EACZ,WAAA,EAAa,IAAA;EACb,SAAA,EAAW,IAAA;EACX,gBAAA;EACA,gBAAA;EACA,gBAAA;EACA,MAAA,EAAQ,gBAAA;AAAA;AAAA,UAGO,gBAAA;EACf,SAAA;EACA,WAAA;EACA,SAAA;EACA,KAAA;AAAA;;;;iBAQc,cAAA,CAAe,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,UAAA,GAAa,IAAA;;;;iBAkCpD,YAAA,CAAa,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,UAAA,GAAa,IAAA;;;;iBA8BlD,eAAA,CAAgB,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,UAAA;;;;AAxGxD;;cAiJa,eAAA;EAAA,QACH,OAAA;EAAA,QACA,SAAA;cAEI,OAAA,EAAS,kBAAA;EAjJrB;;;EAyJM,SAAA,CAAU,MAAA,EAAQ,eAAA,GAAkB,OAAA,CAAQ,iBAAA;EAtJpB;;;EAAA,QA6MtB,YAAA;EAvMI;;;EAAA,QA4NE,cAAA;EAhOF;;;EAAA,QA8QJ,oBAAA;AAAA;;;;cA+CG,oBAAA,YAAgC,YAAA;EAAA,QACnC,OAAA;EAAA,QACA,SAAA;EAAA,QACA,OAAA;EAER,SAAA,CAAU,MAAA,EAAQ,WAAA;EAIlB,SAAA,CAAU,MAAA,EAAQ,gBAAA;EAIZ,sBAAA,CAAuB,OAAA;IAC3B,SAAA;IACA,WAAA,EAAa,IAAA;IACb,SAAA,EAAW,IAAA;IACX,KAAA;EAAA,IACE,OAAA,CAAQ,WAAA;EAgBN,qBAAA,CAAsB,SAAA,aAAsB,OAAA;EAI5C,aAAA,CACJ,OAAA,EAAS,IAAA,CAAK,YAAA,UACb,OAAA,CAAQ,YAAA;EAgCL,SAAA,CAAU,GAAA,WAAc,OAAA,CAAQ,gBAAA;EAIhC,WAAA,CAAA,GAAe,OAAA,CAAQ,gBAAA;EAI7B,YAAA,CAAA,GAAgB,YAAA;EAIhB,KAAA,CAAA;AAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aggregation/index.ts"],"names":[],"mappings":"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"}