Update sealgen
This commit is contained in:
parent
608d30bbad
commit
837d6ded02
349
package-lock.json
generated
349
package-lock.json
generated
@ -17,7 +17,7 @@
|
|||||||
"@sealcode/file-manager": "^1.0.2",
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
"@sealcode/jdd": "^0.8.0",
|
"@sealcode/jdd": "^0.8.0",
|
||||||
"@sealcode/jdd-editor": "^0.2.1",
|
"@sealcode/jdd-editor": "^0.2.1",
|
||||||
"@sealcode/sealgen": "^0.18.10",
|
"@sealcode/sealgen": "^0.19.0",
|
||||||
"@sealcode/simplemde": "^1.12.1",
|
"@sealcode/simplemde": "^1.12.1",
|
||||||
"@sealcode/sortable": "^0.0.1",
|
"@sealcode/sortable": "^0.0.1",
|
||||||
"@sealcode/ts-predicates": "^0.6.2",
|
"@sealcode/ts-predicates": "^0.6.2",
|
||||||
@ -44,7 +44,7 @@
|
|||||||
"nyc": "^17.1.0",
|
"nyc": "^17.1.0",
|
||||||
"object-path": "^0.11.8",
|
"object-path": "^0.11.8",
|
||||||
"qs": "^6.12.0",
|
"qs": "^6.12.0",
|
||||||
"sealious": "^0.21.10",
|
"sealious": "^0.21.20",
|
||||||
"slug": "^9.1.0",
|
"slug": "^9.1.0",
|
||||||
"stimulus": "^3.2.2",
|
"stimulus": "^3.2.2",
|
||||||
"tempstream": "^0.4.6",
|
"tempstream": "^0.4.6",
|
||||||
@ -1366,6 +1366,85 @@
|
|||||||
"node": ">= 18"
|
"node": ">= 18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@sealcode/crud-ui/node_modules/@sealcode/sealgen": {
|
||||||
|
"version": "0.18.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
||||||
|
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@koa/router": "^12.0.1",
|
||||||
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
|
"@sealcode/ts-predicates": "^0.4.3",
|
||||||
|
"chokidar": "^3.6.0",
|
||||||
|
"colord": "^2.9.3",
|
||||||
|
"deepmerge": "^4.3.1",
|
||||||
|
"esbuild": "^0.20.0",
|
||||||
|
"escape-goat": "^4.0.0",
|
||||||
|
"fonsta": "^1.1.1",
|
||||||
|
"google-fonts-helper": "^3.4.1",
|
||||||
|
"husky": "^9.1.7",
|
||||||
|
"is-what": "^4.1.16",
|
||||||
|
"js-convert-case": "^4.2.0",
|
||||||
|
"json5": "^2.2.3",
|
||||||
|
"locreq": "^3.0.0",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"merge": "^2.1.1",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"prompts": "^2.4.2",
|
||||||
|
"recursive-readdir": "^2.2.3",
|
||||||
|
"tempfile": "^5.0.0",
|
||||||
|
"tempstream": "^0.4.6",
|
||||||
|
"tiny-glob": "^0.2.9",
|
||||||
|
"wcag-contrast": "^3.0.0",
|
||||||
|
"ws": "^8.16.0",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"sealgen": "lib/cli.js"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"koa": "^2.13.0",
|
||||||
|
"koa-responsive-image-router": "^0.2.24",
|
||||||
|
"sealious": "^0.21"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/crud-ui/node_modules/@sealcode/sealgen/node_modules/@koa/router": {
|
||||||
|
"version": "12.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz",
|
||||||
|
"integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"http-errors": "^2.0.0",
|
||||||
|
"koa-compose": "^4.1.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"path-to-regexp": "^6.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/crud-ui/node_modules/@sealcode/ts-predicates": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A==",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/crud-ui/node_modules/prettier": {
|
||||||
|
"version": "2.8.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"prettier": "bin-prettier.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@sealcode/file-manager": {
|
"node_modules/@sealcode/file-manager": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/file-manager/-/file-manager-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@sealcode/file-manager/-/file-manager-1.0.2.tgz",
|
||||||
@ -1435,34 +1514,11 @@
|
|||||||
"node": ">= 18"
|
"node": ">= 18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@sealcode/jdd/node_modules/@sealcode/ts-predicates": {
|
"node_modules/@sealcode/jdd-editor/node_modules/@sealcode/sealgen": {
|
||||||
"version": "0.5.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.5.3.tgz",
|
|
||||||
"integrity": "sha512-EZI7e8EY8gI1pw2bKdevjl+fBJbcSlpNkCZ8XoEOV3cHakPujiT6M4l775RDkfxJSbLX7jhOBkhgPNDfmCpZbg=="
|
|
||||||
},
|
|
||||||
"node_modules/@sealcode/jdd/node_modules/prettier": {
|
|
||||||
"version": "2.8.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
|
||||||
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
|
||||||
"bin": {
|
|
||||||
"prettier": "bin-prettier.js"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10.13.0"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/prettier/prettier?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@sealcode/sealcodemirror": {
|
|
||||||
"version": "5.70.0-beta5",
|
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/sealcodemirror/-/sealcodemirror-5.70.0-beta5.tgz",
|
|
||||||
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
|
|
||||||
},
|
|
||||||
"node_modules/@sealcode/sealgen": {
|
|
||||||
"version": "0.18.10",
|
"version": "0.18.10",
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
||||||
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
||||||
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@koa/router": "^12.0.1",
|
"@koa/router": "^12.0.1",
|
||||||
"@sealcode/file-manager": "^1.0.2",
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
@ -1500,6 +1556,110 @@
|
|||||||
"sealious": "^0.21"
|
"sealious": "^0.21"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@sealcode/jdd-editor/node_modules/@sealcode/sealgen/node_modules/@koa/router": {
|
||||||
|
"version": "12.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz",
|
||||||
|
"integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"http-errors": "^2.0.0",
|
||||||
|
"koa-compose": "^4.1.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"path-to-regexp": "^6.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/jdd-editor/node_modules/@sealcode/ts-predicates": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A==",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/jdd-editor/node_modules/prettier": {
|
||||||
|
"version": "2.8.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"prettier": "bin-prettier.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/jdd/node_modules/@sealcode/ts-predicates": {
|
||||||
|
"version": "0.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.5.3.tgz",
|
||||||
|
"integrity": "sha512-EZI7e8EY8gI1pw2bKdevjl+fBJbcSlpNkCZ8XoEOV3cHakPujiT6M4l775RDkfxJSbLX7jhOBkhgPNDfmCpZbg=="
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/jdd/node_modules/prettier": {
|
||||||
|
"version": "2.8.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
|
||||||
|
"bin": {
|
||||||
|
"prettier": "bin-prettier.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/sealcodemirror": {
|
||||||
|
"version": "5.70.0-beta5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/sealcodemirror/-/sealcodemirror-5.70.0-beta5.tgz",
|
||||||
|
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
|
||||||
|
},
|
||||||
|
"node_modules/@sealcode/sealgen": {
|
||||||
|
"version": "0.19.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.19.0.tgz",
|
||||||
|
"integrity": "sha512-fnHg/1b+w4E0G4VUSk+Qh+rsHneh1F9LSXZBnQW3fF1+WdSUWgeaVMqUPpN6CXNmze1k7dMWQIjdXAS/AYgpFA==",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@koa/router": "^12.0.1",
|
||||||
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
|
"@sealcode/ts-predicates": "^0.4.3",
|
||||||
|
"chokidar": "^3.6.0",
|
||||||
|
"colord": "^2.9.3",
|
||||||
|
"deepmerge": "^4.3.1",
|
||||||
|
"esbuild": "^0.20.0",
|
||||||
|
"escape-goat": "^4.0.0",
|
||||||
|
"fonsta": "^1.1.1",
|
||||||
|
"google-fonts-helper": "^3.4.1",
|
||||||
|
"husky": "^9.1.7",
|
||||||
|
"is-what": "^4.1.16",
|
||||||
|
"js-convert-case": "^4.2.0",
|
||||||
|
"json5": "^2.2.3",
|
||||||
|
"locreq": "^3.0.0",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"merge": "^2.1.1",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"prompts": "^2.4.2",
|
||||||
|
"recursive-readdir": "^2.2.3",
|
||||||
|
"tempfile": "^5.0.0",
|
||||||
|
"tempstream": "^0.4.6",
|
||||||
|
"tiny-glob": "^0.2.9",
|
||||||
|
"wcag-contrast": "^3.0.0",
|
||||||
|
"ws": "^8.16.0",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"sealgen": "lib/cli.js"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"koa": "^2.13.0",
|
||||||
|
"koa-responsive-image-router": "^0.2.24",
|
||||||
|
"sealious": "^0.21",
|
||||||
|
"stimulus": "^3.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@sealcode/sealgen/node_modules/@sealcode/ts-predicates": {
|
"node_modules/@sealcode/sealgen/node_modules/@sealcode/ts-predicates": {
|
||||||
"version": "0.4.3",
|
"version": "0.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
||||||
@ -12066,9 +12226,9 @@
|
|||||||
"peer": true
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/sealious": {
|
"node_modules/sealious": {
|
||||||
"version": "0.21.10",
|
"version": "0.21.20",
|
||||||
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.21.10.tgz",
|
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.21.20.tgz",
|
||||||
"integrity": "sha512-T154pqrpj9KWjFPoiTut1nCcgi45xTfQztCMJ6UIuUFU4uBA2y5bdO4BFpjGLukeA8vYJXJlcTao+fHDuCBx3Q==",
|
"integrity": "sha512-O4ac6jHkL3tP8UcN/3ybmOHMSo17IRaAFt5/FDixw+6upcQw8QeXuQgf7DR8gKdmNbNCiWLjqGoksw6GeQFWgg==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@koa/router": "^12.0.1",
|
"@koa/router": "^12.0.1",
|
||||||
"@sealcode/file-manager": "^1.0.1",
|
"@sealcode/file-manager": "^1.0.1",
|
||||||
@ -12124,6 +12284,9 @@
|
|||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=21.0"
|
"node": ">=21.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"koa-responsive-image-router": "^0.2.37"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sealious/node_modules/@sealcode/ts-predicates": {
|
"node_modules/sealious/node_modules/@sealcode/ts-predicates": {
|
||||||
@ -15941,6 +16104,63 @@
|
|||||||
"koa-compose": "^4.1.0",
|
"koa-compose": "^4.1.0",
|
||||||
"path-to-regexp": "^6.3.0"
|
"path-to-regexp": "^6.3.0"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"@sealcode/sealgen": {
|
||||||
|
"version": "0.18.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
||||||
|
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
||||||
|
"requires": {
|
||||||
|
"@koa/router": "^12.0.1",
|
||||||
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
|
"@sealcode/ts-predicates": "^0.4.3",
|
||||||
|
"chokidar": "^3.6.0",
|
||||||
|
"colord": "^2.9.3",
|
||||||
|
"deepmerge": "^4.3.1",
|
||||||
|
"esbuild": "^0.20.0",
|
||||||
|
"escape-goat": "^4.0.0",
|
||||||
|
"fonsta": "^1.1.1",
|
||||||
|
"google-fonts-helper": "^3.4.1",
|
||||||
|
"husky": "^9.1.7",
|
||||||
|
"is-what": "^4.1.16",
|
||||||
|
"js-convert-case": "^4.2.0",
|
||||||
|
"json5": "^2.2.3",
|
||||||
|
"locreq": "^3.0.0",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"merge": "^2.1.1",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"prompts": "^2.4.2",
|
||||||
|
"recursive-readdir": "^2.2.3",
|
||||||
|
"tempfile": "^5.0.0",
|
||||||
|
"tempstream": "^0.4.6",
|
||||||
|
"tiny-glob": "^0.2.9",
|
||||||
|
"wcag-contrast": "^3.0.0",
|
||||||
|
"ws": "^8.16.0",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@koa/router": {
|
||||||
|
"version": "12.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz",
|
||||||
|
"integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"http-errors": "^2.0.0",
|
||||||
|
"koa-compose": "^4.1.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"path-to-regexp": "^6.3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@sealcode/ts-predicates": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A=="
|
||||||
|
},
|
||||||
|
"prettier": {
|
||||||
|
"version": "2.8.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -16018,6 +16238,63 @@
|
|||||||
"koa-compose": "^4.1.0",
|
"koa-compose": "^4.1.0",
|
||||||
"path-to-regexp": "^6.3.0"
|
"path-to-regexp": "^6.3.0"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"@sealcode/sealgen": {
|
||||||
|
"version": "0.18.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
||||||
|
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
||||||
|
"requires": {
|
||||||
|
"@koa/router": "^12.0.1",
|
||||||
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
|
"@sealcode/ts-predicates": "^0.4.3",
|
||||||
|
"chokidar": "^3.6.0",
|
||||||
|
"colord": "^2.9.3",
|
||||||
|
"deepmerge": "^4.3.1",
|
||||||
|
"esbuild": "^0.20.0",
|
||||||
|
"escape-goat": "^4.0.0",
|
||||||
|
"fonsta": "^1.1.1",
|
||||||
|
"google-fonts-helper": "^3.4.1",
|
||||||
|
"husky": "^9.1.7",
|
||||||
|
"is-what": "^4.1.16",
|
||||||
|
"js-convert-case": "^4.2.0",
|
||||||
|
"json5": "^2.2.3",
|
||||||
|
"locreq": "^3.0.0",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"merge": "^2.1.1",
|
||||||
|
"prettier": "^2.7.1",
|
||||||
|
"prompts": "^2.4.2",
|
||||||
|
"recursive-readdir": "^2.2.3",
|
||||||
|
"tempfile": "^5.0.0",
|
||||||
|
"tempstream": "^0.4.6",
|
||||||
|
"tiny-glob": "^0.2.9",
|
||||||
|
"wcag-contrast": "^3.0.0",
|
||||||
|
"ws": "^8.16.0",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@koa/router": {
|
||||||
|
"version": "12.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.2.tgz",
|
||||||
|
"integrity": "sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==",
|
||||||
|
"requires": {
|
||||||
|
"debug": "^4.3.4",
|
||||||
|
"http-errors": "^2.0.0",
|
||||||
|
"koa-compose": "^4.1.0",
|
||||||
|
"methods": "^1.1.2",
|
||||||
|
"path-to-regexp": "^6.3.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@sealcode/ts-predicates": {
|
||||||
|
"version": "0.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sealcode/ts-predicates/-/ts-predicates-0.4.3.tgz",
|
||||||
|
"integrity": "sha512-UNSEacu7Ye8q0N8AJCJy37oJvv3w2OXKGkUnP7xO5lOY9DQviDPRDQhVaZdJ3/xMzXLm4UE3389ihctrPaov/A=="
|
||||||
|
},
|
||||||
|
"prettier": {
|
||||||
|
"version": "2.8.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
|
||||||
|
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -16027,9 +16304,9 @@
|
|||||||
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
|
"integrity": "sha512-pDsGlk2KokQkwzsJDBUWJFDRpEoxxth6TMQGDJyCTmWnd1Vn+cQb5moXDKaf7cXnWb9Y6QtdNX/fPzM/3RH2Cg=="
|
||||||
},
|
},
|
||||||
"@sealcode/sealgen": {
|
"@sealcode/sealgen": {
|
||||||
"version": "0.18.10",
|
"version": "0.19.0",
|
||||||
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.18.10.tgz",
|
"resolved": "https://registry.npmjs.org/@sealcode/sealgen/-/sealgen-0.19.0.tgz",
|
||||||
"integrity": "sha512-Q+Wkeq01TFHXPM+LoRMbe9fqakSqgJnJxmjsw9Jzhm3dKBchTfj8BvRd1XWERWZZizCWmzkshLNoVx0kjyZ7rA==",
|
"integrity": "sha512-fnHg/1b+w4E0G4VUSk+Qh+rsHneh1F9LSXZBnQW3fF1+WdSUWgeaVMqUPpN6CXNmze1k7dMWQIjdXAS/AYgpFA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@koa/router": "^12.0.1",
|
"@koa/router": "^12.0.1",
|
||||||
"@sealcode/file-manager": "^1.0.2",
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
@ -23966,9 +24243,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sealious": {
|
"sealious": {
|
||||||
"version": "0.21.10",
|
"version": "0.21.20",
|
||||||
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.21.10.tgz",
|
"resolved": "https://registry.npmjs.org/sealious/-/sealious-0.21.20.tgz",
|
||||||
"integrity": "sha512-T154pqrpj9KWjFPoiTut1nCcgi45xTfQztCMJ6UIuUFU4uBA2y5bdO4BFpjGLukeA8vYJXJlcTao+fHDuCBx3Q==",
|
"integrity": "sha512-O4ac6jHkL3tP8UcN/3ybmOHMSo17IRaAFt5/FDixw+6upcQw8QeXuQgf7DR8gKdmNbNCiWLjqGoksw6GeQFWgg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@koa/router": "^12.0.1",
|
"@koa/router": "^12.0.1",
|
||||||
"@sealcode/file-manager": "^1.0.1",
|
"@sealcode/file-manager": "^1.0.1",
|
||||||
|
11
package.json
11
package.json
@ -45,13 +45,18 @@
|
|||||||
],
|
],
|
||||||
"controllerDirs": [
|
"controllerDirs": [
|
||||||
"node_modules/@sealcode/jdd-editor/src/controllers",
|
"node_modules/@sealcode/jdd-editor/src/controllers",
|
||||||
"node_modules/@sealcode/sortable/src/controllers"
|
"node_modules/@sealcode/sortable/src/controllers",
|
||||||
|
"node_modules/@sealcode/sealgen/src/controllers"
|
||||||
],
|
],
|
||||||
"copyToPublic": [
|
"copyToPublic": [
|
||||||
{
|
{
|
||||||
"from": "node_modules/@sealcode/jdd-editor/assets/icons",
|
"from": "node_modules/@sealcode/jdd-editor/assets/icons",
|
||||||
"to": "dist/jdd-page/icons"
|
"to": "dist/jdd-page/icons"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"from": "node_modules/@sealcode/sealgen/assets",
|
||||||
|
"to": "dist/sealgen"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"from": "node_modules/@sealcode/simplemde/dist/simplemde.min.css",
|
"from": "node_modules/@sealcode/simplemde/dist/simplemde.min.css",
|
||||||
"to": "dist/simplemde.min.css"
|
"to": "dist/simplemde.min.css"
|
||||||
@ -85,7 +90,7 @@
|
|||||||
"@sealcode/file-manager": "^1.0.2",
|
"@sealcode/file-manager": "^1.0.2",
|
||||||
"@sealcode/jdd": "^0.8.0",
|
"@sealcode/jdd": "^0.8.0",
|
||||||
"@sealcode/jdd-editor": "^0.2.1",
|
"@sealcode/jdd-editor": "^0.2.1",
|
||||||
"@sealcode/sealgen": "^0.18.10",
|
"@sealcode/sealgen": "^0.19.0",
|
||||||
"@sealcode/simplemde": "^1.12.1",
|
"@sealcode/simplemde": "^1.12.1",
|
||||||
"@sealcode/sortable": "^0.0.1",
|
"@sealcode/sortable": "^0.0.1",
|
||||||
"@sealcode/ts-predicates": "^0.6.2",
|
"@sealcode/ts-predicates": "^0.6.2",
|
||||||
@ -112,7 +117,7 @@
|
|||||||
"nyc": "^17.1.0",
|
"nyc": "^17.1.0",
|
||||||
"object-path": "^0.11.8",
|
"object-path": "^0.11.8",
|
||||||
"qs": "^6.12.0",
|
"qs": "^6.12.0",
|
||||||
"sealious": "^0.21.10",
|
"sealious": "^0.21.20",
|
||||||
"slug": "^9.1.0",
|
"slug": "^9.1.0",
|
||||||
"stimulus": "^3.2.2",
|
"stimulus": "^3.2.2",
|
||||||
"tempstream": "^0.4.6",
|
"tempstream": "^0.4.6",
|
||||||
|
@ -16,7 +16,6 @@ import {
|
|||||||
MONGO_PORT,
|
MONGO_PORT,
|
||||||
MONGO_USERNAME,
|
MONGO_USERNAME,
|
||||||
PORT,
|
PORT,
|
||||||
UPLOADS_FS_DIR,
|
|
||||||
} from "./config.js";
|
} from "./config.js";
|
||||||
import ADMIN_CREDENTIALS from "./default-admin-credentials.js";
|
import ADMIN_CREDENTIALS from "./default-admin-credentials.js";
|
||||||
import { TheFileManager } from "./file-manager.js";
|
import { TheFileManager } from "./file-manager.js";
|
||||||
@ -53,7 +52,6 @@ declare module "@sealcode/sealgen" {
|
|||||||
export default class TheApp extends App {
|
export default class TheApp extends App {
|
||||||
FileManager = TheFileManager;
|
FileManager = TheFileManager;
|
||||||
config = {
|
config = {
|
||||||
upload_path: UPLOADS_FS_DIR,
|
|
||||||
datastore_mongo: {
|
datastore_mongo: {
|
||||||
host: MONGO_HOST,
|
host: MONGO_HOST,
|
||||||
port: MONGO_PORT,
|
port: MONGO_PORT,
|
||||||
|
@ -8,7 +8,13 @@ import TheApp from "./app.js";
|
|||||||
import { PORT, SEALIOUS_KILLSWITCH_PORT, SEALIOUS_SANITY } from "./config.js";
|
import { PORT, SEALIOUS_KILLSWITCH_PORT, SEALIOUS_SANITY } from "./config.js";
|
||||||
import { mainRouter } from "./routes/index.js";
|
import { mainRouter } from "./routes/index.js";
|
||||||
import { waitForMeilisearch } from "./services/meilisearch.js";
|
import { waitForMeilisearch } from "./services/meilisearch.js";
|
||||||
export const the_app = new TheApp();
|
import { TheFileManager } from "./file-manager.js";
|
||||||
|
import { imageRouter } from "./image-router.js";
|
||||||
|
|
||||||
|
export const the_app = new TheApp({
|
||||||
|
fileManager: TheFileManager,
|
||||||
|
imageRouter: imageRouter,
|
||||||
|
});
|
||||||
|
|
||||||
void (async function () {
|
void (async function () {
|
||||||
await kill(PORT);
|
await kill(PORT);
|
||||||
|
@ -4,13 +4,16 @@
|
|||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: color-mix(in srgb, var(--color) 10%, white);
|
background-color: color-mix(in srgb, var(--color) 10%, white);
|
||||||
color: color-mix(in srgb, var(--color) 31%, black);
|
color: color-mix(in srgb, var(--color) 31%, black);
|
||||||
animation: notification-pop 400ms;
|
animation: form-message 400ms;
|
||||||
animation-timing-function: cubic-bezier(0.68, -0.55, 0.27, 1.55);
|
animation-timing-function: cubic-bezier(0.68, -0.55, 0.27, 1.55);
|
||||||
}
|
}
|
||||||
|
|
||||||
body:not(*:has(.jdd-container)) .form-container {
|
body:not(*:has(.jdd-container)) .form-container {
|
||||||
|
container-type: inline-size;
|
||||||
|
|
||||||
label {
|
label {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-input .form-input label {
|
.form-input .form-input label {
|
||||||
@ -20,16 +23,31 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
.form {
|
.form {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
|
--column-count: 2;
|
||||||
|
|
||||||
|
@container (max-width: 900px) {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
--column-count: 1;
|
||||||
|
}
|
||||||
|
|
||||||
grid-auto-flow: dense;
|
grid-auto-flow: dense;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
max-width: 1224px;
|
max-width: 1224px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|
||||||
.form-messages {
|
.form-messages {
|
||||||
grid-column: span 2;
|
grid-column: span var(--column-count);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 16px;
|
top: 16px;
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
.form-message {
|
||||||
|
display: inline-block;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
& > .form-input__wrapper {
|
& > .form-input__wrapper {
|
||||||
@ -44,7 +62,7 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
}
|
}
|
||||||
|
|
||||||
& > h2 {
|
& > h2 {
|
||||||
grid-column: span 2;
|
grid-column: span var(--column-count);
|
||||||
font-family: var(--font-sans-serif);
|
font-family: var(--font-sans-serif);
|
||||||
color: var(--color-brand-text-fg);
|
color: var(--color-brand-text-fg);
|
||||||
font-size: 36px;
|
font-size: 36px;
|
||||||
@ -54,7 +72,7 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
input[type="submit"] {
|
input[type="submit"] {
|
||||||
background-color: var(--color-brand-accent);
|
background-color: var(--color-brand-accent);
|
||||||
color: white;
|
color: white;
|
||||||
grid-column: span 2;
|
grid-column: span var(--column-count);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border: none;
|
border: none;
|
||||||
@ -81,7 +99,10 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
|
|
||||||
.form-input__wrapper--text,
|
.form-input__wrapper--text,
|
||||||
.form-input__wrapper--type__date,
|
.form-input__wrapper--type__date,
|
||||||
|
.form-input__wrapper--type__datetime-local,
|
||||||
.form-input__wrapper--type__number,
|
.form-input__wrapper--type__number,
|
||||||
|
.form-input__wrapper--enum,
|
||||||
|
.form-input--type-simple-input,
|
||||||
.form-input__wrapper--type__password {
|
.form-input__wrapper--type__password {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: row nowrap;
|
flex-flow: row nowrap;
|
||||||
@ -99,13 +120,25 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
var(--color-brand-accent) 50%,
|
var(--color-brand-accent) 50%,
|
||||||
transparent
|
transparent
|
||||||
);
|
);
|
||||||
height: 33px;
|
box-sizing: border-box;
|
||||||
padding: 08px;
|
height: 50px;
|
||||||
|
padding: 8px;
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
background-color: hsl(13.8, 40%, 100%);
|
background-color: hsl(13.8, 40%, 100%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.form-input__wrapper--file:not(.form-input__wrapper--control-type__photo) {
|
||||||
|
grid-row: span 2;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: min-content 1fr;
|
||||||
|
grid-template-rows: min-content min-content;
|
||||||
|
|
||||||
|
& > label {
|
||||||
|
grid-row: 1/3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.form-input--type-checkboxed-list,
|
.form-input--type-checkboxed-list,
|
||||||
.form-input__wrapper--type--table {
|
.form-input__wrapper--type--table {
|
||||||
ul {
|
ul {
|
||||||
@ -142,7 +175,7 @@ body:not(*:has(.jdd-container)) .form-container {
|
|||||||
.form-input__wrapper--title,
|
.form-input__wrapper--title,
|
||||||
.form-input__wrapper--subtitle,
|
.form-input__wrapper--subtitle,
|
||||||
.form-input:has(textarea) {
|
.form-input:has(textarea) {
|
||||||
grid-column: span 2;
|
grid-column: span var(--column-count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
151
src/back/routes/admin/forms.css
Normal file
151
src/back/routes/admin/forms.css
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
@keyframes form-message {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-list-item {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
|
||||||
|
form {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-message {
|
||||||
|
--color: black;
|
||||||
|
border: 1px solid var(--color);
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
animation: form-message 200ms;
|
||||||
|
box-shadow: 3px 3px 0px 0px #00000038;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-message--error {
|
||||||
|
--color: var(--color-basic-red);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "❌";
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-message--success {
|
||||||
|
--color: var(--color-basic-green);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: "✅";
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form__error {
|
||||||
|
color: var(--color-basic-red);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input--type-simple-input {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input__wrapper--checkbox {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
& > input[type="checkbox"] {
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
|
||||||
|
+ label {
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input__wrapper--multiple-files--photos {
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
||||||
|
grid-gap: 10px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
|
||||||
|
li {
|
||||||
|
background-color: white;
|
||||||
|
box-shadow: 1px 1px 6px 0px #00000038;
|
||||||
|
padding: 10px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 20px;
|
||||||
|
grid-template-rows: 20px auto min-content;
|
||||||
|
grid-row-gap: 10px;
|
||||||
|
|
||||||
|
a {
|
||||||
|
grid-row: 1/3;
|
||||||
|
grid-column: 1/3;
|
||||||
|
|
||||||
|
picture,
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
height: 150px;
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.filename {
|
||||||
|
grid-row: 3/4;
|
||||||
|
grid-column: 1/3;
|
||||||
|
}
|
||||||
|
|
||||||
|
form {
|
||||||
|
grid-row: 1/2;
|
||||||
|
grid-column: 2/3;
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.form {
|
||||||
|
.file_preview__icon {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
a {
|
||||||
|
word-wrap: anywhere;
|
||||||
|
text-align: center;
|
||||||
|
color: var(--color-brand-text-accent2);
|
||||||
|
}
|
||||||
|
|
||||||
|
picture {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
grid-template-rows: 1.3fr 1fr 1fr;
|
||||||
|
|
||||||
|
img {
|
||||||
|
grid-row: 1/4;
|
||||||
|
grid-column: 1/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file_preview__icon__extension {
|
||||||
|
text-transform: uppercase;
|
||||||
|
color: var(--color-brand-accent2);
|
||||||
|
font-weight: bold;
|
||||||
|
grid-row: 2/3;
|
||||||
|
grid-column: 1/2;
|
||||||
|
text-align: center;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,6 @@
|
|||||||
import { Controls, Fields } from "@sealcode/sealgen";
|
import { Controls, Fields } from "@sealcode/sealgen";
|
||||||
import { Pages } from "../../../collections/collections.js";
|
import { Pages } from "../../../collections/collections.js";
|
||||||
|
|
||||||
import { imageRouter } from "../../../image-router.js";
|
|
||||||
import { TheFileManager } from "../../../file-manager.js";
|
|
||||||
|
|
||||||
export const PagesFormFields = <const>{
|
export const PagesFormFields = <const>{
|
||||||
url: new Fields.CollectionField(Pages.fields.url.required, Pages.fields.url),
|
url: new Fields.CollectionField(Pages.fields.url.required, Pages.fields.url),
|
||||||
domain: new Fields.CollectionField(Pages.fields.domain.required, Pages.fields.domain),
|
domain: new Fields.CollectionField(Pages.fields.domain.required, Pages.fields.domain),
|
||||||
@ -16,7 +13,7 @@ export const PagesFormFields = <const>{
|
|||||||
Pages.fields.description.required,
|
Pages.fields.description.required,
|
||||||
Pages.fields.description
|
Pages.fields.description
|
||||||
),
|
),
|
||||||
imageForMetadata: new Fields.File(false, TheFileManager),
|
imageForMetadata: new Fields.File(false),
|
||||||
hideNavigation: new Fields.Boolean(Pages.fields.hideNavigation.required),
|
hideNavigation: new Fields.Boolean(Pages.fields.hideNavigation.required),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -26,7 +23,7 @@ export const PagesFormControls = [
|
|||||||
new Controls.SimpleInput(PagesFormFields.title, { label: "title" }),
|
new Controls.SimpleInput(PagesFormFields.title, { label: "title" }),
|
||||||
new Controls.SimpleInput(PagesFormFields.heading, { label: "heading" }),
|
new Controls.SimpleInput(PagesFormFields.heading, { label: "heading" }),
|
||||||
new Controls.SimpleInput(PagesFormFields.description, { label: "description" }),
|
new Controls.SimpleInput(PagesFormFields.description, { label: "description" }),
|
||||||
new Controls.Photo(PagesFormFields.imageForMetadata, imageRouter, {
|
new Controls.Image(PagesFormFields.imageForMetadata, {
|
||||||
label: "imageForMetadata",
|
label: "imageForMetadata",
|
||||||
}),
|
}),
|
||||||
new Controls.Checkbox(PagesFormFields.hideNavigation, { label: "hideNavigation" }),
|
new Controls.Checkbox(PagesFormFields.hideNavigation, { label: "hideNavigation" }),
|
||||||
|
@ -9,7 +9,7 @@ import { AdminURL } from "../urls.js";
|
|||||||
export const actionName = "ResetPassword";
|
export const actionName = "ResetPassword";
|
||||||
|
|
||||||
const fields = {
|
const fields = {
|
||||||
password: new Fields.SimpleFormField(true),
|
password: new Fields.Password(true),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ResetPasswordShape = fieldsToShape(fields);
|
export const ResetPasswordShape = fieldsToShape(fields);
|
||||||
@ -20,10 +20,7 @@ export default new (class ResetPasswordForm extends Form<typeof fields, void> {
|
|||||||
|
|
||||||
controls = [
|
controls = [
|
||||||
new Controls.HTML("decoration", /* HTML */ `<h1>Change password</h1>`),
|
new Controls.HTML("decoration", /* HTML */ `<h1>Change password</h1>`),
|
||||||
new Controls.SimpleInput(fields.password, {
|
fields.password.getControl(),
|
||||||
label: "Password:",
|
|
||||||
type: "password",
|
|
||||||
}),
|
|
||||||
];
|
];
|
||||||
|
|
||||||
async onSubmit(ctx: Context) {
|
async onSubmit(ctx: Context) {
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
import { CRUD } from "@sealcode/crud-ui";
|
|
||||||
import type { CollectionItem } from "sealious";
|
|
||||||
import type { ListFilterRender } from "@sealcode/sealgen";
|
|
||||||
import { Controls, DefaultListFilters, Fields } from "@sealcode/sealgen";
|
|
||||||
import { NavbarLinks } from "src/back/collections/collections.js";
|
|
||||||
import html from "src/back/html.js";
|
|
||||||
|
|
||||||
export const actionName = "NavbarLinksCRUD";
|
|
||||||
|
|
||||||
const edit_fields = <const>{
|
|
||||||
label: new Fields.CollectionField(
|
|
||||||
NavbarLinks.fields.label.required,
|
|
||||||
NavbarLinks.fields.label
|
|
||||||
),
|
|
||||||
href: new Fields.CollectionField(
|
|
||||||
NavbarLinks.fields.href.required,
|
|
||||||
NavbarLinks.fields.href
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
const edit_controls = [
|
|
||||||
new Controls.SimpleInput(edit_fields.label, { label: "label" }),
|
|
||||||
new Controls.SimpleInput(edit_fields.href, { label: "href" }),
|
|
||||||
];
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
||||||
const fields_for_display = [
|
|
||||||
{ field: "label", label: "label" },
|
|
||||||
{ field: "href", label: "href" },
|
|
||||||
] as {
|
|
||||||
field: keyof (typeof NavbarLinks)["fields"];
|
|
||||||
label: string;
|
|
||||||
format?: (
|
|
||||||
value: unknown,
|
|
||||||
item: CollectionItem<typeof NavbarLinks>
|
|
||||||
) => string | Promise<string>;
|
|
||||||
}[];
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
||||||
const fields_for_filters = [
|
|
||||||
{ field: "label", ...DefaultListFilters["text"] },
|
|
||||||
{ field: "href", ...DefaultListFilters["text"] },
|
|
||||||
] as {
|
|
||||||
field: keyof (typeof NavbarLinks)["fields"];
|
|
||||||
render?: ListFilterRender;
|
|
||||||
prepareValue?: (filter_value: unknown) => unknown; // set this function to change what filter value is passed to Sealious
|
|
||||||
}[];
|
|
||||||
|
|
||||||
export default new CRUD({
|
|
||||||
collection: NavbarLinks,
|
|
||||||
nice_collection_name: "NavbarLinks",
|
|
||||||
fields_for_display,
|
|
||||||
fields_for_filters,
|
|
||||||
html,
|
|
||||||
list_title: "NavbarLinks list",
|
|
||||||
edit_title: "Edit",
|
|
||||||
edit_button_text: "Edit",
|
|
||||||
delete_button_text: "Delete",
|
|
||||||
back_to_list_button_text: "← Back to NavbarLinks list",
|
|
||||||
edit_fields,
|
|
||||||
edit_controls,
|
|
||||||
form_value_to_sealious_value: {},
|
|
||||||
sealious_value_to_form_value: {},
|
|
||||||
post_edit: async () => {},
|
|
||||||
post_create: async () => {},
|
|
||||||
});
|
|
@ -11,8 +11,8 @@ import { AdminURL } from "./urls.js";
|
|||||||
export const actionName = "Login";
|
export const actionName = "Login";
|
||||||
|
|
||||||
const fields = {
|
const fields = {
|
||||||
username: new Fields.SimpleFormField(true),
|
username: new Fields.Text(true),
|
||||||
password: new Fields.SimpleFormField(true),
|
password: new Fields.Text(true),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LoginShape = fieldsToShape(fields);
|
export const LoginShape = fieldsToShape(fields);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import type { Context } from "koa";
|
import type { Context } from "koa";
|
||||||
import { Form, Fields, Controls, fieldsToShape } from "@sealcode/sealgen";
|
import { Form, Fields, Controls, fieldsToShape } from "@sealcode/sealgen";
|
||||||
import type { FlatTemplatable } from "tempstream";
|
|
||||||
import { tempstream } from "tempstream";
|
import { tempstream } from "tempstream";
|
||||||
import { Users } from "../collections/collections.js";
|
import { Users } from "../collections/collections.js";
|
||||||
import html from "../html.js";
|
import html from "../html.js";
|
||||||
@ -10,12 +9,13 @@ import type {
|
|||||||
FormReaction,
|
FormReaction,
|
||||||
} from "@sealcode/sealgen/@types/forms/form-types.js";
|
} from "@sealcode/sealgen/@types/forms/form-types.js";
|
||||||
import type { PageErrorMessage } from "@sealcode/sealgen/@types/page/mountable-with-fields.js";
|
import type { PageErrorMessage } from "@sealcode/sealgen/@types/page/mountable-with-fields.js";
|
||||||
|
import type { Readable } from "stream";
|
||||||
|
|
||||||
export const actionName = "SignIn";
|
export const actionName = "SignIn";
|
||||||
|
|
||||||
const fields = {
|
const fields = {
|
||||||
username: new Fields.SimpleFormField(true),
|
username: new Fields.TextBasedSimpleField(true),
|
||||||
password: new Fields.SimpleFormField(true),
|
password: new Fields.TextBasedSimpleField(true),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SignInShape = fieldsToShape(fields);
|
export const SignInShape = fieldsToShape(fields);
|
||||||
@ -36,7 +36,7 @@ export default new (class SignInForm extends Form<typeof fields, void> {
|
|||||||
ctx: Context,
|
ctx: Context,
|
||||||
data: Record<string, FormDataValue>
|
data: Record<string, FormDataValue>
|
||||||
): Promise<{ valid: boolean; error: string }> {
|
): Promise<{ valid: boolean; error: string }> {
|
||||||
const { parsed: username } = await this.fields.username.getValue(ctx, data);
|
const { parsed: username } = await this.fields.username.getParsedValue(ctx, data);
|
||||||
|
|
||||||
const filter: object = typeof username === "string" ? { username } : {};
|
const filter: object = typeof username === "string" ? { username } : {};
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ export default new (class SignInForm extends Form<typeof fields, void> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
async renderError(ctx: Context, error: PageErrorMessage): Promise<FlatTemplatable> {
|
async renderError(ctx: Context, error: PageErrorMessage): Promise<Readable> {
|
||||||
return html({ ctx, title: "SignIn", description: "", body: `${error.message}` });
|
return html({ ctx, title: "SignIn", description: "", body: `${error.message}` });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +49,9 @@ application.register("submit-on-input", SubmitOnInput);
|
|||||||
import { default as Toast } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/toast.stimulus.js";
|
import { default as Toast } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/toast.stimulus.js";
|
||||||
application.register("toast", Toast);
|
application.register("toast", Toast);
|
||||||
|
|
||||||
|
import { default as TableAddButton } from "./../../node_modules/@sealcode/sealgen/src/controllers/table-add-button.stimulus.js";
|
||||||
|
application.register("table-add-button", TableAddButton);
|
||||||
|
|
||||||
import { default as Sortable } from "./../../node_modules/@sealcode/sortable/src/controllers/sortable.stimulus.js";
|
import { default as Sortable } from "./../../node_modules/@sealcode/sortable/src/controllers/sortable.stimulus.js";
|
||||||
application.register("sortable", Sortable);
|
application.register("sortable", Sortable);
|
||||||
|
|
||||||
|
@ -39,15 +39,6 @@ nav {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-input__wrapper--control-type__photo {
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
|
|
||||||
label {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body.jdd-editor {
|
body.jdd-editor {
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 34 KiB |
Binary file not shown.
Before Width: | Height: | Size: 33 KiB |
Binary file not shown.
Before Width: | Height: | Size: 54 KiB |
Binary file not shown.
Before Width: | Height: | Size: 43 KiB |
@ -1,15 +0,0 @@
|
|||||||
import { test, expect } from "./backend-fixture";
|
|
||||||
|
|
||||||
test("test", async ({ page, backend }) => {
|
|
||||||
await page.goto(`${backend.url}/dev/simple-crud-test/`);
|
|
||||||
await expect(page).toHaveScreenshot();
|
|
||||||
await page.getByRole("link", { name: "Create" }).click();
|
|
||||||
await expect(page).toHaveScreenshot();
|
|
||||||
await page.getByRole("textbox", { name: "label" }).click();
|
|
||||||
await page.getByRole("textbox", { name: "label" }).fill("navbar from simple crud");
|
|
||||||
await page.getByRole("textbox", { name: "label" }).press("Tab");
|
|
||||||
await page.getByRole("textbox", { name: "href" }).fill("/");
|
|
||||||
await page.getByRole("button", { name: "Wyślij" }).click();
|
|
||||||
await page.getByRole("link", { name: "navbar from simple crud" }).click();
|
|
||||||
await expect(page).toHaveScreenshot();
|
|
||||||
});
|
|
@ -1,16 +0,0 @@
|
|||||||
import { test, expect } from "./backend-fixture.js";
|
|
||||||
import { setTimeout as sleep } from "node:timers/promises";
|
|
||||||
|
|
||||||
test("Tekst component", async ({ page, backend, setMarkdownValue }) => {
|
|
||||||
await page.goto(`${backend.url}/components`);
|
|
||||||
await page.waitForFunction(() => typeof (window as any).CodeMirror !== "undefined");
|
|
||||||
await sleep(5000);
|
|
||||||
await page.locator('select[name="component"]').selectOption("tekst");
|
|
||||||
await page
|
|
||||||
.locator(`select[name="$[components][0][args][color]"]`)
|
|
||||||
.selectOption("accent");
|
|
||||||
await setMarkdownValue(`$[components][0][args][content]`, "Hamster, a dentist");
|
|
||||||
|
|
||||||
await page.getByRole("button", { name: "Preview" }).click();
|
|
||||||
await expect(page).toHaveScreenshot();
|
|
||||||
});
|
|
Loading…
x
Reference in New Issue
Block a user