@nikovirtala/projen-typedoc 1.0.21 → 1.0.22
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/.jsii +2 -2
- package/.kiro/steering/product.md +19 -0
- package/.kiro/steering/structure.md +51 -0
- package/.kiro/steering/tech.md +54 -0
- package/lib/index.js +1 -1
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -1400,6 +1400,6 @@
|
|
|
1400
1400
|
"symbolId": "src/typedoc-config:Visibility"
|
|
1401
1401
|
}
|
|
1402
1402
|
},
|
|
1403
|
-
"version": "1.0.
|
|
1404
|
-
"fingerprint": "
|
|
1403
|
+
"version": "1.0.22",
|
|
1404
|
+
"fingerprint": "awjLvDYDVL07fD1nGpvh5Jt8RWzOLvBHJuG4ft5deSA="
|
|
1405
1405
|
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Product Overview
|
|
2
|
+
|
|
3
|
+
This is a TypeDoc component for projen projects. It provides a reusable component that automatically configures TypeDoc documentation generation for Node.js projects managed by projen.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Simplifies adding TypeDoc documentation to projen projects by:
|
|
8
|
+
- Installing TypeDoc as a dev dependency
|
|
9
|
+
- Creating and managing `typedoc.jsonc` configuration
|
|
10
|
+
- Adding a `typedoc` task to generate documentation
|
|
11
|
+
- Providing sensible defaults while allowing full customization
|
|
12
|
+
|
|
13
|
+
## Key Features
|
|
14
|
+
|
|
15
|
+
- Automatic TypeDoc setup with zero configuration
|
|
16
|
+
- Supports all TypeDoc configuration options
|
|
17
|
+
- Default configuration excludes test files and private members
|
|
18
|
+
- Generates documentation to `docs/api` by default
|
|
19
|
+
- Integrates with projen's task system
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Project Structure
|
|
2
|
+
|
|
3
|
+
## Source Code
|
|
4
|
+
|
|
5
|
+
- `src/index.ts` - Main entry point, exports TypeDoc component class
|
|
6
|
+
- `src/typedoc-config.ts` - TypeDoc configuration interfaces, enums, and type definitions
|
|
7
|
+
|
|
8
|
+
## Tests
|
|
9
|
+
|
|
10
|
+
- `test/typedoc.test.ts` - Component tests using Vitest
|
|
11
|
+
- `test/__snapshots__/` - Vitest snapshot files
|
|
12
|
+
|
|
13
|
+
## Configuration Files
|
|
14
|
+
|
|
15
|
+
- `.projenrc.ts` - Projen project definition (source of truth for configuration)
|
|
16
|
+
- `package.json` - Generated by projen, do not edit manually
|
|
17
|
+
- `biome.jsonc` - Biome linter/formatter configuration (generated)
|
|
18
|
+
- `vitest.config.ts` - Vitest test configuration (generated)
|
|
19
|
+
- `typedoc.jsonc` - TypeDoc configuration for this project's own docs
|
|
20
|
+
- `tsconfig.dev.json` - TypeScript configuration
|
|
21
|
+
- `mise.toml` - Node.js version specification
|
|
22
|
+
|
|
23
|
+
## Documentation
|
|
24
|
+
|
|
25
|
+
- `README.md` - User-facing documentation
|
|
26
|
+
- `API.md` - Generated API documentation (jsii-docgen)
|
|
27
|
+
- `docs/api/` - Generated TypeDoc HTML documentation
|
|
28
|
+
|
|
29
|
+
## Architecture Patterns
|
|
30
|
+
|
|
31
|
+
### Component Design
|
|
32
|
+
|
|
33
|
+
The TypeDoc class extends projen's `Component` base class and follows these patterns:
|
|
34
|
+
|
|
35
|
+
1. **Static Factory**: `TypeDoc.of(project)` to retrieve existing instance
|
|
36
|
+
2. **Configuration Merging**: User config merged with sensible defaults
|
|
37
|
+
3. **Task Integration**: Automatically spawns from test task
|
|
38
|
+
4. **File Generation**: Creates `typedoc.jsonc` as a JsonFile component
|
|
39
|
+
|
|
40
|
+
### Configuration Strategy
|
|
41
|
+
|
|
42
|
+
- Default configuration in `DEFAULT_CONFIG` constant
|
|
43
|
+
- User configuration merged via `deepMerge` with array merging enabled
|
|
44
|
+
- Type-safe configuration via TypeScript interfaces
|
|
45
|
+
- JSON serialization removes undefined values
|
|
46
|
+
|
|
47
|
+
### Testing Approach
|
|
48
|
+
|
|
49
|
+
- Snapshot testing for generated configuration files
|
|
50
|
+
- Unit tests for configuration merging behavior
|
|
51
|
+
- Uses `synthSnapshot` helper from projen for testing generated files
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Technology Stack
|
|
2
|
+
|
|
3
|
+
## ⚠️ Projen-Managed Project
|
|
4
|
+
|
|
5
|
+
This project is **entirely managed by projen**. Key implications:
|
|
6
|
+
|
|
7
|
+
- **DO NOT** manually edit generated files (package.json, tsconfig.json, etc.)
|
|
8
|
+
- **ALL** configuration changes must be made in `.projenrc.ts`
|
|
9
|
+
- After modifying `.projenrc.ts`, run `npx projen` to regenerate files
|
|
10
|
+
- Dependencies, scripts, and tooling are defined in `.projenrc.ts`, not package.json
|
|
11
|
+
|
|
12
|
+
## Build System
|
|
13
|
+
|
|
14
|
+
- **projen**: Project configuration and build orchestration
|
|
15
|
+
- **JSII**: Enables multi-language support for the component
|
|
16
|
+
- **pnpm**: Package manager (v10, hoisted node-linker)
|
|
17
|
+
- **TypeScript**: v5.9.3
|
|
18
|
+
|
|
19
|
+
## Core Dependencies
|
|
20
|
+
|
|
21
|
+
- `projen`: ^0.98.28 (peer dependency and runtime dependency)
|
|
22
|
+
- `constructs`: ^10.4.3 (peer dependency)
|
|
23
|
+
|
|
24
|
+
## Development Tools
|
|
25
|
+
|
|
26
|
+
- **Biome**: Linting and formatting (replaces ESLint/Prettier)
|
|
27
|
+
- 4 space indentation
|
|
28
|
+
- 120 character line width
|
|
29
|
+
- Double quotes for JavaScript/TypeScript
|
|
30
|
+
- **Vitest**: Testing framework (v4) with coverage via v8
|
|
31
|
+
- **TypeDoc**: v0.28 for API documentation generation
|
|
32
|
+
- **mise**: Node.js version management (22.21.1)
|
|
33
|
+
|
|
34
|
+
## Common Commands
|
|
35
|
+
|
|
36
|
+
### Development
|
|
37
|
+
- `pnpm projen` - Synthesize project configuration
|
|
38
|
+
- `pnpm build` - Compile TypeScript and run tests
|
|
39
|
+
- `pnpm compile` - Compile TypeScript only
|
|
40
|
+
- `pnpm test` - Run tests with Vitest
|
|
41
|
+
- `pnpm test:watch` - Run tests in watch mode
|
|
42
|
+
- `pnpm test:update` - Update test snapshots
|
|
43
|
+
|
|
44
|
+
### Code Quality
|
|
45
|
+
- `pnpm biome` - Run Biome linter and formatter
|
|
46
|
+
- `pnpm typedoc` - Generate API documentation
|
|
47
|
+
|
|
48
|
+
### Release
|
|
49
|
+
- `pnpm release` - Create a new release
|
|
50
|
+
- `pnpm package` - Build distribution packages
|
|
51
|
+
|
|
52
|
+
## Node.js Version
|
|
53
|
+
|
|
54
|
+
Minimum: 22.21.1 (managed via mise.toml)
|
package/lib/index.js
CHANGED
|
@@ -66,6 +66,6 @@ class TypeDoc extends component_1.Component {
|
|
|
66
66
|
}
|
|
67
67
|
exports.TypeDoc = TypeDoc;
|
|
68
68
|
_a = JSII_RTTI_SYMBOL_1;
|
|
69
|
-
TypeDoc[_a] = { fqn: "@nikovirtala/projen-typedoc.TypeDoc", version: "1.0.
|
|
69
|
+
TypeDoc[_a] = { fqn: "@nikovirtala/projen-typedoc.TypeDoc", version: "1.0.22" };
|
|
70
70
|
__exportStar(require("./typedoc-config"), exports);
|
|
71
71
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFpRDtBQUVqRCwwQ0FBMkM7QUFHM0MsMENBQTRDO0FBQzVDLHFEQUE4RztBQUU5Rzs7R0FFRztBQUNILE1BQU0sY0FBYyxHQUF5QjtJQUN6QyxrQkFBa0IsRUFBRSxtQ0FBa0IsQ0FBQyxNQUFNO0lBQzdDLEdBQUcsRUFBRSxVQUFVO0lBQ2YsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ3pCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLGNBQWMsRUFBRSxJQUFJO0NBQ3ZCLENBQUM7QUFrQkY7O0dBRUc7QUFDSCxNQUFhLE9BQVEsU0FBUSxxQkFBUztJQUMzQixNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWdCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBWSxFQUFnQixFQUFFLENBQUMsQ0FBQyxZQUFZLE9BQU8sQ0FBQztRQUN2RSxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFjRCxZQUFZLE9BQW9CLEVBQUUsVUFBMEIsRUFBRTtRQUMxRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFL0Q7O1dBRUc7UUFDSCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBQSxnQkFBUyxFQUNqQyxDQUFDLElBQUEsNENBQTJCLEVBQUMsY0FBYyxDQUFDLEVBQUUsSUFBQSw0Q0FBMkIsRUFBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUN4QixDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLGVBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQzVDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CO1lBQzlCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUSxFQUFFLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNuQyxXQUFXLEVBQUUsZ0NBQWdDO1lBQzdDLEtBQUssRUFBRTtnQkFDSDtvQkFDSSxJQUFJLEVBQUUsU0FBUztpQkFDbEI7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDOztBQWhETCwwQkFpREM7OztBQUVELG1EQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBOb2RlUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL2phdmFzY3JpcHQvbm9kZS1wcm9qZWN0XCI7XG5pbXBvcnQgeyBKc29uRmlsZSB9IGZyb20gXCJwcm9qZW4vbGliL2pzb25cIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCJwcm9qZW4vbGliL3Byb2plY3RcIjtcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gXCJwcm9qZW4vbGliL3Rhc2tcIjtcbmltcG9ydCB7IGRlZXBNZXJnZSB9IGZyb20gXCJwcm9qZW4vbGliL3V0aWxcIjtcbmltcG9ydCB7IEVudHJ5UG9pbnRTdHJhdGVneSwgdHlwZSBUeXBlRG9jQ29uZmlndXJhdGlvbiwgdG9Kc29uX1R5cGVEb2NDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4vdHlwZWRvYy1jb25maWdcIjtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVEb2MgY29uZmlndXJhdGlvblxuICovXG5jb25zdCBERUZBVUxUX0NPTkZJRzogVHlwZURvY0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgZW50cnlQb2ludFN0cmF0ZWd5OiBFbnRyeVBvaW50U3RyYXRlZ3kuRVhQQU5ELFxuICAgIG91dDogXCJkb2NzL2FwaVwiLFxuICAgIGV4Y2x1ZGU6IFtcIioqLyoudGVzdC50c1wiXSxcbiAgICBleGNsdWRlUHJpdmF0ZTogdHJ1ZSxcbiAgICBkaXNhYmxlU291cmNlczogdHJ1ZSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURvY09wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIFZlcnNpb24gb2YgVHlwZURvYyB0byB1c2VcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiXjAuMjhcIlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBGdWxsIFR5cGVEb2MgY29uZmlndXJhdGlvblxuICAgICAqXG4gICAgICogVGhpcyBjb25maWd1cmF0aW9uIHdpbGwgYmUgbWVyZ2VkIHdpdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgICAqL1xuICAgIHJlYWRvbmx5IHR5cGVEb2NDb25maWc/OiBUeXBlRG9jQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBUeXBlRG9jIGNvbXBvbmVudCBmb3IgcHJvamVuIHByb2plY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlRG9jIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBUeXBlRG9jIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaXNUeXBlRG9jID0gKGM6IENvbXBvbmVudCk6IGMgaXMgVHlwZURvYyA9PiBjIGluc3RhbmNlb2YgVHlwZURvYztcbiAgICAgICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzVHlwZURvYyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWFkb25seSB0eXBlRG9jQ29uZmlndXJhdGlvbjogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICAvKipcbiAgICAgKiBUeXBlRG9jIHRhc2tcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFzazogVGFzaztcblxuICAgIC8qKlxuICAgICAqIFR5cGVEb2MgY29uZmlndXJhdGlvbiBmaWxlXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZpbGU6IEpzb25GaWxlO1xuXG4gICAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFR5cGVEb2NPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICAgICAgY29uc3QgdHlwZWRvYyA9IFwidHlwZWRvY1wiO1xuICAgICAgICBwcm9qZWN0LmFkZERldkRlcHMoYCR7dHlwZWRvY31AJHtvcHRpb25zLnZlcnNpb24gPz8gXCJeMC4yOFwifWApO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIE1lcmdlIGRlZmF1bHQgY29uZmlndXJhdGlvbiB3aXRoIHVzZXItcHJvdmlkZWQgY29uZmlndXJhdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy50eXBlRG9jQ29uZmlndXJhdGlvbiA9IGRlZXBNZXJnZShcbiAgICAgICAgICAgIFt0b0pzb25fVHlwZURvY0NvbmZpZ3VyYXRpb24oREVGQVVMVF9DT05GSUcpLCB0b0pzb25fVHlwZURvY0NvbmZpZ3VyYXRpb24ob3B0aW9ucy50eXBlRG9jQ29uZmlnID8/IHt9KV0sXG4gICAgICAgICAgICB7IG1lcmdlQXJyYXlzOiB0cnVlIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5maWxlID0gbmV3IEpzb25GaWxlKHRoaXMsIFwidHlwZWRvYy5qc29uY1wiLCB7XG4gICAgICAgICAgICBvYmo6IHRoaXMudHlwZURvY0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICBhbGxvd0NvbW1lbnRzOiB0cnVlLFxuICAgICAgICAgICAgbWFya2VyOiB0cnVlLFxuICAgICAgICAgICAgcmVhZG9ubHk6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRhc2sgPSBwcm9qZWN0LmFkZFRhc2soXCJ0eXBlZG9jXCIsIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyYXRlIFR5cGVEb2MgZG9jdW1lbnRhdGlvblwiLFxuICAgICAgICAgICAgc3RlcHM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGV4ZWM6IFwidHlwZWRvY1wiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvamVjdC50ZXN0VGFzay5zcGF3bih0aGlzLnRhc2spO1xuICAgIH1cbn1cblxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZWRvYy1jb25maWdcIjtcbiJdfQ==
|