@reactionary/google-analytics 0.6.1 → 0.6.3
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/{providers/analytics.provider.js → capabilities/analytics.capability.js} +4 -3
- package/core/initialize.js +22 -5
- package/core/initialize.types.js +7 -0
- package/index.js +2 -1
- package/package.json +9 -7
- package/schema/capabilities.schema.js +7 -0
- package/src/{providers/analytics.provider.d.ts → capabilities/analytics.capability.d.ts} +2 -2
- package/src/core/initialize.d.ts +6 -4
- package/src/core/initialize.types.d.ts +24 -0
- package/src/index.d.ts +2 -1
- package/src/schema/capabilities.schema.d.ts +19 -3
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
AnalyticsCapability
|
|
3
3
|
} from "@reactionary/core";
|
|
4
|
-
class
|
|
4
|
+
class GoogleAnalyticsAnalyticsCapability extends AnalyticsCapability {
|
|
5
|
+
config;
|
|
5
6
|
constructor(cache, context, configuration) {
|
|
6
7
|
super(cache, context);
|
|
7
8
|
this.config = configuration;
|
|
@@ -123,5 +124,5 @@ class GoogleAnalyticsAnalyticsProvider extends AnalyticsProvider {
|
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
126
|
export {
|
|
126
|
-
|
|
127
|
+
GoogleAnalyticsAnalyticsCapability
|
|
127
128
|
};
|
package/core/initialize.js
CHANGED
|
@@ -1,13 +1,30 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
GoogleAnalyticsCapabilitiesSchema
|
|
3
|
+
} from "../schema/capabilities.schema.js";
|
|
4
|
+
import { GoogleAnalyticsAnalyticsCapability } from "../capabilities/analytics.capability.js";
|
|
5
|
+
import {
|
|
6
|
+
resolveDirectCapability
|
|
7
|
+
} from "./initialize.types.js";
|
|
8
|
+
function withGoogleAnalyticsCapabilities(configuration, capabilities) {
|
|
3
9
|
return (cache, context) => {
|
|
4
10
|
const client = {};
|
|
5
|
-
|
|
6
|
-
|
|
11
|
+
const caps = GoogleAnalyticsCapabilitiesSchema.parse(capabilities);
|
|
12
|
+
if (caps.analytics?.enabled) {
|
|
13
|
+
client.analytics = resolveDirectCapability(
|
|
14
|
+
capabilities.analytics,
|
|
15
|
+
(args) => new GoogleAnalyticsAnalyticsCapability(args.cache, args.context, args.config),
|
|
16
|
+
{
|
|
17
|
+
cache,
|
|
18
|
+
context,
|
|
19
|
+
config: configuration
|
|
20
|
+
}
|
|
21
|
+
);
|
|
7
22
|
}
|
|
8
23
|
return client;
|
|
9
24
|
};
|
|
10
25
|
}
|
|
26
|
+
const googleAnalyticsCapabilities = withGoogleAnalyticsCapabilities;
|
|
11
27
|
export {
|
|
12
|
-
googleAnalyticsCapabilities
|
|
28
|
+
googleAnalyticsCapabilities,
|
|
29
|
+
withGoogleAnalyticsCapabilities
|
|
13
30
|
};
|
package/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from "./core/initialize.js";
|
|
2
|
-
export * from "./
|
|
2
|
+
export * from "./core/initialize.types.js";
|
|
3
|
+
export * from "./capabilities/analytics.capability.js";
|
|
3
4
|
export * from "./schema/capabilities.schema.js";
|
|
4
5
|
export * from "./schema/configuration.schema.js";
|
package/package.json
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reactionary/google-analytics",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.6.3",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./index.js",
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
6
7
|
"dependencies": {
|
|
7
|
-
"@reactionary/core": "0.6.
|
|
8
|
-
"zod": "4.1.9"
|
|
8
|
+
"@reactionary/core": "0.6.3",
|
|
9
|
+
"zod": "4.1.9",
|
|
10
|
+
"vitest": "^4.0.9",
|
|
11
|
+
"@nx/vite": "22.4.5"
|
|
9
12
|
},
|
|
10
|
-
"
|
|
11
|
-
"sideEffects": false
|
|
13
|
+
"sideEffets": false
|
|
12
14
|
}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { CapabilitiesSchema } from "@reactionary/core";
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
const AnalyticsCapabilitySchema = z.looseObject({
|
|
4
|
+
enabled: z.boolean(),
|
|
5
|
+
capability: z.unknown().optional()
|
|
6
|
+
});
|
|
2
7
|
const GoogleAnalyticsCapabilitiesSchema = CapabilitiesSchema.pick({
|
|
3
8
|
analytics: true
|
|
9
|
+
}).extend({
|
|
10
|
+
analytics: AnalyticsCapabilitySchema.optional()
|
|
4
11
|
}).partial();
|
|
5
12
|
export {
|
|
6
13
|
GoogleAnalyticsCapabilitiesSchema
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AnalyticsCapability, type RequestContext, type Cache, type AnalyticsMutationProductSummaryViewEvent, type AnalyticsMutationProductSummaryClickEvent, type AnalyticsMutationProductDetailsViewEvent, type AnalyticsMutationProductAddToCartEvent, type AnalyticsMutationPurchaseEvent } from '@reactionary/core';
|
|
2
2
|
import type { GoogleAnalyticsConfiguration } from '../schema/configuration.schema.js';
|
|
3
|
-
export declare class
|
|
3
|
+
export declare class GoogleAnalyticsAnalyticsCapability extends AnalyticsCapability {
|
|
4
4
|
protected config: GoogleAnalyticsConfiguration;
|
|
5
5
|
constructor(cache: Cache, context: RequestContext, configuration: GoogleAnalyticsConfiguration);
|
|
6
6
|
protected processProductSummaryView(event: AnalyticsMutationProductSummaryViewEvent): Promise<void>;
|
package/src/core/initialize.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { Cache,
|
|
2
|
-
import type
|
|
3
|
-
import type { GoogleAnalyticsConfiguration } from
|
|
4
|
-
|
|
1
|
+
import type { Cache, RequestContext } from '@reactionary/core';
|
|
2
|
+
import { type GoogleAnalyticsCapabilities } from '../schema/capabilities.schema.js';
|
|
3
|
+
import type { GoogleAnalyticsConfiguration } from '../schema/configuration.schema.js';
|
|
4
|
+
import { type GoogleAnalyticsClientFromCapabilities } from './initialize.types.js';
|
|
5
|
+
export declare function withGoogleAnalyticsCapabilities<T extends GoogleAnalyticsCapabilities>(configuration: GoogleAnalyticsConfiguration, capabilities: T): (cache: Cache, context: RequestContext) => GoogleAnalyticsClientFromCapabilities<T>;
|
|
6
|
+
export declare const googleAnalyticsCapabilities: typeof withGoogleAnalyticsCapabilities;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ClientFromCapabilities } from '@reactionary/core';
|
|
2
|
+
import type { GoogleAnalyticsCapabilities } from '../schema/capabilities.schema.js';
|
|
3
|
+
import type { GoogleAnalyticsAnalyticsCapability } from '../capabilities/analytics.capability.js';
|
|
4
|
+
type EnabledCapability<TCapability> = TCapability extends {
|
|
5
|
+
enabled: true;
|
|
6
|
+
} ? true : false;
|
|
7
|
+
type NormalizeConfiguredCapabilities<T extends GoogleAnalyticsCapabilities> = Omit<T, 'analytics'> & {
|
|
8
|
+
analytics?: EnabledCapability<T['analytics']>;
|
|
9
|
+
};
|
|
10
|
+
type ExtractCapabilityImplementation<TCapability, TDefaultCapability> = TCapability extends {
|
|
11
|
+
enabled: true;
|
|
12
|
+
capability?: infer TCapabilityFactory;
|
|
13
|
+
} ? TCapabilityFactory extends (...args: unknown[]) => infer TResolvedCapability ? TResolvedCapability : TDefaultCapability : TDefaultCapability;
|
|
14
|
+
type CapabilityOverride<TCapability, TKey extends string, TResolvedCapability> = TCapability extends {
|
|
15
|
+
enabled: true;
|
|
16
|
+
} ? {
|
|
17
|
+
[K in TKey]: TResolvedCapability;
|
|
18
|
+
} : Record<never, never>;
|
|
19
|
+
type AnalyticsCapabilityFor<T extends GoogleAnalyticsCapabilities> = ExtractCapabilityImplementation<T['analytics'], GoogleAnalyticsAnalyticsCapability>;
|
|
20
|
+
export type GoogleAnalyticsClientFromCapabilities<T extends GoogleAnalyticsCapabilities> = Omit<ClientFromCapabilities<NormalizeConfiguredCapabilities<T>>, 'analytics'> & CapabilityOverride<T['analytics'], 'analytics', AnalyticsCapabilityFor<T>>;
|
|
21
|
+
export declare function resolveDirectCapability<TResolvedCapability, TCapabilityArgs>(capability: {
|
|
22
|
+
capability?: (args: TCapabilityArgs) => TResolvedCapability;
|
|
23
|
+
} | undefined, defaultCapability: (args: TCapabilityArgs) => TResolvedCapability, args: TCapabilityArgs): TResolvedCapability;
|
|
24
|
+
export {};
|
package/src/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './core/initialize.js';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './core/initialize.types.js';
|
|
3
|
+
export * from './capabilities/analytics.capability.js';
|
|
3
4
|
export * from './schema/capabilities.schema.js';
|
|
4
5
|
export * from './schema/configuration.schema.js';
|
|
@@ -1,5 +1,21 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import type { AnalyticsCapability, Cache, RequestContext } from '@reactionary/core';
|
|
2
|
+
import type { GoogleAnalyticsConfiguration } from './configuration.schema.js';
|
|
3
|
+
import * as z from 'zod';
|
|
2
4
|
export declare const GoogleAnalyticsCapabilitiesSchema: z.ZodObject<{
|
|
3
|
-
analytics: z.ZodOptional<z.
|
|
5
|
+
analytics: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
6
|
+
enabled: z.ZodBoolean;
|
|
7
|
+
capability: z.ZodOptional<z.ZodUnknown>;
|
|
8
|
+
}, z.core.$loose>>>;
|
|
4
9
|
}, z.core.$loose>;
|
|
5
|
-
export
|
|
10
|
+
export interface GoogleAnalyticsCapabilityFactoryArgs {
|
|
11
|
+
cache: Cache;
|
|
12
|
+
context: RequestContext;
|
|
13
|
+
config: GoogleAnalyticsConfiguration;
|
|
14
|
+
}
|
|
15
|
+
export interface GoogleAnalyticsAnalyticsCapabilityConfig<TCapability extends AnalyticsCapability = AnalyticsCapability> {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
capability?: (args: GoogleAnalyticsCapabilityFactoryArgs) => TCapability;
|
|
18
|
+
}
|
|
19
|
+
export type GoogleAnalyticsCapabilities<TAnalyticsCapability extends AnalyticsCapability = AnalyticsCapability> = {
|
|
20
|
+
analytics?: GoogleAnalyticsAnalyticsCapabilityConfig<TAnalyticsCapability>;
|
|
21
|
+
};
|