Change Log
All notable changes to this project will be documented in this file.
See Conventional Commits for commit guidelines.
1.0.15 (2025-06-26)
Bug Fixes
- desktop-ui: disable SSR hydration for dui-window-header (a6f3e4c)
- desktop-ui: fix window-sidebar visibility (031281a)
- desktop-ui: put dynamic content to gitignore (73e40c2)
- desktop-ui: remove dynamic content from git (ded304d)
- example-server: ensure typescript is a dep (309819f)
- website: hook router into dynamic anchors, fix SSR code highlighting (2b5e2cf)
- website: splitter example code (4eb173b)
Features
- desktop-ui: refactor to standalone/signal, update angular to v20, new website docs (#657) (a39d26c)
1.0.14 (2025-06-22)
Bug Fixes
- desktop-ui: dui-table[autoHeight] width correct styling and behaviour (d541724)
- desktop-ui: make sure focusWatcher always closes (d06ebb5)
- desktop-ui: more fallback positions for dropdown (74581eb)
- desktop-ui: resource leak of embedded view refs of dropdown/dialog (7867335)
- framework-debug-gui: rename file, remove resize of textarea (b21c921)
- framework: correctly read media preview data (359822c)
Features
- desktop-ui: decouple reset.scss from all.scss (e882221)
- mongo: explain() and allowDiskUse on aggregations (cefcd96)
- mongo: implement Query.logExplain, to log the explain() query on next operation (aae9a64)
- mongo: support collation/hint option and new explain() API (77dfde8)
- orm: add explain() API (c34370a)
1.0.13 (2025-06-18)
Bug Fixes
- desktop-ui: focusWatcher support for svg and other elements (c54d118)
Features
- website: add api reference link (ff44560)
1.0.12 (2025-06-05)
Bug Fixes
- bson: ensure to seek over invalid elements in parser element lookup (378a922)
Features
- app: infer AppModule config from extend expression, make sure to unsubscribe unhandledRejection when command is done (c81841b)
1.0.11 (2025-06-02)
Bug Fixes
- broker: issue with wrongly intercepting Subject next and publish (b82b334)
- injector: ensure transient context is reset to previous one to maintain old state (822314d), closes #651
- injector: make sure Inject<T> providers are not injected twice (8ae437d), closes #651
- mongo: raw command return type of findOneOrUndefined (9cc14ae)
- type: don't flatten union members that are annotated (9f83f6c)
Features
- broker: add BrokerBus.activateSubject(Subject) to manually subscribe and buffer a bus subject to the broker server (8ce5a70)
- bson: support deserialization of OID and all number types to string as fallback union member matcher (83020c2)
1.0.10 (2025-05-24)
Bug Fixes
- rpc: correctly unsubscribe Subject subscription created by action abstraction (0e2424f)
- rpc: remove ObservableDisconnect and fix api-console-gui disconnecting observable (a0cf750)
Features
- broker: make sure bus channel is only subscribed upon first subject subscriptions (98cab64)
BREAKING CHANGES
- rpc: RPC will now longer call Subject.complete()/Subject.unsubscribe() on the Subject on the server when client does Subject.complete()/Subject.unsubscribe() or client disconnects. Instead, it just unsubscribes the single subscription created when the Subject is returned by the RPC controller. The Subject on the server can be monitored manually itself (by e.g. checking Subject.observed)
- rpc: Removed
disconnectObservable
as not needed anymore thanks to GC monitoring. Also, removed instantObservable
(use defer() with switchMap() instead)
This allows to reuse now subjects that live longer than the rpc controller/connection.
1.0.9 (2025-05-23)
Bug Fixes
- bson: rename type to BsonEncoder (815f9a0)
- mongo: make sure finalizer is removed when transaction committed/rolled back (14365f8)
- mongo: only log heartbeat error max 10 times (064f964)
- sqlite: ensure logger is passed to adapter and first connection (cf77b0f)
- website: make sure docker build works + update angular (5645721)
Features
- broker: add Subject<T> abstraction for decoupled and easy broker bus access (4923b84)
- bson: add TypeEncoder to encode all BSON types (not only container types) to BSON (3f2aaf9)
- bson: make TypeEncoder also validate on encode and on the decoded value to (d803bfb)
- logger: add setLevel(string) to easily set log level without import LogLevel enum (1162317)
1.0.8 (2025-05-20)
Bug Fixes
- framework: add missing BrokerKeyValue provider export (5a58776)
- http: proper handling of form & multipart values, plus multipart JSON field support (#649) (7383c73)
- http: support array json request bodies (2d3274e)
- sql: only alias a select when necessary (26bc9fa)
- vite: ensure correct typing (0cf7511), closes #645
Features
- bson: add AutoBuffer to allow very fast buffer reuse in BSON serialization (d8cdd6b)
- logger: allow setting a log level per scope (c8177b2)
- sql: support custom database field name filtering (#650) (453f347)
BREAKING CHANGES
logger.enableDebugScope('database')
logger.setScopeLevel('database', LoggerLevel.debug);
logger.disableDebugScope('database')
logger.setScopeLevel('database', LoggerLevel.info);
1.0.7 (2025-04-18)
Bug Fixes
- bson: serialize bigint in any container as long (8a67d96)
- rpc: missing .js extension on imports (d0380c9)
- vite: broken esm build (eb3baca)
1.0.6 (2025-04-03)
Bug Fixes
- rpc: make sure client disconnect trigger transport disconnect (89ae002)
1.0.5 (2025-04-02)
Bug Fixes
- bson: bigint with isNaN checks (b46e228)
- filesystem: ensure readLocalFile reads from local FS (ad948e6), closes #637
- filesystem: ensure writeFile forwards visibility (57250a2), closes #638
- http: disable compression by default (257cb61), closes #592
- type: remove Inject (moved to @deepkit/core (06d650a), closes #587
- type: replace more Inject imports (5a88760)
Features
- bench: new @deepkit/bench package for doing benchmarks (210bd84)
- bson: convert if-else branch to lookup (3589e62)
- core: export AsyncFunction (cebd164)
- framework: new option
logStartup
to control startup rpc/http endpoints logging (7695822)
- injector: better docs (7402f11)
- injector: refactor internal code to get big performance improvement (f295c5e)
- logger: add debug2 level + more control over scope log level (be01b73)
- run: new @deepkit/run package to run typescript easily (0b9246e)
1.0.4 (2025-03-13)
Bug Fixes
1.0.3 (2025-03-13)
Bug Fixes
- api-console-module: correctly parse HttpBodyValidation and HttpRequestParser (3a5a048)
- broker: ensure no dangling Promise (9056812)
- create-app: update dep versions (6d12d4a)
- desktop-ui: adjust to new event api (38ef6b8)
- desktop-ui: ng-packagr build and safari styling (956ca9b)
- http: better defaults for new formidable version (5c9788e)
- logger: ensure scoped Logger maintain reference to log level (3874148)
- mongo: hello command (30cbad5)
- mongo: transactions (e4781db)
Features
- bson: new BsonStreamReader (3faa77a)
- desktop-ui: allow to pass ConnectedPosition strategy to dropdown component (9ffd941)
- devtool: new chrome devtool to debug rpc connections (80c5105)
- devtool: reduce needed permissions and make it explicit for each domain (1cb03cd)
- event: align API with Event web standards (0e1dca2)
- event: allow late event listening, new synchronous event dispatching with 15x performance improvement (0cc6843)
- event: allow sync tokens with sync dispatching and sync listeners (798dfb7)
- injector: improve error messages, make it very clear what failed and where providers are located (5866eda)
- injector: improve prepared resolver performance by 11x and dynamic
Injector.get
by 17x (3906e2c)
- mongo,orm,logger: improve transaction safety and logging (95faf2c)
- mongo: add replica set support, rework connection handling (7fe1a9a)
- mongo: add support for read preference via Query API (c829762)
- mongo: more statistics, optimise error message when primary is not reachable (0cd4e1e)
- rpc: add utility functions to create Subject/Observable synchronously from an RPC controller (349668f)
- rpc: automatically garbage collect observables + new event system + stats collection (d727232)
- rpc: improve disconnect handling and cleaning up RpcMessageSubject correctly (9d9e29a)
- rpc: improve performance by 25% (f7e524f)
- sql: migration support for node v22 without ts-node dependency (f939ea1)
BREAKING CHANGES
- event: stopPropagation() becomes stopImmediatePropagation().
New BaseEvent.preventDefault() which replaces custom solutions like stop() in DatabaseEvent.
1.0.2 (2025-02-24)
Bug Fixes
- type-compiler: make sure not annotated properties get unknown as type (b262534)
- website: complete ssr and docker build (90371f2)
Features
- angular-ssr: support server:start serving of angular routes (ee3972c)
- rpc: allow to register hooks for rpc kernel and actions (cb0102b)
1.0.1 (2025-02-24)
Bug Fixes
- app: remove deepkit-openapi since incompatible (f825f27)
- framework-debug-gui: hide broker menu (ecf1b27)
- type-compiler: check in installer if file exists (eb07783), closes #630
- ui-library: missing module import (30f80d3)
Bug Fixes
- angular-ssr: remove usage of angular internals (ae91295)
- type: make typeAnnotation backwards compatible to metaAnnotation (8be8b5e)
- website: docs about typeAnnotation (83bab92)
Bug Fixes
Bug Fixes
- desktop-ui: package scripts (05e86f0)
- desktop-ui: package scripts (4b64f7f)
Bug Fixes
- angular-ssr: docs (eae7291)
- core: disable reflection in indent.ts (9bbc278)
- core: pass correct global in indent.ts (b1558e4)
- http: isElementStruct with null (04e54b0)
- rpc: ensure message size is reset to 0 after reaching a buffer that is too small (c78a2a2)
- tsconfig and tsc build (ac71e83)
- type: convert TypeAnnotation into intrinsic type (#629) (4d1a13e), closes #626
- type: ensure union check in deserialize mode to handle property with default value correctly (11c2116), closes #623
- type: remove debug code (fefd9a3)
Features
- event: better doc blocks for listen (452dc6a)
- http: update formidable to ^3.5.2 (e4007c3)
- rpc: make binary parser more stable and throw better error message on decoding failure (66e8f0d)
- rpc: show invalid binary message in hex on error (1a7bf16)
- sqlite: update better-sqlite3 to 11.8.1 (cb1eafd)
- type-compiler: support trivially inferred types (087b60a)
- update to angular 19 and typescript 5.7.3, new @deepkit/angular-ssr package (#627) (52333a7)
- website: adjust docs createModule -> createModuleClass (763bfa9)
Bug Fixes
- bson: initial random value of incremental counter of ObjectId (fb1263d)
- bson: throw on invalid string data (423df6c)
- don't process delete PKs if norows were affected (#621) (f2f6ed0)
- type: make sure forwarded type arguments reset Ω at the origin (3138671), closes #619
Features
- bson: decrease threshold to when TextDecoder is used to decoder utf8 (4daed1c)
Bug Fixes
- framework: di token to label (0b37a21)
- type: add executeTypeArgumentAsArray + custom iterable example with manual implementation (0781a1a)
- type: symbols as method names (2be4ce6)
Bug Fixes
- bson: make sure index signature keys use full utf8 encoding (d447c1d)
- sql: fix queries where value legitimately begins with $ (#580) (e0a0c3f)
- sql: repair & enable @deepkit/sql tests (#579) (81a1ab1)
- type-compiler: include enum annotations in .d.ts transformation (#607) (08854f3)
- type: add scope in setter code to prevent
variable already declared
#603 (#606) (9af344f)
- website: modify broken reflection example (#599) (7ee0a75)
Features
- http: http timeout options (44fbf56)
- rpc: make Buffer dependency optional (2f32a12)
- type: support enum in pathResolver/resolvePath (78d7df0)
Bug Fixes
- app: don't force package.json to exist for finding env files (f478e96)
- bson: make sure NaN is deserialized as 0 (7b19397)
- orm: correctly resolve reference class schemas (e193325)
- rpc: add interface for fetch (6035736)
- rpc: http adapter wrong authorization + remove OPTIONS method (3ff8955)
- rpc: make sure Error is chained and ValidationError correctly handled (5c49778)
- website: angular 18 fixes (4307a5d)
Features
- broker: new BrokerKeyValue and broker documentation (1f53bc8)
- orm: support passing type to Database.persistAs/Database.removeAs, DatabaseSession.addAs (6679aba), closes #571
- rpc: add http transport (3b2c6cc)
- type: automatically assign .path to SerializationError in TemplateState.convert() errors (1e8d61d)
- type: automatically assign .path to SerializationError in TemplateState.convert() errors (23781a1)
- website: improve broker docs (1ff9600)
- website: migrated to Angular v18 SSR + Signals (322817f)
- website: update angular to v18 (4dcc38c)
Features
- rpc: client.transporter.errored subject (0fc2bd4)
Features
Bug Fixes
- rpc: ensure data is not chunked twice in server->client controllers (6c59f9b)
- type-compiler: support ReceiveType in arrow function with body expression (3c66064)
Features
- type-compiler: allow to use T from ReceiveType<T> in function body as type reference (4d24c8b), closes #565
Bug Fixes
- type-compiler: make sure type reference resolving skips parameter names (16ba17d), closes #566
Features
- type: new TemplateState.touch and isTypeClassOf (cdf3272)
- type: support lower/mixed case as identifier for enum values (ce0166e)
- type: support mixed case enum member in union resolver (96dd2d8)
Bug Fixes
- http: support for JSON array payloads (#564) (feeeaa6)
- mysql: ensure
number & AutoIncrement
is always int
(69feb17)
- sqlite: make sure ALTER TABLE are not aggregated (74ef2eb)
- type: make sure handled constructor properties are not set twice (2e82eb6)
- type: resolve global classes as shallow TypeClass (d976024)
- website: docs about DI configureProvider and nominal tyoes (e5dafb4)
Bug Fixes
- type-compiler: esm import of micromatch (5606d74)
Bug Fixes
- filesystem-aws-s3: use correct path normalize function (58042a9)
- http: make sure invalid formidable files are skipped (d1ff09b)
- orm: make sure persistence is always closed on flush (015d90a)
- sql: dates should be nullable without casting as JSON (#553) (d34b1a3)
- sql: resolve
Date|null
to date type (ab12802)
- type guard handing of empty Map/Set (da4cf82)
- website: fix ssr, remove some pages (51b9b36)
Bug Fixes
- postgres: use DatabaseField<{type}> for type mapping if available (107399a)
- website: fix deps + builds (4183580)
Bug Fixes
- core: don't include stack in formatError per default (1b603ee)
- http: parameter service injection into route methods with encapsulated modules (9c98f8b)
- type-compiler: also parse tsx source files (80464bf), closes #560
- type: print Error cause chain in formatError (c2a413a)
- type: union expansions in intersections (332b26e), closes #556
Features
- desktop-ui: support queryParams in list route support (6f33804)
- injector: improve set method api (#557) (eb92e58)
- mysql, postgres: add support for connection URLs (2518670)
Bug Fixes
- type-compiler: support windows reflection pattern matching (cec3146)
Bug Fixes
- orm: remove browser export (58bb3c8)
- rpc: maintain strictSerialization option also in new observables (273330b)
- type: handle
Function
correctly in type comparisons (16f0c1d)
Bug Fixes
- framework: also disconnect broker/stopwatch onServerShutdown (69c56eb)
Features
- sql: support per-field name remapping (63b8aaf)
Bug Fixes
- create-app: adjust example app to new API changes (d2b1c26)
- rpc: only print warning text, not error (ed8cfe7)
- type-compiler: mark the right SourceFile object as processed (38cfdf0)
- type: better error message when fast path type resolution fails due to undefined symbols (0ef082d)
Bug Fixes
- type: make sure methods are not part of deserialization/type guard union resolver (eb08a73)
Bug Fixes
- app: allow to inject optional services (52fd21f)
- desktop-ui: correctly unregister destroyed sidebar (8613ae4)
- framework: order of scoped services to allow injecting HttpRequest in RpcKernelSecurity (9a5e300)
- type: correctly type guard
null
in optional properties (c0adcb0)
Bug Fixes
- desktop-ui: correctly publish package.json (23f14ac)
Features
- rpc: reuse type cache across connections + made strictSerialization(false) less strict (1b55b08)
Bug Fixes
- bson: allow to serialize null to optional property (77b0020)
Features
- rpc: allow to disable strict serialization and validation (d7a8155)
- rpc: use rpc.logValidationErrors also for strict serializer (78f57e9)
Bug Fixes
- bson: fix surrogate pair decoding (cb9f648)
Features
- app: allow array flags in object literal (690927c)
- bson: export new wrapObjectId/wrapUUId for faster any serialization (718839b)
- mongo: add readPreference support (6275c37)
- rpc: allow serialization of unknown Observable type (0014074)
Bug Fixes
- rpc: better error message when no observable type can be extracted (5e7ecf1)
- sql: strings should be nullable without casting as JSON (#552) (fe55b7f)
- type: intersection of two different primitive types always return never (#549) (20d3dc8)
Features
- mongo: export custom command API (d82ccd1)
Bug Fixes
- http: make sure all path parameters are available in HttpRequestParser (e215420)
- rpc: error Observable Subscribers when no Observable Next type can be detected (e207fea)
- type: make sure cast<string> throws when null/undefined is passed (1bb3641)
Bug Fixes
- http: don't include resolver/DI objects into HttpRequestParser (be189c5)
Features
- http: allow to fetch unused path parameters in HttpRequestParser (cc3cd3b)
Features
- http: also read path parameters in HttpRequestParser<T> (888d058)
Bug Fixes
- framework: esm import (a9927c2)
- injector: correctly label symbols (ac07f21)
- postgres: don't crash when no index can be extracted (c80e88f)
Features
- http: add new HttpRequestParser<T> injection token (6101f83)
Bug Fixes
Bug Fixes
Bug Fixes
- mongo: export error symbols (5841a5a)
Bug Fixes
- desktop-ui: -webkit-scrollbar is not supported in chrome anymore (68fca4f)
- desktop-ui: dont ignore dist/ in npm package (e6e6faa)
- orm: make sure getJoin operates on existing join model (03b2428)
- type: handle more circular types (5f6bd12), closes #477
Features
- orm: better Error handling + UniqueConstraintFailure (f1845ee)
- orm: new API to configure a join query (64cc55e)
Bug Fixes
- desktop-ui: resolve various circular imports (3f5c676)
- injector: resolve deps of exported providers correctly (c185b38)
Features
- orm: onDatabaseError event (cdb7256)
Features
- injector: new Module.configureProvider<T>(Fn) with configuration callback (1739b95)
Bug Fixes
- core: clear timeouts correctly in ProcessLock (89cd2d5)
- sqlite: correctly quote column renaming (e555ac8)
- topsort: circular reference detection (1c01cc1)
Features
- broker:
await using BrokerLockItem.hold()
for better resource management (7917fb1)
- http: allow using unknown/any/never types that are nominal (3221ff0)
Features
- mysql: upgrade mariadb dependency to 3.2.3 (558ca17)
- sql: support more union types and add new performance abstraction (03067fa), closes #525
- type: preserve modifiers in homomorphic mapped types (f2091d0), closes #515 #514
Features
- sql: support embedded union object literals (29da45c)
- type: provide parent types in serializer template state (d65dfc0)
Features
- app: support Reference in cli object flags (b436af2)
- framework: support multi-host broker setup (6daa19e)
Bug Fixes
- broker: invalid type in Bus.publish (fb99dbe)
- type-compiler: embed external class/functions (ad6973d)
- type-compiler: merge compilerOptions from ConfigResolver (7b00789)
- type-compiler: pattern match exclusion for globs (#543) (30e3319)
- type: correct type guard (272cff9)
Features
- app: allow object literals as flags (488247a)
- app: allow passing command function without name (6796414)
- app: more color in CLI validation error (9231b7c)
- http: support non-class types as DI tokens in route actions (a296570)
- type-compiler: improve perf by 10x (6eb0436)
- type-compiler: support local export syntax + improve logging (993cffa)
Features
- injector: throw error when both forRoot and exports are used in module (#539) (7faa60d)
- type: refactor typeName embedding (48a2994)
Bug Fixes
- create-app: update code to newest deepkit version (7f85620)
- framework: stopwatch store last sync report error (bc15c06)
- rpc-tcp: make sure unixsocket folder is created (00fd4ed)
- website: add @latest to npm init (f182de5)
Bug Fixes
- http: make sure HttpHeader options is defined (ea251ed)
- type-compiler: support nodenext/node16 module type (5e40fae)
Features
- type-compiler: improve performance drastically (1d80c1a)
Bug Fixes
- framework: make sure profiler is only activated when debug/profile is true. (c1d9357)
Features
- orm: remove rxjs dependency (0d9dfe1)
Bug Fixes
- framework: make sure configured var/debug folder is created when (3383504)
Features
- app: improve CLI outputs/parsing by removing @oclif (e38bbd1)
- rpc: make kernel connection available in kernel security (#536) (32252b0)
Features
- type: add new fast path to resolveReceiveType and made it 5x faster on average use case. (45d656c)
Bug Fixes
- type-compiler: make sure plugin is exported in new entrypoint + deps are correct (22eb296)
Bug Fixes
- bson: tests (607d369)
- create-app: add missing filesystem dependency (#533) (a70327c)
- http: use default values of route parameters if no http value was provided. (fa74d16), closes #529
- injector: allow to define scope in provide<T>({}) (2f12c2e)
- orm: snapshot type
any
correctly (4898e9b)
- rpc: defer resolving class name (68fe2a9)
- rpc: tests with controller path resolution based on reflection (6909fa8)
- sql: serialize referenced types (#528) (2f68991)
- type-compiler: arrow function receive type (#521) (6bfb246)
- type-compiler: resolve reflection mode paths correctly (acb2d72)
- type-compiler: set ts compiler options target to es2022 if higher than es20222 when resolving global lib files (#516) (29a1a17)
- type: make serializer API consistent (5870005)
Features
- broker: queue message deduplication (#512) (2a8bf2c)
- injector: add support for receive type in isProvided (#511) (e405ed3)
- mongo,sql: skip database field for inserts (#527) (9fca388)
Bug Fixes
- app: correctly end stopwatch frame (86be2e1)
- broker: await disconnect (0568378)
- core: make sure stringifyValueWithType does not print unlimited depth (56fbef9)
- framework: don't enable profiler per default (52a7e52)
- framework: dont throw when profiler package couldn't be built. (3b165d6)
- framework: provide always DebugBroker (1b55b65)
- http: fix tests to reflect new error reporting (1eb83ff)
- injector: make sure type cache is used when finding matching provider. (8c79e4b)
- rpc: correctly load controller name (9d603db)
- rpc: race condition in disconnect() when connect is still in progress (f2d708d)
- template: better typings to support
<element role="string">
(efb1668)
- type: correctly check
X extends Date
and print validation errors with caused value. (fde795e)
- type: correctly materialize Promise in runtime checks. (aa66460), closes #495
- type: make sure
typeof x
expression doesn't return the original type (7206e7e)
- type: make sure inline returns a ref to the correct type program (dc5d6dd)
Features
- rpc: make controller decorator name optional (#491) (525ed39)
- type-compiler: emit typeName for type only imports (#501) (318d091)
Note: Version bump only for package root
Note: Version bump only for package root
Bug Fixes
- filesystem-aws-s3: use new type for ACL (dd08c77)
- framework: support esm environment for debug gui http routes (5cb33cf)
- mongo: also check connection request for queued requests. (6c6ca94)
- mongo: fix off by one error in pool (666ba86)
- orm: correctly instantiate database class per module (1ea2418)
- rpc: move controllerAccess to handleAction to not call it twice. (c68308d)
- type-compiler: wrong import (caad2b3)
- type: do not interfere with type checking when intersecting multiple type annotations. (af85f1f)
- type: test (c335466)