30 lines
723 B
JavaScript
Executable File
30 lines
723 B
JavaScript
Executable File
#!/usr/bin/env -S node -r esbin
|
|
import fs from "fs"
|
|
import { uniq } from "lodash"
|
|
import { writeFormatted } from "./utils"
|
|
|
|
const modules = [
|
|
"src/vendor/allotment/src/allotment.module.css",
|
|
"src/vendor/allotment/src/sash.module.css",
|
|
]
|
|
|
|
for (const module of modules) {
|
|
const source = fs.readFileSync(module, "utf8")
|
|
const classNames = uniq(
|
|
Array.from(source.matchAll(/\.([a-z][a-z0-9_-]+)/gi), m => m[1]),
|
|
)
|
|
|
|
writeFormatted(
|
|
module + ".d.ts",
|
|
[
|
|
"// This file is generated by scripts/build-css-module-def.ts",
|
|
"",
|
|
"declare const classNames: {", //
|
|
...classNames.map(c => ` "${c}": string;`),
|
|
"}",
|
|
"",
|
|
"export default classNames;",
|
|
].join("\n"),
|
|
)
|
|
}
|