@heripo/research-radar 3.3.11 → 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.
- package/README.md +1 -1
- package/dist/index.cjs +4 -4
- package/dist/index.d.ts +3 -3
- package/dist/index.js +4 -4
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -144,7 +144,7 @@ Uses the **Provider-Service pattern** from `@llm-newsletter-kit/core`. See [core
|
|
|
144
144
|
|
|
145
145
|
**Parsers** (`src/parsers/`): Custom extractors per organization
|
|
146
146
|
|
|
147
|
-
**Templates** (`src/templates/`): `newsletter-html.ts` (responsive email with light/dark mode), `welcome-html.ts` (`generateWelcomeHTML()`), `shared.ts` (shared HTML components)
|
|
147
|
+
**Templates** (`src/templates/`): `newsletter-html.ts` (responsive email with light/dark mode), `welcome-html.ts` (`generateWelcomeHTML()` async), `shared.ts` (shared HTML components)
|
|
148
148
|
|
|
149
149
|
## Development commands
|
|
150
150
|
|
package/dist/index.cjs
CHANGED
|
@@ -9,7 +9,6 @@ var TurndownService = require('turndown');
|
|
|
9
9
|
var jsdom = require('jsdom');
|
|
10
10
|
var safeMarkdown2Html = require('safe-markdown2html');
|
|
11
11
|
var DOMPurify = require('dompurify');
|
|
12
|
-
var juice = require('juice');
|
|
13
12
|
|
|
14
13
|
function _interopNamespaceDefault(e) {
|
|
15
14
|
var n = Object.create(null);
|
|
@@ -2855,19 +2854,20 @@ async function generateNewsletter(dependencies) {
|
|
|
2855
2854
|
* @example
|
|
2856
2855
|
* ```typescript
|
|
2857
2856
|
* // Default heripo branding (same as original heripo-web usage):
|
|
2858
|
-
* const html = generateWelcomeHTML('subscriber-123', '홍길동');
|
|
2857
|
+
* const html = await generateWelcomeHTML('subscriber-123', '홍길동');
|
|
2859
2858
|
*
|
|
2860
2859
|
* // KRAS mode:
|
|
2861
|
-
* const krasHtml = generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
2860
|
+
* const krasHtml = await generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
2862
2861
|
* isKrasNewsletter: true,
|
|
2863
2862
|
* });
|
|
2864
2863
|
* ```
|
|
2865
2864
|
*/
|
|
2866
|
-
function generateWelcomeHTML(id, name, options) {
|
|
2865
|
+
async function generateWelcomeHTML(id, name, options) {
|
|
2867
2866
|
const isKras = options?.isKrasNewsletter ?? false;
|
|
2868
2867
|
const siteUrl = options?.siteUrl ?? 'https://heripo.app';
|
|
2869
2868
|
const safeName = sanitizeText(name);
|
|
2870
2869
|
const unsubscribeUrl = `${siteUrl}/research-radar/unsubscribe?id=${id}`;
|
|
2870
|
+
const { default: juice } = await import('juice');
|
|
2871
2871
|
return juice(createWelcomeHtmlRaw(safeName, isKras, siteUrl, unsubscribeUrl));
|
|
2872
2872
|
}
|
|
2873
2873
|
function createWelcomeHtmlRaw(name, isKras, siteUrl, unsubscribeUrl) {
|
package/dist/index.d.ts
CHANGED
|
@@ -264,15 +264,15 @@ declare function generateNewsletter(dependencies: NewsletterGeneratorDependencie
|
|
|
264
264
|
* @example
|
|
265
265
|
* ```typescript
|
|
266
266
|
* // Default heripo branding (same as original heripo-web usage):
|
|
267
|
-
* const html = generateWelcomeHTML('subscriber-123', '홍길동');
|
|
267
|
+
* const html = await generateWelcomeHTML('subscriber-123', '홍길동');
|
|
268
268
|
*
|
|
269
269
|
* // KRAS mode:
|
|
270
|
-
* const krasHtml = generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
270
|
+
* const krasHtml = await generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
271
271
|
* isKrasNewsletter: true,
|
|
272
272
|
* });
|
|
273
273
|
* ```
|
|
274
274
|
*/
|
|
275
|
-
declare function generateWelcomeHTML(id: string, name: string, options?: WelcomeTemplateOptions): string
|
|
275
|
+
declare function generateWelcomeHTML(id: string, name: string, options?: WelcomeTemplateOptions): Promise<string>;
|
|
276
276
|
|
|
277
277
|
/**
|
|
278
278
|
* Date service implementation
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,6 @@ import TurndownService from 'turndown';
|
|
|
7
7
|
import { JSDOM } from 'jsdom';
|
|
8
8
|
import safeMarkdown2Html from 'safe-markdown2html';
|
|
9
9
|
import DOMPurify from 'dompurify';
|
|
10
|
-
import juice from 'juice';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Formats a date string by replacing dots with dashes.
|
|
@@ -2834,19 +2833,20 @@ async function generateNewsletter(dependencies) {
|
|
|
2834
2833
|
* @example
|
|
2835
2834
|
* ```typescript
|
|
2836
2835
|
* // Default heripo branding (same as original heripo-web usage):
|
|
2837
|
-
* const html = generateWelcomeHTML('subscriber-123', '홍길동');
|
|
2836
|
+
* const html = await generateWelcomeHTML('subscriber-123', '홍길동');
|
|
2838
2837
|
*
|
|
2839
2838
|
* // KRAS mode:
|
|
2840
|
-
* const krasHtml = generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
2839
|
+
* const krasHtml = await generateWelcomeHTML('subscriber-123', '홍길동', {
|
|
2841
2840
|
* isKrasNewsletter: true,
|
|
2842
2841
|
* });
|
|
2843
2842
|
* ```
|
|
2844
2843
|
*/
|
|
2845
|
-
function generateWelcomeHTML(id, name, options) {
|
|
2844
|
+
async function generateWelcomeHTML(id, name, options) {
|
|
2846
2845
|
const isKras = options?.isKrasNewsletter ?? false;
|
|
2847
2846
|
const siteUrl = options?.siteUrl ?? 'https://heripo.app';
|
|
2848
2847
|
const safeName = sanitizeText(name);
|
|
2849
2848
|
const unsubscribeUrl = `${siteUrl}/research-radar/unsubscribe?id=${id}`;
|
|
2849
|
+
const { default: juice } = await import('juice');
|
|
2850
2850
|
return juice(createWelcomeHtmlRaw(safeName, isKras, siteUrl, unsubscribeUrl));
|
|
2851
2851
|
}
|
|
2852
2852
|
function createWelcomeHtmlRaw(name, isKras, siteUrl, unsubscribeUrl) {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@heripo/research-radar",
|
|
3
3
|
"private": false,
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "4.0.0",
|
|
6
6
|
"description": "AI-driven intelligence for Korean cultural heritage. This package serves as both a ready-to-use newsletter service and a practical implementation example for the LLM-Newsletter-Kit.",
|
|
7
7
|
"main": "dist/index.cjs",
|
|
8
8
|
"module": "dist/index.js",
|
|
@@ -48,35 +48,35 @@
|
|
|
48
48
|
"author": "kimhongyeon",
|
|
49
49
|
"license": "Apache-2.0",
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@ai-sdk/anthropic": "^3.0.
|
|
52
|
-
"@ai-sdk/google": "^3.0.
|
|
53
|
-
"@ai-sdk/openai": "^3.0.
|
|
51
|
+
"@ai-sdk/anthropic": "^3.0.81",
|
|
52
|
+
"@ai-sdk/google": "^3.0.80",
|
|
53
|
+
"@ai-sdk/openai": "^3.0.68",
|
|
54
54
|
"cheerio": "^1.2.0",
|
|
55
|
-
"dompurify": "^3.4.
|
|
55
|
+
"dompurify": "^3.4.8",
|
|
56
56
|
"jsdom": "^29.1.1",
|
|
57
|
-
"juice": "^
|
|
58
|
-
"safe-markdown2html": "^1.0.
|
|
57
|
+
"juice": "^12.1.0",
|
|
58
|
+
"safe-markdown2html": "^1.0.6",
|
|
59
59
|
"turndown": "^7.2.4"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@eslint/js": "^10.0.1",
|
|
63
|
-
"@llm-newsletter-kit/core": "^2.0.
|
|
63
|
+
"@llm-newsletter-kit/core": "^2.0.5",
|
|
64
64
|
"@trivago/prettier-plugin-sort-imports": "^6.0.2",
|
|
65
65
|
"@types/express": "^5.0.6",
|
|
66
66
|
"@types/jsdom": "^28.0.3",
|
|
67
|
-
"@types/node": "^25.9.
|
|
67
|
+
"@types/node": "^25.9.2",
|
|
68
68
|
"@types/turndown": "^5.0.6",
|
|
69
|
-
"eslint": "^10.4.
|
|
69
|
+
"eslint": "^10.4.1",
|
|
70
70
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
71
71
|
"express": "^5.2.1",
|
|
72
72
|
"prettier": "^3.8.3",
|
|
73
73
|
"rimraf": "^6.1.3",
|
|
74
|
-
"rollup": "^4.
|
|
74
|
+
"rollup": "^4.61.1",
|
|
75
75
|
"rollup-plugin-dts": "^6.4.1",
|
|
76
76
|
"rollup-plugin-typescript2": "^0.37.0",
|
|
77
|
-
"tsx": "^4.22.
|
|
77
|
+
"tsx": "^4.22.4",
|
|
78
78
|
"typescript": "^6.0.3",
|
|
79
|
-
"typescript-eslint": "^8.
|
|
79
|
+
"typescript-eslint": "^8.60.1"
|
|
80
80
|
},
|
|
81
81
|
"repository": {
|
|
82
82
|
"type": "git",
|