webring 1.3.4 → 1.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAOhG,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;KAEnD;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAuC5F"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,WAAW,EAAmB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhG,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;KAEnD;AAED,wBAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAgC5F"}
package/dist/fetch.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import Parser from "rss-parser";
2
2
  import sanitizeHtml from "sanitize-html";
3
- import truncate from "truncate-html";
3
+ import * as truncateHtml from "truncate-html";
4
4
  import { FeedEntrySchema } from "./types.js";
5
5
  import * as R from "remeda";
6
6
  import { asyncMapFilterUndefined } from "./util.js";
7
- // for some reason, TypeScript does not infer the type of the default export correctly
8
- const truncateFn = truncate;
7
+ // Handle ESM/CommonJS interop - truncate-html exports differently in different environments
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
9
+ const truncate = truncateHtml.default ?? truncateHtml;
9
10
  export async function fetchAll(config) {
10
11
  return await asyncMapFilterUndefined(config.sources, (source) => fetch(source, config.truncate));
11
12
  }
@@ -23,11 +24,7 @@ export async function fetch(source, length) {
23
24
  url: firstItem.link,
24
25
  date: new Date(firstItem.date),
25
26
  source,
26
- preview: preview
27
- ? truncateFn(sanitizeHtml(preview, {
28
- parseStyleAttributes: false,
29
- }), length)
30
- : undefined,
27
+ preview: preview ? truncate(sanitizeHtml(preview, { parseStyleAttributes: false }), length) : undefined,
31
28
  };
32
29
  }
33
30
  catch (e) {
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAiC,eAAe,EAAsB,MAAM,YAAY,CAAC;AAChG,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,sFAAsF;AACtF,MAAM,UAAU,GAA4B,QAA8C,CAAC;AAE3F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAqB;IAClD,OAAO,MAAM,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAc,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CACtB,IAAI,CAAC,KAAK,EACV,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC5C,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EACjD,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,KAAK,EAAE,CACV,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GACX,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAEzG,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,GAAG,EAAE,SAAS,CAAC,IAAI;YACnB,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9B,MAAM;YACN,OAAO,EAAE,OAAO;gBACd,CAAC,CAAC,UAAU,CACR,YAAY,CAAC,OAAO,EAAE;oBACpB,oBAAoB,EAAE,KAAK;iBAC5B,CAAC,EACF,MAAM,CACP;gBACH,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,GAAG,KAAK,CAAW,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,YAAY,CAAC;AAChC,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAiC,eAAe,EAAsB,MAAM,YAAY,CAAC;AAChG,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD,4FAA4F;AAC5F,mJAAmJ;AACnJ,MAAM,QAAQ,GAA+C,YAAoB,CAAC,OAAO,IAAI,YAAY,CAAC;AAE1G,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAqB;IAClD,OAAO,MAAM,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAc,EAAE,MAAc;IACxD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CACtB,IAAI,CAAC,KAAK,EACV,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAC5C,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,EACjD,CAAC,CAAC,OAAO,EAAE,EACX,CAAC,CAAC,KAAK,EAAE,CACV,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GACX,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAEzG,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,GAAG,EAAE,SAAS,CAAC,IAAI;YACnB,IAAI,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC9B,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACxG,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,GAAG,KAAK,CAAW,EAAE,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -99,8 +99,7 @@ declare const ConfigurationSchema: z.ZodObject<{
99
99
  }>;
100
100
  export type CachedConfiguration = z.infer<typeof CachedConfigurationSchema>;
101
101
  /** A configuration object with caching definitely configured */
102
- export declare const CachedConfigurationSchema: z.ZodObject<z.objectUtil.extendShape<{
103
- /** A list of sources to fetch */
102
+ export declare const CachedConfigurationSchema: z.ZodObject<{
104
103
  sources: z.ZodArray<z.ZodObject<{
105
104
  /** The URL of an RSS feed */
106
105
  url: z.ZodString;
@@ -117,27 +116,10 @@ export declare const CachedConfigurationSchema: z.ZodObject<z.objectUtil.extendS
117
116
  title: string;
118
117
  filter?: ((args_0: string, ...args: unknown[]) => boolean) | undefined;
119
118
  }>, "many">;
120
- /** Return the n latest updates from the source list. */
121
119
  number: z.ZodDefault<z.ZodNumber>;
122
- /** How many words the preview field should be truncated to in characters after HTML has been sanitized and parsed. */
123
120
  truncate: z.ZodDefault<z.ZodNumber>;
124
- /** Configuration for the cache */
125
- cache: z.ZodOptional<z.ZodObject<{
126
- /** How long to cache a result for */
127
- cache_duration_minutes: z.ZodDefault<z.ZodNumber>;
128
- /** The location of a file to use as a cache */
129
- cache_file: z.ZodDefault<z.ZodString>;
130
- }, "strip", z.ZodTypeAny, {
131
- cache_duration_minutes: number;
132
- cache_file: string;
133
- }, {
134
- cache_duration_minutes?: number | undefined;
135
- cache_file?: string | undefined;
136
- }>>;
137
- /** Randomize the output order */
138
121
  shuffle: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
139
- }, {
140
- /** Configuration for the cache */
122
+ } & {
141
123
  cache: z.ZodObject<{
142
124
  /** How long to cache a result for */
143
125
  cache_duration_minutes: z.ZodDefault<z.ZodNumber>;
@@ -150,7 +132,7 @@ export declare const CachedConfigurationSchema: z.ZodObject<z.objectUtil.extendS
150
132
  cache_duration_minutes?: number | undefined;
151
133
  cache_file?: string | undefined;
152
134
  }>;
153
- }>, "strip", z.ZodTypeAny, {
135
+ }, "strip", z.ZodTypeAny, {
154
136
  number: number;
155
137
  sources: {
156
138
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -16,45 +16,45 @@
16
16
  "url": "https://github.com/shepherdjerred/webring/issues"
17
17
  },
18
18
  "type": "module",
19
- "version": "1.3.4",
19
+ "version": "1.4.0",
20
20
  "scripts": {
21
21
  "prepare": "husky",
22
22
  "lint": "eslint src --cache",
23
23
  "build": "tsc",
24
24
  "watch": "tsc -w",
25
25
  "test": "vitest --disable-console-intercept",
26
+ "test:update": "vitest --disable-console-intercept --update",
26
27
  "typedoc": "typedoc src/index.ts"
27
28
  },
28
29
  "main": "dist/index.js",
29
30
  "types": "dist/index.d.ts",
30
31
  "dependencies": {
31
- "remeda": "^2.17.4",
32
+ "remeda": "^2.21.2",
32
33
  "rss-parser": "^3.13.0",
33
- "sanitize-html": "^2.13.1",
34
- "truncate-html": "^1.1.2",
35
- "zod": "^3.24.1"
34
+ "sanitize-html": "^2.14.0",
35
+ "truncate-html": "^1.2.0",
36
+ "zod": "^3.24.2"
36
37
  },
37
38
  "devDependencies": {
38
- "@commitlint/cli": "^19.6.0",
39
- "@commitlint/config-conventional": "^19.6.0",
40
- "@eslint/js": "^9.17.0",
41
- "@tsconfig/node20": "^20.1.4",
39
+ "@commitlint/cli": "^20.0.0",
40
+ "@commitlint/config-conventional": "^20.0.0",
41
+ "@eslint/js": "^9.22.0",
42
+ "@tsconfig/node22": "^22.0.0",
42
43
  "@tsconfig/strictest": "^2.0.5",
43
- "@types/eslint__js": "^8.42.3",
44
44
  "@types/express": "^5.0.0",
45
- "@types/node": "^22.10.2",
45
+ "@types/node": "^25.0.0",
46
46
  "@types/sanitize-html": "^2.13.0",
47
- "eslint": "^9.17.0",
48
- "express": "^4.21.2",
49
- "globals": "^15.13.0",
47
+ "eslint": "^9.22.0",
48
+ "express": "^5.0.0",
49
+ "globals": "^17.0.0",
50
50
  "husky": "^9.1.7",
51
- "lint-staged": "^15.2.11",
52
- "prettier": "^3.4.2",
53
- "typedoc": "^0.27.5",
54
- "typedoc-plugin-zod": "^1.3.1",
55
- "typescript": "^5.7.2",
56
- "typescript-eslint": "^8.18.0",
57
- "vitest": "^2.1.8"
51
+ "lint-staged": "^16.0.0",
52
+ "prettier": "^3.5.3",
53
+ "typedoc": "^0.28.0",
54
+ "typedoc-plugin-zod": "^1.4.0",
55
+ "typescript": "^5.8.2",
56
+ "typescript-eslint": "^8.26.1",
57
+ "vitest": "^3.0.8"
58
58
  },
59
59
  "lint-staged": {
60
60
  "*.{ts,tsx}": "eslint --cache --fix",
@@ -74,7 +74,7 @@
74
74
  "package.json",
75
75
  "README.md",
76
76
  "LICENSE",
77
- "package-lock.json",
77
+ "bun.lock",
78
78
  "CHANGELOG.md"
79
79
  ]
80
80
  }
package/src/fetch.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import Parser from "rss-parser";
2
2
  import sanitizeHtml from "sanitize-html";
3
- import truncate from "truncate-html";
3
+ import * as truncateHtml from "truncate-html";
4
4
  import { type Source, type ResultEntry, FeedEntrySchema, type Configuration } from "./types.js";
5
5
  import * as R from "remeda";
6
6
  import { asyncMapFilterUndefined } from "./util.js";
7
7
 
8
- // for some reason, TypeScript does not infer the type of the default export correctly
9
- const truncateFn: typeof truncate.default = truncate as unknown as typeof truncate.default;
8
+ // Handle ESM/CommonJS interop - truncate-html exports differently in different environments
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access
10
+ const truncate: (html: string, length?: number) => string = (truncateHtml as any).default ?? truncateHtml;
10
11
 
11
12
  export async function fetchAll(config: Configuration) {
12
13
  return await asyncMapFilterUndefined(config.sources, (source) => fetch(source, config.truncate));
@@ -38,14 +39,7 @@ export async function fetch(source: Source, length: number): Promise<ResultEntry
38
39
  url: firstItem.link,
39
40
  date: new Date(firstItem.date),
40
41
  source,
41
- preview: preview
42
- ? truncateFn(
43
- sanitizeHtml(preview, {
44
- parseStyleAttributes: false,
45
- }),
46
- length,
47
- )
48
- : undefined,
42
+ preview: preview ? truncate(sanitizeHtml(preview, { parseStyleAttributes: false }), length) : undefined,
49
43
  };
50
44
  } catch (e) {
51
45
  console.error(`Error fetching ${source.url}: ${e as string}`);