@guinetik/primitives-ts 0.9.0 → 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/dist/access.types.d.ts +1 -1
- package/dist/access.types.d.ts.map +1 -1
- package/dist/access.types.js +2 -0
- package/dist/access.types.spec.js +14 -1
- package/dist/analytics.types.d.ts +51 -0
- package/dist/analytics.types.d.ts.map +1 -0
- package/dist/analytics.types.js +6 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/package.json +1 -1
package/dist/access.types.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type AdminUserStatus = 'invited' | 'active' | 'disabled';
|
|
|
9
9
|
/** Avatar resolution strategy for admin users. */
|
|
10
10
|
export type AvatarSource = 'gravatar' | 'google' | 'custom';
|
|
11
11
|
/** Feature keys that gate admin panel pages and API areas. */
|
|
12
|
-
export type FeatureKey = 'dashboard' | 'site' | 'runtime' | 'files' | 'launchpad' | 'users' | 'system' | 'chat' | 'agents' | 'email';
|
|
12
|
+
export type FeatureKey = 'dashboard' | 'site' | 'runtime' | 'files' | 'launchpad' | 'users' | 'system' | 'chat' | 'agents' | 'analytics' | 'email';
|
|
13
13
|
/** Canonical ordered list of grantable features. */
|
|
14
14
|
export declare const FEATURE_CATALOG: readonly FeatureKey[];
|
|
15
15
|
/** Human-readable labels for feature checklist UI. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.types.d.ts","sourceRoot":"","sources":["../src/access.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhE,kDAAkD;AAClD,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE5D,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,MAAM,GACN,SAAS,GACT,OAAO,GACP,WAAW,GACX,OAAO,GACP,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,oDAAoD;AACpD,eAAO,MAAM,eAAe,EAAE,SAAS,UAAU,
|
|
1
|
+
{"version":3,"file":"access.types.d.ts","sourceRoot":"","sources":["../src/access.types.ts"],"names":[],"mappings":"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"}
|
package/dist/access.types.js
CHANGED
|
@@ -22,6 +22,7 @@ exports.FEATURE_CATALOG = [
|
|
|
22
22
|
'chat',
|
|
23
23
|
'agents',
|
|
24
24
|
'email',
|
|
25
|
+
'analytics',
|
|
25
26
|
];
|
|
26
27
|
/** Human-readable labels for feature checklist UI. */
|
|
27
28
|
exports.FEATURE_LABELS = {
|
|
@@ -34,6 +35,7 @@ exports.FEATURE_LABELS = {
|
|
|
34
35
|
system: 'System monitoring',
|
|
35
36
|
chat: 'Chat',
|
|
36
37
|
agents: 'Agents',
|
|
38
|
+
analytics: 'Analytics',
|
|
37
39
|
email: 'Email',
|
|
38
40
|
};
|
|
39
41
|
/**
|
|
@@ -33,7 +33,7 @@ describe('access.types', () => {
|
|
|
33
33
|
});
|
|
34
34
|
it('exposes a stable feature catalog', () => {
|
|
35
35
|
expect(access_types_1.FEATURE_CATALOG).toContain('users');
|
|
36
|
-
expect(access_types_1.FEATURE_CATALOG.length).toBe(
|
|
36
|
+
expect(access_types_1.FEATURE_CATALOG.length).toBe(11);
|
|
37
37
|
});
|
|
38
38
|
});
|
|
39
39
|
describe('email feature key', () => {
|
|
@@ -43,3 +43,16 @@ describe('email feature key', () => {
|
|
|
43
43
|
expect((0, access_types_1.isFeatureKey)('email')).toBe(true);
|
|
44
44
|
});
|
|
45
45
|
});
|
|
46
|
+
describe('analytics feature key', () => {
|
|
47
|
+
it('includes analytics in the catalog with a label', () => {
|
|
48
|
+
expect(access_types_1.FEATURE_CATALOG).toContain('analytics');
|
|
49
|
+
expect(access_types_1.FEATURE_LABELS.analytics).toBe('Analytics');
|
|
50
|
+
expect((0, access_types_1.isFeatureKey)('analytics')).toBe(true);
|
|
51
|
+
expect(access_types_1.FEATURE_CATALOG.length).toBe(11);
|
|
52
|
+
});
|
|
53
|
+
it('grants analytics only when listed for guests', () => {
|
|
54
|
+
const guest = { role: 'guest', features: ['analytics'] };
|
|
55
|
+
expect((0, access_types_1.userHasFeature)(guest, 'analytics')).toBe(true);
|
|
56
|
+
expect((0, access_types_1.userHasFeature)(guest, 'system')).toBe(false);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Analytics portal types shared by API and Admin.
|
|
3
|
+
* Refresh tokens never appear in these types.
|
|
4
|
+
*/
|
|
5
|
+
/** Saved report window. Maps to GA `NdaysAgo` .. `yesterday`. */
|
|
6
|
+
export type AnalyticsDateRangePreset = '7d' | '28d' | '90d';
|
|
7
|
+
/** Connection + setup as returned to the client (no secrets). */
|
|
8
|
+
export interface AnalyticsConnectionStatus {
|
|
9
|
+
connected: boolean;
|
|
10
|
+
googleEmail?: string;
|
|
11
|
+
selectedAccountId?: string;
|
|
12
|
+
selectedAccountName?: string;
|
|
13
|
+
selectedPropertyId?: string;
|
|
14
|
+
selectedPropertyName?: string;
|
|
15
|
+
dateRangePreset: AnalyticsDateRangePreset;
|
|
16
|
+
}
|
|
17
|
+
/** One GA4 property under an account. */
|
|
18
|
+
export interface GaPropertySummary {
|
|
19
|
+
/** Admin API resource name, e.g. `properties/123456`. */
|
|
20
|
+
propertyId: string;
|
|
21
|
+
displayName: string;
|
|
22
|
+
}
|
|
23
|
+
/** One GA account with child properties. */
|
|
24
|
+
export interface GaAccountSummary {
|
|
25
|
+
/** Admin API resource name, e.g. `accounts/123`. */
|
|
26
|
+
accountId: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
properties: GaPropertySummary[];
|
|
29
|
+
}
|
|
30
|
+
/** Totals card metrics for the selected property. */
|
|
31
|
+
export interface AnalyticsReportTotals {
|
|
32
|
+
activeUsers: number;
|
|
33
|
+
sessions: number;
|
|
34
|
+
screenPageViews: number;
|
|
35
|
+
}
|
|
36
|
+
/** One row in the top-pages table. */
|
|
37
|
+
export interface AnalyticsTopPageRow {
|
|
38
|
+
pagePath: string;
|
|
39
|
+
pageTitle: string;
|
|
40
|
+
screenPageViews: number;
|
|
41
|
+
}
|
|
42
|
+
/** v1 report payload. */
|
|
43
|
+
export interface AnalyticsReport {
|
|
44
|
+
propertyId: string;
|
|
45
|
+
dateRangePreset: AnalyticsDateRangePreset;
|
|
46
|
+
startDate: string;
|
|
47
|
+
endDate: string;
|
|
48
|
+
totals: AnalyticsReportTotals;
|
|
49
|
+
topPages: AnalyticsTopPageRow[];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=analytics.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.types.d.ts","sourceRoot":"","sources":["../src/analytics.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,wBAAwB,CAAC;CAC3C;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,wBAAwB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export * from './agent.types';
|
|
|
22
22
|
export * from './file.types';
|
|
23
23
|
export * from './launchpad.types';
|
|
24
24
|
export * from './email.types';
|
|
25
|
+
export * from './analytics.types';
|
|
25
26
|
export type { Security, SecurityChallengeOptions, SecurityChallengeResult } from './security.interface';
|
|
26
27
|
export { SecurityLevel } from './security.interface';
|
|
27
28
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,cAAc,CAAC;AAG7B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAG9B,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,cAAc,CAAC;AAG7B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAG9B,cAAc,mBAAmB,CAAC;AAGlC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -54,5 +54,7 @@ __exportStar(require("./file.types"), exports);
|
|
|
54
54
|
__exportStar(require("./launchpad.types"), exports);
|
|
55
55
|
// Email module types
|
|
56
56
|
__exportStar(require("./email.types"), exports);
|
|
57
|
+
// Google Analytics portal types
|
|
58
|
+
__exportStar(require("./analytics.types"), exports);
|
|
57
59
|
var security_interface_1 = require("./security.interface");
|
|
58
60
|
Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return security_interface_1.SecurityLevel; } });
|