@jobsearch-works/firestore-models 4.2.7 → 4.2.9

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/index.d.mts CHANGED
@@ -880,6 +880,43 @@ interface ApplicationRun {
880
880
  updatedAt?: Date | string;
881
881
  }
882
882
 
883
+ /**
884
+ * Daily statistics for application submissions and archivals
885
+ * Stored in a single document per client for efficient querying
886
+ */
887
+ interface DailyApplicationStats {
888
+ /** Number of applications applied (submitted) on this day */
889
+ applied: number;
890
+ /** Number of applications archived (rejected or withdrawn) on this day */
891
+ archived: number;
892
+ }
893
+ /**
894
+ * Application statistics aggregated by day
895
+ * Path: stats/{clientId}
896
+ *
897
+ * One document per client containing all application statistics.
898
+ * The dailyStats object uses date strings (YYYY-MM-DD format) as keys
899
+ * for efficient daily aggregation and querying.
900
+ */
901
+ interface ApplicationStats {
902
+ /** Document ID is the clientId */
903
+ id?: string;
904
+ clientId: string;
905
+ /**
906
+ * Daily statistics keyed by date string (YYYY-MM-DD format)
907
+ * Example: { "2025-01-15": { applied: 3, archived: 1 } }
908
+ */
909
+ dailyStats: Record<string, DailyApplicationStats>;
910
+ /** Total count of all applications applied (ever) */
911
+ totalApplied: number;
912
+ /** Total count of all applications archived (ever) */
913
+ totalArchived: number;
914
+ /** Last time stats were updated */
915
+ updatedAt?: Date | string;
916
+ /** When this stats document was created */
917
+ createdAt?: Date | string;
918
+ }
919
+
883
920
  /**
884
921
  * Embedded sub-object within Client document
885
922
  * @see Client - Parent document interface
@@ -1087,7 +1124,7 @@ interface ClientAccessToken {
1087
1124
  * Subcollection document under clients/{userId}/emails/{emailId}
1088
1125
  * For new email structure
1089
1126
  */
1090
- type EmailCategory = "One Time Pin" | "Spam" | "Job Submitted" | "Job Interview" | "Job Accepted" | "Job Rejection" | "Require More Info" | "Job Suggestions" | "Uncategorised";
1127
+ type EmailCategory = "One Time Pin" | "Spam" | "Job Submitted" | "Job Interview" | "Job Accepted" | "Job Rejection" | "Vacancy Closed" | "Require More Info" | "Job Suggestions" | "Uncategorised";
1091
1128
  /**
1092
1129
  * Array of all valid EmailCategory values for validation and iteration
1093
1130
  * This ensures consistency across the system
@@ -1197,6 +1234,10 @@ declare const firestorePaths: {
1197
1234
  readonly collection: () => string;
1198
1235
  readonly doc: (authEmail: string) => string;
1199
1236
  };
1237
+ readonly stats: {
1238
+ readonly collection: () => string;
1239
+ readonly doc: (clientId: string) => string;
1240
+ };
1200
1241
  };
1201
1242
 
1202
- export { Address, AdminReport, Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationRun, ApplicationRunMetadata, ApplicationRunOutcome, ApplicationRunStatus, ApplicationRunTrigger, ApplicationStatus, AuthEmail, AuthUser, Certification, Client, ClientAccessToken, ClientCompanyPreferences, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientStatusEnum, ClientVirtualInterview, Companies, EMAIL_CATEGORIES, Education, EmailCategory, EmailLog, Experience, FirestoreTimestamp, GmailOAuthSession, JobCategory, JobTitle, LocationId, Project, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, countries, firestorePaths, initialQuestions, jobClassifications, locations };
1243
+ export { Address, AdminReport, Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationRun, ApplicationRunMetadata, ApplicationRunOutcome, ApplicationRunStatus, ApplicationRunTrigger, ApplicationStats, ApplicationStatus, AuthEmail, AuthUser, Certification, Client, ClientAccessToken, ClientCompanyPreferences, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientStatusEnum, ClientVirtualInterview, Companies, DailyApplicationStats, EMAIL_CATEGORIES, Education, EmailCategory, EmailLog, Experience, FirestoreTimestamp, GmailOAuthSession, JobCategory, JobTitle, LocationId, Project, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, countries, firestorePaths, initialQuestions, jobClassifications, locations };
package/dist/index.d.ts CHANGED
@@ -880,6 +880,43 @@ interface ApplicationRun {
880
880
  updatedAt?: Date | string;
881
881
  }
882
882
 
883
+ /**
884
+ * Daily statistics for application submissions and archivals
885
+ * Stored in a single document per client for efficient querying
886
+ */
887
+ interface DailyApplicationStats {
888
+ /** Number of applications applied (submitted) on this day */
889
+ applied: number;
890
+ /** Number of applications archived (rejected or withdrawn) on this day */
891
+ archived: number;
892
+ }
893
+ /**
894
+ * Application statistics aggregated by day
895
+ * Path: stats/{clientId}
896
+ *
897
+ * One document per client containing all application statistics.
898
+ * The dailyStats object uses date strings (YYYY-MM-DD format) as keys
899
+ * for efficient daily aggregation and querying.
900
+ */
901
+ interface ApplicationStats {
902
+ /** Document ID is the clientId */
903
+ id?: string;
904
+ clientId: string;
905
+ /**
906
+ * Daily statistics keyed by date string (YYYY-MM-DD format)
907
+ * Example: { "2025-01-15": { applied: 3, archived: 1 } }
908
+ */
909
+ dailyStats: Record<string, DailyApplicationStats>;
910
+ /** Total count of all applications applied (ever) */
911
+ totalApplied: number;
912
+ /** Total count of all applications archived (ever) */
913
+ totalArchived: number;
914
+ /** Last time stats were updated */
915
+ updatedAt?: Date | string;
916
+ /** When this stats document was created */
917
+ createdAt?: Date | string;
918
+ }
919
+
883
920
  /**
884
921
  * Embedded sub-object within Client document
885
922
  * @see Client - Parent document interface
@@ -1087,7 +1124,7 @@ interface ClientAccessToken {
1087
1124
  * Subcollection document under clients/{userId}/emails/{emailId}
1088
1125
  * For new email structure
1089
1126
  */
1090
- type EmailCategory = "One Time Pin" | "Spam" | "Job Submitted" | "Job Interview" | "Job Accepted" | "Job Rejection" | "Require More Info" | "Job Suggestions" | "Uncategorised";
1127
+ type EmailCategory = "One Time Pin" | "Spam" | "Job Submitted" | "Job Interview" | "Job Accepted" | "Job Rejection" | "Vacancy Closed" | "Require More Info" | "Job Suggestions" | "Uncategorised";
1091
1128
  /**
1092
1129
  * Array of all valid EmailCategory values for validation and iteration
1093
1130
  * This ensures consistency across the system
@@ -1197,6 +1234,10 @@ declare const firestorePaths: {
1197
1234
  readonly collection: () => string;
1198
1235
  readonly doc: (authEmail: string) => string;
1199
1236
  };
1237
+ readonly stats: {
1238
+ readonly collection: () => string;
1239
+ readonly doc: (clientId: string) => string;
1240
+ };
1200
1241
  };
1201
1242
 
1202
- export { Address, AdminReport, Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationRun, ApplicationRunMetadata, ApplicationRunOutcome, ApplicationRunStatus, ApplicationRunTrigger, ApplicationStatus, AuthEmail, AuthUser, Certification, Client, ClientAccessToken, ClientCompanyPreferences, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientStatusEnum, ClientVirtualInterview, Companies, EMAIL_CATEGORIES, Education, EmailCategory, EmailLog, Experience, FirestoreTimestamp, GmailOAuthSession, JobCategory, JobTitle, LocationId, Project, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, countries, firestorePaths, initialQuestions, jobClassifications, locations };
1243
+ export { Address, AdminReport, Agent, AgentStatus, Application, ApplicationQuestion, ApplicationQuestionType, ApplicationQuestionTypeOptions, ApplicationRun, ApplicationRunMetadata, ApplicationRunOutcome, ApplicationRunStatus, ApplicationRunTrigger, ApplicationStats, ApplicationStatus, AuthEmail, AuthUser, Certification, Client, ClientAccessToken, ClientCompanyPreferences, ClientEmail, ClientGmailToken, ClientInitialQuestion, ClientJobPreferences, ClientLogin, ClientPersonalData, ClientQuestion, ClientResume, ClientStatus, ClientStatusEnum, ClientVirtualInterview, Companies, DailyApplicationStats, EMAIL_CATEGORIES, Education, EmailCategory, EmailLog, Experience, FirestoreTimestamp, GmailOAuthSession, JobCategory, JobTitle, LocationId, Project, UserPublic, Vacancy, VacancyCategory, VacancySuggestion, countries, firestorePaths, initialQuestions, jobClassifications, locations };
package/dist/index.js CHANGED
@@ -1443,6 +1443,7 @@ var EMAIL_CATEGORIES = [
1443
1443
  "Job Interview",
1444
1444
  "Job Accepted",
1445
1445
  "Job Rejection",
1446
+ "Vacancy Closed",
1446
1447
  "Require More Info",
1447
1448
  "Job Suggestions",
1448
1449
  "Uncategorised"
@@ -1521,6 +1522,10 @@ var firestorePaths = {
1521
1522
  authEmails: {
1522
1523
  collection: () => "authEmails",
1523
1524
  doc: (authEmail) => `authEmails/${authEmail}`
1525
+ },
1526
+ stats: {
1527
+ collection: () => "stats",
1528
+ doc: (clientId) => `stats/${clientId}`
1524
1529
  }
1525
1530
  };
1526
1531
  // Annotate the CommonJS export names for ESM import in node:
package/dist/index.mjs CHANGED
@@ -1405,6 +1405,7 @@ var EMAIL_CATEGORIES = [
1405
1405
  "Job Interview",
1406
1406
  "Job Accepted",
1407
1407
  "Job Rejection",
1408
+ "Vacancy Closed",
1408
1409
  "Require More Info",
1409
1410
  "Job Suggestions",
1410
1411
  "Uncategorised"
@@ -1483,6 +1484,10 @@ var firestorePaths = {
1483
1484
  authEmails: {
1484
1485
  collection: () => "authEmails",
1485
1486
  doc: (authEmail) => `authEmails/${authEmail}`
1487
+ },
1488
+ stats: {
1489
+ collection: () => "stats",
1490
+ doc: (clientId) => `stats/${clientId}`
1486
1491
  }
1487
1492
  };
1488
1493
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobsearch-works/firestore-models",
3
- "version": "4.2.7",
3
+ "version": "4.2.9",
4
4
  "description": "A shared library for standardizing Firestore document schemas and paths across multiple projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",