@memberjunction/content-autotagging 3.4.0 → 4.1.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.
- package/README.md +109 -213
- package/dist/CloudStorage/generic/CloudStorageBase.d.ts +28 -0
- package/dist/CloudStorage/generic/CloudStorageBase.d.ts.map +1 -0
- package/dist/{src/CloudStorage → CloudStorage}/generic/CloudStorageBase.js +6 -16
- package/dist/CloudStorage/generic/CloudStorageBase.js.map +1 -0
- package/dist/CloudStorage/index.d.ts +3 -0
- package/dist/CloudStorage/index.d.ts.map +1 -0
- package/dist/CloudStorage/index.js +3 -0
- package/dist/CloudStorage/index.js.map +1 -0
- package/dist/{src/CloudStorage → CloudStorage}/providers/AutotagAzureBlob.d.ts +6 -4
- package/dist/CloudStorage/providers/AutotagAzureBlob.d.ts.map +1 -0
- package/dist/{src/CloudStorage → CloudStorage}/providers/AutotagAzureBlob.js +17 -22
- package/dist/CloudStorage/providers/AutotagAzureBlob.js.map +1 -0
- package/dist/Core/generic/AutotagBase.d.ts.map +1 -0
- package/dist/Core/generic/AutotagBase.js +3 -0
- package/dist/Core/generic/AutotagBase.js.map +1 -0
- package/dist/Core/index.d.ts +2 -0
- package/dist/Core/index.d.ts.map +1 -0
- package/dist/Core/index.js +2 -0
- package/dist/Core/index.js.map +1 -0
- package/dist/Engine/generic/AutotagBaseEngine.d.ts +131 -0
- package/dist/Engine/generic/AutotagBaseEngine.d.ts.map +1 -0
- package/dist/{src/Engine → Engine}/generic/AutotagBaseEngine.js +133 -73
- package/dist/Engine/generic/AutotagBaseEngine.js.map +1 -0
- package/dist/Engine/generic/content.types.d.ts.map +1 -0
- package/dist/Engine/generic/content.types.js +7 -0
- package/dist/Engine/generic/content.types.js.map +1 -0
- package/dist/Engine/generic/process.types.d.ts.map +1 -0
- package/dist/Engine/generic/process.types.js +7 -0
- package/dist/Engine/generic/process.types.js.map +1 -0
- package/dist/Engine/index.d.ts +4 -0
- package/dist/Engine/index.d.ts.map +1 -0
- package/dist/Engine/index.js +4 -0
- package/dist/Engine/index.js.map +1 -0
- package/dist/{src/Entity → Entity}/generic/AutotagEntity.d.ts +2 -2
- package/dist/Entity/generic/AutotagEntity.d.ts.map +1 -0
- package/dist/{src/Entity → Entity}/generic/AutotagEntity.js +16 -19
- package/dist/Entity/generic/AutotagEntity.js.map +1 -0
- package/dist/Entity/index.d.ts +2 -0
- package/dist/Entity/index.d.ts.map +1 -0
- package/dist/Entity/index.js +2 -0
- package/dist/Entity/index.js.map +1 -0
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts +39 -0
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts.map +1 -0
- package/dist/{src/LocalFileSystem → LocalFileSystem}/generic/AutotagLocalFileSystem.js +46 -30
- package/dist/LocalFileSystem/generic/AutotagLocalFileSystem.js.map +1 -0
- package/dist/LocalFileSystem/index.d.ts +2 -0
- package/dist/LocalFileSystem/index.d.ts.map +1 -0
- package/dist/LocalFileSystem/index.js +2 -0
- package/dist/LocalFileSystem/index.js.map +1 -0
- package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts +30 -0
- package/dist/RSSFeed/generic/AutotagRSSFeed.d.ts.map +1 -0
- package/dist/{src/RSSFeed → RSSFeed}/generic/AutotagRSSFeed.js +43 -34
- package/dist/RSSFeed/generic/AutotagRSSFeed.js.map +1 -0
- package/dist/RSSFeed/generic/RSS.types.d.ts.map +1 -0
- package/dist/RSSFeed/generic/RSS.types.js +3 -0
- package/dist/RSSFeed/generic/RSS.types.js.map +1 -0
- package/dist/RSSFeed/index.d.ts +3 -0
- package/dist/RSSFeed/index.d.ts.map +1 -0
- package/dist/RSSFeed/index.js +3 -0
- package/dist/RSSFeed/index.js.map +1 -0
- package/dist/Websites/generic/AutotagWebsite.d.ts +85 -0
- package/dist/Websites/generic/AutotagWebsite.d.ts.map +1 -0
- package/dist/{src/Websites → Websites}/generic/AutotagWebsite.js +103 -72
- package/dist/Websites/generic/AutotagWebsite.js.map +1 -0
- package/dist/Websites/index.d.ts +2 -0
- package/dist/Websites/index.d.ts.map +1 -0
- package/dist/Websites/index.js +2 -0
- package/dist/Websites/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/package.json +21 -20
- package/dist/src/CloudStorage/generic/CloudStorageBase.d.ts +0 -16
- package/dist/src/CloudStorage/generic/CloudStorageBase.d.ts.map +0 -1
- package/dist/src/CloudStorage/generic/CloudStorageBase.js.map +0 -1
- package/dist/src/CloudStorage/index.d.ts +0 -3
- package/dist/src/CloudStorage/index.d.ts.map +0 -1
- package/dist/src/CloudStorage/index.js +0 -19
- package/dist/src/CloudStorage/index.js.map +0 -1
- package/dist/src/CloudStorage/providers/AutotagAzureBlob.d.ts.map +0 -1
- package/dist/src/CloudStorage/providers/AutotagAzureBlob.js.map +0 -1
- package/dist/src/Core/generic/AutotagBase.d.ts.map +0 -1
- package/dist/src/Core/generic/AutotagBase.js +0 -7
- package/dist/src/Core/generic/AutotagBase.js.map +0 -1
- package/dist/src/Core/index.d.ts +0 -2
- package/dist/src/Core/index.d.ts.map +0 -1
- package/dist/src/Core/index.js +0 -18
- package/dist/src/Core/index.js.map +0 -1
- package/dist/src/Engine/generic/AutotagBaseEngine.d.ts +0 -52
- package/dist/src/Engine/generic/AutotagBaseEngine.d.ts.map +0 -1
- package/dist/src/Engine/generic/AutotagBaseEngine.js.map +0 -1
- package/dist/src/Engine/generic/content.types.d.ts.map +0 -1
- package/dist/src/Engine/generic/content.types.js +0 -38
- package/dist/src/Engine/generic/content.types.js.map +0 -1
- package/dist/src/Engine/generic/process.types.d.ts.map +0 -1
- package/dist/src/Engine/generic/process.types.js +0 -33
- package/dist/src/Engine/generic/process.types.js.map +0 -1
- package/dist/src/Engine/index.d.ts +0 -4
- package/dist/src/Engine/index.d.ts.map +0 -1
- package/dist/src/Engine/index.js +0 -20
- package/dist/src/Engine/index.js.map +0 -1
- package/dist/src/Entity/generic/AutotagEntity.d.ts.map +0 -1
- package/dist/src/Entity/generic/AutotagEntity.js.map +0 -1
- package/dist/src/Entity/index.d.ts +0 -2
- package/dist/src/Entity/index.d.ts.map +0 -1
- package/dist/src/Entity/index.js +0 -18
- package/dist/src/Entity/index.js.map +0 -1
- package/dist/src/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts +0 -20
- package/dist/src/LocalFileSystem/generic/AutotagLocalFileSystem.d.ts.map +0 -1
- package/dist/src/LocalFileSystem/generic/AutotagLocalFileSystem.js.map +0 -1
- package/dist/src/LocalFileSystem/index.d.ts +0 -2
- package/dist/src/LocalFileSystem/index.d.ts.map +0 -1
- package/dist/src/LocalFileSystem/index.js +0 -18
- package/dist/src/LocalFileSystem/index.js.map +0 -1
- package/dist/src/RSSFeed/generic/AutotagRSSFeed.d.ts +0 -19
- package/dist/src/RSSFeed/generic/AutotagRSSFeed.d.ts.map +0 -1
- package/dist/src/RSSFeed/generic/AutotagRSSFeed.js.map +0 -1
- package/dist/src/RSSFeed/generic/RSS.types.d.ts.map +0 -1
- package/dist/src/RSSFeed/generic/RSS.types.js +0 -17
- package/dist/src/RSSFeed/generic/RSS.types.js.map +0 -1
- package/dist/src/RSSFeed/index.d.ts +0 -3
- package/dist/src/RSSFeed/index.d.ts.map +0 -1
- package/dist/src/RSSFeed/index.js +0 -19
- package/dist/src/RSSFeed/index.js.map +0 -1
- package/dist/src/Websites/generic/AutotagWebsite.d.ts +0 -33
- package/dist/src/Websites/generic/AutotagWebsite.d.ts.map +0 -1
- package/dist/src/Websites/generic/AutotagWebsite.js.map +0 -1
- package/dist/src/Websites/index.d.ts +0 -2
- package/dist/src/Websites/index.d.ts.map +0 -1
- package/dist/src/Websites/index.js +0 -18
- package/dist/src/Websites/index.js.map +0 -1
- package/dist/src/index.d.ts +0 -7
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -25
- package/dist/src/index.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src/Core → Core}/generic/AutotagBase.d.ts +0 -0
- /package/dist/{src/Engine → Engine}/generic/content.types.d.ts +0 -0
- /package/dist/{src/Engine → Engine}/generic/process.types.d.ts +0 -0
- /package/dist/{src/RSSFeed → RSSFeed}/generic/RSS.types.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,20 +1,42 @@
|
|
|
1
1
|
# @memberjunction/content-autotagging
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
AI-powered content ingestion and autotagging engine for MemberJunction. Scans content from multiple sources (local files, websites, RSS feeds, cloud storage), extracts text from documents, and uses LLMs to generate tags, summaries, and metadata attributes.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
The `@memberjunction/content-autotagging` package provides an extensible framework for ingesting content from diverse sources and leveraging AI models to extract meaningful tags, summaries, and metadata. Built on the MemberJunction platform, it helps organizations automatically organize and categorize their content
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
The `@memberjunction/content-autotagging` package provides an extensible framework for ingesting content from diverse sources and leveraging AI models to extract meaningful tags, summaries, and metadata. Built on the MemberJunction platform, it helps organizations automatically organize and categorize their content.
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
graph TD
|
|
11
|
+
A["AutotagBaseEngine<br/>(Orchestrator)"] --> B["Content Sources"]
|
|
12
|
+
B --> C["Local File System"]
|
|
13
|
+
B --> D["Websites"]
|
|
14
|
+
B --> E["RSS Feeds"]
|
|
15
|
+
B --> F["Cloud Storage<br/>(Azure Blob)"]
|
|
16
|
+
|
|
17
|
+
A --> G["Text Extraction"]
|
|
18
|
+
G --> H["PDF Parser"]
|
|
19
|
+
G --> I["Office Parser"]
|
|
20
|
+
G --> J["HTML Parser<br/>(Cheerio)"]
|
|
21
|
+
|
|
22
|
+
A --> K["LLM Processing"]
|
|
23
|
+
K --> L["Tag Generation"]
|
|
24
|
+
K --> M["Attribute Extraction"]
|
|
25
|
+
|
|
26
|
+
A --> N["Content Items<br/>(Database)"]
|
|
27
|
+
A --> O["Content Item Attributes<br/>(Database)"]
|
|
28
|
+
|
|
29
|
+
style A fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
30
|
+
style B fill:#7c5295,stroke:#563a6b,color:#fff
|
|
31
|
+
style C fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
32
|
+
style D fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
33
|
+
style E fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
34
|
+
style F fill:#2d8659,stroke:#1a5c3a,color:#fff
|
|
35
|
+
style G fill:#b8762f,stroke:#8a5722,color:#fff
|
|
36
|
+
style K fill:#7c5295,stroke:#563a6b,color:#fff
|
|
37
|
+
style N fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
38
|
+
style O fill:#2d6a9f,stroke:#1a4971,color:#fff
|
|
39
|
+
```
|
|
18
40
|
|
|
19
41
|
## Installation
|
|
20
42
|
|
|
@@ -22,39 +44,46 @@ The `@memberjunction/content-autotagging` package provides an extensible framewo
|
|
|
22
44
|
npm install @memberjunction/content-autotagging
|
|
23
45
|
```
|
|
24
46
|
|
|
25
|
-
##
|
|
47
|
+
## Content Processing Pipeline
|
|
48
|
+
|
|
49
|
+
```mermaid
|
|
50
|
+
sequenceDiagram
|
|
51
|
+
participant Source as Content Source
|
|
52
|
+
participant Engine as AutotagBaseEngine
|
|
53
|
+
participant Extract as Text Extractor
|
|
54
|
+
participant AI as LLM
|
|
55
|
+
participant DB as Database
|
|
56
|
+
|
|
57
|
+
Source->>Engine: Provide content items
|
|
58
|
+
Engine->>Engine: Change detection (checksum)
|
|
59
|
+
Engine->>Extract: Extract text (PDF/Office/HTML)
|
|
60
|
+
Extract-->>Engine: Raw text
|
|
61
|
+
Engine->>Engine: Chunk text for token limits
|
|
62
|
+
Engine->>AI: Generate tags and attributes
|
|
63
|
+
AI-->>Engine: Structured metadata
|
|
64
|
+
Engine->>DB: Save ContentItem + Attributes
|
|
65
|
+
Engine->>DB: Create ProcessRun record
|
|
66
|
+
```
|
|
26
67
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
The package follows a modular architecture with these key components:
|
|
48
|
-
|
|
49
|
-
### Core Classes
|
|
50
|
-
|
|
51
|
-
1. **AutotagBase** - Abstract base class defining the autotagging interface
|
|
52
|
-
2. **AutotagBaseEngine** - Central processing engine handling AI interactions and content processing
|
|
53
|
-
3. **Content Source Implementations**:
|
|
54
|
-
- `AutotagRSSFeed` - RSS feed processing
|
|
55
|
-
- `AutotagWebsite` - Website crawling and processing
|
|
56
|
-
- `AutotagLocalFileSystem` - Local file processing
|
|
57
|
-
- `AutotagAzureBlob` - Azure Blob Storage integration
|
|
68
|
+
## Content Sources
|
|
69
|
+
|
|
70
|
+
| Source | Class | Description |
|
|
71
|
+
|--------|-------|-------------|
|
|
72
|
+
| Local Files | `AutotagLocalFileSystem` | Scans local directories for documents |
|
|
73
|
+
| Websites | `AutotagWebsite` | Crawls web pages and extracts content |
|
|
74
|
+
| RSS Feeds | `AutotagRSSFeed` | Parses RSS/Atom feeds for articles |
|
|
75
|
+
| Azure Blob | `AutotagAzureBlob` | Processes files from Azure Blob Storage |
|
|
76
|
+
|
|
77
|
+
All sources extend `AutotagBase`, which provides the common interface for content discovery and ingestion.
|
|
78
|
+
|
|
79
|
+
## Supported File Formats
|
|
80
|
+
|
|
81
|
+
| Format | Library | Extensions |
|
|
82
|
+
|--------|---------|------------|
|
|
83
|
+
| PDF | `pdf-parse` | .pdf |
|
|
84
|
+
| Office Documents | `officeparser` | .docx, .xlsx, .pptx |
|
|
85
|
+
| HTML/Web Pages | `cheerio` | .html, .htm |
|
|
86
|
+
| Plain Text | Native | .txt, .md, .csv |
|
|
58
87
|
|
|
59
88
|
## Usage
|
|
60
89
|
|
|
@@ -62,238 +91,105 @@ The package follows a modular architecture with these key components:
|
|
|
62
91
|
|
|
63
92
|
```typescript
|
|
64
93
|
import { AutotagRSSFeed } from '@memberjunction/content-autotagging';
|
|
65
|
-
import { UserInfo } from '@memberjunction/core';
|
|
66
94
|
|
|
67
95
|
const rssTagger = new AutotagRSSFeed();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// Process all configured RSS feeds
|
|
71
|
-
await rssTagger.Autotag(userContext);
|
|
96
|
+
await rssTagger.Autotag(contextUser);
|
|
72
97
|
```
|
|
73
98
|
|
|
74
99
|
### Website Content Processing
|
|
75
100
|
|
|
76
101
|
```typescript
|
|
77
102
|
import { AutotagWebsite } from '@memberjunction/content-autotagging';
|
|
78
|
-
import { UserInfo } from '@memberjunction/core';
|
|
79
103
|
|
|
80
104
|
const websiteTagger = new AutotagWebsite();
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// Process all configured websites with crawling options
|
|
84
|
-
await websiteTagger.Autotag(userContext);
|
|
105
|
+
await websiteTagger.Autotag(contextUser);
|
|
85
106
|
```
|
|
86
107
|
|
|
87
108
|
### Local File System Processing
|
|
88
109
|
|
|
89
110
|
```typescript
|
|
90
111
|
import { AutotagLocalFileSystem } from '@memberjunction/content-autotagging';
|
|
91
|
-
import { UserInfo } from '@memberjunction/core';
|
|
92
112
|
|
|
93
113
|
const fileTagger = new AutotagLocalFileSystem();
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
// Process files from configured local directories
|
|
97
|
-
await fileTagger.Autotag(userContext);
|
|
114
|
+
await fileTagger.Autotag(contextUser);
|
|
98
115
|
```
|
|
99
116
|
|
|
100
117
|
### Azure Blob Storage Processing
|
|
101
118
|
|
|
102
119
|
```typescript
|
|
103
120
|
import { AutotagAzureBlob } from '@memberjunction/content-autotagging';
|
|
104
|
-
import { UserInfo } from '@memberjunction/core';
|
|
105
121
|
|
|
106
122
|
const blobTagger = new AutotagAzureBlob(
|
|
107
123
|
process.env.AZURE_STORAGE_CONNECTION_STRING,
|
|
108
124
|
'your-container-name'
|
|
109
125
|
);
|
|
110
|
-
|
|
111
126
|
await blobTagger.Authenticate();
|
|
112
|
-
await blobTagger.Autotag(
|
|
127
|
+
await blobTagger.Autotag(contextUser);
|
|
113
128
|
```
|
|
114
129
|
|
|
115
130
|
### Direct Engine Usage
|
|
116
131
|
|
|
117
|
-
For more control over the processing pipeline:
|
|
118
|
-
|
|
119
132
|
```typescript
|
|
120
133
|
import { AutotagBaseEngine } from '@memberjunction/content-autotagging';
|
|
121
|
-
import { ContentItemEntity } from '@memberjunction/core-entities';
|
|
122
134
|
|
|
123
135
|
const engine = AutotagBaseEngine.Instance;
|
|
124
|
-
|
|
125
|
-
// Process specific content items
|
|
126
|
-
const contentItems: ContentItemEntity[] = [ /* your content items */ ];
|
|
127
|
-
await engine.ExtractTextAndProcessWithLLM(contentItems, userContext);
|
|
136
|
+
await engine.ExtractTextAndProcessWithLLM(contentItems, contextUser);
|
|
128
137
|
```
|
|
129
138
|
|
|
130
|
-
## Content
|
|
131
|
-
|
|
132
|
-
1. **Content Source Discovery**: Retrieves configured content sources from the database
|
|
133
|
-
2. **Content Acquisition**: Fetches content from each source (RSS, web, files, etc.)
|
|
134
|
-
3. **Change Detection**: Compares checksums to identify new or modified content
|
|
135
|
-
4. **Text Extraction**: Extracts text from various formats (HTML, PDF, Office docs)
|
|
136
|
-
5. **AI Processing**:
|
|
137
|
-
- Chunks content to fit model token limits
|
|
138
|
-
- Validates content type
|
|
139
|
-
- Generates title, summary, and keywords
|
|
140
|
-
- Extracts custom attributes based on content type
|
|
141
|
-
6. **Storage**: Saves results to MemberJunction entities:
|
|
142
|
-
- Content Items
|
|
143
|
-
- Content Item Tags
|
|
144
|
-
- Content Item Attributes
|
|
145
|
-
|
|
146
|
-
## Configuration
|
|
147
|
-
|
|
148
|
-
### Content Source Configuration
|
|
149
|
-
|
|
150
|
-
Content sources are configured in the MemberJunction database with these key fields:
|
|
151
|
-
- `Name`: Display name
|
|
152
|
-
- `URL`: Source location (RSS URL, website URL, file path, etc.)
|
|
153
|
-
- `ContentTypeID`: Type of content (article, blog post, etc.)
|
|
154
|
-
- `ContentSourceTypeID`: Source type (RSS Feed, Website, etc.)
|
|
155
|
-
- `ContentFileTypeID`: Expected file format
|
|
156
|
-
|
|
157
|
-
### AI Model Configuration
|
|
158
|
-
|
|
159
|
-
The package uses AI models configured in MemberJunction. Key parameters:
|
|
160
|
-
- `modelID`: Specific AI model to use
|
|
161
|
-
- `minTags`: Minimum number of tags to generate
|
|
162
|
-
- `maxTags`: Maximum number of tags to generate
|
|
163
|
-
- Token limits are automatically handled based on model configuration
|
|
164
|
-
|
|
165
|
-
### Website Crawling Options
|
|
166
|
-
|
|
167
|
-
For website sources, these parameters can be configured:
|
|
168
|
-
- `CrawlOtherSitesInTopLevelDomain`: Whether to crawl other subdomains
|
|
169
|
-
- `CrawlSitesInLowerLevelDomain`: Whether to crawl child paths
|
|
170
|
-
- `MaxDepth`: Maximum crawl depth
|
|
171
|
-
- `RootURL`: Base URL for crawling
|
|
172
|
-
- `URLPattern`: Regex pattern for URL filtering
|
|
173
|
-
|
|
174
|
-
## Extending the Package
|
|
175
|
-
|
|
176
|
-
### Creating a Custom Content Source
|
|
139
|
+
## Creating a Custom Content Source
|
|
177
140
|
|
|
178
141
|
```typescript
|
|
179
142
|
import { AutotagBase } from '@memberjunction/content-autotagging';
|
|
180
143
|
import { RegisterClass } from '@memberjunction/global';
|
|
181
|
-
import { ContentSourceEntity, ContentItemEntity } from '@memberjunction/core-entities';
|
|
182
|
-
import { UserInfo } from '@memberjunction/core';
|
|
183
144
|
|
|
184
145
|
@RegisterClass(AutotagBase, 'AutotagCustomSource')
|
|
185
146
|
export class AutotagCustomSource extends AutotagBase {
|
|
186
|
-
public async SetContentItemsToProcess(
|
|
187
|
-
|
|
188
|
-
): Promise<ContentItemEntity[]> {
|
|
189
|
-
// Implement logic to fetch and create content items
|
|
190
|
-
const contentItems: ContentItemEntity[] = [];
|
|
191
|
-
|
|
192
|
-
// Your custom source logic here
|
|
193
|
-
|
|
147
|
+
public async SetContentItemsToProcess(contentSources) {
|
|
148
|
+
// Fetch and create content items from your custom source
|
|
194
149
|
return contentItems;
|
|
195
150
|
}
|
|
196
151
|
|
|
197
|
-
public async Autotag(contextUser
|
|
198
|
-
// Set up content source type
|
|
152
|
+
public async Autotag(contextUser) {
|
|
199
153
|
const contentSourceTypeID = await this.engine.setSubclassContentSourceType(
|
|
200
|
-
'Custom Source',
|
|
201
|
-
contextUser
|
|
154
|
+
'Custom Source', contextUser
|
|
202
155
|
);
|
|
203
|
-
|
|
204
|
-
// Get configured sources
|
|
205
156
|
const contentSources = await this.engine.getAllContentSources(
|
|
206
|
-
contextUser,
|
|
207
|
-
contentSourceTypeID
|
|
157
|
+
contextUser, contentSourceTypeID
|
|
208
158
|
);
|
|
209
|
-
|
|
210
|
-
// Process content
|
|
211
159
|
const contentItems = await this.SetContentItemsToProcess(contentSources);
|
|
212
160
|
await this.engine.ExtractTextAndProcessWithLLM(contentItems, contextUser);
|
|
213
161
|
}
|
|
214
162
|
}
|
|
215
163
|
```
|
|
216
164
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
Add custom prompts for specific content types by creating Content Type Attributes in the database. These will be automatically included in the AI processing prompts.
|
|
220
|
-
|
|
221
|
-
## API Reference
|
|
222
|
-
|
|
223
|
-
### AutotagBase (Abstract)
|
|
224
|
-
|
|
225
|
-
```typescript
|
|
226
|
-
abstract class AutotagBase {
|
|
227
|
-
abstract SetContentItemsToProcess(
|
|
228
|
-
contentSources: ContentSourceEntity[]
|
|
229
|
-
): Promise<ContentItemEntity[]>;
|
|
230
|
-
|
|
231
|
-
abstract Autotag(contextUser: UserInfo): Promise<void>;
|
|
232
|
-
}
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
### AutotagBaseEngine
|
|
236
|
-
|
|
237
|
-
```typescript
|
|
238
|
-
class AutotagBaseEngine extends AIEngine {
|
|
239
|
-
// Process content items with AI
|
|
240
|
-
async ExtractTextAndProcessWithLLM(
|
|
241
|
-
contentItems: ContentItemEntity[],
|
|
242
|
-
contextUser: UserInfo
|
|
243
|
-
): Promise<void>;
|
|
244
|
-
|
|
245
|
-
// Process individual content item text
|
|
246
|
-
async ProcessContentItemText(
|
|
247
|
-
params: ContentItemProcessParams,
|
|
248
|
-
contextUser: UserInfo
|
|
249
|
-
): Promise<void>;
|
|
250
|
-
|
|
251
|
-
// Get all content sources for a type
|
|
252
|
-
async getAllContentSources(
|
|
253
|
-
contextUser: UserInfo,
|
|
254
|
-
contentSourceTypeID: string
|
|
255
|
-
): Promise<ContentSourceEntity[]>;
|
|
256
|
-
}
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
## Environment Variables
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
# For Azure Blob Storage
|
|
263
|
-
AZURE_STORAGE_CONNECTION_STRING=your_connection_string
|
|
264
|
-
|
|
265
|
-
# AI Model API Keys (handled by @memberjunction/ai)
|
|
266
|
-
OPENAI_API_KEY=your_openai_key
|
|
267
|
-
# Other AI provider keys as needed
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
## Error Handling
|
|
165
|
+
## Database Entities
|
|
271
166
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
167
|
+
| Entity | Purpose |
|
|
168
|
+
|--------|---------|
|
|
169
|
+
| Content Sources | Configuration for each content source |
|
|
170
|
+
| Content Items | Individual pieces of content with extracted text |
|
|
171
|
+
| Content Item Tags | AI-generated tags |
|
|
172
|
+
| Content Item Attributes | Additional extracted metadata |
|
|
173
|
+
| Content Process Runs | Processing history and audit trail |
|
|
174
|
+
| Content Types | Content categorization definitions |
|
|
175
|
+
| Content Source Types | Source type definitions |
|
|
176
|
+
| Content File Types | Supported file format definitions |
|
|
278
177
|
|
|
279
|
-
##
|
|
280
|
-
|
|
281
|
-
- **Incremental Processing**: Only new/modified content is processed
|
|
282
|
-
- **Parallel Processing**: Content items can be processed in parallel
|
|
283
|
-
- **Chunking**: Large documents are automatically chunked for AI processing
|
|
284
|
-
- **Caching**: Processed content checksums prevent reprocessing
|
|
285
|
-
|
|
286
|
-
## Database Schema
|
|
178
|
+
## Dependencies
|
|
287
179
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
180
|
+
| Package | Purpose |
|
|
181
|
+
|---------|---------|
|
|
182
|
+
| `@memberjunction/core` | Entity system and metadata |
|
|
183
|
+
| `@memberjunction/global` | Class registration |
|
|
184
|
+
| `@memberjunction/core-entities` | Content entity types |
|
|
185
|
+
| `@memberjunction/ai` | LLM integration |
|
|
186
|
+
| `@memberjunction/aiengine` | AI Engine base class |
|
|
187
|
+
| `pdf-parse` | PDF text extraction |
|
|
188
|
+
| `officeparser` | Office document parsing |
|
|
189
|
+
| `cheerio` | HTML parsing |
|
|
190
|
+
| `axios` | HTTP requests for web content |
|
|
191
|
+
| `rss-parser` | RSS feed parsing |
|
|
296
192
|
|
|
297
193
|
## License
|
|
298
194
|
|
|
299
|
-
ISC
|
|
195
|
+
ISC
|
|
@@ -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"}
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
exports.CloudStorageBase = void 0;
|
|
7
|
-
const Core_1 = require("../../Core");
|
|
8
|
-
const Engine_1 = require("../../Engine");
|
|
9
|
-
const dotenv_1 = __importDefault(require("dotenv"));
|
|
10
|
-
dotenv_1.default.config();
|
|
11
|
-
class CloudStorageBase extends Core_1.AutotagBase {
|
|
12
|
-
contextUser;
|
|
13
|
-
engine;
|
|
14
|
-
contentSourceTypeID;
|
|
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 {
|
|
15
6
|
constructor() {
|
|
16
7
|
super();
|
|
17
|
-
this.engine =
|
|
8
|
+
this.engine = AutotagBaseEngine.Instance;
|
|
18
9
|
}
|
|
19
10
|
async Autotag(contextUser) {
|
|
20
11
|
this.contextUser = contextUser;
|
|
@@ -44,5 +35,4 @@ class CloudStorageBase extends Core_1.AutotagBase {
|
|
|
44
35
|
return contentItemsToProcess;
|
|
45
36
|
}
|
|
46
37
|
}
|
|
47
|
-
exports.CloudStorageBase = CloudStorageBase;
|
|
48
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/CloudStorage/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
/// <reference types="node" />
|
|
3
|
-
import { CloudStorageBase } from "../generic/CloudStorageBase";
|
|
1
|
+
import { CloudStorageBase } from "../generic/CloudStorageBase.js";
|
|
4
2
|
import { UserInfo } from "@memberjunction/core";
|
|
5
3
|
import { ContentItemEntity } from "@memberjunction/core-entities";
|
|
6
|
-
import { ContentSourceParams } from "../../Engine";
|
|
4
|
+
import { ContentSourceParams } from "../../Engine/index.js";
|
|
7
5
|
export declare class AutotagAzureBlob extends CloudStorageBase {
|
|
8
6
|
private blobServiceClient;
|
|
9
7
|
private containerClient;
|
|
10
8
|
private connectionString;
|
|
11
9
|
private containerName;
|
|
12
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
|
+
*/
|
|
13
15
|
Authenticate(): Promise<void>;
|
|
14
16
|
SetNewAndModifiedContentItems(contentSourceParams: ContentSourceParams, lastRunDate: Date, contextUser: UserInfo, prefix?: string): Promise<ContentItemEntity[]>;
|
|
15
17
|
extractText(file: string): Promise<string>;
|
|
@@ -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"}
|
|
@@ -1,28 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const storage_blob_1 = require("@azure/storage-blob");
|
|
9
|
-
const dotenv_1 = __importDefault(require("dotenv"));
|
|
10
|
-
const core_1 = require("@memberjunction/core");
|
|
11
|
-
const path_1 = __importDefault(require("path"));
|
|
12
|
-
dotenv_1.default.config();
|
|
13
|
-
class AutotagAzureBlob extends CloudStorageBase_1.CloudStorageBase {
|
|
14
|
-
blobServiceClient;
|
|
15
|
-
containerClient;
|
|
16
|
-
connectionString;
|
|
17
|
-
containerName;
|
|
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 {
|
|
18
8
|
constructor(connectionString, containerName) {
|
|
19
9
|
super();
|
|
20
10
|
this.connectionString = connectionString;
|
|
21
11
|
this.containerName = containerName;
|
|
22
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
|
+
*/
|
|
23
17
|
async Authenticate() {
|
|
24
18
|
try {
|
|
25
|
-
this.blobServiceClient =
|
|
19
|
+
this.blobServiceClient = BlobServiceClient.fromConnectionString(this.connectionString);
|
|
26
20
|
for await (const container of this.blobServiceClient.listContainers()) {
|
|
27
21
|
console.log(`Container: ${container.name}`);
|
|
28
22
|
}
|
|
@@ -36,9 +30,10 @@ class AutotagAzureBlob extends CloudStorageBase_1.CloudStorageBase {
|
|
|
36
30
|
async SetNewAndModifiedContentItems(contentSourceParams, lastRunDate, contextUser, prefix = '') {
|
|
37
31
|
const contentItemsToProcess = [];
|
|
38
32
|
for await (const blob of this.containerClient.listBlobsFlat()) {
|
|
39
|
-
const filePath =
|
|
33
|
+
const filePath = path.join(this.containerName, blob.name);
|
|
40
34
|
if (blob.properties.createdOn && blob.properties.createdOn > lastRunDate) {
|
|
41
|
-
|
|
35
|
+
// The file has been created, add a new record for this file
|
|
36
|
+
const md = new Metadata();
|
|
42
37
|
const contentItem = await md.GetEntityObject('Content Items', contextUser);
|
|
43
38
|
const text = await this.extractText(blob.name);
|
|
44
39
|
contentItem.ContentSourceID = contentSourceParams.contentSourceID;
|
|
@@ -54,7 +49,8 @@ class AutotagAzureBlob extends CloudStorageBase_1.CloudStorageBase {
|
|
|
54
49
|
contentItemsToProcess.push(contentItem);
|
|
55
50
|
}
|
|
56
51
|
else if (blob.properties.lastModified && blob.properties.lastModified > lastRunDate) {
|
|
57
|
-
|
|
52
|
+
// The file has been modified, update the record for this file
|
|
53
|
+
const md = new Metadata();
|
|
58
54
|
const contentItem = await md.GetEntityObject('Content Items', contextUser);
|
|
59
55
|
const contentItemID = await this.engine.getContentItemIDFromURL(contentSourceParams, contextUser);
|
|
60
56
|
await contentItem.Load(contentItemID);
|
|
@@ -87,5 +83,4 @@ class AutotagAzureBlob extends CloudStorageBase_1.CloudStorageBase {
|
|
|
87
83
|
});
|
|
88
84
|
}
|
|
89
85
|
}
|
|
90
|
-
exports.AutotagAzureBlob = AutotagAzureBlob;
|
|
91
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"AutotagBase.js","sourceRoot":"","sources":["../../../src/Core/generic/AutotagBase.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,WAAW;CAGhC"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Core/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|