@wdprlib/render 2.0.0 → 2.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/dist/index.cjs +11 -387
- package/dist/index.js +2 -378
- package/package.json +5 -3
- package/src/context.ts +422 -0
- package/src/elements/bibliography.ts +123 -0
- package/src/elements/clear-float.ts +27 -0
- package/src/elements/code.ts +49 -0
- package/src/elements/collapsible.ts +105 -0
- package/src/elements/color.ts +32 -0
- package/src/elements/container.ts +302 -0
- package/src/elements/date.ts +59 -0
- package/src/elements/embed-block.ts +327 -0
- package/src/elements/embed.ts +166 -0
- package/src/elements/expr.ts +102 -0
- package/src/elements/footnote.ts +76 -0
- package/src/elements/html.ts +79 -0
- package/src/elements/iframe.ts +44 -0
- package/src/elements/iftags.ts +118 -0
- package/src/elements/image.ts +154 -0
- package/src/elements/include.ts +43 -0
- package/src/elements/index.ts +35 -0
- package/src/elements/line-break.ts +22 -0
- package/src/elements/link.ts +201 -0
- package/src/elements/list.ts +241 -0
- package/src/elements/math.ts +177 -0
- package/src/elements/module/backlinks.ts +28 -0
- package/src/elements/module/categories.ts +27 -0
- package/src/elements/module/index.ts +67 -0
- package/src/elements/module/join.ts +33 -0
- package/src/elements/module/listpages.ts +27 -0
- package/src/elements/module/listusers.ts +27 -0
- package/src/elements/module/page-tree.ts +27 -0
- package/src/elements/module/rate.ts +44 -0
- package/src/elements/tab-view.ts +75 -0
- package/src/elements/table.ts +101 -0
- package/src/elements/text.ts +57 -0
- package/src/elements/toc.ts +147 -0
- package/src/elements/user.ts +79 -0
- package/src/escape.ts +829 -0
- package/src/hash.ts +62 -0
- package/src/index.ts +26 -0
- package/src/libs/highlighter/engine.ts +352 -0
- package/src/libs/highlighter/index.ts +70 -0
- package/src/libs/highlighter/languages/cpp.ts +345 -0
- package/src/libs/highlighter/languages/css.ts +104 -0
- package/src/libs/highlighter/languages/diff.ts +154 -0
- package/src/libs/highlighter/languages/dtd.ts +99 -0
- package/src/libs/highlighter/languages/html.ts +59 -0
- package/src/libs/highlighter/languages/java.ts +251 -0
- package/src/libs/highlighter/languages/javascript.ts +213 -0
- package/src/libs/highlighter/languages/php.ts +433 -0
- package/src/libs/highlighter/languages/python.ts +308 -0
- package/src/libs/highlighter/languages/ruby.ts +360 -0
- package/src/libs/highlighter/languages/sql.ts +125 -0
- package/src/libs/highlighter/languages/xml.ts +68 -0
- package/src/libs/highlighter/types.ts +44 -0
- package/src/render.ts +231 -0
- package/src/types.ts +140 -0
package/dist/index.js
CHANGED
|
@@ -4769,382 +4769,12 @@ function formatDate(date, format) {
|
|
|
4769
4769
|
return format.replace(/%Y/g, String(date.getFullYear())).replace(/%m/g, String(date.getMonth() + 1).padStart(2, "0")).replace(/%d/g, String(date.getDate()).padStart(2, "0")).replace(/%H/g, String(date.getHours()).padStart(2, "0")).replace(/%M/g, String(date.getMinutes()).padStart(2, "0")).replace(/%S/g, String(date.getSeconds()).padStart(2, "0"));
|
|
4770
4770
|
}
|
|
4771
4771
|
|
|
4772
|
-
// packages/render/src/utils/expr-eval.ts
|
|
4773
|
-
var FALSE_VALUES = new Set(["false", "null", "", "0"]);
|
|
4774
|
-
function isTruthy(value) {
|
|
4775
|
-
return !FALSE_VALUES.has(value.toLowerCase().trim());
|
|
4776
|
-
}
|
|
4777
|
-
var MAX_EXPRESSION_LENGTH = 256;
|
|
4778
|
-
function isTruthyNum(n) {
|
|
4779
|
-
return n !== 0 && !Number.isNaN(n);
|
|
4780
|
-
}
|
|
4781
|
-
function evaluateExpression(expr) {
|
|
4782
|
-
try {
|
|
4783
|
-
if (expr.length > MAX_EXPRESSION_LENGTH) {
|
|
4784
|
-
return { success: false, error: "expression too long" };
|
|
4785
|
-
}
|
|
4786
|
-
if (expr.trim() === "") {
|
|
4787
|
-
return { success: false, error: "empty expression" };
|
|
4788
|
-
}
|
|
4789
|
-
const tokens = tokenize2(expr);
|
|
4790
|
-
if (tokens.length <= 1) {
|
|
4791
|
-
return { success: false, error: "empty expression" };
|
|
4792
|
-
}
|
|
4793
|
-
const parser = new ExprParser(tokens);
|
|
4794
|
-
const result = parser.parse();
|
|
4795
|
-
if (!Number.isFinite(result)) {
|
|
4796
|
-
return { success: false, error: "division by zero" };
|
|
4797
|
-
}
|
|
4798
|
-
return { success: true, value: result };
|
|
4799
|
-
} catch (e) {
|
|
4800
|
-
const msg = e instanceof Error ? e.message : "unknown error";
|
|
4801
|
-
return { success: false, error: msg };
|
|
4802
|
-
}
|
|
4803
|
-
}
|
|
4804
|
-
function tokenize2(expr) {
|
|
4805
|
-
const tokens = [];
|
|
4806
|
-
let i = 0;
|
|
4807
|
-
while (i < expr.length) {
|
|
4808
|
-
const ch = expr[i];
|
|
4809
|
-
if (/\s/.test(ch)) {
|
|
4810
|
-
i++;
|
|
4811
|
-
continue;
|
|
4812
|
-
}
|
|
4813
|
-
if (/\d/.test(ch) || ch === "." && /\d/.test(expr[i + 1] ?? "")) {
|
|
4814
|
-
let numStr = "";
|
|
4815
|
-
let hasDot = false;
|
|
4816
|
-
while (i < expr.length) {
|
|
4817
|
-
const c = expr[i];
|
|
4818
|
-
if (c === ".") {
|
|
4819
|
-
if (hasDot)
|
|
4820
|
-
break;
|
|
4821
|
-
hasDot = true;
|
|
4822
|
-
} else if (!/\d/.test(c)) {
|
|
4823
|
-
break;
|
|
4824
|
-
}
|
|
4825
|
-
numStr += c;
|
|
4826
|
-
i++;
|
|
4827
|
-
}
|
|
4828
|
-
const num = parseFloat(numStr);
|
|
4829
|
-
if (!Number.isFinite(num)) {
|
|
4830
|
-
throw new Error("Invalid number");
|
|
4831
|
-
}
|
|
4832
|
-
tokens.push({ kind: "NUMBER", value: num });
|
|
4833
|
-
continue;
|
|
4834
|
-
}
|
|
4835
|
-
if (/[a-zA-Z_]/.test(ch)) {
|
|
4836
|
-
let id = "";
|
|
4837
|
-
while (i < expr.length) {
|
|
4838
|
-
const c = expr[i];
|
|
4839
|
-
if (!/[a-zA-Z0-9_]/.test(c))
|
|
4840
|
-
break;
|
|
4841
|
-
id += c;
|
|
4842
|
-
i++;
|
|
4843
|
-
}
|
|
4844
|
-
tokens.push({ kind: "IDENTIFIER", value: id.toLowerCase() });
|
|
4845
|
-
continue;
|
|
4846
|
-
}
|
|
4847
|
-
if (ch === "<" && expr[i + 1] === "=") {
|
|
4848
|
-
tokens.push({ kind: "LE", value: "<=" });
|
|
4849
|
-
i += 2;
|
|
4850
|
-
continue;
|
|
4851
|
-
}
|
|
4852
|
-
if (ch === ">" && expr[i + 1] === "=") {
|
|
4853
|
-
tokens.push({ kind: "GE", value: ">=" });
|
|
4854
|
-
i += 2;
|
|
4855
|
-
continue;
|
|
4856
|
-
}
|
|
4857
|
-
if (ch === "!" && expr[i + 1] === "=") {
|
|
4858
|
-
tokens.push({ kind: "NE", value: "!=" });
|
|
4859
|
-
i += 2;
|
|
4860
|
-
continue;
|
|
4861
|
-
}
|
|
4862
|
-
if (ch === "<" && expr[i + 1] === ">") {
|
|
4863
|
-
tokens.push({ kind: "NE", value: "<>" });
|
|
4864
|
-
i += 2;
|
|
4865
|
-
continue;
|
|
4866
|
-
}
|
|
4867
|
-
switch (ch) {
|
|
4868
|
-
case "+":
|
|
4869
|
-
tokens.push({ kind: "PLUS", value: "+" });
|
|
4870
|
-
break;
|
|
4871
|
-
case "-":
|
|
4872
|
-
tokens.push({ kind: "MINUS", value: "-" });
|
|
4873
|
-
break;
|
|
4874
|
-
case "*":
|
|
4875
|
-
tokens.push({ kind: "STAR", value: "*" });
|
|
4876
|
-
break;
|
|
4877
|
-
case "/":
|
|
4878
|
-
tokens.push({ kind: "SLASH", value: "/" });
|
|
4879
|
-
break;
|
|
4880
|
-
case "%":
|
|
4881
|
-
tokens.push({ kind: "PERCENT", value: "%" });
|
|
4882
|
-
break;
|
|
4883
|
-
case "^":
|
|
4884
|
-
tokens.push({ kind: "CARET", value: "^" });
|
|
4885
|
-
break;
|
|
4886
|
-
case "(":
|
|
4887
|
-
tokens.push({ kind: "LPAREN", value: "(" });
|
|
4888
|
-
break;
|
|
4889
|
-
case ")":
|
|
4890
|
-
tokens.push({ kind: "RPAREN", value: ")" });
|
|
4891
|
-
break;
|
|
4892
|
-
case ",":
|
|
4893
|
-
tokens.push({ kind: "COMMA", value: "," });
|
|
4894
|
-
break;
|
|
4895
|
-
case "<":
|
|
4896
|
-
tokens.push({ kind: "LT", value: "<" });
|
|
4897
|
-
break;
|
|
4898
|
-
case ">":
|
|
4899
|
-
tokens.push({ kind: "GT", value: ">" });
|
|
4900
|
-
break;
|
|
4901
|
-
case "=":
|
|
4902
|
-
tokens.push({ kind: "EQ", value: "=" });
|
|
4903
|
-
break;
|
|
4904
|
-
default:
|
|
4905
|
-
throw new Error(`Unknown character: ${ch}`);
|
|
4906
|
-
}
|
|
4907
|
-
i++;
|
|
4908
|
-
}
|
|
4909
|
-
tokens.push({ kind: "EOF", value: "" });
|
|
4910
|
-
return tokens;
|
|
4911
|
-
}
|
|
4912
|
-
|
|
4913
|
-
class ExprParser {
|
|
4914
|
-
tokens;
|
|
4915
|
-
pos = 0;
|
|
4916
|
-
constructor(tokens) {
|
|
4917
|
-
this.tokens = tokens;
|
|
4918
|
-
}
|
|
4919
|
-
parse() {
|
|
4920
|
-
const result = this.parseOr();
|
|
4921
|
-
if (this.current().kind !== "EOF") {
|
|
4922
|
-
throw new Error("too many values in the stack");
|
|
4923
|
-
}
|
|
4924
|
-
return result;
|
|
4925
|
-
}
|
|
4926
|
-
current() {
|
|
4927
|
-
return this.tokens[this.pos] ?? { kind: "EOF", value: "" };
|
|
4928
|
-
}
|
|
4929
|
-
advance() {
|
|
4930
|
-
const token = this.current();
|
|
4931
|
-
this.pos++;
|
|
4932
|
-
return token;
|
|
4933
|
-
}
|
|
4934
|
-
parseOr() {
|
|
4935
|
-
let left = this.parseAnd();
|
|
4936
|
-
while (this.current().kind === "IDENTIFIER" && this.current().value === "or") {
|
|
4937
|
-
this.advance();
|
|
4938
|
-
const right = this.parseAnd();
|
|
4939
|
-
left = isTruthyNum(left) || isTruthyNum(right) ? 1 : 0;
|
|
4940
|
-
}
|
|
4941
|
-
return left;
|
|
4942
|
-
}
|
|
4943
|
-
parseAnd() {
|
|
4944
|
-
let left = this.parseNot();
|
|
4945
|
-
while (this.current().kind === "IDENTIFIER" && this.current().value === "and") {
|
|
4946
|
-
this.advance();
|
|
4947
|
-
const right = this.parseNot();
|
|
4948
|
-
left = isTruthyNum(left) && isTruthyNum(right) ? 1 : 0;
|
|
4949
|
-
}
|
|
4950
|
-
return left;
|
|
4951
|
-
}
|
|
4952
|
-
parseNot() {
|
|
4953
|
-
if (this.current().kind === "IDENTIFIER" && this.current().value === "not") {
|
|
4954
|
-
this.advance();
|
|
4955
|
-
const value = this.parseNot();
|
|
4956
|
-
return isTruthyNum(value) ? 0 : 1;
|
|
4957
|
-
}
|
|
4958
|
-
return this.parseComparison();
|
|
4959
|
-
}
|
|
4960
|
-
parseComparison() {
|
|
4961
|
-
let left = this.parseAddition();
|
|
4962
|
-
const kind = this.current().kind;
|
|
4963
|
-
if (kind === "LT" || kind === "GT" || kind === "LE" || kind === "GE" || kind === "EQ" || kind === "NE") {
|
|
4964
|
-
this.advance();
|
|
4965
|
-
const right = this.parseAddition();
|
|
4966
|
-
switch (kind) {
|
|
4967
|
-
case "LT":
|
|
4968
|
-
return left < right ? 1 : 0;
|
|
4969
|
-
case "GT":
|
|
4970
|
-
return left > right ? 1 : 0;
|
|
4971
|
-
case "LE":
|
|
4972
|
-
return left <= right ? 1 : 0;
|
|
4973
|
-
case "GE":
|
|
4974
|
-
return left >= right ? 1 : 0;
|
|
4975
|
-
case "EQ":
|
|
4976
|
-
return left === right ? 1 : 0;
|
|
4977
|
-
case "NE":
|
|
4978
|
-
return left !== right ? 1 : 0;
|
|
4979
|
-
}
|
|
4980
|
-
}
|
|
4981
|
-
return left;
|
|
4982
|
-
}
|
|
4983
|
-
parseAddition() {
|
|
4984
|
-
let left = this.parseMultiplication();
|
|
4985
|
-
while (true) {
|
|
4986
|
-
const kind = this.current().kind;
|
|
4987
|
-
if (kind === "PLUS") {
|
|
4988
|
-
this.advance();
|
|
4989
|
-
left = left + this.parseMultiplication();
|
|
4990
|
-
} else if (kind === "MINUS") {
|
|
4991
|
-
this.advance();
|
|
4992
|
-
left = left - this.parseMultiplication();
|
|
4993
|
-
} else {
|
|
4994
|
-
break;
|
|
4995
|
-
}
|
|
4996
|
-
}
|
|
4997
|
-
return left;
|
|
4998
|
-
}
|
|
4999
|
-
parseMultiplication() {
|
|
5000
|
-
let left = this.parsePower();
|
|
5001
|
-
while (true) {
|
|
5002
|
-
const kind = this.current().kind;
|
|
5003
|
-
if (kind === "STAR") {
|
|
5004
|
-
this.advance();
|
|
5005
|
-
left = left * this.parsePower();
|
|
5006
|
-
} else if (kind === "SLASH") {
|
|
5007
|
-
this.advance();
|
|
5008
|
-
left = left / this.parsePower();
|
|
5009
|
-
} else if (kind === "PERCENT") {
|
|
5010
|
-
this.advance();
|
|
5011
|
-
left = left % this.parsePower();
|
|
5012
|
-
} else {
|
|
5013
|
-
break;
|
|
5014
|
-
}
|
|
5015
|
-
}
|
|
5016
|
-
return left;
|
|
5017
|
-
}
|
|
5018
|
-
parsePower() {
|
|
5019
|
-
const left = this.parseUnary();
|
|
5020
|
-
if (this.current().kind === "CARET") {
|
|
5021
|
-
this.advance();
|
|
5022
|
-
const right = this.parsePower();
|
|
5023
|
-
return Math.pow(left, right);
|
|
5024
|
-
}
|
|
5025
|
-
return left;
|
|
5026
|
-
}
|
|
5027
|
-
parseUnary() {
|
|
5028
|
-
const kind = this.current().kind;
|
|
5029
|
-
if (kind === "MINUS") {
|
|
5030
|
-
this.advance();
|
|
5031
|
-
return -this.parseUnary();
|
|
5032
|
-
}
|
|
5033
|
-
if (kind === "PLUS") {
|
|
5034
|
-
this.advance();
|
|
5035
|
-
return +this.parseUnary();
|
|
5036
|
-
}
|
|
5037
|
-
return this.parsePrimary();
|
|
5038
|
-
}
|
|
5039
|
-
parsePrimary() {
|
|
5040
|
-
const token = this.current();
|
|
5041
|
-
if (token.kind === "NUMBER") {
|
|
5042
|
-
this.advance();
|
|
5043
|
-
return token.value;
|
|
5044
|
-
}
|
|
5045
|
-
if (token.kind === "LPAREN") {
|
|
5046
|
-
this.advance();
|
|
5047
|
-
const value = this.parseOr();
|
|
5048
|
-
if (this.current().kind !== "RPAREN") {
|
|
5049
|
-
throw new Error("Expected )");
|
|
5050
|
-
}
|
|
5051
|
-
this.advance();
|
|
5052
|
-
return value;
|
|
5053
|
-
}
|
|
5054
|
-
if (token.kind === "IDENTIFIER") {
|
|
5055
|
-
const name = token.value;
|
|
5056
|
-
this.advance();
|
|
5057
|
-
if (this.current().kind === "LPAREN") {
|
|
5058
|
-
return this.parseFunctionCall(name);
|
|
5059
|
-
}
|
|
5060
|
-
throw new Error(`undefined constant "${name}"`);
|
|
5061
|
-
}
|
|
5062
|
-
throw new Error("Expected expression");
|
|
5063
|
-
}
|
|
5064
|
-
parseFunctionCall(name) {
|
|
5065
|
-
if (this.current().kind !== "LPAREN") {
|
|
5066
|
-
throw new Error("Expected (");
|
|
5067
|
-
}
|
|
5068
|
-
this.advance();
|
|
5069
|
-
const args = [];
|
|
5070
|
-
if (this.current().kind !== "RPAREN") {
|
|
5071
|
-
args.push(this.parseOr());
|
|
5072
|
-
while (this.current().kind === "COMMA") {
|
|
5073
|
-
this.advance();
|
|
5074
|
-
args.push(this.parseOr());
|
|
5075
|
-
}
|
|
5076
|
-
}
|
|
5077
|
-
if (this.current().kind !== "RPAREN") {
|
|
5078
|
-
throw new Error("Expected )");
|
|
5079
|
-
}
|
|
5080
|
-
this.advance();
|
|
5081
|
-
return this.callFunction(name, args);
|
|
5082
|
-
}
|
|
5083
|
-
callFunction(name, args) {
|
|
5084
|
-
switch (name) {
|
|
5085
|
-
case "abs":
|
|
5086
|
-
this.checkArgs(name, args, 1);
|
|
5087
|
-
return Math.abs(args[0]);
|
|
5088
|
-
case "min":
|
|
5089
|
-
this.checkArgsMin(name, args, 1);
|
|
5090
|
-
return Math.min(...args);
|
|
5091
|
-
case "max":
|
|
5092
|
-
this.checkArgsMin(name, args, 1);
|
|
5093
|
-
return Math.max(...args);
|
|
5094
|
-
case "floor":
|
|
5095
|
-
this.checkArgs(name, args, 1);
|
|
5096
|
-
return Math.floor(args[0]);
|
|
5097
|
-
case "ceil":
|
|
5098
|
-
this.checkArgs(name, args, 1);
|
|
5099
|
-
return Math.ceil(args[0]);
|
|
5100
|
-
case "round":
|
|
5101
|
-
this.checkArgs(name, args, 1);
|
|
5102
|
-
return Math.round(args[0]);
|
|
5103
|
-
case "sqrt":
|
|
5104
|
-
this.checkArgs(name, args, 1);
|
|
5105
|
-
return Math.sqrt(args[0]);
|
|
5106
|
-
case "sin":
|
|
5107
|
-
this.checkArgs(name, args, 1);
|
|
5108
|
-
return Math.sin(args[0]);
|
|
5109
|
-
case "cos":
|
|
5110
|
-
this.checkArgs(name, args, 1);
|
|
5111
|
-
return Math.cos(args[0]);
|
|
5112
|
-
case "tan":
|
|
5113
|
-
this.checkArgs(name, args, 1);
|
|
5114
|
-
return Math.tan(args[0]);
|
|
5115
|
-
case "ln":
|
|
5116
|
-
this.checkArgs(name, args, 1);
|
|
5117
|
-
return Math.log(args[0]);
|
|
5118
|
-
case "log":
|
|
5119
|
-
this.checkArgs(name, args, 1);
|
|
5120
|
-
return Math.log10(args[0]);
|
|
5121
|
-
case "exp":
|
|
5122
|
-
this.checkArgs(name, args, 1);
|
|
5123
|
-
return Math.exp(args[0]);
|
|
5124
|
-
case "pow":
|
|
5125
|
-
this.checkArgs(name, args, 2);
|
|
5126
|
-
return Math.pow(args[0], args[1]);
|
|
5127
|
-
default:
|
|
5128
|
-
throw new Error(`undefined function "${name}"`);
|
|
5129
|
-
}
|
|
5130
|
-
}
|
|
5131
|
-
checkArgs(name, args, expected) {
|
|
5132
|
-
if (args.length !== expected) {
|
|
5133
|
-
throw new Error(`${name}() expects ${expected} argument(s), got ${args.length}`);
|
|
5134
|
-
}
|
|
5135
|
-
}
|
|
5136
|
-
checkArgsMin(name, args, min) {
|
|
5137
|
-
if (args.length < min) {
|
|
5138
|
-
throw new Error(`${name}() expects at least ${min} argument(s), got ${args.length}`);
|
|
5139
|
-
}
|
|
5140
|
-
}
|
|
5141
|
-
}
|
|
5142
|
-
|
|
5143
4772
|
// packages/render/src/elements/expr.ts
|
|
4773
|
+
import { evaluateExpression, formatExprValue, isTruthy } from "@wdprlib/ast";
|
|
5144
4774
|
function renderExpr(ctx, data) {
|
|
5145
4775
|
const result = evaluateExpression(data.expression);
|
|
5146
4776
|
if (result.success) {
|
|
5147
|
-
ctx.pushEscaped(
|
|
4777
|
+
ctx.pushEscaped(formatExprValue(result.value));
|
|
5148
4778
|
} else if (result.error !== "empty expression") {
|
|
5149
4779
|
ctx.pushEscaped(`run-time error: ${result.error}`);
|
|
5150
4780
|
}
|
|
@@ -5174,12 +4804,6 @@ function renderBranchElements(ctx, elements) {
|
|
|
5174
4804
|
}
|
|
5175
4805
|
renderElements(ctx, elements.slice(0, lastIdx + 1));
|
|
5176
4806
|
}
|
|
5177
|
-
function formatNumber(n) {
|
|
5178
|
-
if (Number.isInteger(n)) {
|
|
5179
|
-
return String(n);
|
|
5180
|
-
}
|
|
5181
|
-
return n.toFixed(6).replace(/\.?0+$/, "");
|
|
5182
|
-
}
|
|
5183
4807
|
|
|
5184
4808
|
// packages/render/src/render.ts
|
|
5185
4809
|
function renderToHtml(tree, options = {}) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wdprlib/render",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "HTML renderer for Wikidot markup",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"html",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"directory": "packages/render"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
|
-
"dist"
|
|
19
|
+
"dist",
|
|
20
|
+
"src"
|
|
20
21
|
],
|
|
21
22
|
"type": "module",
|
|
22
23
|
"sideEffects": false,
|
|
@@ -25,6 +26,7 @@
|
|
|
25
26
|
"types": "./dist/index.d.ts",
|
|
26
27
|
"exports": {
|
|
27
28
|
".": {
|
|
29
|
+
"bun": "./src/index.ts",
|
|
28
30
|
"import": {
|
|
29
31
|
"types": "./dist/index.d.ts",
|
|
30
32
|
"default": "./dist/index.js"
|
|
@@ -39,7 +41,7 @@
|
|
|
39
41
|
"access": "public"
|
|
40
42
|
},
|
|
41
43
|
"dependencies": {
|
|
42
|
-
"@wdprlib/ast": "2.
|
|
44
|
+
"@wdprlib/ast": "2.1.0",
|
|
43
45
|
"domhandler": "^5.0.3",
|
|
44
46
|
"htmlparser2": "^10.0.0",
|
|
45
47
|
"sanitize-html": "^2.14.0",
|