@memberjunction/content-autotagging 3.4.0 → 4.0.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.
Files changed (108) hide show
  1. package/dist/CloudStorage/generic/CloudStorageBase.d.ts +28 -0
  2. package/dist/CloudStorage/generic/CloudStorageBase.d.ts.map +1 -0
  3. package/dist/CloudStorage/generic/CloudStorageBase.js +38 -0
  4. package/dist/CloudStorage/generic/CloudStorageBase.js.map +1 -0
  5. package/dist/CloudStorage/index.d.ts +3 -0
  6. package/dist/CloudStorage/index.d.ts.map +1 -0
  7. package/dist/CloudStorage/index.js +3 -0
  8. package/dist/CloudStorage/index.js.map +1 -0
  9. package/dist/CloudStorage/providers/AutotagAzureBlob.d.ts +20 -0
  10. package/dist/CloudStorage/providers/AutotagAzureBlob.d.ts.map +1 -0
  11. package/dist/CloudStorage/providers/AutotagAzureBlob.js +86 -0
  12. package/dist/CloudStorage/providers/AutotagAzureBlob.js.map +1 -0
  13. package/dist/Core/generic/AutotagBase.d.ts +7 -0
  14. package/dist/Core/generic/AutotagBase.d.ts.map +1 -0
  15. package/dist/Core/generic/AutotagBase.js +3 -0
  16. package/dist/Core/generic/AutotagBase.js.map +1 -0
  17. package/dist/Core/index.d.ts +2 -0
  18. package/dist/Core/index.d.ts.map +1 -0
  19. package/dist/Core/index.js +2 -0
  20. package/dist/Core/index.js.map +1 -0
  21. package/dist/Engine/generic/AutotagBaseEngine.d.ts +131 -0
  22. package/dist/Engine/generic/AutotagBaseEngine.d.ts.map +1 -0
  23. package/dist/Engine/generic/AutotagBaseEngine.js +620 -0
  24. package/dist/Engine/generic/AutotagBaseEngine.js.map +1 -0
  25. package/dist/Engine/generic/content.types.d.ts +32 -0
  26. package/dist/Engine/generic/content.types.d.ts.map +1 -0
  27. package/dist/Engine/generic/content.types.js +7 -0
  28. package/dist/Engine/generic/content.types.js.map +1 -0
  29. package/dist/Engine/generic/process.types.d.ts +30 -0
  30. package/dist/Engine/generic/process.types.d.ts.map +1 -0
  31. package/dist/Engine/generic/process.types.js +7 -0
  32. package/dist/Engine/generic/process.types.js.map +1 -0
  33. package/dist/Engine/index.d.ts +4 -0
  34. package/dist/Engine/index.d.ts.map +1 -0
  35. package/dist/Engine/index.js +4 -0
  36. package/dist/Engine/index.js.map +1 -0
  37. package/dist/Entity/generic/AutotagEntity.d.ts +19 -0
  38. package/dist/Entity/generic/AutotagEntity.d.ts.map +1 -0
  39. package/dist/Entity/generic/AutotagEntity.js +127 -0
  40. package/dist/Entity/generic/AutotagEntity.js.map +1 -0
  41. package/dist/Entity/index.d.ts +2 -0
  42. package/dist/Entity/index.d.ts.map +1 -0
  43. package/dist/Entity/index.js +2 -0
  44. package/dist/Entity/index.js.map +1 -0
  45. package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts +39 -0
  46. package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts.map +1 -0
  47. package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.js +171 -0
  48. package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.js.map +1 -0
  49. package/dist/LocalFileSystem/index.d.ts +2 -0
  50. package/dist/LocalFileSystem/index.d.ts.map +1 -0
  51. package/dist/LocalFileSystem/index.js +2 -0
  52. package/dist/LocalFileSystem/index.js.map +1 -0
  53. package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts +30 -0
  54. package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts.map +1 -0
  55. package/dist/RSSFeed/generic/AutotagRSSFeed.js +177 -0
  56. package/dist/RSSFeed/generic/AutotagRSSFeed.js.map +1 -0
  57. package/dist/RSSFeed/generic/RSS.types.d.ts +13 -0
  58. package/dist/RSSFeed/generic/RSS.types.d.ts.map +1 -0
  59. package/dist/RSSFeed/generic/RSS.types.js +3 -0
  60. package/dist/RSSFeed/generic/RSS.types.js.map +1 -0
  61. package/dist/RSSFeed/index.d.ts +3 -0
  62. package/dist/RSSFeed/index.d.ts.map +1 -0
  63. package/dist/RSSFeed/index.js +3 -0
  64. package/dist/RSSFeed/index.js.map +1 -0
  65. package/dist/Websites/generic/AutotagWebsite.d.ts +85 -0
  66. package/dist/Websites/generic/AutotagWebsite.d.ts.map +1 -0
  67. package/dist/Websites/generic/AutotagWebsite.js +355 -0
  68. package/dist/Websites/generic/AutotagWebsite.js.map +1 -0
  69. package/dist/Websites/index.d.ts +2 -0
  70. package/dist/Websites/index.d.ts.map +1 -0
  71. package/dist/Websites/index.js +2 -0
  72. package/dist/Websites/index.js.map +1 -0
  73. package/dist/index.d.ts +7 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +7 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/src/CloudStorage/generic/CloudStorageBase.d.ts +3 -3
  78. package/dist/src/CloudStorage/generic/CloudStorageBase.js +2 -2
  79. package/dist/src/CloudStorage/index.d.ts +2 -2
  80. package/dist/src/CloudStorage/index.js +2 -2
  81. package/dist/src/CloudStorage/providers/AutotagAzureBlob.d.ts +2 -2
  82. package/dist/src/CloudStorage/providers/AutotagAzureBlob.js +1 -1
  83. package/dist/src/Core/index.d.ts +1 -1
  84. package/dist/src/Core/index.js +1 -1
  85. package/dist/src/Engine/generic/AutotagBaseEngine.d.ts +2 -2
  86. package/dist/src/Engine/generic/AutotagBaseEngine.js +2 -2
  87. package/dist/src/Engine/index.d.ts +3 -3
  88. package/dist/src/Engine/index.js +3 -3
  89. package/dist/src/Entity/generic/AutotagEntity.d.ts +2 -2
  90. package/dist/src/Entity/generic/AutotagEntity.js +2 -2
  91. package/dist/src/Entity/index.d.ts +1 -1
  92. package/dist/src/Entity/index.js +1 -1
  93. package/dist/src/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts +2 -2
  94. package/dist/src/LocalFileSystem/generic/AutotagLocalFileSystem.js +2 -2
  95. package/dist/src/LocalFileSystem/index.d.ts +1 -1
  96. package/dist/src/LocalFileSystem/index.js +1 -1
  97. package/dist/src/RSSFeed/generic/AutotagRSSFeed.d.ts +3 -3
  98. package/dist/src/RSSFeed/generic/AutotagRSSFeed.js +3 -3
  99. package/dist/src/RSSFeed/index.d.ts +2 -2
  100. package/dist/src/RSSFeed/index.js +2 -2
  101. package/dist/src/Websites/generic/AutotagWebsite.d.ts +2 -2
  102. package/dist/src/Websites/generic/AutotagWebsite.js +2 -2
  103. package/dist/src/Websites/index.d.ts +1 -1
  104. package/dist/src/Websites/index.js +1 -1
  105. package/dist/src/index.d.ts +6 -6
  106. package/dist/src/index.js +6 -6
  107. package/dist/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +21 -20
@@ -0,0 +1,28 @@
1
+ import { AutotagBase } from "../../Core/index.js";
2
+ import { AutotagBaseEngine } from "../../Engine/index.js";
3
+ import { ContentSourceParams } from "../../Engine/index.js";
4
+ import { UserInfo } from "@memberjunction/core";
5
+ import { ContentSourceEntity, ContentItemEntity } from "@memberjunction/core-entities";
6
+ export declare abstract class CloudStorageBase extends AutotagBase {
7
+ protected contextUser: UserInfo;
8
+ protected engine: AutotagBaseEngine;
9
+ protected contentSourceTypeID: string;
10
+ constructor();
11
+ /**
12
+ * Abstract method to be implemented in the subclass. This method authenticates the user to the cloud storage.
13
+ */
14
+ abstract Authenticate(): Promise<void>;
15
+ /**
16
+ * Abstract method to be implemented in the subclass. Given a list of content sources, this method should return a list
17
+ * of content source items that have been modified or added after the most recent process run for that content source.
18
+ * Each cloud storage provider has a different way of accessing files and checking for modified or added items.
19
+ * @param contentSources - An array of content sources to check for modified or added content source items
20
+ * @param lastRunDate - The date of the most recent process run for the content source
21
+ * @param contextUser - The user context for the autotagging process
22
+ * @returns - An array of content source items that have been modified or added after the most recent process run for that content source
23
+ */
24
+ abstract SetNewAndModifiedContentItems(contentSourceParams: ContentSourceParams, lastRunDate: Date, contextUser: UserInfo): Promise<ContentItemEntity[]>;
25
+ Autotag(contextUser: UserInfo): Promise<void>;
26
+ SetContentItemsToProcess(contentSources: ContentSourceEntity[]): Promise<ContentItemEntity[]>;
27
+ }
28
+ //# sourceMappingURL=CloudStorageBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudStorageBase.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvF,8BAAsB,gBAAiB,SAAQ,WAAW;IACtD,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACpC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAA;;IAOrC;;MAEE;aACc,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;;;;;;MAQE;aACc,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAElJ,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,wBAAwB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;CAyB7G"}
@@ -0,0 +1,38 @@
1
+ import { AutotagBase } from "../../Core/index.js";
2
+ import { AutotagBaseEngine } from "../../Engine/index.js";
3
+ import dotenv from 'dotenv';
4
+ dotenv.config({ quiet: true });
5
+ export class CloudStorageBase extends AutotagBase {
6
+ constructor() {
7
+ super();
8
+ this.engine = AutotagBaseEngine.Instance;
9
+ }
10
+ async Autotag(contextUser) {
11
+ this.contextUser = contextUser;
12
+ this.contentSourceTypeID = await this.engine.setSubclassContentSourceType('Cloud Storage', this.contextUser);
13
+ const contentSources = await this.engine.getAllContentSources(this.contextUser, this.contentSourceTypeID) || [];
14
+ const contentItemsToProcess = await this.SetContentItemsToProcess(contentSources);
15
+ await this.engine.ExtractTextAndProcessWithLLM(contentItemsToProcess, this.contextUser);
16
+ }
17
+ async SetContentItemsToProcess(contentSources) {
18
+ const contentItemsToProcess = [];
19
+ for (const contentSource of contentSources) {
20
+ await this.Authenticate();
21
+ const contentSourceParams = {
22
+ contentSourceID: contentSource.ID,
23
+ name: contentSource.Name,
24
+ ContentTypeID: contentSource.ContentTypeID,
25
+ ContentSourceTypeID: contentSource.ContentSourceTypeID,
26
+ ContentFileTypeID: contentSource.ContentFileTypeID,
27
+ URL: contentSource.URL
28
+ };
29
+ const lastRunDate = await this.engine.getContentSourceLastRunDate(contentSourceParams.contentSourceID, this.contextUser);
30
+ if (lastRunDate) {
31
+ const contentItems = await this.SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, this.contextUser);
32
+ contentItemsToProcess.push(...contentItems);
33
+ }
34
+ }
35
+ return contentItemsToProcess;
36
+ }
37
+ }
38
+ //# sourceMappingURL=CloudStorageBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CloudStorageBase.js","sourceRoot":"","sources":["../../../src/CloudStorage/generic/CloudStorageBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;AAE9B,MAAM,OAAgB,gBAAiB,SAAQ,WAAW;IAKtD;QACI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC7C,CAAC;IAkBM,KAAK,CAAC,OAAO,CAAC,WAAqB;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7G,MAAM,cAAc,GAA0B,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACvI,MAAM,qBAAqB,GAAwB,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAA;QACtG,MAAM,IAAI,CAAC,MAAM,CAAC,4BAA4B,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5F,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,cAAqC;QACvE,MAAM,qBAAqB,GAAwB,EAAE,CAAA;QAErD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YACzC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAE1B,MAAM,mBAAmB,GAAwB;gBAC7C,eAAe,EAAE,aAAa,CAAC,EAAE;gBACjC,IAAI,EAAE,aAAa,CAAC,IAAI;gBACxB,aAAa,EAAE,aAAa,CAAC,aAAa;gBAC1C,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;gBACtD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;gBAClD,GAAG,EAAE,aAAa,CAAC,GAAG;aACzB,CAAA;YAED,MAAM,WAAW,GAAS,MAAM,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAE/H,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAAC,mBAAmB,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClH,qBAAqB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAChD,CAAC;QACL,CAAC;QAED,OAAO,qBAAqB,CAAC;IACjC,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ export * from './generic/CloudStorageBase.js';
2
+ export * from './providers/AutotagAzureBlob.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/CloudStorage/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './generic/CloudStorageBase.js';
2
+ export * from './providers/AutotagAzureBlob.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/CloudStorage/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA"}
@@ -0,0 +1,20 @@
1
+ import { CloudStorageBase } from "../generic/CloudStorageBase.js";
2
+ import { UserInfo } from "@memberjunction/core";
3
+ import { ContentItemEntity } from "@memberjunction/core-entities";
4
+ import { ContentSourceParams } from "../../Engine/index.js";
5
+ export declare class AutotagAzureBlob extends CloudStorageBase {
6
+ private blobServiceClient;
7
+ private containerClient;
8
+ private connectionString;
9
+ private containerName;
10
+ constructor(connectionString: string, containerName: string);
11
+ /**
12
+ * Implemented abstract method from the CloudStorageBase class for cloud storage authentication. This method authenticates the user to the Azure Blob Storage.
13
+ * @returns void
14
+ */
15
+ Authenticate(): Promise<void>;
16
+ SetNewAndModifiedContentItems(contentSourceParams: ContentSourceParams, lastRunDate: Date, contextUser: UserInfo, prefix?: string): Promise<ContentItemEntity[]>;
17
+ extractText(file: string): Promise<string>;
18
+ streamToBuffer(readableStream: NodeJS.ReadableStream): Promise<Buffer>;
19
+ }
20
+ //# sourceMappingURL=AutotagAzureBlob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagAzureBlob.d.ts","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,qBAAa,gBAAiB,SAAQ,gBAAgB;IAClD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,aAAa,CAAS;gBAElB,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;IAO3D;;;MAGE;IACW,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwC1J,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ1C,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAYtF"}
@@ -0,0 +1,86 @@
1
+ import { CloudStorageBase } from "../generic/CloudStorageBase.js";
2
+ import { BlobServiceClient } from '@azure/storage-blob';
3
+ import dotenv from 'dotenv';
4
+ import { Metadata } from "@memberjunction/core";
5
+ import path from "path";
6
+ dotenv.config({ quiet: true });
7
+ export class AutotagAzureBlob extends CloudStorageBase {
8
+ constructor(connectionString, containerName) {
9
+ super();
10
+ this.connectionString = connectionString;
11
+ this.containerName = containerName;
12
+ }
13
+ /**
14
+ * Implemented abstract method from the CloudStorageBase class for cloud storage authentication. This method authenticates the user to the Azure Blob Storage.
15
+ * @returns void
16
+ */
17
+ async Authenticate() {
18
+ try {
19
+ this.blobServiceClient = BlobServiceClient.fromConnectionString(this.connectionString);
20
+ for await (const container of this.blobServiceClient.listContainers()) {
21
+ console.log(`Container: ${container.name}`);
22
+ }
23
+ this.containerClient = this.blobServiceClient.getContainerClient(this.containerName);
24
+ }
25
+ catch (error) {
26
+ console.error(error);
27
+ throw new Error('Error authenticating to Azure Blob Storage');
28
+ }
29
+ }
30
+ async SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, contextUser, prefix = '') {
31
+ const contentItemsToProcess = [];
32
+ for await (const blob of this.containerClient.listBlobsFlat()) {
33
+ const filePath = path.join(this.containerName, blob.name);
34
+ if (blob.properties.createdOn && blob.properties.createdOn > lastRunDate) {
35
+ // The file has been created, add a new record for this file
36
+ const md = new Metadata();
37
+ const contentItem = await md.GetEntityObject('Content Items', contextUser);
38
+ const text = await this.extractText(blob.name);
39
+ contentItem.ContentSourceID = contentSourceParams.contentSourceID;
40
+ contentItem.Name = blob.name;
41
+ contentItem.Description = await this.engine.getContentItemDescription(contentSourceParams, contextUser);
42
+ contentItem.URL = filePath;
43
+ contentItem.ContentTypeID = contentSourceParams.ContentTypeID;
44
+ contentItem.ContentSourceTypeID = contentSourceParams.ContentSourceTypeID;
45
+ contentItem.ContentFileTypeID = contentSourceParams.ContentFileTypeID;
46
+ contentItem.Checksum = await this.engine.getChecksumFromText(text);
47
+ contentItem.Text = text;
48
+ await contentItem.Save();
49
+ contentItemsToProcess.push(contentItem);
50
+ }
51
+ else if (blob.properties.lastModified && blob.properties.lastModified > lastRunDate) {
52
+ // The file has been modified, update the record for this file
53
+ const md = new Metadata();
54
+ const contentItem = await md.GetEntityObject('Content Items', contextUser);
55
+ const contentItemID = await this.engine.getContentItemIDFromURL(contentSourceParams, contextUser);
56
+ await contentItem.Load(contentItemID);
57
+ const text = await this.extractText(blob.name);
58
+ contentItem.Text = text;
59
+ contentItem.Checksum = await this.engine.getChecksumFromText(text);
60
+ contentItem.Save();
61
+ contentItemsToProcess.push(contentItem);
62
+ }
63
+ }
64
+ return contentItemsToProcess;
65
+ }
66
+ async extractText(file) {
67
+ const blockBlobClient = this.containerClient.getBlockBlobClient(file);
68
+ const downloadBlockBlobResponse = await blockBlobClient.download();
69
+ const document = await this.streamToBuffer(downloadBlockBlobResponse.readableStreamBody);
70
+ const text = await this.engine.parsePDF(document);
71
+ return text;
72
+ }
73
+ async streamToBuffer(readableStream) {
74
+ return new Promise((resolve, reject) => {
75
+ const chunks = [];
76
+ readableStream.on("data", (data) => {
77
+ chunks.push(data instanceof Buffer ? data : Buffer.from(data));
78
+ });
79
+ readableStream.on("end", () => {
80
+ resolve(Buffer.concat(chunks));
81
+ });
82
+ readableStream.on("error", reject);
83
+ });
84
+ }
85
+ }
86
+ //# sourceMappingURL=AutotagAzureBlob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagAzureBlob.js","sourceRoot":"","sources":["../../../src/CloudStorage/providers/AutotagAzureBlob.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { UserInfo } from '@memberjunction/core';
2
+ import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
3
+ export declare abstract class AutotagBase {
4
+ abstract SetContentItemsToProcess(contentSources: ContentSourceEntity[]): Promise<ContentItemEntity[]>;
5
+ abstract Autotag(contextUser: UserInfo): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=AutotagBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagBase.d.ts","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,8BAAsB,WAAW;aACb,wBAAwB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;aAC7F,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAChE"}
@@ -0,0 +1,3 @@
1
+ export class AutotagBase {
2
+ }
3
+ //# sourceMappingURL=AutotagBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagBase.js","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,WAAW;CAGhC"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagBase.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagBase.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { UserInfo } from '@memberjunction/core';
2
+ import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
3
+ import { ContentSourceParams, ContentSourceTypeParams } from './content.types.js';
4
+ import { ProcessRunParams, JsonObject, ContentItemProcessParams } from './process.types.js';
5
+ import { BaseLLM } from '@memberjunction/ai';
6
+ import { AIEngine } from '@memberjunction/aiengine';
7
+ export declare class AutotagBaseEngine extends AIEngine {
8
+ constructor();
9
+ static get Instance(): AutotagBaseEngine;
10
+ /**
11
+ * Given a list of content items, extract the text from each content item with the LLM and send off the required parameters to the LLM for tagging.
12
+ * @param contentItems
13
+ * @returns
14
+ */
15
+ ExtractTextAndProcessWithLLM(contentItems: ContentItemEntity[], contextUser: UserInfo): Promise<void>;
16
+ /**
17
+ * Given processing parameters that include the text from our content item, process the text with the LLM and extract the
18
+ * information related to that content type.
19
+ * @param params
20
+ * @returns
21
+ */
22
+ ProcessContentItemText(params: ContentItemProcessParams, contextUser: UserInfo): Promise<void>;
23
+ promptAndRetrieveResultsFromLLM(params: ContentItemProcessParams, contextUser: UserInfo): Promise<JsonObject>;
24
+ processChunkWithLLM(llm: BaseLLM, systemPrompt: string, userPrompt: string, LLMResults: JsonObject, modelAPIName: string): Promise<JsonObject>;
25
+ getLLMPrompts(params: ContentItemProcessParams, chunk: string, LLMResults: JsonObject, contextUser: UserInfo): Promise<{
26
+ systemPrompt: string;
27
+ userPrompt: string;
28
+ }>;
29
+ saveLLMResults(LLMResults: JsonObject, contextUser: UserInfo): Promise<void>;
30
+ deleteInvalidContentItem(contentItemID: string, contextUser: UserInfo): Promise<void>;
31
+ chunkExtractedText(text: string, tokenLimit: number): string[];
32
+ /**
33
+ * Given the processing results from the LLM and the Content Element Item that was saved to the database, this function saves the tags as Content Element Tags in the database.
34
+ * @param md: The metadata object to save the tags
35
+ * @param contentElementItem: The content element item that was saved to the database
36
+ * @param results: The results of the processing from the LLM
37
+ * @param contextUser: The user context to save the tags
38
+ * @returns
39
+ */
40
+ saveContentItemTags(contentItemID: string, LLMResults: JsonObject, contextUser: UserInfo): Promise<void>;
41
+ saveResultsToContentItemAttribute(LLMResults: JsonObject, contextUser: UserInfo): Promise<void>;
42
+ /***
43
+ * Retrieves all of the content sources of a given content source type data from the database.
44
+ * @param contextUser: The user context to retrieve the content source data
45
+ * @returns A list of content sources
46
+ */
47
+ getAllContentSources(contextUser: UserInfo, contentSourceTypeID: string): Promise<ContentSourceEntity[]>;
48
+ setSubclassContentSourceType(subclass: string, contextUser: UserInfo): Promise<string>;
49
+ getContentSourceParams(contentSource: ContentSourceEntity, contextUser: UserInfo): Promise<any>;
50
+ getDefaultContentSourceTypeParams(contentSourceTypeParamID: string, contextUser: UserInfo): Promise<ContentSourceTypeParams>;
51
+ castValueAsCorrectType(value: string, type: string): any;
52
+ stringToBoolean(string: string): boolean;
53
+ parseStringArray(value: string): string[];
54
+ /**
55
+ * Given a run date, this function converts the run date to the user's timezone and formats it as a date object.
56
+ * @param lastRunDate: The retrieved last run date from the database
57
+ * @returns The last run date converted to the user's timezone
58
+ */
59
+ convertLastRunDateToTimezone(lastRunDate: Date): Promise<Date>;
60
+ /**
61
+ * Retrieves the last run date of the provided content source from the database. If no previous runs exist, the epoch date is returned.
62
+ * @param contentSourceID: The ID of the content source to retrieve the last run date
63
+ * @param contextUser: The user context to retrieve the last run date
64
+ * @returns
65
+ */
66
+ getContentSourceLastRunDate(contentSourceID: string, contextUser: UserInfo): Promise<Date>;
67
+ getContentItemParams(contentTypeID: string, contextUser: UserInfo): Promise<{
68
+ modelID: string;
69
+ minTags: number;
70
+ maxTags: number;
71
+ }>;
72
+ /**
73
+ * Given a content source type ID, this function retrieves the content source type name from the database.
74
+ * @param contentSourceTypeID
75
+ * @param contextUser
76
+ * @returns
77
+ */
78
+ getContentSourceTypeName(contentSourceTypeID: string, contextUser: UserInfo): Promise<string>;
79
+ /**
80
+ * Given a content type ID, this function retrieves the content type name from the database.
81
+ * @param contentTypeID
82
+ * @param contextUser
83
+ * @returns
84
+ */
85
+ getContentTypeName(contentTypeID: string, contextUser: UserInfo): Promise<string>;
86
+ /**
87
+ * Given a content file type ID, this function retrieves the content file type name from the database.
88
+ * @param contentFileTypeID
89
+ * @param contextUser
90
+ * @returns
91
+ */
92
+ getContentFileTypeName(contentFileTypeID: string, contextUser: UserInfo): Promise<string>;
93
+ getAdditionalContentTypePrompt(contentTypeID: string, contextUser: UserInfo): Promise<string>;
94
+ /**
95
+ * Given the content source parameters, this function creates a description of the content source item.
96
+ * @param contentSourceParams: The parameters of the content source item
97
+ * @returns The description of the content source item
98
+ */
99
+ getContentItemDescription(contentSourceParams: ContentSourceParams, contextUser: any): Promise<string>;
100
+ getChecksumFromURL(url: string): Promise<string>;
101
+ getChecksumFromText(text: string): Promise<string>;
102
+ getContentItemIDFromURL(contentSourceParams: ContentSourceParams, contextUser: UserInfo): Promise<string>;
103
+ /**
104
+ * Given the results of the processing from the LLM, this function saves the details of the process run in the database.
105
+ * @param processRunParams: The parameters holding the details of the process run
106
+ * @param contextUser: The user context to save the process run
107
+ * @returns
108
+ */
109
+ saveProcessRun(processRunParams: ProcessRunParams, contextUser: UserInfo): Promise<void>;
110
+ /**
111
+ * Given a buffer of data, this function extracts text from a PDF file
112
+ * @param dataBuffer: The buffer of data to extract text from
113
+ * @returns The extracted text from the PDF file
114
+ */
115
+ parsePDF(dataBuffer: Buffer): Promise<string>;
116
+ /**
117
+ * Given a buffer of data, this function extracts text from a DOCX file
118
+ * @param dataBuffer: The buffer of data to extract text from
119
+ * @returns The extracted text from the DOCX file
120
+ */
121
+ parseDOCX(dataBuffer: Buffer): Promise<string>;
122
+ parseHTML(data: string): Promise<string>;
123
+ /**
124
+ * Given a file path, as along as its one of the supported file types, this function choses the correct parser
125
+ * and returns the extracted text.
126
+ * @param filePath - The path to the file to extract text from
127
+ * @returns - The extracted text from the file
128
+ */
129
+ parseFileFromPath(filePath: string): Promise<string>;
130
+ }
131
+ //# sourceMappingURL=AutotagBaseEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagBaseEngine.d.ts","sourceRoot":"","sources":["../../../src/Engine/generic/AutotagBaseEngine.ts"],"names":[],"mappings":"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"}