Merge commit '36c66dd290d3ce6eb1ccd310d0c658d4a32bb8eb' as 'repos/effect'
This commit is contained in:
4
repos/effect/packages/tools/jsdocs/docgen.json
Normal file
4
repos/effect/packages/tools/jsdocs/docgen.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"$schema": "../../../node_modules/@effect/docgen/schema.json",
|
||||
"exclude": ["**/*.ts"]
|
||||
}
|
||||
63
repos/effect/packages/tools/jsdocs/package.json
Normal file
63
repos/effect/packages/tools/jsdocs/package.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"name": "@effect/jsdocs",
|
||||
"version": "0.0.0",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"license": "MIT",
|
||||
"description": "JSDoc extraction tools for Effect",
|
||||
"homepage": "https://effect.website",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Effect-TS/effect.git",
|
||||
"directory": "packages/tools/jsdocs"
|
||||
},
|
||||
"sideEffects": [],
|
||||
"bin": {
|
||||
"effect-jsdocs": "./src/bin.ts"
|
||||
},
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./src/Jsdocs.ts",
|
||||
"./*": "./src/*.ts",
|
||||
"./bin": null
|
||||
},
|
||||
"files": [
|
||||
"src/**/*.ts",
|
||||
"dist/**/*.js",
|
||||
"dist/**/*.js.map",
|
||||
"dist/**/*.d.ts",
|
||||
"dist/**/*.d.ts.map"
|
||||
],
|
||||
"publishConfig": {
|
||||
"provenance": true,
|
||||
"bin": {
|
||||
"effect-jsdocs": "./dist/bin.js"
|
||||
},
|
||||
"exports": {
|
||||
"./package.json": "./package.json",
|
||||
".": "./dist/Jsdocs.js",
|
||||
"./*": "./dist/*.js",
|
||||
"./bin": null
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc -b tsconfig.json && pnpm babel",
|
||||
"babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
|
||||
"check": "tsc -b tsconfig.json",
|
||||
"test": "vitest",
|
||||
"coverage": "vitest --coverage"
|
||||
},
|
||||
"dependencies": {
|
||||
"effect": "workspace:^",
|
||||
"glob": "^13.0.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": ">=5.0.0 <7.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@effect/vitest": "workspace:^",
|
||||
"@types/node": "^26.1.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vitest": "^4.1.10"
|
||||
}
|
||||
}
|
||||
3364
repos/effect/packages/tools/jsdocs/src/Jsdocs.ts
Normal file
3364
repos/effect/packages/tools/jsdocs/src/Jsdocs.ts
Normal file
File diff suppressed because it is too large
Load Diff
35
repos/effect/packages/tools/jsdocs/src/bin.ts
Executable file
35
repos/effect/packages/tools/jsdocs/src/bin.ts
Executable file
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env node
|
||||
import * as path from "node:path"
|
||||
import { computeJSDocInputHash, extractJSDocsSync, loadJSDocConfig, readJSDocModel, writeJSDocModel } from "./Jsdocs.ts"
|
||||
|
||||
function reportDiagnostics(model: ReturnType<typeof extractJSDocsSync>, check: boolean) {
|
||||
const diagnostics = model.files.reduce((count, file) => count + file.diagnostics.length, 0)
|
||||
if (diagnostics > 0) {
|
||||
for (const file of model.files) {
|
||||
for (const diagnostic of file.diagnostics) {
|
||||
process.stderr.write(`${file.file}: ${diagnostic.message}\n`)
|
||||
}
|
||||
}
|
||||
if (check) process.exitCode = 1
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const cwd = process.cwd()
|
||||
const check = process.argv.includes("--check")
|
||||
const config = loadJSDocConfig(cwd)
|
||||
const inputHash = computeJSDocInputHash({ cwd, ...config })
|
||||
const cached = readJSDocModel(path.resolve(cwd, config.output))
|
||||
if (cached._tag === "Success" && cached.value.inputHash === inputHash) {
|
||||
process.stdout.write(`Skipped ${config.output}\n`)
|
||||
reportDiagnostics(cached.value, check)
|
||||
} else {
|
||||
const model = extractJSDocsSync({ cwd, ...config })
|
||||
writeJSDocModel(cwd, config.output, model)
|
||||
process.stdout.write(`Wrote ${config.output}\n`)
|
||||
reportDiagnostics(model, check)
|
||||
}
|
||||
} catch (error) {
|
||||
process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`)
|
||||
process.exitCode = 1
|
||||
}
|
||||
1032
repos/effect/packages/tools/jsdocs/test/jsdocs.test.ts
Normal file
1032
repos/effect/packages/tools/jsdocs/test/jsdocs.test.ts
Normal file
File diff suppressed because it is too large
Load Diff
8
repos/effect/packages/tools/jsdocs/tsconfig.json
Normal file
8
repos/effect/packages/tools/jsdocs/tsconfig.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"$schema": "http://json.schemastore.org/tsconfig",
|
||||
"extends": "../../../tsconfig.base.json",
|
||||
"include": ["src"],
|
||||
"compilerOptions": {
|
||||
"types": ["node"]
|
||||
}
|
||||
}
|
||||
6
repos/effect/packages/tools/jsdocs/vitest.config.ts
Normal file
6
repos/effect/packages/tools/jsdocs/vitest.config.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { mergeConfig, type ViteUserConfig } from "vitest/config"
|
||||
import shared from "../../../vitest.shared.ts"
|
||||
|
||||
const config: ViteUserConfig = {}
|
||||
|
||||
export default mergeConfig(shared, config)
|
||||
Reference in New Issue
Block a user