Add support for JDD-based content in rss

This commit is contained in:
Kuba Orlik 2025-03-09 18:48:22 +01:00
parent a6c022aa6f
commit 0306b18249
6 changed files with 245 additions and 185 deletions

367
package-lock.json generated
View File

@ -15,9 +15,9 @@
"@sealcode/add-to-head": "^1.0.0", "@sealcode/add-to-head": "^1.0.0",
"@sealcode/crud-ui": "^0.0.17", "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/jdd": "^0.7.2", "@sealcode/jdd": "^0.7.3",
"@sealcode/jdd-editor": "^0.1.19", "@sealcode/jdd-editor": "^0.1.20",
"@sealcode/sealgen": "^0.17.26", "@sealcode/sealgen": "^0.17.27",
"@sealcode/simplemde": "^1.12.1", "@sealcode/simplemde": "^1.12.1",
"@sealcode/ts-predicates": "^0.6.2", "@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0", "@types/kill-port": "^2.0.0",
@ -36,10 +36,10 @@
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"object-path": "^0.11.8", "object-path": "^0.11.8",
"qs": "^6.12.0", "qs": "^6.12.0",
"sealious": "^0.19.36", "sealious": "^0.19.39",
"slug": "^9.1.0", "slug": "^9.1.0",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.5", "tempstream": "^0.4.6",
"throttle-debounce": "^5.0.2", "throttle-debounce": "^5.0.2",
"turndown": "^7.2.0" "turndown": "^7.2.0"
}, },
@ -939,9 +939,9 @@
} }
}, },
"node_modules/@sealcode/jdd": { "node_modules/@sealcode/jdd": {
"version": "0.7.2", "version": "0.7.3",
"resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.7.2.tgz", "resolved": "https://registry.npmjs.org/@sealcode/jdd/-/jdd-0.7.3.tgz",
"integrity": "sha512-5y8siKvnLSqmyJT9PP0JLnVZqRx+IIk9bggVOvYZQsrSgDiD3hmqMWad9Gs4zP8Qzudgy7hJbbR2VfsGo+UqNg==", "integrity": "sha512-OZJDBLt7MMr/PGKfGQxEhLl+7wG2sw0jxHJr4PW0SLrPizT2NGHJGsyDK2eR1ZsNPm+Bukim8V2Q4M1gACYtWg==",
"dependencies": { "dependencies": {
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/ts-predicates": "^0.5.3", "@sealcode/ts-predicates": "^0.5.3",
@ -954,7 +954,7 @@
"mri": "^1.2.0", "mri": "^1.2.0",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"slug": "^9.1.0", "slug": "^9.1.0",
"tempstream": "^0.4.5", "tempstream": "^0.4.6",
"uuid": "^9.0.1" "uuid": "^9.0.1"
}, },
"peerDependencies": { "peerDependencies": {
@ -962,9 +962,9 @@
} }
}, },
"node_modules/@sealcode/jdd-editor": { "node_modules/@sealcode/jdd-editor": {
"version": "0.1.19", "version": "0.1.20",
"resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.1.19.tgz", "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.1.20.tgz",
"integrity": "sha512-dSXN2YMJR7s3fiBlypajZBECpeSHSlJwxy4PU0n0RrBzzwF8Y2hbiu+dhaQVoAfhJyVnOOBE22UlAZ137iKlfQ==", "integrity": "sha512-pdBKSFR1934t7LiL3m+VekuyFtWyOsZO5k7RQ32dR6e5cIN1LXSEgWR9kzLpeKo5yO6TdquUU/FuWqLm4zlwgQ==",
"dependencies": { "dependencies": {
"@koa/router": "^13.1.0", "@koa/router": "^13.1.0",
"@sealcode/jdd": "^0.7.1", "@sealcode/jdd": "^0.7.1",
@ -976,7 +976,7 @@
"object-path": "^0.11.8", "object-path": "^0.11.8",
"sealious": "^0.19.36", "sealious": "^0.19.36",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.5", "tempstream": "^0.4.6",
"throttle-debounce": "^5.0.2", "throttle-debounce": "^5.0.2",
"turndown": "^7.2.0" "turndown": "^7.2.0"
} }
@ -1004,9 +1004,9 @@
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg==" "integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
}, },
"node_modules/@sealcode/sealgen": { "node_modules/@sealcode/sealgen": {
"version": "0.17.26", "version": "0.17.27",
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.26.tgz", "resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.17.27.tgz",
"integrity": "sha512-eehUUh+d3XW8F41d18q9tBuYEg9P21IfvovxFiM/p609OaplcZ4pUD+pma7zu/cMr+Xh85aw/gQUox5C9Obp4A==", "integrity": "sha512-K20pcQ6xnaLO4CjrcpCZ7R1w4ek2kOS/cGtHmeBlO5uZSQu1mY0Q4gIIbzFNUhETcEMTpRyN7Aq7mXWJkn0+iA==",
"dependencies": { "dependencies": {
"@koa/router": "^12.0.1", "@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
@ -1028,7 +1028,7 @@
"prompts": "^2.4.2", "prompts": "^2.4.2",
"recursive-readdir": "^2.2.3", "recursive-readdir": "^2.2.3",
"tempfile": "^5.0.0", "tempfile": "^5.0.0",
"tempstream": "^0.4.4", "tempstream": "^0.4.6",
"tiny-glob": "^0.2.9", "tiny-glob": "^0.2.9",
"ws": "^8.16.0", "ws": "^8.16.0",
"yargs": "^17.6.2" "yargs": "^17.6.2"
@ -1472,10 +1472,6 @@
"@types/node": "*" "@types/node": "*"
} }
}, },
"node_modules/@types/shortid": {
"version": "0.0.29",
"license": "MIT"
},
"node_modules/@types/simplemde": { "node_modules/@types/simplemde": {
"version": "1.11.11", "version": "1.11.11",
"resolved": "https://registry.npmjs.org/@types/simplemde/-/simplemde-1.11.11.tgz", "resolved": "https://registry.npmjs.org/@types/simplemde/-/simplemde-1.11.11.tgz",
@ -5900,30 +5896,6 @@
"graceful-fs": "^4.1.6" "graceful-fs": "^4.1.6"
} }
}, },
"node_modules/juice": {
"version": "10.0.0",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0-rc.12",
"commander": "^6.1.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^6.0.1"
},
"bin": {
"juice": "bin/juice"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/juice/node_modules/commander": {
"version": "6.2.1",
"license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/keygrip": { "node_modules/keygrip": {
"version": "1.1.0", "version": "1.1.0",
"license": "MIT", "license": "MIT",
@ -6651,6 +6623,8 @@
}, },
"node_modules/mime": { "node_modules/mime": {
"version": "2.6.0", "version": "2.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
"license": "MIT", "license": "MIT",
"bin": { "bin": {
"mime": "cli.js" "mime": "cli.js"
@ -6894,6 +6868,160 @@
"mjml-validator": "4.15.3" "mjml-validator": "4.15.3"
} }
}, },
"node_modules/mjml-core/node_modules/commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"license": "MIT",
"engines": {
"node": ">= 6"
}
},
"node_modules/mjml-core/node_modules/dom-serializer": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
"integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
"license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/dom-serializer/node_modules/domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/domhandler": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz",
"integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.0.1"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
"license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/domutils/node_modules/domhandler": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
"integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/entities": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
"license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/escape-goat": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-3.0.0.tgz",
"integrity": "sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/mjml-core/node_modules/htmlparser2": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz",
"integrity": "sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==",
"license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^3.3.0",
"domutils": "^2.4.2",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/fb55/htmlparser2?sponsor=1"
}
},
"node_modules/mjml-core/node_modules/juice": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/juice/-/juice-10.0.1.tgz",
"integrity": "sha512-ZhJT1soxJCkOiO55/mz8yeBKTAJhRzX9WBO+16ZTqNTONnnVlUPyVBIzQ7lDRjaBdTbid+bAnyIon/GM3yp4cA==",
"license": "MIT",
"dependencies": {
"cheerio": "1.0.0-rc.12",
"commander": "^6.1.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^6.0.1"
},
"bin": {
"juice": "bin/juice"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/mjml-core/node_modules/web-resource-inliner": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-6.0.1.tgz",
"integrity": "sha512-kfqDxt5dTB1JhqsCUQVFDj0rmY+4HLwGQIsLPbyrsN9y9WV/1oFDSx3BQ4GfCv9X+jVeQ7rouTqwK53rA/7t8A==",
"license": "MIT",
"dependencies": {
"ansi-colors": "^4.1.1",
"escape-goat": "^3.0.0",
"htmlparser2": "^5.0.0",
"mime": "^2.4.6",
"node-fetch": "^2.6.0",
"valid-data-url": "^3.0.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/mjml-divider": { "node_modules/mjml-divider": {
"version": "4.15.3", "version": "4.15.3",
"license": "MIT", "license": "MIT",
@ -7541,8 +7669,21 @@
} }
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "2.1.11", "version": "5.1.3",
"license": "MIT" "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.3.tgz",
"integrity": "sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": {
"nanoid": "bin/nanoid.js"
},
"engines": {
"node": "^18 || >=20"
}
}, },
"node_modules/napi-build-utils": { "node_modules/napi-build-utils": {
"version": "1.0.2", "version": "1.0.2",
@ -9209,9 +9350,9 @@
} }
}, },
"node_modules/sealious": { "node_modules/sealious": {
"version": "0.19.36", "version": "0.19.39",
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.19.36.tgz", "resolved": "https://registry.npmjs.org/sealious/-/sealious-0.19.39.tgz",
"integrity": "sha512-qpRISkbSxqB0kYP/WCRui7YyYafEb7GAnw7UerNem1I3mGhk6Wxq8tipfO3l6Kgge6kmze4gQkewjlQ+PyD3OQ==", "integrity": "sha512-fowSikfe9HxQrl0xTbpNDNDMpbW+H/wxoJr4DYOcWVUet9c6sjrYuhQKAubtCsOAn8tZCtDmGiYCO5oGXpUfVQ==",
"dependencies": { "dependencies": {
"@koa/router": "^12.0.1", "@koa/router": "^12.0.1",
"@sealcode/file-manager": "^1.0.1", "@sealcode/file-manager": "^1.0.1",
@ -9233,7 +9374,6 @@
"@types/nodemailer": "^6.4.0", "@types/nodemailer": "^6.4.0",
"@types/object-hash": "^1.3.3", "@types/object-hash": "^1.3.3",
"@types/sanitize-html": "^2.11.0", "@types/sanitize-html": "^2.11.0",
"@types/shortid": "0.0.29",
"@types/uuid": "^8.3.0", "@types/uuid": "^8.3.0",
"bluebird": "^3.4.6", "bluebird": "^3.4.6",
"boom": "^7.3.0", "boom": "^7.3.0",
@ -9258,12 +9398,12 @@
"locreq": "^3.0.0", "locreq": "^3.0.0",
"mjml": "^4.2.0", "mjml": "^4.2.0",
"mongodb": "^6.5.0", "mongodb": "^6.5.0",
"nanoid": "^5.0.9",
"nodemailer": "^6.4.6", "nodemailer": "^6.4.6",
"object-hash": "^2.0.3", "object-hash": "^2.0.3",
"pretty-ms": "^7.0.0", "pretty-ms": "^7.0.0",
"qs": "^6.12.0", "qs": "^6.12.0",
"sanitize-html": "^1.13.0", "sanitize-html": "^1.13.0",
"shortid": "^2.2.6",
"typedoc": "^0.17.8", "typedoc": "^0.17.8",
"uuid": "^8.3.2" "uuid": "^8.3.2"
}, },
@ -9523,13 +9663,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/shortid": {
"version": "2.2.16",
"license": "MIT",
"dependencies": {
"nanoid": "^2.1.0"
}
},
"node_modules/side-channel": { "node_modules/side-channel": {
"version": "1.0.6", "version": "1.0.6",
"license": "MIT", "license": "MIT",
@ -10448,9 +10581,9 @@
} }
}, },
"node_modules/tempstream": { "node_modules/tempstream": {
"version": "0.4.5", "version": "0.4.6",
"resolved": "https://registry.npmjs.org/tempstream/-/tempstream-0.4.5.tgz", "resolved": "https://registry.npmjs.org/tempstream/-/tempstream-0.4.6.tgz",
"integrity": "sha512-SplQcin+UyBivqeKpfCtQmKntrmeY0hypId6y5bZjAiYkQRUDybAJq/xFyn5AohNL9NQS19HSSYVhRsyy66fvQ==", "integrity": "sha512-UpRUWkgm6CdbwrBHRCiKmYwTSXvLsoROOZFwNmn+o2OXYd67yLe0/oK05ezgtD6YjkKy9Hrel36VSyaRlgsQUQ==",
"dependencies": { "dependencies": {
"classnames": "^2.5.1", "classnames": "^2.5.1",
"escape-goat": "^4.0.0" "escape-goat": "^4.0.0"
@ -11095,6 +11228,8 @@
}, },
"node_modules/valid-data-url": { "node_modules/valid-data-url": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-3.0.1.tgz",
"integrity": "sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==",
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">=10" "node": ">=10"
@ -11120,114 +11255,6 @@
"node": ">=10.13.0" "node": ">=10.13.0"
} }
}, },
"node_modules/web-resource-inliner": {
"version": "6.0.1",
"license": "MIT",
"dependencies": {
"ansi-colors": "^4.1.1",
"escape-goat": "^3.0.0",
"htmlparser2": "^5.0.0",
"mime": "^2.4.6",
"node-fetch": "^2.6.0",
"valid-data-url": "^3.0.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/web-resource-inliner/node_modules/dom-serializer": {
"version": "1.4.1",
"license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^4.2.0",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/dom-serializer/node_modules/domhandler": {
"version": "4.3.1",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domhandler": {
"version": "3.3.0",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.0.1"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domutils": {
"version": "2.8.0",
"license": "BSD-2-Clause",
"dependencies": {
"dom-serializer": "^1.0.1",
"domelementtype": "^2.2.0",
"domhandler": "^4.2.0"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/domutils/node_modules/domhandler": {
"version": "4.3.1",
"license": "BSD-2-Clause",
"dependencies": {
"domelementtype": "^2.2.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/entities": {
"version": "2.2.0",
"license": "BSD-2-Clause",
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/web-resource-inliner/node_modules/escape-goat": {
"version": "3.0.0",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/web-resource-inliner/node_modules/htmlparser2": {
"version": "5.0.1",
"license": "MIT",
"dependencies": {
"domelementtype": "^2.0.1",
"domhandler": "^3.3.0",
"domutils": "^2.4.2",
"entities": "^2.0.0"
},
"funding": {
"url": "https://github.com/fb55/htmlparser2?sponsor=1"
}
},
"node_modules/webidl-conversions": { "node_modules/webidl-conversions": {
"version": "7.0.0", "version": "7.0.0",
"license": "BSD-2-Clause", "license": "BSD-2-Clause",

View File

@ -80,9 +80,9 @@
"@sealcode/add-to-head": "^1.0.0", "@sealcode/add-to-head": "^1.0.0",
"@sealcode/crud-ui": "^0.0.17", "@sealcode/crud-ui": "^0.0.17",
"@sealcode/file-manager": "^1.0.2", "@sealcode/file-manager": "^1.0.2",
"@sealcode/jdd": "^0.7.2", "@sealcode/jdd": "^0.7.3",
"@sealcode/jdd-editor": "^0.1.19", "@sealcode/jdd-editor": "^0.1.20",
"@sealcode/sealgen": "^0.17.26", "@sealcode/sealgen": "^0.17.27",
"@sealcode/simplemde": "^1.12.1", "@sealcode/simplemde": "^1.12.1",
"@sealcode/ts-predicates": "^0.6.2", "@sealcode/ts-predicates": "^0.6.2",
"@types/kill-port": "^2.0.0", "@types/kill-port": "^2.0.0",
@ -101,10 +101,10 @@
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"object-path": "^0.11.8", "object-path": "^0.11.8",
"qs": "^6.12.0", "qs": "^6.12.0",
"sealious": "^0.19.36", "sealious": "^0.19.39",
"slug": "^9.1.0", "slug": "^9.1.0",
"stimulus": "^3.2.2", "stimulus": "^3.2.2",
"tempstream": "^0.4.5", "tempstream": "^0.4.6",
"throttle-debounce": "^5.0.2", "throttle-debounce": "^5.0.2",
"turndown": "^7.2.0" "turndown": "^7.2.0"
}, },

View File

@ -93,8 +93,6 @@ export default class TheApp extends App {
}) })
: new LoggerMailer(); : new LoggerMailer();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
async start() { async start() {
await super.start(); await super.start();
} }

View File

@ -1,8 +1,15 @@
import { Collection, FieldTypes, Policies } from "sealious"; import { Collection, FieldTypes, Policies } from "sealious";
import type { App } from "sealious"; import type { Context } from "koa";
import type { App, CollectionItem } from "sealious";
import { CRUDRoles } from "../policy-types/roles.js"; import { CRUDRoles } from "../policy-types/roles.js";
import assert from "assert"; import assert from "assert";
import TheApp from "../app.js"; import TheApp from "../app.js";
import type { FieldEntryMapping } from "sealious/@types/src/chip-types/collection.js";
import { JDD } from "@sealcode/jdd";
import { registry } from "../jdd-components/registry.js";
import type { RawJDDocument } from "@sealcode/jdd";
import { makeJDDContext } from "../jdd-context.js";
import { tempstream } from "tempstream";
export default class Pages extends Collection { export default class Pages extends Collection {
fields = { fields = {
@ -55,4 +62,24 @@ export default class Pages extends Collection {
} }
}); });
} }
mapFieldsToFeed(): FieldEntryMapping<this> {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
function getJDD(ctx: Context, item: CollectionItem<any>) {
const jdd_context = makeJDDContext(ctx);
return JDD.fromStorage(
registry,
jdd_context,
item.get("content") as RawJDDocument
);
}
return {
...super.mapFieldsToFeed(),
content: async (ctx, item) => {
const jdd = await getJDD(ctx, item);
const result = await tempstream/* HTML */ `${jdd.render()}`;
return result;
},
};
}
} }

View File

@ -65,9 +65,9 @@ export function defaultHead({
...css_clumps, ...css_clumps,
].map( ].map(
(clump_name) => /* HTML */ `<link (clump_name) => /* HTML */ `<link
href="/dist/${clump_name}.entrypoint.css?v=${start_timestamp}${ href="/dist/${clump_name}.entrypoint.css?v=${start_timestamp}${htmlOptions.autoRefreshCSS
htmlOptions.autoRefreshCSS ? `?${Math.random()}${Math.random()}` : "" ? `?${Math.random()}${Math.random()}`
}" : ""}"
rel="stylesheet" rel="stylesheet"
type="text/css" type="text/css"
/>` />`

View File

@ -2,6 +2,9 @@
/* eslint-disable @typescript-eslint/consistent-type-assertions */ /* eslint-disable @typescript-eslint/consistent-type-assertions */
import type { Context } from "koa"; import type { Context } from "koa";
import qs from "qs"; import qs from "qs";
import { promises as fs } from "node:fs";
import _locreq from "locreq";
const locreq = _locreq(import.meta.dirname);
export async function sleep(time: number) { export async function sleep(time: number) {
return new Promise((resolve) => setTimeout(resolve, time)); return new Promise((resolve) => setTimeout(resolve, time));
@ -75,3 +78,8 @@ export const fromCheckboxValues = (arr: Record<string, string> | null): string[]
.filter(([, value]) => value === "on") .filter(([, value]) => value === "on")
.map(([key]) => key); .map(([key]) => key);
}; };
export const get_css_clump_content = function (clump_name: string) {
const path = locreq.resolve(`public/dist/${clump_name}.entrypoint.css`);
return fs.readFile(path, "utf-8");
};