fix(build): migrate smart config and update build tooling for latest tsbundle and TypeScript defaults
This commit is contained in:
@@ -36,6 +36,16 @@
|
|||||||
"@ship.zone/szci": {
|
"@ship.zone/szci": {
|
||||||
"npmGlobalTools": []
|
"npmGlobalTools": []
|
||||||
},
|
},
|
||||||
|
"@git.zone/tsbundle": {
|
||||||
|
"bundles": [
|
||||||
|
{
|
||||||
|
"from": "./html/index.ts",
|
||||||
|
"to": "./dist_bundle/bundle.js",
|
||||||
|
"outputMode": "bundle",
|
||||||
|
"bundler": "esbuild"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"@git.zone/tswatch": {
|
"@git.zone/tswatch": {
|
||||||
"preset": "element"
|
"preset": "element"
|
||||||
}
|
}
|
||||||
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"json.schemas": [
|
"json.schemas": [
|
||||||
{
|
{
|
||||||
"fileMatch": ["/npmextra.json"],
|
"fileMatch": ["/.smartconfig.json"],
|
||||||
"schema": {
|
"schema": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-04-12 - 3.8.1 - fix(build)
|
||||||
|
migrate smart config and update build tooling for latest tsbundle and TypeScript defaults
|
||||||
|
|
||||||
|
- rename npmextra.json to .smartconfig.json and add tsbundle bundle configuration
|
||||||
|
- update build script to use the new tsbundle invocation without the removed element subcommand
|
||||||
|
- adjust tsconfig and dashboard property defaults for newer TypeScript compiler behavior
|
||||||
|
- refresh package dependencies and include the new config file in published package contents
|
||||||
|
|
||||||
## 2026-01-27 - 3.8.0 - feat(sidebar)
|
## 2026-01-27 - 3.8.0 - feat(sidebar)
|
||||||
rename demoGroup to demoGroups, add multi-group support, search by group name, and context menu group navigation
|
rename demoGroup to demoGroups, add multi-group support, search by group name, and context menu group navigation
|
||||||
|
|
||||||
|
|||||||
2
license
2
license
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2020 Lossless GmbH (hello@lossless.com)
|
Copyright (c) 2020 Task Venture Capital GmbH (hello@task.vc)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
24
package.json
24
package.json
@@ -10,27 +10,27 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "(npm run build)",
|
"test": "(npm run build)",
|
||||||
"build": "(tsbuild tsfolders --allowimplicitany && tsbundle element)",
|
"build": "(tsbuild tsfolders --allowimplicitany && tsbundle)",
|
||||||
"watch": "tswatch",
|
"watch": "tswatch",
|
||||||
"buildDocs": "tsdoc"
|
"buildDocs": "tsdoc"
|
||||||
},
|
},
|
||||||
"author": "Lossless GmbH",
|
"author": "Lossless GmbH",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@design.estate/dees-domtools": "^2.3.7",
|
"@design.estate/dees-domtools": "^2.5.4",
|
||||||
"@design.estate/dees-element": "^2.1.5",
|
"@design.estate/dees-element": "^2.2.4",
|
||||||
"@push.rocks/smartdelay": "^3.0.5",
|
"@push.rocks/smartdelay": "^3.0.5",
|
||||||
"lit": "^3.3.2"
|
"lit": "^3.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@api.global/typedserver": "^8.3.0",
|
"@api.global/typedserver": "^8.4.6",
|
||||||
"@git.zone/tsbuild": "^4.1.2",
|
"@git.zone/tsbuild": "^4.4.0",
|
||||||
"@git.zone/tsbundle": "^2.8.3",
|
"@git.zone/tsbundle": "^2.10.0",
|
||||||
"@git.zone/tsrun": "^2.0.1",
|
"@git.zone/tsrun": "^2.0.2",
|
||||||
"@git.zone/tstest": "^3.1.8",
|
"@git.zone/tstest": "^3.6.3",
|
||||||
"@git.zone/tswatch": "^3.0.1",
|
"@git.zone/tswatch": "^3.3.2",
|
||||||
"@push.rocks/projectinfo": "^5.0.2",
|
"@push.rocks/projectinfo": "^5.1.0",
|
||||||
"@types/node": "^25.0.10"
|
"@types/node": "^25.6.0"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"ts/**/*",
|
"ts/**/*",
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"dist_ts_web/**/*",
|
"dist_ts_web/**/*",
|
||||||
"assets/**/*",
|
"assets/**/*",
|
||||||
"cli.js",
|
"cli.js",
|
||||||
"npmextra.json",
|
".smartconfig.json",
|
||||||
"readme.md"
|
"readme.md"
|
||||||
],
|
],
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
|
|||||||
3440
pnpm-lock.yaml
generated
3440
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,18 @@
|
|||||||
# Project Hints and Findings
|
# Project Hints and Findings
|
||||||
|
|
||||||
|
## TypeScript 6.0 & Build Tooling (2026-04-12)
|
||||||
|
|
||||||
|
### TypeScript 6.0 Strict Defaults
|
||||||
|
TypeScript 6.0.2 (shipped with tsbuild 4.4.0) changes `strict` to `true` by default. The project explicitly sets `"strict": false` in tsconfig.json to preserve pre-TS6 behavior. Also added `"types": ["node"]` since TS6 changed `@types/*` auto-discovery.
|
||||||
|
|
||||||
|
### Config Migration: npmextra.json → .smartconfig.json
|
||||||
|
Build tools (tsbundle 2.10.0, tswatch 3.3.2) now use `@push.rocks/smartconfig` which reads `.smartconfig.json` (with leading dot). The old `npmextra.json` was renamed.
|
||||||
|
|
||||||
|
### tsbundle Configuration
|
||||||
|
The `tsbundle element` subcommand no longer exists. Instead, bundle configuration lives in `.smartconfig.json` under `"@git.zone/tsbundle"` with a `bundles` array. Entry point is `./html/index.ts` → `./dist_bundle/bundle.js`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Section-based Configuration API (2025-12-27)
|
## Section-based Configuration API (2025-12-27)
|
||||||
|
|
||||||
### Overview
|
### Overview
|
||||||
|
|||||||
21
readme.md
21
readme.md
@@ -293,6 +293,25 @@ export class MyButton extends DeesElement {
|
|||||||
|
|
||||||
Each demo appears as a numbered item in an expandable folder in the sidebar.
|
Each demo appears as a numbered item in an expandable folder in the sidebar.
|
||||||
|
|
||||||
|
### 🗂️ Demo Groups
|
||||||
|
|
||||||
|
Organize elements into groups within a section for better discoverability:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
@customElement('my-input')
|
||||||
|
export class MyInput extends DeesElement {
|
||||||
|
// Single group
|
||||||
|
public static demoGroups = 'Form Controls';
|
||||||
|
|
||||||
|
// Or multiple groups — element appears in each
|
||||||
|
public static demoGroups = ['Form Controls', 'Inputs'];
|
||||||
|
|
||||||
|
public static demo = () => html`<my-input></my-input>`;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Groups appear as collapsible headers in the sidebar, sorted alphabetically. Searching matches group names too — searching "Form Controls" shows all elements in that group.
|
||||||
|
|
||||||
### ⏳ Async Demos
|
### ⏳ Async Demos
|
||||||
|
|
||||||
Return a `Promise` from `demo` for async setup:
|
Return a `Promise` from `demo` for async setup:
|
||||||
@@ -462,7 +481,7 @@ my-component-library/
|
|||||||
|
|
||||||
## License and Legal Information
|
## License and Legal Information
|
||||||
|
|
||||||
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
|
This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
|
||||||
|
|
||||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@design.estate/dees-wcctools',
|
name: '@design.estate/dees-wcctools',
|
||||||
version: '3.8.0',
|
version: '3.8.1',
|
||||||
description: 'A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.'
|
description: 'A set of web component tools for creating element catalogues, enabling the structured development and documentation of custom elements and pages.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ export const getSectionItems = (section: IWccSection): Array<[string, any]> => {
|
|||||||
|
|
||||||
// Apply filter if provided
|
// Apply filter if provided
|
||||||
if (section.filter) {
|
if (section.filter) {
|
||||||
entries = entries.filter(([name, item]) => section.filter(name, item));
|
const filterFn = section.filter;
|
||||||
|
entries = entries.filter(([name, item]) => filterFn(name, item));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply sort if provided
|
// Apply sort if provided
|
||||||
@@ -43,13 +44,13 @@ export class WccDashboard extends DeesElement {
|
|||||||
accessor selectedSection: IWccSection | null = null;
|
accessor selectedSection: IWccSection | null = null;
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor selectedType: TElementType;
|
accessor selectedType: TElementType = 'element';
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor selectedItemName: string;
|
accessor selectedItemName: string = '';
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor selectedItem: TTemplateFactory | DeesElement;
|
accessor selectedItem: TTemplateFactory | DeesElement | null = null;
|
||||||
|
|
||||||
@property({ type: Number })
|
@property({ type: Number })
|
||||||
accessor selectedDemoIndex: number = 0;
|
accessor selectedDemoIndex: number = 0;
|
||||||
@@ -77,7 +78,7 @@ export class WccDashboard extends DeesElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@property()
|
@property()
|
||||||
accessor warning: string = null;
|
accessor warning: string | null = null;
|
||||||
|
|
||||||
private frameScrollY: number = 0;
|
private frameScrollY: number = 0;
|
||||||
private sidebarScrollY: number = 0;
|
private sidebarScrollY: number = 0;
|
||||||
|
|||||||
@@ -4,7 +4,9 @@
|
|||||||
"module": "NodeNext",
|
"module": "NodeNext",
|
||||||
"moduleResolution": "NodeNext",
|
"moduleResolution": "NodeNext",
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
"verbatimModuleSyntax": true
|
"verbatimModuleSyntax": true,
|
||||||
|
"strict": false,
|
||||||
|
"types": ["node"]
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"dist_*/**/*.d.ts"
|
"dist_*/**/*.d.ts"
|
||||||
|
|||||||
Reference in New Issue
Block a user