teo 0.2.21

Schema-centered next-generation web framework for Rust, Node.js and Python.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
# Roadmap

### 0.0.20
- `on_output` pipeline is called in save function **[DONE]**

### 0.0.21
- `when_many_results` modifier **[DONE]**
- Rename `Purpose` to `Intent` **[DONE]**
- `when_create` and `when_update` supports upsert and outputs **[DONE]**
- Input omissible and output omissible **[DONE]**
- Remove cache error when nesting create or connect same object **[DONE]**
- Remove cache error when nesting upsert same object **[DONE]**
- callbacks for nested created or updated objects **[DONE]**
- Fix validation pipeline is before relation manipulation bug **[DONE]**
- Do not trigger connected object's `on_save` pipeline if it's not actually updated **[DONE]**

### 0.0.22
- Ellipsis modifier (especially useful on output) **[DONE]**
- `get_object` modifier to reach the object itself **[DONE]**
- Property **[DONE]**

### 0.0.23
- SQL: Migration: insert/delete columns for most simple cases **[DONE]**
- SQL: Mutation: most simple inserts **[DONE]**
- SQL: Query: most simple queries **[DONE]**

### 0.0.24
- SQL: Mutation: most simple updates **[DONE]**
- SQL: Query: find many and find one **[DONE]**
- SQL: Query: count **[DONE]**
- SQL: Mutation: deletion **[DONE]**

### 0.0.25
- SQL: Sorting **[DONE]**
- SQL: Paging **[DONE]**
- SQL: Handle optional values **[DONE]**
- SQL: `Date` and `DateTime` **[DONE]**
- SQL: Including with batch query caches for relations without join table **[DONE]**
- SQL: Including with batch query caches for relations with join table **[DONE]**
- SQL: Update object saving order for SQL **[DONE]**

### 0.0.26
- MongoDB: Remove async mutex introduced by SQL features **[DONE]**
- Update key path APIs **[DONE]**
- Fix token decoding and encoding after modifying `identifier` **[DONE]**
- Make key path APIs better **[DONE]**
- SQL: Correct result json key order **[DONE]**

### 0.0.27
- Updated with some new style key path error messages **[DONE]**

### 0.0.28
- Fix pipeline valid check **[DONE]**
- Cached property: save into database **[DONE]**
- Cached property: mark for save on dependency update **[DONE]**
- Cached property: get cached value **[DONE]**
- Cached property: recalculate if dirty **[DONE]**
- Cached property: create database column **[DONE]**
- Add required check for present with and present without **[DONE]**
- Write and read rule **[DONE]**
- Property setter error uses path **[DONE]**

### 0.0.29
- Remove primary name from MongoDB connector's `save` method **[DONE]**
- For relationship with join table, link them after both objects are created **[DONE]**
- Read rule: check in to_json **[DONE]**
- Permissions: Read **[DONE]**
- Permissions: Create **[DONE]**
- Permissions: Update **[DONE]**
- New style key path error messages **[DONE]**
- Object environment **[DONE]**

### 0.0.30
- Delete rules **[DONE]**
- Fix HTTP API result format **[DONE]**

### 0.0.31
- Replace `serde_json` with our own `tson` **[DONE]**

### 0.0.32
- Handle manipulation uses single or many **[DONE]**
- Bug fixes **[DONE]**
- Remove position from env, it can be inferred from `intent` **[DONE]**

### 0.0.33
- MongoDB Aggregation: rewrite **[DONE]**
- MongoDB update: column keys **[DONE]**
- SQL: MySQL: Fix bool column is always altered bug **[DONE]**
- SQL query process: rewrite **[DONE]**
- SQL update: column keys **[DONE]**

### 0.0.34
- Bug fixes for MySQL CRUD without relations **[DONE]**

### 0.0.35
- Bug fixes for select and nested select **[DONE]**
- SQL: join table relationship: cannot insert into object query map **[DONE]**

### 0.0.36
- SQL: Cursor **[DONE]**
- SQL: Negative take **[DONE]**
- SQL: Nested skip and take **[DONE]**
- SQL: Nested negative take **[DONE]**
- SQL: Negative take without order by **[DONE]**
- SQL: Distinct **[DONE]**
- SQL: Relation where for without join table **[DONE]**
- SQL: Relation where for with join table **[DONE]**

### 0.0.37
- SQL: Aggregation **[DONE]**
- SQL: Group by without having **[DONE]**
- SQL: Group by with having **[DONE]**

### 0.0.38
- MongoDB: Bug fixes for one-to-many relationship **[DONE]**

### 0.0.39
- Merge json pipeline into pipeline **[DONE]**
- Fix decode credentials **[DONE]**

### 0.0.40
- PostgreSQL: CRUD and decoding **[DONE]**
- Fix including has no result keys bug **[DONE]**
- SQLite: auto create or delete database file **[DONE]**

### 0.0.41
- Rewrite app & graph **[DONE]**
- Rewrite client generation **[DONE]**

### 0.0.42
- Schema parser **[DONE]**

### 0.0.43
- Message output for starting server **[DONE]**
- Great README for VSCode teo plugin **[DONE]**
- Better syntax highlighting for VSCode **[DONE]**
- Basic Python bindings without custom callbacks **[DONE]**
- Basic Node.js bindings without custom callbacks **[DONE]**
- Basic Go bindings without custom callbacks **[DONE]**
- When starting application, show framework version **[DONE]**
- When starting application, show environment name and version **[DONE]**
- When starting application, show rust compiler version, too **[DONE]**
- When starting application, show application entrance aka CLI or APP **[DONE]**
- Node.js: remove `App.prototype.run` and rename AppBuilder into App **[DONE]**
- Python: remove `App.run` and rename AppBuilder into App **[DONE]**
- CLI --version **[DONE]**
- CLI --help **[DONE]**
- Rust CLI **[DONE]**
- Rust: move load into build **[DONE]**
- Python: move load into run **[DONE]**
- Node.js: move load into run **[DONE]**
- Go: move load into run **[DONE]**
- Python CLI **[DONE]**
- Node.js CLI **[DONE]**
- Fix Node.js cannot Ctrl+C bug **[DONE]**
- TypeScript docs and index.d.ts for Node.js **[DONE]**

### 0.0.44
- Syntax highlighting for official website **[DONE]**
- Syntax highlighting for IntelliJ IDEA **[DONE]**
- `invalid` modifier **[DONE]**
- Remove stage from pipeline context **[DONE]**
- `if` modifier **[DONE]**
- `not` modifier **[DONE]**
- `passed` modifier **[DONE]**
- `and` and `or` modifier **[DONE]**
- `validate` supports pipeline argument **[DONE]**
- `transform` supports pipeline argument **[DONE]**
- `previous` modifier accepts both string and enum choice **[DONE]**
- Fixed range literal bug **[DONE]**
- Removed conf builder **[DONE]**
- Design client config blocks **[DONE]**
- Design entity config blocks **[DONE]**
- Rewrite client code generation with separated TS and JS **[DONE]**
- Rename `tson` to `teon` **[DONE]**
- Add callback model decorators **[DONE]**
- Fix compiler warnings **[DONE]**
- Load environment variables from .env **[DONE]**
- Generate rust entities **[DONE]**
- Fix pipeline highlighting bug for VSCode **[DONE]**
- Rename config keyword to server **[DONE]**

### 0.0.45
- More detailed API documentation **[DONE]**
- `$print` pipeline item **[DONE]**
- Support highlighting `import` and `let` for VSCode plugin **[DONE]**
- Rename `@authIdentity` and `@authBy` **[DONE]**
- Remove permission builder and permission **[DONE]**
- Remove `FieldBuilder` and `FieldIndexBuilder` **[DONE]**
- Remove `PropertyBuilder` **[DONE]**
- Remove `RelationBuilder` **[DONE]**
- Remove `ConnectorBuilder` and `DataSourceBuilder` **[DONE]**
- Remove `ActionBuilder` **[DONE]**
- Rename `Action` into `Handler` **[DONE]**
- CLI migrate command **[DONE]**
- Migrate when starting server **[DONE]**
- Rename `intent` to action **[DONE]**
- Rename `source` to action source **[DONE]**
- Parser: bitwise `~`, `|`, `^`, `&` **[DONE]**
- Parser: `+` `-` `*` `/` `%` **[DONE]**
- Remove redundant teon number types **[DONE]**
- Add `INTERNAL_LOCATION` and `INTERNAL_AMOUNT` **[DONE]**
- Pratt parser for binary operation **[DONE]**
- Add `$identity(Pipeline)` **[DONE]**
- Fix typo: rename `$isExist` to `$exists` **[DONE]**
- Add `@canRead` and `@canMutate` to models **[DONE]**
- Add `@canMutate` to delete **[DONE]**
- Add `@canRead` and `@canMutate` to fields **[DONE]**
- Add before delete and after delete callback to delete **[DONE]**
- Rename rust binary to `cargo-teo` **[DONE]**
- MongoDB bug: @id is not unique if not mapped to `_id` **[DONE]**
- MongoDB bug: dup key should use field name instead of column name **[DONE]**
- Rust entities for optional numbers **[DONE]**
- Rust entities for optional `Date` and `DateTime` **[DONE]**
- Rust entities for new method with `teon` parameter **[DONE]**
- Rust entities for query methods **[DONE]**
- Rename `ActionError` and `ActionResult` **[DONE]**
- Improved teon value eq to support across number types **[DONE]**
- Always record previous id value and support modifying `@id` fields **[DONE]**

### 0.0.46
- Error in pipeline **[DONE]**
- Rename pipeline modifier to pipeline item **[DONE]**
- Error in pipeline program functions **[DONE]**
- Entry level `@disable` **[DONE]**
- Nested level `@disable` **[DONE]**
- `@redirect` item to redirect action **[DONE]**
- `$set` and `$get` works for object, vec and map **[DONE]**
- Entry level `@action` **[DONE]**
- Nested level `@action` **[DONE]**
- Fix value required entry level error message bug **[DONE]**
- `$print` item label argument **[DONE]**
- `$assign` decorator **[DONE]**
- Property decorator documentation **[DONE]**
- Relation decorator documentation **[DONE]**
- Rust `validate` accepts `Option<String>` **[DONE]**
- `@disable` documentation **[DONE]**
- `@action` documentation **[DONE]**
- Support regular expression for VSCode plugin **[DONE]**
- Rust entities: `chrono` and `bson` automatically included **[DONE]**
- Rust entities: properties **[DONE]**
- Rust entities: `set`, `update` and `delete` method **[DONE]**
- New designed object relation APIs **[DONE]**
- Rust entities with relations **[DONE]**
- Entities: auto create dir **[DONE]**
- Rust server API documentation **[DONE]**
- Object API: correct nested `set` usage for request **[DONE]**
- Object API: add nested `upsert` for single relation **[DONE]**
- Object API: correct nested `set` usage for programming **[DONE]**
- Fix parsing chained calls with new line **[DONE]**
- `find` action transform when including **[DONE]**
- MongoDB bug: fix pipeline set value, int 64 and int 32 issue **[DONE]**
- Fix soft delete bugs **[DONE]**

### 0.0.47
- Code comment parsing in schema parser **[DONE]**
- Rust entities with documentation **[DONE]**
- TypeScript client: package files **[DONE]**
- Fixed MySQL name quote bug **[DONE]**
- Client: gitCommit option: default false **[DONE]**
- TypeScript client: fetch result: DateTime should be decoded correctly **[DONE]**
- Import without extension and index **[DONE]**
- `dest` relative to file instead of cwd **[DONE]**
- Revamp server outputs **[DONE]**
- Request logging: log original handler instead of redirected and transformed **[DONE]**
- Bug: required relationship can be created without it **[DONE]**
- Primitive type constructors **[DONE]**
- Remove unused `copy` decorator **[DONE]**
- Fixed nested create key bug **[DONE]**

### 0.0.48
- Fixed a pipeline parsing bug **[DONE]**
- Fixed a bug which causes checker value being not passed into pipeline **[DONE]**
- Added an HTTP error message when JWT token is not defined **[DONE]**
- Added `$is` item for object checking **[DONE]**
- When identity object is created and identity is null, set itself as identity **[DONE]**
- MySQL and SQLite: when object is created, use correct int type for inserted ID **[DONE]**
- Teon value: hashmap can compare equality **[DONE]**
- Find many handler: errors if any of items is denied to access **[DONE]**
- `$isA` throws correct error message if value is null **[DONE]**
- Fixed upsert and update handler has wrong user mode bug **[DONE]**

### 0.0.49
- Fixed SQLite connector create a strange file when `:memory:` **[DONE]**
- Fixed TypeScript client `$withToken` is not called correctly bug **[DONE]**
- Fixed TypeScript client date parsing bug when encountered null **[DONE]**
- Fixed `$ellipsis` argument passing bug **[DONE]**

### 0.0.50
- Replace buggy sqlx with quaint which powers Prisma **[DONE]**
- SQLite: unique constraint error **[DONE]**
- MySQL: auto insert `root:` to connection URL **[DONE]**
- PostgreSQL: auto insert `postgres:` to connection URL **[DONE]**
- Rewrite SQL migrations for SQLite **[DONE]**
- Rewrite SQL migrations for PostgreSQL **[DONE]**
- Migration decorator **[DONE]**
- PostgreSQL migration: list columns **[DONE]**
- SQL migration: rename fields **[DONE]**
- Model: dropped columns **[DONE]**
- Connector config: debug **[DONE]**
- SQLite: fix in memory connection **[DONE]**
- SQL migration: add column: default value **[DONE]**

### 0.0.51
- SQL migration: when adding required column without `default: ..` or `drop: true`, throws **[DONE]**
- SQL migration: drop table if needed when adding required column **[DONE]**
- `$queryRaw` item for SQL **[DONE]**
- SQL migration: delete tables **[DONE]**
- SQL migration: rename tables **[DONE]**
- SQL migration: actions **[DONE]**
- Server: decimal type **[DONE]**
- TypeScript client: decimal type **[DONE]**
- Fix number updater bug **[DONE]**
- PostgreSQL array type: server side **[DONE]**
- PostgreSQL array type: TypeScript client **[DONE]**
- Fix optional type decoding **[DONE]**
- PostgreSQL: fix alter column with multiple clauses **[DONE]**
- Fix query bug for date, datetime and decimal **[DONE]**

### 0.0.52
- Fix slug and cuid format **[DONE]**
- Add cuid2 modifier **[DONE]**
- SQL migration: Separate index and columns **[DONE]**
- Schema language: Enum member literal with argument **[DONE]**
- Named arguments for index decorators **[DONE]**
- Pipeline: random float modifier **[DONE]**
- Pipeline: random int modifier **[DONE]**
- Pipeline: to uppercase modifier **[DONE]**
- Pipeline: to lowercase modifier **[DONE]**
- Pipeline: to word case modifier **[DONE]**
- Pipeline: to sentence case modifier **[DONE]**
- Pipeline: to title case modifier **[DONE]**
- Export graph, model, fields, relations and properties from app for Node.js binding **[DONE]**
- Node.js object **[DONE]**
- Node.js entity generation **[DONE]**
- Node.js package **[DONE]**
- Fix PostgreSQL drop index **[DONE]**
- Generate decimal in rust entities **[DONE]**

### 0.0.53
- Fix Node.js run loop bug **[DONE]**

### 0.0.54
- Setup integration tests: test lib **[DONE]**
- Setup integration tests: docker **[DONE]**
- Fix rust command line arguments **[DONE]**
- MySQL native enum **[DONE]**
- Fix MongoDB integer encode bug **[DONE]**
- Support MongoDB arrays **[DONE]**
- Fixed MongoDB date encoding bug **[DONE]**
- Removed enum builder **[DONE]**
- Fixed SQLite Int64 is not decoded bug **[DONE]**
- Fixed SQLite migration primary key bug **[DONE]**
- Fixed PostgreSQL migration primary key bug **[DONE]**

### 0.0.55
- Remove URL segment name **[DONE]**
- Refactor the generator code to make it production ready **[DONE]**
- Swift client **[DONE]**
- Kotlin client **[DONE]**
- Dart client **[DONE]**
- C# client: refactor **[DONE]**
- Generate decimal imports in rust entities **[DONE]**
- Schema lang: dataset **[DONE]**
- Parser: parse dataset **[DONE]**
- Fix dictionary literal parsing bug **[DONE]**
- Fix SQL non-serial id object creating bug **[DONE]**
- Fix SQL `OR` in where bug **[DONE]**
- Fix SQL empty `in` or `notIn` bug **[DONE]**
- Fix import statement **[DONE]**
- Add command `seed` **[DONE]**
- `seed --reseed` **[DONE]**
- `seed --unseed` **[DONE]**
- Add command `purge` **[DONE]**
- Use `TEO_ENV` environment variable **[DONE]**
- Data seeding **[DONE]**
- Add debug conf block **[DONE]**
- Add test conf block **[DONE]**
- CLI: Make `--schema` argument global **[DONE]**
- Setup integration tests: reset after each find request **[DONE]**
- Unit test: relations for MongoDB connector **[DONE]**
- Fix many-to-many relationship set is not reset bug **[DONE]**
- Fix many-to-many relationship cannot be nested updated bug **[DONE]**
- Fix many-to-many relationship cannot be nested updated many bug **[DONE]**
- Fix many-to-many relationship cannot be nested deleted bug **[DONE]**
- Fix many-to-many relationship cannot be nested deleted many bug **[DONE]**
- Single relation: nested set to null **[DONE]**
- Many to one required: disable set and disconnect nested action **[DONE]**
- One required to many: disable set to null and disconnect **[DONE]**
- Fix set for single relation is not set bug **[DONE]**
- One foreign to one local optional: when nested create, disconnect the previous one **[DONE]**
- Unit test: relations for MySQL connector **[IN PROGRESS]**
- Fix composite primary bug for MySQL **[DONE]**
- Fix SQL where with join error **[DONE]**
- SQL: required many-to-many relation should display an empty relation array if included **[DONE]**
- Unit test: relations for PostgreSQL connector **[DONE]**
- Fix composite primary bug for PostgreSQL **[DONE]**
- Fix string encode escape bug for PostgreSQL **[DONE]**
- Fix where name escape bug for PostgreSQL **[DONE]**
- Fix: SQL delete clause escapes identifiers **[DONE]**
- Unit test: relations for SQLite connector **[DONE]**
- Fix: SQL encode escape bug for SQLite **[DONE]**

### 0.0.56
- Find unique and find first returns null instead of `ObjectNotFound` error **[DONE]**
- Fix: on save now displays correct validate error message **[DONE]**
- Fix: compare should not be called when field is not `recordPrevious` **[DONE]**
- Refactor **[DONE]**
- Rename `source` to `initiator` **[DONE]**
- Rename `environment version` to `program` **[DONE]**
- Remove `GraphBuilder` **[DONE]**
- Remove `AppBuilder` **[DONE]**
- Remove `ModelBuilder` **[DONE]**
- Rewrite model API **[DONE]**
- Remove `ModelIndexBuilder` **[DONE]**
- Rewrite framework errors **[DONE]**
- Rewrite connector to support pooled connections **[DONE]**
- Fix SQLite memory bug: A HTTP connection should use single pooled connection **[DONE]**
- Unit test: relations for SQLite memory connector **[DONE]**
- SQL transaction **[DONE]**
- Callbacks with variant length parameters **[DONE]**
- Pass teo object to callbacks **[DONE]**
- Refactor Rust entities **[DONE]**
- Node.js bindings: refactor **[DONE]**
- Refactor Node.js entities **[DONE]**
- Fixed Node.js transform number bug **[Done]**
- Fixed rust entity generation callback method bug **[Done]**
- Fixed update Cargo.toml bug **[Done]**
- Fixed `$oneOf` bug **[Done]**
- Fixed rust enum traits bug **[Done]**
- Fixed `dotenv` is not triggered bug **[Done]**
- Schema lang: Each line can contain comments now **[Done]**
- Entity: rust entity now contains aggregate methods **[Done]**
- When running generation, ignore custom programming callbacks **[Done]**
- Fixed aggregate SQL clause bug for PostgreSQL **[Done]**
- Fixed create index on a newly defined column causes crash bug **[Done]**
- MySQL basic custom string types **[Done]**
- Fixed decimal.js import bug for generated Node.js client **[Done]**
- Fixed a bug causes virtual fields to be created **[Done]**
- When refreshed, virtual value is kept for root level object **[Done]**
- Fixed count `where` bug **[Done]**
- Add `timezone` parameter to `$today` **[Done]**
- Cached properties can be indexed **[Done]**
- Better object inspection **[Done]**

### 0.0.57
- Custom routes: action **[Done]**
- Custom routes: middleware **[Done]**
- Fixed action `program code` is recognized as any action bug **[Done]**
- Fixed where unique input is ordered bug **[Done]**
- Fixed `teon` macros are not found bug **[Done]**
- File uploading with form data **[Done]**
- Serving static files **[Done]**
- Fixed optional decimal bug in rust entities **[Done]**
- Added a user context parameter to setup callback **[Done]**
- Fixed a bug which caused generated clients contain internal classes **[Done]**
- Fix app ctx and graph memory bug for release **[Done]**
- Fix command line tool entity generation **[Done]**
- Fixed sign in meta token object **[Done]**
- Uploaded file is now placed at temporary directory **[Done]**
- Fixed where unique decode bug **[DONE]**
- Fixed previous record trigger when setting object value **[DONE]**
- When updating an object, use its previous value **[DONE]**
- Do not seed records for dropped tables and delete the seed record **[DONE]**
- Fixed "equals": null and "not": null for SQL queries **[DONE]**
- Generated models in clients and entities are in alphabetic order **[DONE]**
- Kotlin client: when generating into a project, infer its package name from the path **[DONE]**
- Node.js client: Rewrite with askama engine **[DONE]**
- Generated clients: vec relations are optional instead of required **[DONE]**
- Fixed enum triple comment block parsing bug **[DONE]**
- Remove block decorators **[DONE]**
- Added `toDate` item **[DONE]**

### 0.0.58
- Fixed duplicated import bug **[DONE]**
- Namespaces **[DONE]**
- Remove `action` from request URLs **[DONE]**
- Remove function installers **[DONE]**
- Table names are lower-cased but not plural anymore **[DONE]**
- Fixed empty dictionary literal parsing bug **[DONE]**
- Display errors and warnings **[DONE]**
- Allow comments in dictionary literal, array literal and tuple literal **[DONE]**
- Fix insert raw enum variant into SQL bug **[DONE]**
- Added `lint` command **[DONE]**
- Added `run` command and `program` definition **[DONE]**
- Type system in schema **[DONE]**
- Remove soft delete **[DONE]**
- Code diagnostics for VSCode **[DONE]**
- Auto completion **[DONE]**
- Jump to definition **[DONE]**
- Allow no connector in a project **[DONE]**
- Multiple connectors **[DONE]**
- Rewrite decorators loading and pipeline items loading **[DONE]**
- Custom decorators and pipeline items **[DONE]**
- Full set of binary operators **[DONE]**
- Enum member with arguments **[DONE]**
- Force unwrap operator **[DONE]**
- Specific database types **[DONE]**
- Server response: redirects **[DONE]**
- The copy action **[DONE]**
- Custom decorators for actions including custom routes: @ignoreNamespace: true**[DONE]**
- Server: custom request methods and url params**[DONE]**
- Availability flags **[DONE]**
- Database type mapping for field, property **[DONE]**
- All `many` actions should throw errors **[DONE]**
- Rewrite model validator and decoder **[DONE]**
- Rewrite interface validator and decoder **[DONE]**
- Input omissible and output omissible for generated clients **[DONE]**
- Client: distinct in handler args **[DONE]**

### 0.0.59
- Format source files **[DONE]**
- Dictionary uses javaScript object syntax **[DONE]**
- Alter config block with dictionary literal syntax **[DONE]**
- Declare enum in type **[DONE]**
- Declare object in type **[DONE]**
- Interface extending shapes **[DONE]**
- Type coercing **[DONE]**
- Bug fixes **[DONE]**
- Rewrite rust generators with namespaces and interfaces **[DONE]**
- Add back request logs **[DONE]**
- Add back extractors for rust entities **[DONE]**
- Add back model index decorators **[DONE]**

### 0.0.60
- Custom handler takes synthesized types **[DONE]**
- Add `to_teon` for generated rust objects **[DONE]**
- Fix rust entity `type` method escaping bug **[DONE]**
- Add borrowing from teon value for generated rust interfaces **[DONE]**
- Fix rust entity `&Value` to &interface conversion bug **[DONE]**
- Do not parse JSON body for get request and delete request **[DONE]**
- Fix use middlewares parsing bugs **[DONE]**
- Fix unsigned type bug in MySQL **[DONE]**
- Fix table name encoding bug in PostgreSQL **[DONE]**
- Fix create bug in PostgreSQL **[DONE]**
- Fix primary key is dropped bug in PostgreSQL **[DONE]**
- Fix MongoDB record decoding bugs **[DONE]**
- Fix `$hasLength` pipeline item bug **[DONE]**
- Fix argument resolving bug when type is optional **[DONE]**
- Fix server error message class error **[DONE]**
- Update MongoDB unique record error message **[DONE]**
- Update SQL databases unique record error message **[DONE]**
- Fix model `@migration` renamed bug **[DONE]**
- Server response: file **[DONE]**
- Server response: string in HTML format and other formats **[DONE]**
- Rewrite TS client generators with namespaces and interfaces **[DONE]**
- TS Client: fix running bugs **[DONE]**
- TS Client: fixed include args with boolean inputs **[DONE]**
- Fix reference shape with without bug **[DONE]**
- Remove `using` keyword from syntax **[DONE]**
- Update documentation **[DONE]**
- Update design of website **[DONE]**
- Rewrite syntax highlighting **[DONE]**

### 0.0.61
- Fix MySQL primary key migration bug **[DONE]**
- Simplified transaction API **[DONE]**
- Fix without shape bug for create and update when generating **[DONE]**
- Allow doc comment in dictionary literal **[DONE]**

### 0.0.62
- Fix `import` keyword is unrecognized bug **[DONE]**
- Improve performance when auto completing **[DONE]**
- Fix SQL string quote bugs when performing join **[DONE]**
- Fix MongoDB object update bug **[DONE]**
- Fix enum types migration bug for SQL databases **[DONE]**

### 0.0.63
- Fix app entrance display bug for Rust CLI **[DONE]**
- Allow handler declaration in namespace and top level **[DONE]**
- Allow optional handler input type **[DONE]**
- Add `nonapi` keyword to handler declaration **[DONE]**
- Handler decorator `map` **[DONE]**
- Fix launching bugs for no database server apps **[DONE]**
- Add handler with no arguments **[DONE]**
- Add `interface` parameter and generate interface for handler path arguments **[DONE]**
- Fix handler URL matching bug **[DONE]**
- Fix output type of `$when` **[DONE]**
- Add `indexmap` to generated Rust entity **[DONE]**
- Fix file uploading bugs **[DONE]**

### 0.0.64
- Fix VSCode crashing when completing relation decorators **[DONE]**
- Fix data seeding bugs **[DONE]**
- Add back relation delete rule **[DONE]**
- Add relation update rule **[DONE]**
- Remove `@recordPrevious` **[DONE]**
- Fix update input is not optional bug **[DONE]**

### 0.0.65
- Fix seeding query bug that sometimes occurs **[DONE]**
- Fix transaction bug for Node.js and Python **[DONE]**

### 0.1.0
- Rewrite Node.js server **[DONE]**
- Update design of README.md **[DONE]**
- Node.js object printing **[DONE]**
- Node.js client use dedicated `DateOnly` class instead of builtin `Date` **[DONE]**
- Cross language error handling for node.js **[DONE]**
- Reverse middleware stack order **[DONE]**
- Asynchronous schema loading **[DONE]**
- Rewrite Node.js entity generation **[DONE]**
- Fix MySQL migration bug for `DateTime` **[DONE]**
- Pipeline item target type casting **[DONE]**
- TS Client: correct return types for `count`, `aggregate` and `groupBy` **[DONE]**
- TS Client: fix `DateOnly` and `ObjectId` type to string **[DONE]**
- Extract arguments in wrapped pipeline item with **[DONE]**
- Node.js: add `count`, `aggregate` and `groupBy` **[DONE]**
- Node.js: type safe database methods **[DONE]**
- TS Client: add `decimal.js` to package.json **[DONE]**

### 0.1.1
- Fixed auto seeding bug which causes exiting **[DONE]**

### 0.1.2
- Fixed Node.js package release bug **[DONE]**

### 0.1.3
- Fixed TypeScript client array result type bug **[DONE]**

### 0.1.4
- Fixed `orderBy` input definition bug **[DONE]**

### 0.1.5
- Fixed client generation for `orderBy` **[DONE]**
- Fixed pipeline item and model decorators loading in CLI mode **[DONE]**

### 0.1.6
- Fixed `DateTime` encoding bug in TypeScript client **[DONE]**

### 0.1.7
- Fixed meta decoding bug for `findMany` **[DONE]**

### 0.1.8
- Fixed `Int64` and `Float32` SQL encoding bug **[DONE]**

### 0.1.9
- Fixed middleware creator arguments are not found bug **[DONE]**
- When cursor is invalidly used, display error message instead of panicking **[DONE]**

### 0.2.0
- Support Python server **[DONE]**
- Fix relation filters are required bug **[DONE]**
- Format new lines in generated javaScript entities and clients **[DONE]**

### 0.2.1
- Fix Linux GitHub CI building for Python package **[DONE]**
- Fix Linux GitHub CI building for Node.js package **[DONE]**

### 0.2.2
- Python: Fix declaration and signature of decorator APIs **[DONE]**
- Python: Fix signatures for `TypedDict` optional fields **[DONE]**
- Python: Add slash to python generated APIs **[DONE]**
- Python: Fix CLI run loop bug **[DONE]**
- Node.js: Type annotation for define handler group **[DONE]**
- Node.js: Fix type annotation for decorator APIs **[DONE]**
- Parser: When data set group is not found, display an error **[DONE]**
- SQL: fix `notIn` and `in` query bug **[DONE]**

### 0.2.3
- Node.js: Fix warnings in generated Node.js interface **[DONE]**
- Replace `count` with `count_objects` and `count_fields` in Python and Rust entities **[DONE]**
- SQL: count fields **[DONE]**
- MongoDB: count fields **[DONE]**

### 0.2.4
- `count_fields` now takes generic argument **[DONE]**
- Rust entity: Fix root context object is wrongly generated submodules bug **[DONE]**
- Parser: update model pipeline trigger arguments **[DONE]**
- Fix typo in command option messages **[DONE]**
- Node.js: Update `defineHandler` to use `RequestCtx` argument **[DONE]**
- Python: Update `define_handler` to use `RequestCtx` argument **[DONE]**
- Node.js: Add `serveStaticFiles` function **[DONE]**
- Python: Add `serve_static_files` function **[DONE]**
- Node.js: Fix model is not generated into entities bug **[DONE]**
- Node.js: Fix `RequestCtx` methods return type annotation bug **[DONE]**
- Node.js: Fix entity generation type annotation errors **[DONE]**
- Node.js: Add `pathArguments` to `RequestCtx` **[DONE]**
- Python: Add `path_arguments` to `RequestCtx` **[DONE]**

### 0.2.5
- Node.js: Fix `DateTime` encoding bug **[DONE]**
- Node.js: Fix memory bug for define handler groups **[DONE]**
- Node.js: Fix define handler error strategy **[DONE]**
- Python: Fix `DateTime` encoding bug **[DONE]**
- Python: Fix field name is not snake-cased bug **[DONE]**
- Python: Fix `File` class instance variable bug **[DONE]**
- Python: implement `__repr__` for `File` **[DONE]**
- CLI: Fix `--no-autoseed` doesn't work bug **[DONE]**
- Fix update rule causes stack overflow bug **[DONE]**

### 0.2.6
- Fix CLI description in serve **[DONE]**
- Node.js: Fix no ARGV bug in Linux systems **[DONE]**
- Python: Fix no ARGV bg in Linux systems **[DONE]**

### 0.2.7
- Fix argv bug in Rust **[DONE]**

### 0.2.8
- Parser & Client Generator: Dynamic host URL in clients **[DONE]**
- Update error mechanism to include code and path **[DONE]**
- Node.js: added native TeoError, but napi-rs doesn't support it **[DONE]**
- Python: native TeoException **[DONE]**
- Integration test: additional HTTP apis **[DONE]**
- Node.js: Fix app entrance argv bug **[DONE]**

### 0.2.9
- Fix TypeScript client date only type decoding **[DONE]**
- Update dart client package with new namespaces API **[DONE]**

### 0.2.10
- TypeScript Client: Add `wechat` and `taro` API **[DONE]**
- Allows no argument list if every enum variant argument is optional **[DONE]**

### 0.2.11
- Node.js: upgrade to napi-rs and fix broken APIs introduced by napi-rs **[DONE]**

### 0.2.12
- Parser: Fix environment variable is invalid expression bug **[DONE]**
- Parser: Fix subscription alters current namespace path bug **[DONE]**
- Parser: Update math items declarations and fix type checking bug **[DONE]**
- Parser: Fix `$assign` declaration bug **[DONE]**
- Runtime: Fix value fetching bug for field names **[DONE]**
- PostgreSQL: Fix time zoned type migration bug **[DONE]**
- Runtime: Fix `$pow` argument bug **[DONE]**
- Runtime: Fix json to teon conversion bug for float with int input **[DONE]**
- Add input omissible and output omissible to properties **[DONE]**
- Runtime: Fix nested a lot of levels object saving causing recursive bug **[DONE]**
- SQL Connector: Fix group by encoding bug **[DONE]**
- PostgreSQL: Fix group by SQL building bug **[DONE]**

### 0.2.13
- Runtime: Fix main namespace handler without mapping is not found bug **[DONE]**
- Parser & Runtime: Fix broken case sensitivity mode to string filters **[DONE]**
- MongoDB Connector: Fix query bugs **[DONE]**
- MongoDB transaction **[DONE]**

### 0.2.14
- Reintroduce `bcrypt` pipeline items **[DONE]**
- Rust entity: Fix error and result types **[DONE]**
- Dart client: Fix escape `default` **[DONE]**
- New implementation of identity **[DONE]**
- Parser & Runtime: add declared synthesized shape **[DONE]**
- Parser & Runtime: add handler template **[DONE]**
- Parser & Runtime: add handler template including **[DONE]**
- Parser: `$set` and `$get` accept shape params **[DONE]**
- TSClient: fix error field `errors` **[DONE]**
- Fix use middlewares availability bug **[DONE]**
- Runtime: add pipeline items `$do` and `$not` **[DONE]**

### 0.2.15
- Fix shapes for client & entity generation **[DONE]**
- Add interface decorator `@generateClient` and `@generateEntity` **[DONE]**
- TS Client: fix custom handler bugs **[DONE]**
- Fix declared synthesized shape optional bug **[DONE]**

### 0.2.16
- Writeonly fields considered as scalar fields **[DONE]**
- Update pipeline error code handling **[DONE]**
- Update `expired` argument of `$jwt` to accept pipeline item **[DONE]**
- Runtime:  Fix `@migration` default value bug **[DONE]**
- Add `$message` pipeline item **[DONE]**
- Add `ids` to identity checker args **[DONE]**
- Fix optional type resolving into nested bug **[DONE]**
- SQLite: Fix duplicated index name in different tables bug **[DONE]**
- Node.js: Fix model name case bug **[DONE]**
- Python: Fix entity generation bugs **[DONE]**
- Dart: Fix client generation bugs **[DONE]**
- Rust: Fix entity generation bugs **[DONE]**

### 0.2.17
- Fix Python entity circular reference bug and empty items bug **[DONE]**

### 0.2.18
- Dart: fix code generating bugs **[DONE]**

### 0.2.19
- Remove error title and inspect the title from the error code **[DONE]**
- Node.js: update error representation **[DONE]**
- Python: update error representation **[DONE]**
- Optimize pipeline item error API **[DONE]**

### 0.2.20
- Remove teon package, use parser value and runtime value instead **[DONE]**
- Pipeline item `$account` **[DONE]**

### 0.2.21
- Parser: fix interface enum variant parsing **[DONE]**
- Parser: fix argument list resolving bug when no generics are provided **[DONE]**
- Parser: `type` keyword and type value expression **[DONE]**
- Parser & Runtime: allow using type as value **[DONE]**
- Parser & Runtime: Pipeline item `$match`, `$cast`, `$case` and `$asAny` **[DONE]**
- Parser & Runtime: Pipeline item `$is` **[DONE]**
- Parser & Runtime: Pipeline items `$all` and `$any` **[DONE]**
- Parser: remove deprecated test config block **[DONE]**
- CLI: Add `teo run --list` to list programs **[DONE]**
- Fix permissions **[DONE]**

### 0.2.23
- Add back integration tests
- Windows: When server startup, fix port is not taken bug

### 0.2.25
- Management system generation

### 0.3.0
- `@onSet!()` and `@onSet?()`
- `$get!()` and `$get?()`

### 0.3.1
- Debug logging SQL
- Migration dry run

### 0.3.2
- Update swift client package with new namespaces API
- Revamped request extension API
- Improved middleware system including middleware skipping and model middlewares
- Add back model action transformers
- Soft delete

### 0.4.0
- Kotlin client
- C# client
- C# client: capitalized names and names with underscore
- MongoDB: connector is not using table name

### 0.5.0
- Json type

### 0.6.0
- Custom SQL query scopes
- Custom MongoDB query scopes
- Default argument for argument list and config declaration

### 0.7.0
- PostgreSQL: Enum types
- MongoDB migration
- MongoDB `$queryRaw`
- MongoDB: root skip take and distinct bug
- MongoDB: nested skip take and distinct bug
- MongoDB: if cursor key is not orderBy key, result is wrong
- MongoDB: relation where: multiple keys should be allowed
- MongoDB: relation where: 'every' results is incorrect
- MongoDB: aggregate and group by for string and dates
- Correct count with cursor

### 0.8.0
- Full database type mapping
- Model fragments
- model extends model
- enum extends enum

### 0.9.0
- Support first version of Teo Studio

### 1.0.0
- First stable major version

### 1.3.0
- Support MSSQL

### 1.5.0
- Full set of unit tests