Repository: dprint/dprint-plugin-typescript (rust)

Issue:
Inappropriately removes type assertion in accessor definition
**Describe the bug**

dprint-plugin-typescript version: 0.88.5

`dprint fmt` removes the "definitely assigned" type assertion from properties marked with `accessor`, which results in TypeScript compilation errors, note the `!` in the definition of `includeSource`

**Input Code**

```ts
export class MarkedPlugin {
    @Option("includes")
    accessor includeSource!: string;
}
```

**Expected Output**
(no change)
```ts
export class MarkedPlugin {
    @Option("includes")
    accessor includeSource!: string;
}
```

**Actual Output**

```ts
export class MarkedPlugin {
    @Option("includes")
    accessor includeSource: string;
}
```


Pull request:
fix: AutoAccessor was losing non-null assertion
Closes #587

Patch:
diff --git a/src/generation/generate.rs b/src/generation/generate.rs
index 11d14a3..e1acbd5 100644
--- a/src/generation/generate.rs
+++ b/src/generation/generate.rs
@@ -474,7 +474,8 @@ fn gen_auto_accessor<'a>(node: &AutoAccessor<'a>, context: &mut Context<'a>) ->
       is_optional: false,
       is_override: false,
       readonly: false,
-      definite: false,
+      // todo: https://github.com/swc-project/swc/issues/8344
+      definite: node.type_ann.is_some() && node.key.next_token_fast(context.program).is_some_and(|t| t.token == Token::Bang),
     },
     context,
   )


Test patch:
diff --git a/tests/specs/declarations/class/auto_accessor/AutoAccessor_All.txt b/tests/specs/declarations/class/auto_accessor/AutoAccessor_All.txt
index a4814af..fbe5132 100644
--- a/tests/specs/declarations/class/auto_accessor/AutoAccessor_All.txt
+++ b/tests/specs/declarations/class/auto_accessor/AutoAccessor_All.txt
@@ -6,6 +6,7 @@ class Person {
     public static accessor    test2 : string;
     private accessor    test3 : string;
     accessor    #test = 2;
+    accessor    here!: string;
 
     constructor(name: string) {
         this.name = name;
@@ -19,6 +20,7 @@ class Person {
     public static accessor test2: string;
     private accessor test3: string;
     accessor #test = 2;
+    accessor here!: string;
 
     constructor(name: string) {
         this.name = name;