@memberjunction/content-autotagging 3.3.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,32 @@
1
+ export declare class ContentItemParams {
2
+ contentSourceID: string;
3
+ name: string;
4
+ description?: string;
5
+ ContentTypeID: string;
6
+ ContentSourceTypeID: string;
7
+ ContentFileTypeID: string;
8
+ URL: string;
9
+ AIModelID?: string;
10
+ minTags?: number;
11
+ maxTags?: number;
12
+ }
13
+ export declare class ContentSourceParams {
14
+ contentSourceID: string;
15
+ name?: string;
16
+ description?: string;
17
+ ContentTypeID: string;
18
+ ContentSourceTypeID: string;
19
+ ContentFileTypeID: string;
20
+ URL: string;
21
+ AIModelID?: string;
22
+ minTags?: number;
23
+ maxTags?: number;
24
+ }
25
+ export declare class ContentSourceTypeParams {
26
+ contentSourceID: string;
27
+ contentSourceTypeID: string;
28
+ name: string;
29
+ value: string;
30
+ type: string;
31
+ }
32
+ //# sourceMappingURL=content.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.types.d.ts","sourceRoot":"","sources":["../../../src/Engine/generic/content.types.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,mBAAmB;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,uBAAuB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,7 @@
1
+ export class ContentItemParams {
2
+ }
3
+ export class ContentSourceParams {
4
+ }
5
+ export class ContentSourceTypeParams {
6
+ }
7
+ //# sourceMappingURL=content.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.types.js","sourceRoot":"","sources":["../../../src/Engine/generic/content.types.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;CAW7B;AAED,MAAM,OAAO,mBAAmB;CAW/B;AAED,MAAM,OAAO,uBAAuB;CAMnC"}
@@ -0,0 +1,30 @@
1
+ export declare class ProcessRunParams {
2
+ sourceID: string;
3
+ startTime: Date;
4
+ endTime: Date;
5
+ numItemsProcessed: number;
6
+ }
7
+ export declare class ContentItemProcessParams {
8
+ text: string;
9
+ modelID: string;
10
+ minTags: number;
11
+ maxTags: number;
12
+ contentItemID: string;
13
+ contentTypeID: string;
14
+ contentFileTypeID: string;
15
+ contentSourceTypeID: string;
16
+ }
17
+ export declare class ContentItemProcessResults {
18
+ title: string;
19
+ author: string[];
20
+ publicationDate: Date;
21
+ keywords: string[];
22
+ content_text: string;
23
+ processStartTime: Date;
24
+ processEndTime: Date;
25
+ contentItemID: string;
26
+ }
27
+ export interface JsonObject {
28
+ [key: string]: any;
29
+ }
30
+ //# sourceMappingURL=process.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.types.d.ts","sourceRoot":"","sources":["../../../src/Engine/generic/process.types.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,wBAAwB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,yBAAyB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,EAAE,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,IAAI,CAAC;IACvB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACtB"}
@@ -0,0 +1,7 @@
1
+ export class ProcessRunParams {
2
+ }
3
+ export class ContentItemProcessParams {
4
+ }
5
+ export class ContentItemProcessResults {
6
+ }
7
+ //# sourceMappingURL=process.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.types.js","sourceRoot":"","sources":["../../../src/Engine/generic/process.types.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAgB;CAK5B;AAED,MAAM,OAAO,wBAAwB;CASpC;AAED,MAAM,OAAO,yBAAyB;CASrC"}
@@ -0,0 +1,4 @@
1
+ export * from './generic/AutotagBaseEngine.js';
2
+ export * from './generic/content.types.js';
3
+ export * from './generic/process.types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './generic/AutotagBaseEngine.js';
2
+ export * from './generic/content.types.js';
3
+ export * from './generic/process.types.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { AutotagBase } from "../../Core/index.js";
2
+ import { ContentSourceParams } from "../../Engine/index.js";
3
+ import { UserInfo, BaseEntity } from "@memberjunction/core";
4
+ import { ContentSourceEntity, ContentItemEntity } from "@memberjunction/core-entities";
5
+ export declare class AutotagEntity extends AutotagBase {
6
+ private contextUser;
7
+ private engine;
8
+ protected contentSourceTypeID: string;
9
+ private EntityName;
10
+ private EntityFields;
11
+ constructor();
12
+ Autotag(contextUser: UserInfo): Promise<void>;
13
+ SetContentItemsToProcess(contentSources: ContentSourceEntity[]): Promise<ContentItemEntity[]>;
14
+ getNewOrModifiedContentItems(contentSourceParams: ContentSourceParams, contextUser: UserInfo): Promise<ContentItemEntity[]>;
15
+ setContentItemsFromEntityResults(results: BaseEntity[], contentSourceParams: ContentSourceParams, lastRunDate: Date): Promise<ContentItemEntity[]>;
16
+ setNewContentItem(item: BaseEntity, contentSourceParams: ContentSourceParams): Promise<ContentItemEntity>;
17
+ getTextFromEntityResult(result: BaseEntity): string;
18
+ }
19
+ //# sourceMappingURL=AutotagEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagEntity.d.ts","sourceRoot":"","sources":["../../../src/Entity/generic/AutotagEntity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAqB,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvF,qBACa,aAAc,SAAQ,WAAW;IAC1C,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACrC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,YAAY,CAAU;;IAMjB,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C,wBAAwB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAsC7F,4BAA4B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAwB3H,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAelJ,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuB/G,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM;CAU7D"}
@@ -0,0 +1,127 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { RegisterClass } from "@memberjunction/global";
11
+ import { AutotagBase } from "../../Core/index.js";
12
+ import { AutotagBaseEngine } from "../../Engine/index.js";
13
+ import { Metadata, RunView } from "@memberjunction/core";
14
+ let AutotagEntity = class AutotagEntity extends AutotagBase {
15
+ constructor() {
16
+ super();
17
+ this.engine = AutotagBaseEngine.Instance;
18
+ }
19
+ async Autotag(contextUser) {
20
+ this.contextUser = contextUser;
21
+ this.contentSourceTypeID = await this.engine.setSubclassContentSourceType('Entity', this.contextUser);
22
+ const contentSources = await this.engine.getAllContentSources(this.contextUser, this.contentSourceTypeID) || [];
23
+ const contentItemsToProcess = await this.SetContentItemsToProcess(contentSources);
24
+ await this.engine.ExtractTextAndProcessWithLLM(contentItemsToProcess, this.contextUser);
25
+ }
26
+ async SetContentItemsToProcess(contentSources) {
27
+ const contentItemsToProcess = [];
28
+ for (const contentSource of contentSources) {
29
+ // If content source parameters were provided, set them. Otherwise, use the default values.
30
+ const contentSourceParamsMap = await this.engine.getContentSourceParams(contentSource, this.contextUser);
31
+ if (contentSourceParamsMap) {
32
+ // Override defaults with content source specific params
33
+ contentSourceParamsMap.forEach((value, key) => {
34
+ if (key in this) {
35
+ this[key] = value;
36
+ }
37
+ });
38
+ }
39
+ const contentSourceParams = {
40
+ contentSourceID: contentSource.ID,
41
+ name: contentSource.Name,
42
+ ContentTypeID: contentSource.ContentTypeID,
43
+ ContentFileTypeID: contentSource.ContentFileTypeID,
44
+ ContentSourceTypeID: contentSource.ContentSourceTypeID,
45
+ URL: contentSource.URL
46
+ };
47
+ const contentItems = await this.getNewOrModifiedContentItems(contentSourceParams, this.contextUser);
48
+ if (contentItems && contentItems.length > 0) {
49
+ contentItemsToProcess.push(...contentItems);
50
+ }
51
+ else {
52
+ // No content items found to process
53
+ console.log(`No content items found to process for content source: ${contentSource.Name}`);
54
+ }
55
+ }
56
+ return contentItemsToProcess;
57
+ }
58
+ async getNewOrModifiedContentItems(contentSourceParams, contextUser) {
59
+ const lastRunDate = await this.engine.getContentSourceLastRunDate(contentSourceParams.contentSourceID, contextUser);
60
+ const lastRunDateISOString = lastRunDate.toISOString();
61
+ const rv = new RunView();
62
+ // Get all entities that have been added/updated since the last run date
63
+ const results = await rv.RunView({
64
+ EntityName: this.EntityName,
65
+ Fields: this.EntityFields,
66
+ ExtraFilter: `__mj_UpdatedAt > '${lastRunDateISOString}'`,
67
+ ResultType: 'entity_object'
68
+ }, contextUser);
69
+ const entityResults = results.Results;
70
+ if (results.Results && results.Results.length > 0) {
71
+ const contentItems = await this.setContentItemsFromEntityResults(entityResults, contentSourceParams, lastRunDate);
72
+ return contentItems;
73
+ }
74
+ else {
75
+ return [];
76
+ }
77
+ }
78
+ async setContentItemsFromEntityResults(results, contentSourceParams, lastRunDate) {
79
+ const contentItems = [];
80
+ for (const result of results) {
81
+ const lastUpdatedAt = result.Get('__mj_UpdatedAt');
82
+ if (lastUpdatedAt > lastRunDate) {
83
+ const contentItem = await this.setNewContentItem(result, contentSourceParams);
84
+ if (contentItem) {
85
+ contentItems.push(contentItem);
86
+ }
87
+ }
88
+ }
89
+ return contentItems;
90
+ }
91
+ async setNewContentItem(item, contentSourceParams) {
92
+ const md = new Metadata();
93
+ const text = this.getTextFromEntityResult(item);
94
+ const contentItem = await md.GetEntityObject('Content Items', this.contextUser);
95
+ contentItem.NewRecord();
96
+ contentItem.ContentSourceID = contentSourceParams.contentSourceID;
97
+ contentItem.Name = contentSourceParams.name;
98
+ contentItem.Description = await this.engine.getContentItemDescription(contentSourceParams, this.contextUser);
99
+ contentItem.ContentTypeID = contentSourceParams.ContentTypeID;
100
+ contentItem.ContentFileTypeID = contentSourceParams.ContentFileTypeID;
101
+ contentItem.ContentSourceTypeID = contentSourceParams.ContentSourceTypeID;
102
+ contentItem.Text = text;
103
+ contentItem.Checksum = await this.engine.getChecksumFromText(text);
104
+ contentItem.URL = contentSourceParams.URL;
105
+ if (await contentItem.Save()) {
106
+ return contentItem;
107
+ }
108
+ else {
109
+ throw new Error('Failed to save content item');
110
+ }
111
+ }
112
+ getTextFromEntityResult(result) {
113
+ let text = '';
114
+ // For every field in the field list, add the field's name and value to the text in the format FieldName: FieldValue
115
+ for (const field of this.EntityFields) {
116
+ const fieldVal = result.Get(field);
117
+ text += `${field}: ${fieldVal}\n`;
118
+ }
119
+ return text;
120
+ }
121
+ };
122
+ AutotagEntity = __decorate([
123
+ RegisterClass(AutotagBase, 'AutotagEntity'),
124
+ __metadata("design:paramtypes", [])
125
+ ], AutotagEntity);
126
+ export { AutotagEntity };
127
+ //# sourceMappingURL=AutotagEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagEntity.js","sourceRoot":"","sources":["../../../src/Entity/generic/AutotagEntity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagEntity.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagEntity.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { AutotagBase } from "../../Core/index.js";
2
+ import { ContentSourceParams } from "../../Engine/index.js";
3
+ import { UserInfo } from "@memberjunction/core";
4
+ import { ContentSourceEntity, ContentItemEntity } from "@memberjunction/core-entities";
5
+ import { OpenAI } from "openai";
6
+ export declare class AutotagLocalFileSystem extends AutotagBase {
7
+ private contextUser;
8
+ private engine;
9
+ protected contentSourceTypeID: string;
10
+ static _openAI: OpenAI;
11
+ constructor();
12
+ getContextUser(): UserInfo | null;
13
+ /**
14
+ * Implemented abstract method from the AutotagBase class. that runs the entire autotagging process. This method is the entry point for the autotagging process.
15
+ * It initializes the connection, retrieves the content sources corresponding to the content source type, sets the content items that we want to process,
16
+ * extracts and processes the text, and sets the results in the database.
17
+ */
18
+ Autotag(contextUser: UserInfo): Promise<void>;
19
+ /**
20
+ * Implemented abstract method from the AutotagBase class. Given a list of content sources, this method should return a list
21
+ * of content source items that have been modified or added after the most recent process run for that content source.
22
+ * @param contentSources - An array of content sources to check for modified or added content source items
23
+ * @returns - An array of content source items that have been modified or added after the most recent process run for that content source
24
+ */
25
+ SetContentItemsToProcess(contentSources: ContentSourceEntity[]): Promise<ContentItemEntity[]>;
26
+ setContentSourceParams(contentSource: ContentSourceEntity): Promise<ContentSourceParams>;
27
+ /**
28
+ * Given a content source and last run date, recursively traverse through the directory and return a
29
+ * list of content source items that have been modified or added after the last run date.
30
+ * @param contentSource
31
+ * @param lastRunDate
32
+ * @param contextUser
33
+ * @returns
34
+ */
35
+ SetNewAndModifiedContentItems(contentSourceParams: ContentSourceParams, lastRunDate: Date, contextUser: UserInfo): Promise<ContentItemEntity[]>;
36
+ setAddedContentItem(filePath: string, contentSourceParams: ContentSourceParams): Promise<ContentItemEntity>;
37
+ setModifiedContentItem(filePath: string, contentSourceParams: ContentSourceParams): Promise<ContentItemEntity>;
38
+ }
39
+ //# sourceMappingURL=AutotagLocalFileSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagLocalFileSystem.d.ts","sourceRoot":"","sources":["../../../src/LocalFileSystem/generic/AutotagLocalFileSystem.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,qBACa,sBAAuB,SAAQ,WAAW;IACnD,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAA;IACrC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC;;IAOhB,cAAc,IAAI,QAAQ,GAAG,IAAI;IAIxC;;;;OAIG;IACU,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D;;;;;MAKE;IACW,wBAAwB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA+B7F,sBAAsB,CAAC,aAAa,EAAE,mBAAmB;IAwBtE;;;;;;;OAOG;IACU,6BAA6B,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA+B/I,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuB3G,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAgB9H"}
@@ -0,0 +1,171 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { RegisterClass } from "@memberjunction/global";
11
+ import fs from 'fs';
12
+ import { AutotagBase } from "../../Core/index.js";
13
+ import { AutotagBaseEngine } from "../../Engine/index.js";
14
+ import { Metadata } from "@memberjunction/core";
15
+ import path from 'path';
16
+ import dotenv from 'dotenv';
17
+ dotenv.config({ quiet: true });
18
+ let AutotagLocalFileSystem = class AutotagLocalFileSystem extends AutotagBase {
19
+ constructor() {
20
+ super();
21
+ this.engine = AutotagBaseEngine.Instance;
22
+ }
23
+ getContextUser() {
24
+ return this.contextUser;
25
+ }
26
+ /**
27
+ * Implemented abstract method from the AutotagBase class. that runs the entire autotagging process. This method is the entry point for the autotagging process.
28
+ * It initializes the connection, retrieves the content sources corresponding to the content source type, sets the content items that we want to process,
29
+ * extracts and processes the text, and sets the results in the database.
30
+ */
31
+ async Autotag(contextUser) {
32
+ this.contextUser = contextUser;
33
+ this.contentSourceTypeID = await this.engine.setSubclassContentSourceType('Local File System', this.contextUser);
34
+ const contentSources = await this.engine.getAllContentSources(this.contextUser, this.contentSourceTypeID) || [];
35
+ const contentItemsToProcess = await this.SetContentItemsToProcess(contentSources);
36
+ await this.engine.ExtractTextAndProcessWithLLM(contentItemsToProcess, this.contextUser);
37
+ }
38
+ /**
39
+ * Implemented abstract method from the AutotagBase class. Given a list of content sources, this method should return a list
40
+ * of content source items that have been modified or added after the most recent process run for that content source.
41
+ * @param contentSources - An array of content sources to check for modified or added content source items
42
+ * @returns - An array of content source items that have been modified or added after the most recent process run for that content source
43
+ */
44
+ async SetContentItemsToProcess(contentSources) {
45
+ const contentItemsToProcess = [];
46
+ for (const contentSource of contentSources) {
47
+ // First check that the directory exists
48
+ if (fs.existsSync(contentSource.URL)) {
49
+ const contentSourceParams = await this.setContentSourceParams(contentSource);
50
+ const lastRunDate = await this.engine.getContentSourceLastRunDate(contentSourceParams.contentSourceID, this.contextUser);
51
+ // Traverse through all the files in the directory
52
+ if (lastRunDate) {
53
+ const contentItems = await this.SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, this.contextUser);
54
+ if (contentItems && contentItems.length > 0) {
55
+ contentItemsToProcess.push(...contentItems);
56
+ }
57
+ else {
58
+ // No content items found to process
59
+ console.log(`No content items found to process for content source: ${contentSource.Get('Name')}`);
60
+ }
61
+ }
62
+ else {
63
+ throw new Error('Invalid last run date');
64
+ }
65
+ }
66
+ else {
67
+ console.log(`Invalid Content Source ${contentSource.Name}`);
68
+ }
69
+ }
70
+ return contentItemsToProcess;
71
+ }
72
+ async setContentSourceParams(contentSource) {
73
+ // If content source parameters were provided, set them. Otherwise, use the default values.
74
+ const contentSourceParamsMap = await this.engine.getContentSourceParams(contentSource, this.contextUser);
75
+ if (contentSourceParamsMap) {
76
+ // Override defaults with content source specific params
77
+ contentSourceParamsMap.forEach((value, key) => {
78
+ if (key in this) {
79
+ this[key] = value;
80
+ }
81
+ });
82
+ }
83
+ const contentSourceParams = {
84
+ contentSourceID: contentSource.ID,
85
+ name: contentSource.Name,
86
+ ContentTypeID: contentSource.ContentTypeID,
87
+ ContentSourceTypeID: contentSource.ContentSourceTypeID,
88
+ ContentFileTypeID: contentSource.ContentFileTypeID,
89
+ URL: contentSource.URL
90
+ };
91
+ return contentSourceParams;
92
+ }
93
+ /**
94
+ * Given a content source and last run date, recursively traverse through the directory and return a
95
+ * list of content source items that have been modified or added after the last run date.
96
+ * @param contentSource
97
+ * @param lastRunDate
98
+ * @param contextUser
99
+ * @returns
100
+ */
101
+ async SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, contextUser) {
102
+ const contentItems = [];
103
+ let contentSourcePath = contentSourceParams.URL;
104
+ const filesAndDirs = fs.readdirSync(contentSourcePath);
105
+ for (const file of filesAndDirs) {
106
+ const filePath = path.join(contentSourcePath, file);
107
+ const stats = fs.statSync(filePath);
108
+ if (stats.isDirectory()) {
109
+ contentSourceParams.URL = filePath;
110
+ await this.SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, contextUser);
111
+ }
112
+ else if (stats.isFile()) {
113
+ const modifiedDate = new Date(stats.mtime.toUTCString());
114
+ const changedDate = new Date(stats.ctime.toUTCString());
115
+ if (changedDate > lastRunDate) {
116
+ // The file has been added, create a new record for this file
117
+ const contentItem = await this.setAddedContentItem(filePath, contentSourceParams);
118
+ contentItems.push(contentItem); // Content item was added, add to list
119
+ }
120
+ else if (modifiedDate > lastRunDate) {
121
+ // The file's contents has been, update the record for this file
122
+ const contentItem = await this.setModifiedContentItem(filePath, contentSourceParams);
123
+ contentItems.push(contentItem);
124
+ }
125
+ }
126
+ }
127
+ return contentItems;
128
+ }
129
+ async setAddedContentItem(filePath, contentSourceParams) {
130
+ const md = new Metadata();
131
+ const text = await this.engine.parseFileFromPath(filePath);
132
+ const contentItem = await md.GetEntityObject('Content Items', this.contextUser);
133
+ contentItem.NewRecord();
134
+ contentItem.ContentSourceID = contentSourceParams.contentSourceID;
135
+ contentItem.Name = contentSourceParams.name;
136
+ contentItem.Description = await this.engine.getContentItemDescription(contentSourceParams, this.contextUser);
137
+ contentItem.ContentTypeID = contentSourceParams.ContentTypeID;
138
+ contentItem.ContentFileTypeID = contentSourceParams.ContentFileTypeID;
139
+ contentItem.ContentSourceTypeID = contentSourceParams.ContentSourceTypeID;
140
+ contentItem.Checksum = await this.engine.getChecksumFromText(text);
141
+ contentItem.URL = contentSourceParams.URL;
142
+ contentItem.Text = text;
143
+ if (await contentItem.Save()) {
144
+ return contentItem;
145
+ }
146
+ else {
147
+ throw new Error('Failed to save content item');
148
+ }
149
+ }
150
+ async setModifiedContentItem(filePath, contentSourceParams) {
151
+ const md = new Metadata();
152
+ const contentItem = await md.GetEntityObject('Content Items', this.contextUser);
153
+ const contentItemID = await this.engine.getContentItemIDFromURL(contentSourceParams, this.contextUser);
154
+ await contentItem.Load(contentItemID);
155
+ const text = await this.engine.parseFileFromPath(filePath);
156
+ contentItem.Text = text;
157
+ contentItem.Checksum = await this.engine.getChecksumFromText(text);
158
+ if (await contentItem.Save()) {
159
+ return contentItem;
160
+ }
161
+ else {
162
+ throw new Error('Failed to save content item');
163
+ }
164
+ }
165
+ };
166
+ AutotagLocalFileSystem = __decorate([
167
+ RegisterClass(AutotagBase, 'AutotagLocalFileSystem'),
168
+ __metadata("design:paramtypes", [])
169
+ ], AutotagLocalFileSystem);
170
+ export { AutotagLocalFileSystem };
171
+ //# sourceMappingURL=AutotagLocalFileSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagLocalFileSystem.js","sourceRoot":"","sources":["../../../src/LocalFileSystem/generic/AutotagLocalFileSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagLocalFileSystem.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/LocalFileSystem/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './generic/AutotagLocalFileSystem.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/LocalFileSystem/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { UserInfo } from '@memberjunction/core';
2
+ import { AutotagBase } from "../../Core/index.js";
3
+ import { ContentSourceParams } from "../../Engine/index.js";
4
+ import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
5
+ import { RSSItem } from './RSS.types.js';
6
+ export declare class AutotagRSSFeed extends AutotagBase {
7
+ private contextUser;
8
+ private engine;
9
+ protected contentSourceTypeID: string;
10
+ constructor();
11
+ protected getContextUser(): UserInfo;
12
+ /**
13
+ * Implemented abstract method from the AutotagBase class. that runs the entire autotagging process. This method is the entry point for the autotagging process.
14
+ * It initializes the connection, retrieves the content sources corresponding to the content source type, sets the content items that we want to process,
15
+ * extracts and processes the text, and sets the results in the database.
16
+ */
17
+ Autotag(contextUser: UserInfo): Promise<void>;
18
+ /**
19
+ * Implemented abstract method from the AutotagBase class. Given a list of content sources, this method should return a list
20
+ * of content source items that have been modified or added after the most recent process run for that content source.
21
+ * @param contentSources - An array of content sources to check for modified or added content source items
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
+ SetContentItemsToProcess(contentSources: ContentSourceEntity[]): Promise<ContentItemEntity[]>;
25
+ SetNewAndModifiedContentItems(allRSSItems: RSSItem[], contentSourceParams: ContentSourceParams): Promise<ContentItemEntity[]>;
26
+ parseRSSFeed(url: string): Promise<RSSItem[]>;
27
+ protected urlIsValid(url: string): Promise<boolean>;
28
+ getChecksumFromRSSItem(RSSContentItem: RSSItem, contextUser: UserInfo): Promise<string>;
29
+ }
30
+ //# sourceMappingURL=AutotagRSSFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutotagRSSFeed.d.ts","sourceRoot":"","sources":["../../../src/RSSFeed/generic/AutotagRSSFeed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAqB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAOtC,qBACa,cAAe,SAAQ,WAAW;IAC3C,OAAO,CAAC,WAAW,CAAW;IAC9B,OAAO,CAAC,MAAM,CAAoB;IAClC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAA;;IAOrC,SAAS,CAAC,cAAc,IAAI,QAAQ;IAIpC;;;;OAIG;IACU,OAAO,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1D;;;;;OAKG;IACU,wBAAwB,CAAC,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAuC7F,6BAA6B,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,mBAAmB,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAkD7H,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;cAqC1C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5C,sBAAsB,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;CAIvG"}