@abyss-project/spotlight 1.0.11 → 1.0.13

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 (33) hide show
  1. package/dist/api/analytics.api.d.ts +11 -0
  2. package/dist/api/analytics.api.js +18 -0
  3. package/dist/api/index.d.ts +1 -0
  4. package/dist/api/index.js +1 -0
  5. package/dist/api/project-analytics.api.d.ts +7 -0
  6. package/dist/api/project-analytics.api.js +16 -0
  7. package/dist/api/project-event.api.d.ts +2 -1
  8. package/dist/api/project-event.api.js +5 -1
  9. package/dist/api/project.api.d.ts +3 -1
  10. package/dist/api/project.api.js +10 -1
  11. package/dist/api/project.public.api.d.ts +1 -2
  12. package/dist/api/project.public.api.js +1 -5
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.js +6 -1
  15. package/dist/types/interface/api/index.d.ts +2 -0
  16. package/dist/types/interface/api/index.js +2 -0
  17. package/dist/types/interface/api/requests/project-analytics.request.d.ts +19 -0
  18. package/dist/types/interface/api/requests/project-analytics.request.js +2 -0
  19. package/dist/types/interface/api/requests/project-post-analytics.request.d.ts +4 -0
  20. package/dist/types/interface/api/requests/project-post-analytics.request.js +2 -0
  21. package/dist/types/interface/api/requests/project.public.request.d.ts +2 -1
  22. package/dist/types/interface/api/responses/project-analytics.response.d.ts +77 -0
  23. package/dist/types/interface/api/responses/project-analytics.response.js +2 -0
  24. package/dist/types/interface/api/responses/project-post-analytics.response.d.ts +34 -0
  25. package/dist/types/interface/api/responses/project-post-analytics.response.js +2 -0
  26. package/dist/types/interface/api/responses/project.public.response.d.ts +2 -4
  27. package/dist/types/interface/api/responses/project.response.d.ts +20 -0
  28. package/dist/types/interface/index.d.ts +3 -1
  29. package/dist/types/interface/index.js +1 -1
  30. package/dist/types/interface/models/project-analytics.model.d.ts +28 -0
  31. package/dist/types/interface/models/project-analytics.model.js +15 -0
  32. package/dist/types/interface/models/project.model.d.ts +0 -2
  33. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import { IGetProjectAnalyticsQuery, IGetProjectAnalyticsResponse, ITrackProjectAnalyticsBody, ITrackProjectAnalyticsResponse } from '..';
2
+ export declare const trackAnalyticsEvent: (body: ITrackProjectAnalyticsBody) => Promise<ITrackProjectAnalyticsResponse>;
3
+ export declare const getProjectAnalytics: (projectId: string, query?: IGetProjectAnalyticsQuery) => Promise<IGetProjectAnalyticsResponse>;
4
+ export declare const getPostViews: (projectPostId: string) => Promise<{
5
+ success: boolean;
6
+ message: string;
7
+ data: {
8
+ total: number;
9
+ unique: number;
10
+ };
11
+ }>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPostViews = exports.getProjectAnalytics = exports.trackAnalyticsEvent = void 0;
4
+ const __1 = require("..");
5
+ const trackAnalyticsEvent = async (body) => {
6
+ return (await __1.AbyssSpotlightCore.axios.post(`analytics/track`, body)).data;
7
+ };
8
+ exports.trackAnalyticsEvent = trackAnalyticsEvent;
9
+ const getProjectAnalytics = async (projectId, query) => {
10
+ return (await __1.AbyssSpotlightCore.axios.get(`analytics/${projectId}`, {
11
+ params: query,
12
+ })).data;
13
+ };
14
+ exports.getProjectAnalytics = getProjectAnalytics;
15
+ const getPostViews = async (projectPostId) => {
16
+ return (await __1.AbyssSpotlightCore.axios.get(`analytics/post/${projectPostId}/views`)).data;
17
+ };
18
+ exports.getPostViews = getPostViews;
@@ -2,6 +2,7 @@ export * from './abyss.admin.api';
2
2
  export * from './user.admin.api';
3
3
  export * from './user.api';
4
4
  export * from './monitor.api';
5
+ export * from './project-analytics.api';
5
6
  export * from './project.admin.api';
6
7
  export * from './project.public.api';
7
8
  export * from './project.api';
package/dist/api/index.js CHANGED
@@ -18,6 +18,7 @@ __exportStar(require("./abyss.admin.api"), exports);
18
18
  __exportStar(require("./user.admin.api"), exports);
19
19
  __exportStar(require("./user.api"), exports);
20
20
  __exportStar(require("./monitor.api"), exports);
21
+ __exportStar(require("./project-analytics.api"), exports);
21
22
  __exportStar(require("./project.admin.api"), exports);
22
23
  __exportStar(require("./project.public.api"), exports);
23
24
  __exportStar(require("./project.api"), exports);
@@ -0,0 +1,7 @@
1
+ import { ITrackProjectAnalyticsParams, ITrackProjectAnalyticsBody, ITrackProjectAnalyticsResponse, IGetProjectAnalyticsParams, IGetProjectAnalyticsResponse, IGetProjectPostAnalyticsParams, IGetProjectPostAnalyticsResponse } from '..';
2
+ export declare const trackProjectAnalytics: (params: ITrackProjectAnalyticsParams, body: ITrackProjectAnalyticsBody) => Promise<ITrackProjectAnalyticsResponse>;
3
+ export declare const getProjectAnalyticsStats: (params: IGetProjectAnalyticsParams, query?: {
4
+ startDate?: string;
5
+ endDate?: string;
6
+ }) => Promise<IGetProjectAnalyticsResponse>;
7
+ export declare const getProjectPostAnalyticsStats: (params: IGetProjectPostAnalyticsParams) => Promise<IGetProjectPostAnalyticsResponse>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getProjectPostAnalyticsStats = exports.getProjectAnalyticsStats = exports.trackProjectAnalytics = void 0;
4
+ const __1 = require("..");
5
+ const trackProjectAnalytics = async (params, body) => {
6
+ return (await __1.AbyssSpotlightCore.axios.post(`project-analytics/${params.projectId}/track`, body)).data;
7
+ };
8
+ exports.trackProjectAnalytics = trackProjectAnalytics;
9
+ const getProjectAnalyticsStats = async (params, query) => {
10
+ return (await __1.AbyssSpotlightCore.axios.get(`project-analytics/${params.projectId}/stats`, { params: query })).data;
11
+ };
12
+ exports.getProjectAnalyticsStats = getProjectAnalyticsStats;
13
+ const getProjectPostAnalyticsStats = async (params) => {
14
+ return (await __1.AbyssSpotlightCore.axios.get(`project-analytics/${params.projectId}/posts/${params.projectPostId}/stats`)).data;
15
+ };
16
+ exports.getProjectPostAnalyticsStats = getProjectPostAnalyticsStats;
@@ -1,6 +1,7 @@
1
- import { IGetProjectEventParams, IGetProjectEventResponse, IDeleteProjectEventResponse, IDeleteProjectEventParams, IUpdateProjectEventParams, IUpdateProjectEventBody, IUpdateProjectEventResponse, ICreateProjectEventParams, ICreateProjectEventBody, ICreateProjectEventResponse, IPaginateProjectEventParams, IPaginateProjectEventQuery, IPaginateProjectEventResponse } from '..';
1
+ import { IGetProjectEventParams, IGetProjectEventResponse, IDeleteProjectEventResponse, IDeleteProjectEventParams, IUpdateProjectEventParams, IUpdateProjectEventBody, IUpdateProjectEventResponse, ICreateProjectEventParams, ICreateProjectEventBody, ICreateProjectEventResponse, IPaginateProjectEventParams, IPaginateProjectEventQuery, IPaginateProjectEventResponse, IPaginatePublishedProjectEventPublicParams, IPaginatePublishedProjectEventPublicQuery, IPaginatePublishedProjectEventPublicResponse } from '..';
2
2
  export declare const getProjectEvent: (params: IGetProjectEventParams) => Promise<IGetProjectEventResponse>;
3
3
  export declare const paginateProjectEvent: (params: IPaginateProjectEventParams, query: IPaginateProjectEventQuery) => Promise<IPaginateProjectEventResponse>;
4
4
  export declare const deleteProjectEvent: (params: IDeleteProjectEventParams) => Promise<IDeleteProjectEventResponse>;
5
5
  export declare const updateProjectEvent: (params: IUpdateProjectEventParams, body: IUpdateProjectEventBody) => Promise<IUpdateProjectEventResponse>;
6
6
  export declare const createProjectEvent: (params: ICreateProjectEventParams, body: ICreateProjectEventBody) => Promise<ICreateProjectEventResponse>;
7
+ export declare const paginatePublishedProjectEvent: (params: IPaginatePublishedProjectEventPublicParams, query: IPaginatePublishedProjectEventPublicQuery) => Promise<IPaginatePublishedProjectEventPublicResponse>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createProjectEvent = exports.updateProjectEvent = exports.deleteProjectEvent = exports.paginateProjectEvent = exports.getProjectEvent = void 0;
3
+ exports.paginatePublishedProjectEvent = exports.createProjectEvent = exports.updateProjectEvent = exports.deleteProjectEvent = exports.paginateProjectEvent = exports.getProjectEvent = void 0;
4
4
  const __1 = require("..");
5
5
  const getProjectEvent = async (params) => {
6
6
  return (await __1.AbyssSpotlightCore.axios.get(`project-event/${params.projectId}/event/${params.projectEventId}`)).data;
@@ -22,3 +22,7 @@ const createProjectEvent = async (params, body) => {
22
22
  return (await __1.AbyssSpotlightCore.axios.post(`project-event/${params.projectId}/event`, body)).data;
23
23
  };
24
24
  exports.createProjectEvent = createProjectEvent;
25
+ const paginatePublishedProjectEvent = async (params, query) => {
26
+ return (await __1.AbyssSpotlightCore.axios.get(`project/public/published/${params.projectId}/event/paginate`, { params: query })).data;
27
+ };
28
+ exports.paginatePublishedProjectEvent = paginatePublishedProjectEvent;
@@ -1,4 +1,4 @@
1
- import { IGetProjectParams, IGetProjectResponse, IUpdateProjectParams, IUpdateProjectResponse, IUpdateProjectBody, IPaginateProjectResponse, IPaginateProjectQuery, ICreateProjectResponse, ICreateProjectBody, IDeleteProjectResponse, IDeleteProjectParams, IGetBySlugProjectParams, IGetBySlugProjectResponse, ILinkToAbyssProjectParams, ILinkToAbyssProjectBody, ILinkToAbyssApplicationProjectResponse, ILinkToAbyssApplicationProjectBody, ILinkToAbyssApplicationProjectParams, IListByAbyssProjectIdProjectParams, IListByAbyssProjectIdProjectResponse, ITransferProjectParams, ITransferProjectBody, ITransferProjectResponse } from '..';
1
+ import { IGetProjectParams, IGetProjectResponse, IUpdateProjectParams, IUpdateProjectResponse, IUpdateProjectBody, IPaginateProjectResponse, IPaginateProjectQuery, ICreateProjectResponse, ICreateProjectBody, IDeleteProjectResponse, IDeleteProjectParams, IGetBySlugProjectParams, IGetBySlugProjectResponse, ILinkToAbyssProjectParams, ILinkToAbyssProjectBody, ILinkToAbyssApplicationProjectResponse, ILinkToAbyssApplicationProjectBody, ILinkToAbyssApplicationProjectParams, IListByAbyssProjectIdProjectParams, IListByAbyssProjectIdProjectResponse, ITransferProjectParams, ITransferProjectBody, ITransferProjectResponse, IGlobalUserMetricsResponse, IListAllAccessibleProjectsResponse } from '..';
2
2
  export declare const getProject: (params: IGetProjectParams) => Promise<IGetProjectResponse>;
3
3
  export declare const listByAbyssProjectIdProject: (params: IListByAbyssProjectIdProjectParams) => Promise<IListByAbyssProjectIdProjectResponse>;
4
4
  export declare const getBySlugProject: (params: IGetBySlugProjectParams) => Promise<IGetBySlugProjectResponse>;
@@ -9,3 +9,5 @@ export declare const linkToAbyssProject: (params: ILinkToAbyssProjectParams, bod
9
9
  export declare const linkToAbyssApplicationProject: (params: ILinkToAbyssApplicationProjectParams, body: ILinkToAbyssApplicationProjectBody) => Promise<ILinkToAbyssApplicationProjectResponse>;
10
10
  export declare const createProject: (body: ICreateProjectBody) => Promise<ICreateProjectResponse>;
11
11
  export declare const transferProject: (params: ITransferProjectParams, body: ITransferProjectBody) => Promise<ITransferProjectResponse>;
12
+ export declare const getGlobalUserMetrics: () => Promise<IGlobalUserMetricsResponse>;
13
+ export declare const listAllAccessibleProjects: () => Promise<IListAllAccessibleProjectsResponse>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.transferProject = exports.createProject = exports.linkToAbyssApplicationProject = exports.linkToAbyssProject = exports.updateProject = exports.paginateProject = exports.deleteProject = exports.getBySlugProject = exports.listByAbyssProjectIdProject = exports.getProject = void 0;
3
+ exports.listAllAccessibleProjects = exports.getGlobalUserMetrics = exports.transferProject = exports.createProject = exports.linkToAbyssApplicationProject = exports.linkToAbyssProject = exports.updateProject = exports.paginateProject = exports.deleteProject = exports.getBySlugProject = exports.listByAbyssProjectIdProject = exports.getProject = void 0;
4
4
  const __1 = require("..");
5
5
  const getProject = async (params) => {
6
6
  return (await __1.AbyssSpotlightCore.axios.get(`project/${params.projectId}`))
@@ -45,3 +45,12 @@ const transferProject = async (params, body) => {
45
45
  return (await __1.AbyssSpotlightCore.axios.post(`project/${params.projectId}/transfer`, body)).data;
46
46
  };
47
47
  exports.transferProject = transferProject;
48
+ const getGlobalUserMetrics = async () => {
49
+ return (await __1.AbyssSpotlightCore.axios.get(`project/global-metrics`))
50
+ .data;
51
+ };
52
+ exports.getGlobalUserMetrics = getGlobalUserMetrics;
53
+ const listAllAccessibleProjects = async () => {
54
+ return (await __1.AbyssSpotlightCore.axios.get(`project/accessible`)).data;
55
+ };
56
+ exports.listAllAccessibleProjects = listAllAccessibleProjects;
@@ -1,4 +1,4 @@
1
- import { IPaginatePublishedProjectPublicResponse, IPaginatePublishedProjectPublicQuery, IGetPublishedProjectPublicResponse, IGetPublishedProjectPublicParams, IGetPublishedBySlugProjectPublicResponse, IGetPublishedBySlugProjectPublicParams, IGetPopularProjectPublicResponse, IPaginatePostProjectPublicParams, IPaginatePostProjectPublicQuery, IPaginatePostProjectPublicResponse, IGeneratePresentationProjectPublicBody, IGeneratePresentationProjectPublicResponse, IGeneratePostProjectPublicResponse, IGeneratePostProjectPublicBody, IRecordViewProjectPublicParams, IRecordViewProjectPublicResponse } from '..';
1
+ import { IPaginatePublishedProjectPublicResponse, IPaginatePublishedProjectPublicQuery, IGetPublishedProjectPublicResponse, IGetPublishedProjectPublicParams, IGetPublishedBySlugProjectPublicResponse, IGetPublishedBySlugProjectPublicParams, IGetPopularProjectPublicResponse, IPaginatePostProjectPublicParams, IPaginatePostProjectPublicQuery, IPaginatePostProjectPublicResponse, IGeneratePresentationProjectPublicBody, IGeneratePresentationProjectPublicResponse, IGeneratePostProjectPublicResponse, IGeneratePostProjectPublicBody } from '..';
2
2
  export declare const getPublishedProjectPublic: (params: IGetPublishedProjectPublicParams) => Promise<IGetPublishedProjectPublicResponse>;
3
3
  export declare const paginatePostProjectPublic: (params: IPaginatePostProjectPublicParams, query: IPaginatePostProjectPublicQuery) => Promise<IPaginatePostProjectPublicResponse>;
4
4
  export declare const getPublishedBySlugProjectPublic: (params: IGetPublishedBySlugProjectPublicParams) => Promise<IGetPublishedBySlugProjectPublicResponse>;
@@ -6,4 +6,3 @@ export declare const paginatePublishedProjectPublic: (query: IPaginatePublishedP
6
6
  export declare const getPopularProjectPublic: () => Promise<IGetPopularProjectPublicResponse>;
7
7
  export declare const generatePresentationProjectPublic: (body: IGeneratePresentationProjectPublicBody) => Promise<IGeneratePresentationProjectPublicResponse>;
8
8
  export declare const generatePostProjectPublic: (body: IGeneratePostProjectPublicBody) => Promise<IGeneratePostProjectPublicResponse>;
9
- export declare const recordProjectView: (params: IRecordViewProjectPublicParams) => Promise<IRecordViewProjectPublicResponse>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.recordProjectView = exports.generatePostProjectPublic = exports.generatePresentationProjectPublic = exports.getPopularProjectPublic = exports.paginatePublishedProjectPublic = exports.getPublishedBySlugProjectPublic = exports.paginatePostProjectPublic = exports.getPublishedProjectPublic = void 0;
3
+ exports.generatePostProjectPublic = exports.generatePresentationProjectPublic = exports.getPopularProjectPublic = exports.paginatePublishedProjectPublic = exports.getPublishedBySlugProjectPublic = exports.paginatePostProjectPublic = exports.getPublishedProjectPublic = void 0;
4
4
  const __1 = require("..");
5
5
  const getPublishedProjectPublic = async (params) => {
6
6
  return (await __1.AbyssSpotlightCore.axios.get(`project/public/published/${params.projectId}`)).data;
@@ -30,7 +30,3 @@ const generatePostProjectPublic = async (body) => {
30
30
  return (await __1.AbyssSpotlightCore.axios.post(`project/public/generate-post`, body)).data;
31
31
  };
32
32
  exports.generatePostProjectPublic = generatePostProjectPublic;
33
- const recordProjectView = async (params) => {
34
- return (await __1.AbyssSpotlightCore.axios.post(`project/public/published/${params.projectId}/record-view`)).data;
35
- };
36
- exports.recordProjectView = recordProjectView;
package/dist/index.d.ts CHANGED
@@ -5,11 +5,13 @@ export * from './api';
5
5
  export * from './constants';
6
6
  export declare const API_KEY_HEADER = "abyss-spotlight-api-key";
7
7
  export declare const ADMIN_TOKEN_HEADER = "abyss-admin-token";
8
+ export declare const ABYSS_USER_ANONYMOUS_IDENTIFIER = "abyss_user_anonymous_identifier";
8
9
  type CoreConfig = {
9
10
  token?: string;
10
11
  apiKey?: string;
11
12
  adminToken?: string;
12
13
  baseURL?: string;
14
+ abyssUserAnonymousIdentifier?: string;
13
15
  };
14
16
  export declare class AbyssSpotlightCore {
15
17
  private static config;
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  };
31
31
  var _a;
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.AbyssSpotlightCore = exports.ADMIN_TOKEN_HEADER = exports.API_KEY_HEADER = void 0;
33
+ exports.AbyssSpotlightCore = exports.ABYSS_USER_ANONYMOUS_IDENTIFIER = exports.ADMIN_TOKEN_HEADER = exports.API_KEY_HEADER = void 0;
34
34
  const axios_1 = __importDefault(require("axios"));
35
35
  const axios_retry_1 = __importStar(require("axios-retry"));
36
36
  __exportStar(require("./types"), exports);
@@ -40,6 +40,7 @@ __exportStar(require("./constants"), exports);
40
40
  const DEFAULT_BASE_URL = 'https://spotlight-api.abyss-project.fr/api/';
41
41
  exports.API_KEY_HEADER = 'abyss-spotlight-api-key';
42
42
  exports.ADMIN_TOKEN_HEADER = 'abyss-admin-token';
43
+ exports.ABYSS_USER_ANONYMOUS_IDENTIFIER = 'abyss_user_anonymous_identifier';
43
44
  const NUMBER_RETRY_API = 10;
44
45
  const BASE_DELAY_BETWEEN_RETRY = 5000;
45
46
  const RETRY_CODES = [
@@ -73,6 +74,9 @@ class AbyssSpotlightCore {
73
74
  if (config.adminToken) {
74
75
  _a.axios.defaults.headers.common[exports.ADMIN_TOKEN_HEADER] = `${config.adminToken}`;
75
76
  }
77
+ if (config.abyssUserAnonymousIdentifier) {
78
+ _a.axios.defaults.headers.common[exports.ABYSS_USER_ANONYMOUS_IDENTIFIER] = `${config.abyssUserAnonymousIdentifier}`;
79
+ }
76
80
  }
77
81
  static getConfig() {
78
82
  return _a.config;
@@ -87,5 +91,6 @@ AbyssSpotlightCore.config = {
87
91
  applicationId: '',
88
92
  adminToken: '',
89
93
  baseURL: DEFAULT_BASE_URL,
94
+ abyssUserAnonymousIdentifier: '',
90
95
  };
91
96
  AbyssSpotlightCore.axios = axios_1.default.create({ baseURL: _a.config.baseURL });
@@ -22,6 +22,7 @@ export * from './requests/project-post.request';
22
22
  export * from './requests/project-event.request';
23
23
  export * from './requests/project-follower.admin.request';
24
24
  export * from './requests/project-follower.request';
25
+ export * from './requests/project-analytics.request';
25
26
  export * from './responses/abyss.admin.response';
26
27
  export * from './responses/monitor.response';
27
28
  export * from './responses/storage.admin.response';
@@ -43,3 +44,4 @@ export * from './responses/project-post.response';
43
44
  export * from './responses/project-event.response';
44
45
  export * from './responses/project-follower.admin.response';
45
46
  export * from './responses/project-follower.response';
47
+ export * from './responses/project-analytics.response';
@@ -38,6 +38,7 @@ __exportStar(require("./requests/project-post.request"), exports);
38
38
  __exportStar(require("./requests/project-event.request"), exports);
39
39
  __exportStar(require("./requests/project-follower.admin.request"), exports);
40
40
  __exportStar(require("./requests/project-follower.request"), exports);
41
+ __exportStar(require("./requests/project-analytics.request"), exports);
41
42
  __exportStar(require("./responses/abyss.admin.response"), exports);
42
43
  __exportStar(require("./responses/monitor.response"), exports);
43
44
  __exportStar(require("./responses/storage.admin.response"), exports);
@@ -59,3 +60,4 @@ __exportStar(require("./responses/project-post.response"), exports);
59
60
  __exportStar(require("./responses/project-event.response"), exports);
60
61
  __exportStar(require("./responses/project-follower.admin.response"), exports);
61
62
  __exportStar(require("./responses/project-follower.response"), exports);
63
+ __exportStar(require("./responses/project-analytics.response"), exports);
@@ -0,0 +1,19 @@
1
+ import { ProjectAnalyticsEventType } from '../..';
2
+ export interface ITrackProjectAnalyticsParams {
3
+ projectId: string;
4
+ }
5
+ export interface ITrackProjectAnalyticsBody {
6
+ eventType: ProjectAnalyticsEventType | string;
7
+ projectPostId?: string;
8
+ }
9
+ export interface IGetProjectAnalyticsParams {
10
+ projectId: string;
11
+ }
12
+ export interface IGetProjectAnalyticsQuery {
13
+ startDate?: string;
14
+ endDate?: string;
15
+ }
16
+ export interface IGetProjectPostAnalyticsParams {
17
+ projectId: string;
18
+ projectPostId: string;
19
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface IGetProjectPostAnalyticsParams {
2
+ projectId: string;
3
+ projectPostId: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -32,6 +32,7 @@ export interface IGeneratePostProjectPublicBody {
32
32
  url: string;
33
33
  }[];
34
34
  }
35
- export interface IRecordViewProjectPublicParams {
35
+ export interface IPaginatePublishedProjectEventPublicParams {
36
36
  projectId: string;
37
37
  }
38
+ export type IPaginatePublishedProjectEventPublicQuery = QueryPaginate;
@@ -0,0 +1,77 @@
1
+ import { IResponse } from '../..';
2
+ export interface ITrackProjectAnalyticsData {
3
+ }
4
+ export type ITrackProjectAnalyticsResponse = IResponse<ITrackProjectAnalyticsData>;
5
+ export interface IProjectPostAnalytics {
6
+ period: {
7
+ startDate: string;
8
+ endDate: string;
9
+ };
10
+ totals: {
11
+ views: number;
12
+ uniqueViews: number;
13
+ prints: number;
14
+ };
15
+ trends: {
16
+ last7Days: {
17
+ views: number;
18
+ uniqueViews: number;
19
+ prints: number;
20
+ };
21
+ last30Days: {
22
+ views: number;
23
+ uniqueViews: number;
24
+ prints: number;
25
+ };
26
+ };
27
+ timeSeries: Array<{
28
+ date: string;
29
+ views: number;
30
+ uniqueViews: number;
31
+ prints: number;
32
+ }>;
33
+ }
34
+ export interface IGetProjectPostAnalyticsData {
35
+ analytics: IProjectPostAnalytics;
36
+ }
37
+ export type IGetProjectPostAnalyticsResponse = IResponse<IGetProjectPostAnalyticsData>;
38
+ export interface IProjectAnalyticsStats {
39
+ period: {
40
+ startDate: string;
41
+ endDate: string;
42
+ };
43
+ metrics: {
44
+ contactClicks: number;
45
+ joinClicks: number;
46
+ accessClicks: number;
47
+ postViews: number;
48
+ starsAdded: number;
49
+ starsRemoved: number;
50
+ followersAdded: number;
51
+ followersRemoved: number;
52
+ view: number;
53
+ uniqView: number;
54
+ prints: number;
55
+ };
56
+ timeSeries: Array<{
57
+ date: string;
58
+ contactClicks: number;
59
+ joinClicks: number;
60
+ accessClicks: number;
61
+ postViews: number;
62
+ view: number;
63
+ uniqView: number;
64
+ prints: number;
65
+ starsAdded: number;
66
+ starsRemoved: number;
67
+ followersAdded: number;
68
+ followersRemoved: number;
69
+ stars: number;
70
+ followers: number;
71
+ posts: number;
72
+ }>;
73
+ }
74
+ export interface IGetProjectAnalyticsData {
75
+ current: IProjectAnalyticsStats;
76
+ }
77
+ export type IGetProjectAnalyticsResponse = IResponse<IGetProjectAnalyticsData>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ import { IResponse } from '../..';
2
+ export interface IProjectPostAnalytics {
3
+ period: {
4
+ startDate: string;
5
+ endDate: string;
6
+ };
7
+ totals: {
8
+ views: number;
9
+ uniqueViews: number;
10
+ prints: number;
11
+ };
12
+ trends: {
13
+ last7Days: {
14
+ views: number;
15
+ uniqueViews: number;
16
+ prints: number;
17
+ };
18
+ last30Days: {
19
+ views: number;
20
+ uniqueViews: number;
21
+ prints: number;
22
+ };
23
+ };
24
+ timeSeries: Array<{
25
+ date: string;
26
+ views: number;
27
+ uniqueViews: number;
28
+ prints: number;
29
+ }>;
30
+ }
31
+ export interface IGetProjectPostAnalyticsData {
32
+ analytics: IProjectPostAnalytics;
33
+ }
34
+ export type IGetProjectPostAnalyticsResponse = IResponse<IGetProjectPostAnalyticsData>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,4 @@
1
- import { BasePaginate, IProject, IProjectPost, IResponse, ProjectMetrics, ProjectWithMetrics } from '../..';
1
+ import { BasePaginate, IProject, IProjectEvent, IProjectPost, IResponse, ProjectMetrics, ProjectWithMetrics } from '../..';
2
2
  import { ProjectCategory, ProjectLanguage, ProjectStatus } from '../../../enum';
3
3
  export interface IGetPublishedProjectPublicData {
4
4
  project: IProject;
@@ -43,6 +43,4 @@ export interface IGeneratePostProjectPublicData {
43
43
  content: string;
44
44
  }
45
45
  export type IGeneratePostProjectPublicResponse = IResponse<IGeneratePostProjectPublicData>;
46
- export interface IRecordViewProjectPublicData {
47
- }
48
- export type IRecordViewProjectPublicResponse = IResponse<IRecordViewProjectPublicData>;
46
+ export type IPaginatePublishedProjectEventPublicResponse = IResponse<BasePaginate<IProjectEvent>>;
@@ -9,6 +9,15 @@ export type ProjectMetrics = {
9
9
  lastFollowedAt: Date | null;
10
10
  };
11
11
  view: {
12
+ total: number;
13
+ uniqTotal: number;
14
+ totalPrint: number;
15
+ history: {
16
+ date: string;
17
+ count: number;
18
+ }[];
19
+ };
20
+ post: {
12
21
  total: number;
13
22
  history: {
14
23
  date: string;
@@ -54,3 +63,14 @@ export interface ITransferProjectData {
54
63
  project: IProject;
55
64
  }
56
65
  export type ITransferProjectResponse = IResponse<ITransferProjectData>;
66
+ export interface IGlobalUserMetricsData {
67
+ totalPosts: number;
68
+ totalViews: number;
69
+ totalFollowers: number;
70
+ totalStars: number;
71
+ }
72
+ export type IGlobalUserMetricsResponse = IResponse<IGlobalUserMetricsData>;
73
+ export interface IListAllAccessibleProjectsData {
74
+ projects: ProjectWithMetrics[];
75
+ }
76
+ export type IListAllAccessibleProjectsResponse = IResponse<IListAllAccessibleProjectsData>;
@@ -8,12 +8,14 @@ export * from './models/project-follower.model';
8
8
  export * from './models/project-document.model';
9
9
  export * from './models/project-star.model';
10
10
  export * from './models/project-social-network.model';
11
- export * from './models/project-view.model';
11
+ export * from './models/project-analytics.model';
12
12
  export * from './api';
13
13
  export type ProjectWithMetrics = IProject & {
14
14
  starCount: number;
15
15
  viewCount: number;
16
+ uniqViewCount: number;
16
17
  followerCount: number;
18
+ postCount: number;
17
19
  userIsFollowing: boolean;
18
20
  userHasStarred: boolean;
19
21
  };
@@ -23,5 +23,5 @@ __exportStar(require("./models/project-follower.model"), exports);
23
23
  __exportStar(require("./models/project-document.model"), exports);
24
24
  __exportStar(require("./models/project-star.model"), exports);
25
25
  __exportStar(require("./models/project-social-network.model"), exports);
26
- __exportStar(require("./models/project-view.model"), exports);
26
+ __exportStar(require("./models/project-analytics.model"), exports);
27
27
  __exportStar(require("./api"), exports);
@@ -0,0 +1,28 @@
1
+ import { IProject } from './project.model';
2
+ import { IUser } from './user.model';
3
+ import { IProjectPost } from './project-post.model';
4
+ export declare enum ProjectAnalyticsEventType {
5
+ CONTACT_CLICK = "contact_click",
6
+ JOIN_CLICK = "join_click",
7
+ ACCESS_CLICK = "access_click",
8
+ STAR_ADD = "star_add",
9
+ STAR_REMOVE = "star_remove",
10
+ FOLLOWER_ADD = "follower_add",
11
+ FOLLOWER_REMOVE = "follower_remove",
12
+ POST_VIEW = "post_view",
13
+ PROJECT_VIEW = "project_view"
14
+ }
15
+ export interface IProjectAnalytics {
16
+ id: string;
17
+ projectId: string;
18
+ userId: string | null;
19
+ anonymousId: string;
20
+ eventType: ProjectAnalyticsEventType | string;
21
+ projectPostId: string | null;
22
+ metadata: Record<string, any> | null;
23
+ createdAt?: Date;
24
+ updatedAt?: Date;
25
+ project?: IProject;
26
+ user?: IUser | null;
27
+ projectPost?: IProjectPost | null;
28
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProjectAnalyticsEventType = void 0;
4
+ var ProjectAnalyticsEventType;
5
+ (function (ProjectAnalyticsEventType) {
6
+ ProjectAnalyticsEventType["CONTACT_CLICK"] = "contact_click";
7
+ ProjectAnalyticsEventType["JOIN_CLICK"] = "join_click";
8
+ ProjectAnalyticsEventType["ACCESS_CLICK"] = "access_click";
9
+ ProjectAnalyticsEventType["STAR_ADD"] = "star_add";
10
+ ProjectAnalyticsEventType["STAR_REMOVE"] = "star_remove";
11
+ ProjectAnalyticsEventType["FOLLOWER_ADD"] = "follower_add";
12
+ ProjectAnalyticsEventType["FOLLOWER_REMOVE"] = "follower_remove";
13
+ ProjectAnalyticsEventType["POST_VIEW"] = "post_view";
14
+ ProjectAnalyticsEventType["PROJECT_VIEW"] = "project_view";
15
+ })(ProjectAnalyticsEventType || (exports.ProjectAnalyticsEventType = ProjectAnalyticsEventType = {}));
@@ -7,7 +7,6 @@ import { IProjectPost } from './project-post.model';
7
7
  import { IProjectPresentation } from './project-presentation.model';
8
8
  import { IProjectSocialNetwork } from './project-social-network.model';
9
9
  import { IProjectStar } from './project-star.model';
10
- import { IProjectView } from './project-view.model';
11
10
  import { IUser } from './user.model';
12
11
  export interface IProject {
13
12
  id?: string;
@@ -34,6 +33,5 @@ export interface IProject {
34
33
  projectFollower?: IProjectFollower[];
35
34
  projectDocument?: IProjectDocument[];
36
35
  projectStar?: IProjectStar[];
37
- projectView?: IProjectView[];
38
36
  projectSocialNetwork?: IProjectSocialNetwork[];
39
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abyss-project/spotlight",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "Core package to interact with Abyss-Spotlight",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",