@jobsearch-works/firestore-models 1.0.31 → 1.0.32

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/README.md CHANGED
@@ -18,12 +18,26 @@ This library serves as a single source of truth for Firestore data structures ac
18
18
 
19
19
  ## Installation
20
20
 
21
+ The package is published on npm as [@jobsearch-works/firestore-models](https://www.npmjs.com/package/@jobsearch-works/firestore-models).
22
+
23
+ You can install it using npm:
24
+
25
+ ```bash
26
+ npm install @jobsearch-works/firestore-models
27
+ ```
28
+
29
+ For development purposes, you can also install directly from GitHub:
30
+
21
31
  ```bash
22
- npm install @jsw/firestore-models
23
- # or
24
- yarn add @jsw/firestore-models
32
+ # Install from GitHub (for development only)
33
+ npm install github:jobsearch-works/firestore-models
34
+
35
+ # Or specify a particular commit/branch
36
+ npm install github:jobsearch-works/firestore-models#commit-hash
25
37
  ```
26
38
 
39
+ Note: Regular `npm update` won't update GitHub-hosted packages to the latest version. For production use, always use the npm package version.
40
+
27
41
  ## Project Structure
28
42
 
29
43
  ```
package/dist/index.d.mts CHANGED
@@ -326,12 +326,6 @@ declare namespace GmailMessage {
326
326
  }
327
327
  const collection: (clientId: string) => string;
328
328
  const document: (clientId: string, messageId: string) => string;
329
- const extractBody: (email: Model) => string;
330
- const extractReceivedDate: (email: Model) => Date;
331
- const extractSubject: (email: Model) => string;
332
- const extractFromAddress: (email: Model) => string;
333
- const formatEmailDate: (email: Model) => string;
334
- const getEmailSender: (email: Model) => string;
335
329
  const createNew: (messageId: string, threadId?: string, payload?: Model["payload"], labelIds?: string[], snippet?: string, internalDate?: string) => Model;
336
330
  }
337
331
 
package/dist/index.d.ts CHANGED
@@ -326,12 +326,6 @@ declare namespace GmailMessage {
326
326
  }
327
327
  const collection: (clientId: string) => string;
328
328
  const document: (clientId: string, messageId: string) => string;
329
- const extractBody: (email: Model) => string;
330
- const extractReceivedDate: (email: Model) => Date;
331
- const extractSubject: (email: Model) => string;
332
- const extractFromAddress: (email: Model) => string;
333
- const formatEmailDate: (email: Model) => string;
334
- const getEmailSender: (email: Model) => string;
335
329
  const createNew: (messageId: string, threadId?: string, payload?: Model["payload"], labelIds?: string[], snippet?: string, internalDate?: string) => Model;
336
330
  }
337
331
 
package/dist/index.js CHANGED
@@ -382,63 +382,6 @@ var GmailMessage;
382
382
  ((GmailMessage2) => {
383
383
  GmailMessage2.collection = (clientId) => `clientEmails/${clientId}/messages`;
384
384
  GmailMessage2.document = (clientId, messageId) => `${(0, GmailMessage2.collection)(clientId)}/${messageId}`;
385
- GmailMessage2.extractBody = (email) => {
386
- const payload = email.payload;
387
- if (!payload)
388
- return "No body available";
389
- const getTextContent = (parts) => {
390
- for (const part of parts) {
391
- if (part.mimeType === "text/plain" && part.body?.data) {
392
- return Buffer.from(part.body.data, "base64").toString();
393
- }
394
- }
395
- return "";
396
- };
397
- if (payload.parts && Array.isArray(payload.parts)) {
398
- return getTextContent(payload.parts) || "No body available";
399
- }
400
- if (payload.body?.data) {
401
- return Buffer.from(payload.body.data, "base64").toString();
402
- }
403
- return "No body available";
404
- };
405
- GmailMessage2.extractReceivedDate = (email) => {
406
- const headers = email.payload?.headers || [];
407
- const dateHeader = headers.find(
408
- (header) => header.name.toLowerCase() === "date"
409
- );
410
- if (dateHeader?.value) {
411
- const parsedDate = new Date(dateHeader.value);
412
- if (!isNaN(parsedDate.getTime())) {
413
- return parsedDate;
414
- }
415
- }
416
- if (email.internalDate) {
417
- return new Date(parseInt(email.internalDate, 10));
418
- }
419
- return /* @__PURE__ */ new Date();
420
- };
421
- GmailMessage2.extractSubject = (email) => {
422
- const headers = email.payload?.headers || [];
423
- const subjectHeader = headers.find(
424
- (header) => header.name.toLowerCase() === "subject"
425
- );
426
- return subjectHeader?.value || "No subject available";
427
- };
428
- GmailMessage2.extractFromAddress = (email) => {
429
- const headers = email.payload?.headers || [];
430
- const fromHeader = headers.find(
431
- (header) => header.name.toLowerCase() === "from"
432
- );
433
- return fromHeader?.value || "No sender available";
434
- };
435
- GmailMessage2.formatEmailDate = (email) => {
436
- const date = (0, GmailMessage2.extractReceivedDate)(email);
437
- return date.toLocaleString();
438
- };
439
- GmailMessage2.getEmailSender = (email) => {
440
- return (0, GmailMessage2.extractFromAddress)(email);
441
- };
442
385
  GmailMessage2.createNew = (messageId, threadId, payload, labelIds, snippet, internalDate) => {
443
386
  return {
444
387
  messageId,
package/dist/index.mjs CHANGED
@@ -346,63 +346,6 @@ var GmailMessage;
346
346
  ((GmailMessage2) => {
347
347
  GmailMessage2.collection = (clientId) => `clientEmails/${clientId}/messages`;
348
348
  GmailMessage2.document = (clientId, messageId) => `${(0, GmailMessage2.collection)(clientId)}/${messageId}`;
349
- GmailMessage2.extractBody = (email) => {
350
- const payload = email.payload;
351
- if (!payload)
352
- return "No body available";
353
- const getTextContent = (parts) => {
354
- for (const part of parts) {
355
- if (part.mimeType === "text/plain" && part.body?.data) {
356
- return Buffer.from(part.body.data, "base64").toString();
357
- }
358
- }
359
- return "";
360
- };
361
- if (payload.parts && Array.isArray(payload.parts)) {
362
- return getTextContent(payload.parts) || "No body available";
363
- }
364
- if (payload.body?.data) {
365
- return Buffer.from(payload.body.data, "base64").toString();
366
- }
367
- return "No body available";
368
- };
369
- GmailMessage2.extractReceivedDate = (email) => {
370
- const headers = email.payload?.headers || [];
371
- const dateHeader = headers.find(
372
- (header) => header.name.toLowerCase() === "date"
373
- );
374
- if (dateHeader?.value) {
375
- const parsedDate = new Date(dateHeader.value);
376
- if (!isNaN(parsedDate.getTime())) {
377
- return parsedDate;
378
- }
379
- }
380
- if (email.internalDate) {
381
- return new Date(parseInt(email.internalDate, 10));
382
- }
383
- return /* @__PURE__ */ new Date();
384
- };
385
- GmailMessage2.extractSubject = (email) => {
386
- const headers = email.payload?.headers || [];
387
- const subjectHeader = headers.find(
388
- (header) => header.name.toLowerCase() === "subject"
389
- );
390
- return subjectHeader?.value || "No subject available";
391
- };
392
- GmailMessage2.extractFromAddress = (email) => {
393
- const headers = email.payload?.headers || [];
394
- const fromHeader = headers.find(
395
- (header) => header.name.toLowerCase() === "from"
396
- );
397
- return fromHeader?.value || "No sender available";
398
- };
399
- GmailMessage2.formatEmailDate = (email) => {
400
- const date = (0, GmailMessage2.extractReceivedDate)(email);
401
- return date.toLocaleString();
402
- };
403
- GmailMessage2.getEmailSender = (email) => {
404
- return (0, GmailMessage2.extractFromAddress)(email);
405
- };
406
349
  GmailMessage2.createNew = (messageId, threadId, payload, labelIds, snippet, internalDate) => {
407
350
  return {
408
351
  messageId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobsearch-works/firestore-models",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
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",