@happyvertical/smrt-reports 0.47.2 → 0.49.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/dist/decorators.js +3 -2
- package/dist/decorators.js.map +1 -1
- package/dist/manifest.json +1 -1
- package/dist/smrt-knowledge.json +3 -3
- package/package.json +6 -6
package/dist/decorators.js
CHANGED
|
@@ -12,8 +12,9 @@ function getRuntimeReportOptions(ctor) {
|
|
|
12
12
|
}
|
|
13
13
|
function registerReportField(metadata) {
|
|
14
14
|
return ((targetOrValue, propertyKeyOrContext) => {
|
|
15
|
-
registerCompatibleFieldDecorator(targetOrValue, propertyKeyOrContext, (className, propertyKey) => {
|
|
16
|
-
|
|
15
|
+
registerCompatibleFieldDecorator(targetOrValue, propertyKeyOrContext, (className, propertyKey, ctor) => {
|
|
16
|
+
const options = { __report: metadata };
|
|
17
|
+
ObjectRegistry.registerFieldDecorator(className, propertyKey, options, ctor);
|
|
17
18
|
});
|
|
18
19
|
});
|
|
19
20
|
}
|
package/dist/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","names":[],"sources":["../src/decorators.ts"],"sourcesContent":["import {\n ObjectRegistry,\n registerCompatibleFieldDecorator,\n} from '@happyvertical/smrt-core';\nimport type {\n ReportAggregateFieldMetadata,\n ReportAggregateFn,\n ReportBucketFieldMetadata,\n ReportFieldMetadata,\n ReportOptions,\n ReportTimeBucketUnit,\n} from './types.js';\n\nconst reportOptionsByConstructor = new WeakMap<Function, ReportOptions>();\n\nexport function report(options: ReportOptions) {\n return <T extends abstract new (...args: any[]) => any>(ctor: T): T => {\n reportOptionsByConstructor.set(ctor, options);\n return ctor;\n };\n}\n\nexport function getRuntimeReportOptions(\n ctor: Function,\n): ReportOptions | undefined {\n return reportOptionsByConstructor.get(ctor);\n}\n\nfunction registerReportField(metadata: ReportFieldMetadata) {\n return ((targetOrValue: any, propertyKeyOrContext: any) => {\n registerCompatibleFieldDecorator(\n targetOrValue,\n propertyKeyOrContext,\n (className, propertyKey) => {\n
|
|
1
|
+
{"version":3,"file":"decorators.js","names":[],"sources":["../src/decorators.ts"],"sourcesContent":["import {\n ObjectRegistry,\n registerCompatibleFieldDecorator,\n} from '@happyvertical/smrt-core';\nimport type {\n ReportAggregateFieldMetadata,\n ReportAggregateFn,\n ReportBucketFieldMetadata,\n ReportFieldMetadata,\n ReportOptions,\n ReportTimeBucketUnit,\n} from './types.js';\n\nconst reportOptionsByConstructor = new WeakMap<Function, ReportOptions>();\n\nexport function report(options: ReportOptions) {\n return <T extends abstract new (...args: any[]) => any>(ctor: T): T => {\n reportOptionsByConstructor.set(ctor, options);\n return ctor;\n };\n}\n\nexport function getRuntimeReportOptions(\n ctor: Function,\n): ReportOptions | undefined {\n return reportOptionsByConstructor.get(ctor);\n}\n\nfunction registerReportField(metadata: ReportFieldMetadata) {\n return ((targetOrValue: any, propertyKeyOrContext: any) => {\n registerCompatibleFieldDecorator(\n targetOrValue,\n propertyKeyOrContext,\n (className, propertyKey, ctor) => {\n const options = {\n __report: metadata,\n };\n ObjectRegistry.registerFieldDecorator(\n className,\n propertyKey,\n options,\n ctor,\n );\n },\n );\n }) as PropertyDecorator;\n}\n\nexport function groupBy(sourceColumn?: string): PropertyDecorator {\n return registerReportField({ kind: 'group', sourceColumn });\n}\n\nfunction bucket(\n unit: ReportTimeBucketUnit,\n sourceColumn: string,\n): PropertyDecorator {\n return registerReportField({\n kind: 'bucket',\n unit,\n sourceColumn,\n } satisfies ReportBucketFieldMetadata);\n}\n\nexport const minute = (sourceColumn: string) => bucket('minute', sourceColumn);\nexport const hour = (sourceColumn: string) => bucket('hour', sourceColumn);\nexport const day = (sourceColumn: string) => bucket('day', sourceColumn);\nexport const week = (sourceColumn: string) => bucket('week', sourceColumn);\nexport const month = (sourceColumn: string) => bucket('month', sourceColumn);\nexport const quarter = (sourceColumn: string) =>\n bucket('quarter', sourceColumn);\nexport const year = (sourceColumn: string) => bucket('year', sourceColumn);\n\nexport interface AggregateDecoratorOptions {\n fn: ReportAggregateFn;\n column?: string;\n distinct?: boolean;\n}\n\nexport function aggregate(\n options: AggregateDecoratorOptions,\n): PropertyDecorator {\n return registerReportField({\n kind: 'aggregate',\n fn: options.fn,\n column: options.column,\n distinct: options.distinct,\n } satisfies ReportAggregateFieldMetadata);\n}\n\nfunction aggregateDecorator(fn: ReportAggregateFn) {\n return (column?: string, options: { distinct?: boolean } = {}) =>\n aggregate({ fn, column, distinct: options.distinct });\n}\n\nexport const sum = aggregateDecorator('sum');\nexport const avg = aggregateDecorator('avg');\nexport const min = aggregateDecorator('min');\nexport const max = aggregateDecorator('max');\n\nexport function count(): PropertyDecorator;\nexport function count(\n column: string,\n options?: { distinct?: boolean },\n): PropertyDecorator;\nexport function count(options: { distinct?: boolean }): PropertyDecorator;\nexport function count(\n columnOrOptions?: string | { distinct?: boolean },\n options: { distinct?: boolean } = {},\n): PropertyDecorator {\n const column =\n typeof columnOrOptions === 'string' ? columnOrOptions : undefined;\n const resolvedOptions =\n typeof columnOrOptions === 'object' ? columnOrOptions : options;\n return aggregate({\n fn: 'count',\n column,\n distinct: resolvedOptions.distinct,\n });\n}\n"],"mappings":";;AAaA,IAAM,6CAA6B,IAAI,QAAiC;AAEjE,SAAS,OAAO,SAAwB;CAC7C,QAAwD,SAAe;EACrE,2BAA2B,IAAI,MAAM,OAAO;EAC5C,OAAO;CACT;AACF;AAEO,SAAS,wBACd,MAC2B;CAC3B,OAAO,2BAA2B,IAAI,IAAI;AAC5C;AAEA,SAAS,oBAAoB,UAA+B;CAC1D,SAAS,eAAoB,yBAA8B;EACzD,iCACE,eACA,uBACC,WAAW,aAAa,SAAS;GAChC,MAAM,UAAU,EACd,UAAU,SACZ;GACA,eAAe,uBACb,WACA,aACA,SACA,IACF;EACF,CACF;CACF;AACF;AAEO,SAAS,QAAQ,cAA0C;CAChE,OAAO,oBAAoB;EAAE,MAAM;EAAS;CAAa,CAAC;AAC5D;AAEA,SAAS,OACP,MACA,cACmB;CACnB,OAAO,oBAAoB;EACzB,MAAM;EACN;EACA;CACF,CAAqC;AACvC;AAEO,IAAM,UAAU,iBAAyB,OAAO,UAAU,YAAY;AACtE,IAAM,QAAQ,iBAAyB,OAAO,QAAQ,YAAY;AAClE,IAAM,OAAO,iBAAyB,OAAO,OAAO,YAAY;AAChE,IAAM,QAAQ,iBAAyB,OAAO,QAAQ,YAAY;AAClE,IAAM,SAAS,iBAAyB,OAAO,SAAS,YAAY;AACpE,IAAM,WAAW,iBACtB,OAAO,WAAW,YAAY;AACzB,IAAM,QAAQ,iBAAyB,OAAO,QAAQ,YAAY;AAQlE,SAAS,UACd,SACmB;CACnB,OAAO,oBAAoB;EACzB,MAAM;EACN,IAAI,QAAQ;EACZ,QAAQ,QAAQ;EAChB,UAAU,QAAQ;CACpB,CAAwC;AAC1C;AAEA,SAAS,mBAAmB,IAAuB;CACjD,QAAQ,QAAiB,UAAkC,CAAC,MAC1D,UAAU;EAAE;EAAI;EAAQ,UAAU,QAAQ;CAAS,CAAC;AACxD;AAEO,IAAM,MAAM,mBAAmB,KAAK;AACpC,IAAM,MAAM,mBAAmB,KAAK;AACpC,IAAM,MAAM,mBAAmB,KAAK;AACpC,IAAM,MAAM,mBAAmB,KAAK;AAQpC,SAAS,MACd,iBACA,UAAkC,CAAC,GAChB;CAKnB,OAAO,UAAU;EACf,IAAI;EACJ,QALA,OAAO,oBAAoB,WAAW,kBAAkB,KAAA;EAMxD,WAJA,OAAO,oBAAoB,WAAW,kBAAkB,QAAA,CAI9B;CAC5B,CAAC;AACH"}
|
package/dist/manifest.json
CHANGED
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-reports",
|
|
6
|
-
"packageVersion": "0.
|
|
6
|
+
"packageVersion": "0.49.0",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
10
|
+
"manifest": "646f83c19919a9b16a855d1343221d6ba5d2d6c4fe7525c869eef5b0cac2da72",
|
|
11
|
+
"packageJson": "c78ecd500da1c35fe74e9fc73b08549aece1a55231498ffb64c41d7494420dca",
|
|
12
12
|
"agents": "1328f1da3d58fba2369d696cb9fa42c9d324255257978fa3ae9d1086e9de5af6"
|
|
13
13
|
},
|
|
14
14
|
"exports": [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-reports",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "Materialized aggregate report models for SMRT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
"./manifest.json": "./dist/manifest.json"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@happyvertical/smrt-core": "0.
|
|
47
|
-
"@happyvertical/smrt-jobs": "0.
|
|
48
|
-
"@happyvertical/smrt-types": "0.
|
|
49
|
-
"@happyvertical/smrt-tenancy": "0.
|
|
46
|
+
"@happyvertical/smrt-core": "0.49.0",
|
|
47
|
+
"@happyvertical/smrt-jobs": "0.49.0",
|
|
48
|
+
"@happyvertical/smrt-types": "0.49.0",
|
|
49
|
+
"@happyvertical/smrt-tenancy": "0.49.0",
|
|
50
50
|
"@happyvertical/sql": "^0.89.6"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@happyvertical/smrt-vitest": "0.
|
|
53
|
+
"@happyvertical/smrt-vitest": "0.49.0",
|
|
54
54
|
"@types/node": "24.13.2",
|
|
55
55
|
"typescript": "5.9.3",
|
|
56
56
|
"vite": "8.1.4",
|