html-minifier-next 4.12.2 → 4.14.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 (37) hide show
  1. package/README.md +84 -26
  2. package/cli.js +1 -1
  3. package/dist/htmlminifier.cjs +1552 -1320
  4. package/dist/htmlminifier.esm.bundle.js +4204 -3972
  5. package/dist/types/htmlminifier.d.ts +10 -3
  6. package/dist/types/htmlminifier.d.ts.map +1 -1
  7. package/dist/types/htmlparser.d.ts.map +1 -1
  8. package/dist/types/lib/attributes.d.ts +29 -0
  9. package/dist/types/lib/attributes.d.ts.map +1 -0
  10. package/dist/types/lib/constants.d.ts +83 -0
  11. package/dist/types/lib/constants.d.ts.map +1 -0
  12. package/dist/types/lib/content.d.ts +7 -0
  13. package/dist/types/lib/content.d.ts.map +1 -0
  14. package/dist/types/lib/elements.d.ts +39 -0
  15. package/dist/types/lib/elements.d.ts.map +1 -0
  16. package/dist/types/lib/options.d.ts +17 -0
  17. package/dist/types/lib/options.d.ts.map +1 -0
  18. package/dist/types/lib/utils.d.ts +21 -0
  19. package/dist/types/lib/utils.d.ts.map +1 -0
  20. package/dist/types/lib/whitespace.d.ts +7 -0
  21. package/dist/types/lib/whitespace.d.ts.map +1 -0
  22. package/dist/types/presets.d.ts.map +1 -1
  23. package/package.json +10 -1
  24. package/src/htmlminifier.js +114 -1229
  25. package/src/htmlparser.js +11 -11
  26. package/src/lib/attributes.js +511 -0
  27. package/src/lib/constants.js +213 -0
  28. package/src/lib/content.js +105 -0
  29. package/src/lib/elements.js +242 -0
  30. package/src/lib/index.js +20 -0
  31. package/src/lib/options.js +300 -0
  32. package/src/lib/utils.js +90 -0
  33. package/src/lib/whitespace.js +139 -0
  34. package/src/presets.js +0 -1
  35. package/src/tokenchain.js +1 -1
  36. package/dist/types/utils.d.ts +0 -2
  37. package/dist/types/utils.d.ts.map +0 -1
@@ -220,14 +220,21 @@ export type MinifierOptions = {
220
220
  minifyCSS?: boolean | Partial<import("lightningcss").TransformOptions<import("lightningcss").CustomAtRules>> | ((text: string, type?: string) => Promise<string> | string);
221
221
  /**
222
222
  * When true, enables JS minification for `<script>` contents and
223
- * event handler attributes. If an object is provided, it is passed to
224
- * [terser](https://www.npmjs.com/package/terser) as minify options.
223
+ * event handler attributes. If an object is provided, it can include:
224
+ * - `engine`: The minifier to use (`terser` or `swc`). Default: `terser`.
225
+ * Note: Inline event handlers (e.g., `onclick="…"`) always use Terser
226
+ * regardless of engine setting, as swc doesn’t support bare return statements.
227
+ * - Engine-specific options (e.g., Terser options if `engine: 'terser'`,
228
+ * SWC options if `engine: 'swc'`).
225
229
  * If a function is provided, it will be used to perform
226
230
  * custom JS minification. If disabled, JS is not minified.
227
231
  *
228
232
  * Default: `false`
229
233
  */
230
- minifyJS?: boolean | import("terser").MinifyOptions | ((text: string, inline?: boolean) => Promise<string> | string);
234
+ minifyJS?: boolean | import("terser").MinifyOptions | {
235
+ engine?: "terser" | "swc";
236
+ [key: string]: any;
237
+ } | ((text: string, inline?: boolean) => Promise<string> | string);
231
238
  /**
232
239
  * When true, enables URL rewriting/minification. If an object is provided,
233
240
  * it is passed to [relateurl](https://www.npmjs.com/package/relateurl)
@@ -1 +1 @@
1
- {"version":3,"file":"htmlminifier.d.ts","sourceRoot":"","sources":["../../src/htmlminifier.js"],"names":[],"mappings":"AA86EO,8BAJI,MAAM,YACN,eAAe,GACb,OAAO,CAAC,MAAM,CAAC,CAQ3B;;;;;;;;;;;;UAr5ES,MAAM;YACN,MAAM;YACN,MAAM;mBACN,MAAM;iBACN,MAAM;kBACN,MAAM;;;;;;;;;;;;;4BAQN,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO;;;;;;;wBAMjG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO;;;;;;;;oBAMhH,OAAO;;;;;;;;;kCAON,OAAO;;;;;;;;gCAQR,OAAO;;;;;;;;kCAOP,OAAO;;;;;;;;yBAOP,OAAO;;;;;;;;2BAOP,OAAO;;;;;;;;4BAOP,OAAO;;;;;;;2BAOP,OAAO;;;;;;;;uBAMP,MAAM,EAAE;;;;;;yBAOR,MAAM;;;;;;yBAKN,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;;;;;;;4BAKlB,MAAM,EAAE;;;;;;;oCAMR,MAAM;;;;;;;qBAMN,OAAO;;;;;;;YAMP,OAAO;;;;;;;;2BAMP,MAAM,EAAE;;;;;;;;;4BAOR,MAAM,EAAE;;;;;;;+BAQR,OAAO;;;;;;;2BAMP,SAAS,CAAC,MAAM,CAAC;;;;;;uBAMjB,OAAO;;;;;;;;UAKP,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;;;;;;;;qBAO1B,MAAM;;;;;;;oBAON,MAAM;;;;;;;;;;gBAMN,OAAO,GAAG,OAAO,CAAC,OAAO,cAAc,EAAE,gBAAgB,CAAC,OAAO,cAAc,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;;;;;;;;;;eAS9J,OAAO,GAAG,OAAO,QAAQ,EAAE,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;;;;;;;;;;iBASzG,OAAO,GAAG,MAAM,GAAG,OAAO,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;;;;;;;;WAS7F,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM;;;;;;;+BAOxB,OAAO;;;;;;;;;;oBAMP,OAAO;;;;;;;;yBASP,OAAO;;;;;;;gCAOP,OAAO;;;;;;;;iCAMP,OAAO;;;;;;;;;;qBAOP,MAAM,EAAE;;;;;;;qBASR,IAAI,GAAG,GAAG;;;;;;;4BAMV,OAAO;;;;;;;;qBAMP,OAAO;;;;;;;;;4BAOP,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;;;;;;;;0BAQtD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;gCAOP,MAAM,EAAE;;;;;;;;yBAyBR,OAAO;;;;;;;;gCAOP,OAAO;;;;;;;iCAOP,OAAO;;;;;;;oCAMP,OAAO;;;;;;;;;;0BAMP,OAAO;;;;;;;;;qBASP,OAAO,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;;;;;;;;;oBAQzD,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;;;;;;;;0BAQrC,OAAO;;;;;;;sBAOP,OAAO;;wBA3YkC,cAAc;0BAAd,cAAc;+BAAd,cAAc"}
1
+ {"version":3,"file":"htmlminifier.d.ts","sourceRoot":"","sources":["../../src/htmlminifier.js"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"htmlparser.d.ts","sourceRoot":"","sources":["../../src/htmlparser.js"],"names":[],"mappings":"AA8CA,4BAAoE;AA+EpE;IACE,qCAGC;IAFC,UAAgB;IAChB,aAAsB;IAGxB,uBAgeC;CACF"}
1
+ {"version":3,"file":"htmlparser.d.ts","sourceRoot":"","sources":["../../src/htmlparser.js"],"names":[],"mappings":"AA+CA,4BAAoE;AA8EpE;IACE,qCAGC;IAFC,UAAgB;IAChB,aAAsB;IAGxB,uBAgeC;CACF"}
@@ -0,0 +1,29 @@
1
+ export function isConditionalComment(text: any): boolean;
2
+ export function isIgnoredComment(text: any, options: any): boolean;
3
+ export function isEventAttribute(attrName: any, options: any): boolean;
4
+ export function canRemoveAttributeQuotes(value: any): boolean;
5
+ export function attributesInclude(attributes: any, attribute: any): boolean;
6
+ export function isAttributeRedundant(tag: any, attrName: any, attrValue: any, attrs: any): boolean;
7
+ export function isScriptTypeAttribute(attrValue?: string): boolean;
8
+ export function keepScriptTypeAttribute(attrValue?: string): boolean;
9
+ export function isExecutableScript(tag: any, attrs: any): boolean;
10
+ export function isStyleLinkTypeAttribute(attrValue?: string): boolean;
11
+ export function isStyleSheet(tag: any, attrs: any): boolean;
12
+ export function isBooleanAttribute(attrName: any, attrValue: any): boolean;
13
+ export function isUriTypeAttribute(attrName: any, tag: any): boolean;
14
+ export function isNumberTypeAttribute(attrName: any, tag: any): boolean;
15
+ export function isLinkType(tag: any, attrs: any, value: any): boolean;
16
+ export function isMediaQuery(tag: any, attrs: any, attrName: any): boolean;
17
+ export function isSrcset(attrName: any, tag: any): boolean;
18
+ export function isMetaViewport(tag: any, attrs: any): boolean;
19
+ export function isContentSecurityPolicy(tag: any, attrs: any): boolean;
20
+ export function canDeleteEmptyAttribute(tag: any, attrName: any, attrValue: any, options: any): any;
21
+ export function hasAttrName(name: any, attrs: any): boolean;
22
+ export function cleanAttributeValue(tag: any, attrName: any, attrValue: any, options: any, attrs: any, minifyHTMLSelf: any): Promise<any>;
23
+ export function normalizeAttr(attr: any, attrs: any, tag: any, options: any, minifyHTML: any): Promise<{
24
+ attr: any;
25
+ name: any;
26
+ value: any;
27
+ }>;
28
+ export function buildAttr(normalized: any, hasUnarySlash: any, options: any, isLast: any, uidAttr: any): any;
29
+ //# sourceMappingURL=attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../../src/lib/attributes.js"],"names":[],"mappings":"AAsBA,yDAEC;AAED,mEAOC;AAED,uEAWC;AAED,8DAGC;AAED,4EAOC;AAED,mGAqBC;AAED,mEAGC;AAED,qEAGC;AAED,kEAWC;AAED,sEAGC;AAED,4DAWC;AAED,2EAEC;AAED,qEAaC;AAED,wEAUC;AAED,sEAUC;AAED,2EAEC;AAED,2DAEC;AAED,8DAUC;AAED,uEAUC;AAED,oGASC;AAED,4DAOC;AAID,0IAqHC;AAsBD;;;;GAsCC;AAED,6GA4EC"}
@@ -0,0 +1,83 @@
1
+ export const RE_WS_START: RegExp;
2
+ export const RE_WS_END: RegExp;
3
+ export const RE_ALL_WS_NBSP: RegExp;
4
+ export const RE_NBSP_LEADING_GROUP: RegExp;
5
+ export const RE_NBSP_LEAD_GROUP: RegExp;
6
+ export const RE_NBSP_TRAILING_GROUP: RegExp;
7
+ export const RE_NBSP_TRAILING_STRIP: RegExp;
8
+ export const RE_CONDITIONAL_COMMENT: RegExp;
9
+ export const RE_EVENT_ATTR_DEFAULT: RegExp;
10
+ export const RE_CAN_REMOVE_ATTR_QUOTES: RegExp;
11
+ export const RE_TRAILING_SEMICOLON: RegExp;
12
+ export const RE_AMP_ENTITY: RegExp;
13
+ export const inlineElementsToKeepWhitespaceAround: Set<string>;
14
+ export const inlineElementsToKeepWhitespaceWithin: Set<string>;
15
+ export const inlineElementsToKeepWhitespace: Set<string>;
16
+ export namespace generalDefaults {
17
+ let autocorrect: string;
18
+ let fetchpriority: string;
19
+ let loading: string;
20
+ let popovertargetaction: string;
21
+ }
22
+ export namespace tagDefaults {
23
+ namespace area {
24
+ let shape: string;
25
+ }
26
+ namespace button {
27
+ let type: string;
28
+ }
29
+ namespace form {
30
+ let enctype: string;
31
+ let method: string;
32
+ }
33
+ namespace html {
34
+ let dir: string;
35
+ }
36
+ namespace img {
37
+ let decoding: string;
38
+ }
39
+ namespace input {
40
+ export let colorspace: string;
41
+ let type_1: string;
42
+ export { type_1 as type };
43
+ }
44
+ namespace marquee {
45
+ let behavior: string;
46
+ let direction: string;
47
+ }
48
+ namespace style {
49
+ let media: string;
50
+ }
51
+ namespace textarea {
52
+ let wrap: string;
53
+ }
54
+ namespace track {
55
+ let kind: string;
56
+ }
57
+ }
58
+ export const executableScriptsMimetypes: Set<string>;
59
+ export const keepScriptsMimetypes: Set<string>;
60
+ export const jsonScriptTypes: Set<string>;
61
+ export const isSimpleBoolean: Set<string>;
62
+ export const isBooleanValue: Set<string>;
63
+ export const srcsetTags: Set<string>;
64
+ export const optionalStartTags: Set<string>;
65
+ export const optionalEndTags: Set<string>;
66
+ export const headerTags: Set<string>;
67
+ export const descriptionTags: Set<string>;
68
+ export const pBlockTags: Set<string>;
69
+ export const pInlineTags: Set<string>;
70
+ export const rubyEndTagOmission: Set<string>;
71
+ export const rubyRtcEndTagOmission: Set<string>;
72
+ export const optionTag: Set<string>;
73
+ export const tableContentTags: Set<string>;
74
+ export const tableSectionTags: Set<string>;
75
+ export const cellTags: Set<string>;
76
+ export const topLevelTags: Set<string>;
77
+ export const compactTags: Set<string>;
78
+ export const looseTags: Set<string>;
79
+ export const trailingTags: Set<string>;
80
+ export const htmlTags: Set<string>;
81
+ export const reEmptyAttribute: RegExp;
82
+ export const specialContentTags: Set<string>;
83
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.js"],"names":[],"mappings":"AAEA,iCAAoC;AACpC,+BAAkC;AAClC,oCAA2C;AAC3C,2CAAmD;AACnD,wCAA8C;AAC9C,4CAAkD;AAClD,4CAA2C;AAC3C,4CAA0D;AAC1D,2CAA8C;AAC9C,+CAA0D;AAC1D,2CAAmC;AACnC,mCAA4C;AAK5C,+DAAgb;AAGhb,+DAA6O;AAG7O,yDAAmF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCnF,qDAQG;AAEH,+CAEG;AAcH,0CAUG;AApBH,0CAAwhB;AAExhB,yCAAkD;AAIlD,qCAA8C;AAuB9C,4CAAiF;AAEjF,0CAAoM;AAEpM,qCAAwF;AAExF,0CAA8C;AAE9C,qCAA6S;AAE7S,sCAAsF;AAEtF,6CAA8D;AAE9D,gDAAqD;AAErD,oCAAkD;AAElD,2CAAqD;AAErD,2CAA8D;AAE9D,mCAAuC;AAEvC,uCAAuD;AAEvD,sCAA8C;AAE9C,oCAA2D;AAE3D,uCAA8C;AAE9C,mCAA+wC;AAI/wC,sCAEsD;AAItD,6CAAwD"}
@@ -0,0 +1,7 @@
1
+ export function wrapCSS(text: any, type: any): any;
2
+ export function unwrapCSS(text: any, type: any): any;
3
+ export function cleanConditionalComment(comment: any, options: any, minifyHTML: any): Promise<any>;
4
+ export function minifyJson(text: any, options: any): any;
5
+ export function hasJsonScriptType(attrs: any): boolean;
6
+ export function processScript(text: any, options: any, currentAttrs: any, minifyHTML: any): Promise<any>;
7
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/lib/content.js"],"names":[],"mappings":"AAaA,mDASC;AAED,qDAWC;AAED,mGAMC;AAID,yDAWC;AAED,uDAWC;AAED,yGAiBC"}
@@ -0,0 +1,39 @@
1
+ export function canRemoveParentTag(optionalStartTag: any, tag: any): boolean;
2
+ export function isStartTagMandatory(optionalEndTag: any, tag: any): boolean;
3
+ export function canRemovePrecedingTag(optionalEndTag: any, tag: any): boolean;
4
+ export function canRemoveElement(tag: any, attrs: any): boolean;
5
+ /**
6
+ * @param {string} str - Tag name or HTML-like element spec (e.g., “td” or “<span aria-hidden='true'>”)
7
+ * @param {MinifierOptions} options - Options object for name normalization
8
+ * @returns {{tag: string, attrs: Object.<string, string|undefined>|null}|null} Parsed spec or null if invalid
9
+ */
10
+ export function parseElementSpec(str: string, options: MinifierOptions): {
11
+ tag: string;
12
+ attrs: {
13
+ [x: string]: string | undefined;
14
+ } | null;
15
+ } | null;
16
+ /**
17
+ * @param {string[]} input - Array of element specifications from `removeEmptyElementsExcept` option
18
+ * @param {MinifierOptions} options - Options object for parsing
19
+ * @returns {Array<{tag: string, attrs: Object.<string, string|undefined>|null}>} Array of parsed element specs
20
+ */
21
+ export function parseRemoveEmptyElementsExcept(input: string[], options: MinifierOptions): Array<{
22
+ tag: string;
23
+ attrs: {
24
+ [x: string]: string | undefined;
25
+ } | null;
26
+ }>;
27
+ /**
28
+ * @param {string} tag - Element tag name
29
+ * @param {HTMLAttribute[]} attrs - Array of element attributes
30
+ * @param {Array<{tag: string, attrs: Object.<string, string|undefined>|null}>} preserveList - Parsed preserve specs
31
+ * @returns {boolean} True if the empty element should be preserved
32
+ */
33
+ export function shouldPreserveEmptyElement(tag: string, attrs: HTMLAttribute[], preserveList: Array<{
34
+ tag: string;
35
+ attrs: {
36
+ [x: string]: string | undefined;
37
+ } | null;
38
+ }>): boolean;
39
+ //# sourceMappingURL=elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.d.ts","sourceRoot":"","sources":["../../../src/lib/elements.js"],"names":[],"mappings":"AAiBA,6EAaC;AAED,4EAQC;AAED,8EAmCC;AAID,gEA4BC;AAED;;;;GAIG;AACH,sCAJW,MAAM,WACN,eAAe,GACb;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;YAAQ,MAAM,GAAE,MAAM,GAAC,SAAS;KAAC,GAAC,IAAI,CAAA;CAAC,GAAC,IAAI,CA+C7E;AAED;;;;GAIG;AACH,sDAJW,MAAM,EAAE,WACR,eAAe,GACb,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;YAAQ,MAAM,GAAE,MAAM,GAAC,SAAS;KAAC,GAAC,IAAI,CAAA;CAAC,CAAC,CAoB/E;AAED;;;;;GAKG;AACH,gDALW,MAAM,SACN,aAAa,EAAE,gBACf,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;YAAQ,MAAM,GAAE,MAAM,GAAC,SAAS;KAAC,GAAC,IAAI,CAAA;CAAC,CAAC,GACjE,OAAO,CAkCnB"}
@@ -0,0 +1,17 @@
1
+ export function shouldMinifyInnerHTML(options: any): boolean;
2
+ /**
3
+ * @param {Partial<MinifierOptions>} inputOptions - User-provided options
4
+ * @param {Object} deps - Dependencies from htmlminifier.js
5
+ * @param {Function} deps.getLightningCSS - Function to lazily load lightningcss
6
+ * @param {Function} deps.getTerser - Function to lazily load terser
7
+ * @param {Function} deps.getSwc - Function to lazily load @swc/core
8
+ * @param {LRU} deps.cssMinifyCache - CSS minification cache
9
+ * @param {LRU} deps.jsMinifyCache - JS minification cache
10
+ * @returns {MinifierOptions} Normalized options with defaults applied
11
+ */
12
+ export function processOptions(inputOptions: Partial<MinifierOptions>, { getLightningCSS, getTerser, getSwc, cssMinifyCache, jsMinifyCache }?: {
13
+ getLightningCSS: Function;
14
+ getTerser: Function;
15
+ getSwc: Function;
16
+ }): MinifierOptions;
17
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/lib/options.js"],"names":[],"mappings":"AAUA,6DASC;AAID;;;;;;;;;GASG;AACH,6CATW,OAAO,CAAC,eAAe,CAAC,0EAEhC;IAAuB,eAAe;IACf,SAAS;IACT,MAAM;CAA2B,GAG9C,eAAe,CAqQ3B"}
@@ -0,0 +1,21 @@
1
+ export function stableStringify(obj: any): any;
2
+ export class LRU {
3
+ constructor(limit?: number);
4
+ limit: number;
5
+ map: Map<any, any>;
6
+ get(key: any): any;
7
+ set(key: any, value: any): void;
8
+ delete(key: any): void;
9
+ }
10
+ export function uniqueId(value: any): string;
11
+ export function identity(value: any): any;
12
+ export function identityAsync(value: any): Promise<any>;
13
+ /**
14
+ * Asynchronously replace matches in a string
15
+ * @param {string} str - Input string
16
+ * @param {RegExp} regex - Regular expression with global flag
17
+ * @param {Function} asyncFn - Async function to process each match
18
+ * @returns {Promise<string>} Processed string
19
+ */
20
+ export function replaceAsync(str: string, regex: RegExp, asyncFn: Function): Promise<string>;
21
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.js"],"names":[],"mappings":"AAEA,+CAUC;AAID;IACE,4BAGC;IAFC,cAAkB;IAClB,mBAAoB;IAEtB,mBAQC;IACD,gCAOC;IACD,uBAAqC;CACtC;AAID,6CAMC;AAID,0CAEC;AAED,wDAEC;AAID;;;;;;GAMG;AACH,kCALW,MAAM,SACN,MAAM,sBAEJ,OAAO,CAAC,MAAM,CAAC,CAY3B"}
@@ -0,0 +1,7 @@
1
+ export function trimWhitespace(str: any): any;
2
+ export function collapseWhitespaceAll(str: any): any;
3
+ export function collapseWhitespace(str: any, options: any, trimLeft: any, trimRight: any, collapseAll: any): any;
4
+ export function collapseWhitespaceSmart(str: any, prevTag: any, nextTag: any, options: any, inlineElements: any, inlineTextSet: any): any;
5
+ export function canCollapseWhitespace(tag: any): boolean;
6
+ export function canTrimWhitespace(tag: any): boolean;
7
+ //# sourceMappingURL=whitespace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whitespace.d.ts","sourceRoot":"","sources":["../../../src/lib/whitespace.js"],"names":[],"mappings":"AAeA,8CAOC;AAID,qDAgBC;AAID,iHAyDC;AAID,0IAUC;AAID,yDAEC;AAED,qDAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/presets.js"],"names":[],"mappings":"AAiDA;;;;GAIG;AACH,gCAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAMvB;AAED;;;GAGG;AACH,kCAFa,MAAM,EAAE,CAIpB"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/presets.js"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,gCAHW,MAAM,GACJ,MAAM,GAAC,IAAI,CAMvB;AAED;;;GAGG;AACH,kCAFa,MAAM,EAAE,CAIpB"}
package/package.json CHANGED
@@ -21,6 +21,7 @@
21
21
  "@rollup/plugin-json": "^6.1.0",
22
22
  "@rollup/plugin-node-resolve": "^16.0.3",
23
23
  "@rollup/plugin-terser": "^0.4.4",
24
+ "@swc/core": "^1.15.7",
24
25
  "eslint": "^9.39.1",
25
26
  "rollup": "^4.53.3",
26
27
  "rollup-plugin-polyfill-node": "^0.13.0",
@@ -69,6 +70,14 @@
69
70
  "module": "./src/htmlminifier.js",
70
71
  "types": "./dist/types/htmlminifier.d.ts",
71
72
  "name": "html-minifier-next",
73
+ "peerDependencies": {
74
+ "@swc/core": "^1.15.7"
75
+ },
76
+ "peerDependenciesMeta": {
77
+ "@swc/core": {
78
+ "optional": true
79
+ }
80
+ },
72
81
  "repository": "https://github.com/j9t/html-minifier-next.git",
73
82
  "scripts": {
74
83
  "prebuild": "node --eval='require(`fs`).rmSync(`dist`,{recursive:true,force:true})'",
@@ -84,5 +93,5 @@
84
93
  "test:watch": "node --test --watch tests/*.spec.js"
85
94
  },
86
95
  "type": "module",
87
- "version": "4.12.2"
96
+ "version": "4.14.0"
88
97
  }