@supatype/types 0.1.0-alpha.9

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.
@@ -0,0 +1,210 @@
1
+ import { describe, expectTypeOf, it } from "vitest"
2
+ import type {
3
+ Block,
4
+ Blocks,
5
+ HasMany,
6
+ Model,
7
+ Optional,
8
+ RichText,
9
+ ServerDefault,
10
+ Slug,
11
+ UUID,
12
+ Unique,
13
+ JSON,
14
+ Public,
15
+ Owner,
16
+ RelatedTo,
17
+ SupatypeAuthUser,
18
+ SupatypeAuthUserId,
19
+ OwnerFrom,
20
+ EditorReadOnly,
21
+ Computed,
22
+ } from "../src/index.js"
23
+ import type { SerializedEditorState } from "../src/lexical.js"
24
+
25
+ type User = Model<{
26
+ id: UUID
27
+ email: Unique<string>
28
+ }>
29
+
30
+ type Post = Model<{
31
+ id: UUID
32
+ author_id: UUID
33
+ slug: Unique<Slug>
34
+ body: RichText
35
+ metadata: JSON<{ draft: boolean }>
36
+ author: User
37
+ comments: HasMany<Comment>
38
+ }, {
39
+ access: { read: Public; update: Owner<"author_id"> }
40
+ }>
41
+
42
+ type Comment = Model<{
43
+ id: UUID
44
+ body: string
45
+ post: Post
46
+ deletedAt: Optional<Date>
47
+ }>
48
+
49
+ type Hero = Block<"hero", { heading: string; ctaUrl?: string }>
50
+ type RichTextSection = Block<"rich_text", { content: RichText }>
51
+ type LandingPage = Model<{
52
+ id: UUID
53
+ content: Blocks<Hero | RichTextSection>
54
+ }>
55
+
56
+ describe("@supatype/types primitives", () => {
57
+ it("exposes branded field types with structural use-site compatibility", () => {
58
+ expectTypeOf<Post["id"]>().toMatchTypeOf<string>()
59
+ expectTypeOf<Post["slug"]>().toMatchTypeOf<string>()
60
+ expectTypeOf<Post["metadata"]>().toMatchTypeOf<{ draft: boolean }>()
61
+ })
62
+
63
+ it("RichText accepts Lexical state or plain string (fixtures / gradual adoption)", () => {
64
+ expectTypeOf<"hello">().toMatchTypeOf<RichText>()
65
+ const lexical: SerializedEditorState = { root: { type: "root", version: 1, children: [] } }
66
+ expectTypeOf(lexical).toMatchTypeOf<RichText>()
67
+ })
68
+
69
+ it("supports relation wrappers and optional modifier composition", () => {
70
+ expectTypeOf<Post["comments"]>().toEqualTypeOf<Comment[]>()
71
+ expectTypeOf<Comment["deletedAt"]>().toEqualTypeOf<Date | null | undefined>()
72
+ })
73
+
74
+ it("supports block unions for block-based content fields", () => {
75
+ expectTypeOf<LandingPage["content"]>().toEqualTypeOf<(Hero | RichTextSection)[]>()
76
+ })
77
+
78
+ it("preserves model metadata markers for extractor discovery", () => {
79
+ expectTypeOf<Post>().toHaveProperty("id")
80
+ expectTypeOf<Post>().toHaveProperty("body")
81
+ })
82
+
83
+ it("validates Owner<> keys against model fields when model is provided", () => {
84
+ type Valid = Owner<Post, "author_id">
85
+ expectTypeOf<Valid>().toMatchTypeOf<Owner<Post, "author_id">>()
86
+
87
+ // @ts-expect-error - key must exist on Post fields
88
+ type Invalid = Owner<Post, "authorId">
89
+ expectTypeOf<Invalid>().toBeNever()
90
+ })
91
+
92
+ it("infers current model field keys in Model access metadata", () => {
93
+ type Inferred = Model<{
94
+ id: UUID
95
+ author_id: UUID
96
+ }, {
97
+ access: {
98
+ update: Owner<"author_id">
99
+ }
100
+ }>
101
+
102
+ expectTypeOf<Inferred>().toHaveProperty("id")
103
+
104
+ // @ts-expect-error - authorId is not a field on this model
105
+ type Bad = Model<{
106
+ id: UUID
107
+ author_id: UUID
108
+ }, {
109
+ access: {
110
+ update: Owner<"authorId">
111
+ }
112
+ }>
113
+ expectTypeOf<Bad>().toBeNever()
114
+ })
115
+
116
+ it("allows self-referential ownership via primary id", () => {
117
+ type SelfOwned = Model<{
118
+ id: SupatypeAuthUserId
119
+ name: string
120
+ }, {
121
+ access: {
122
+ update: Owner<"id">
123
+ delete: Owner<"id">
124
+ }
125
+ }>
126
+
127
+ expectTypeOf<SelfOwned>().toHaveProperty("id")
128
+ })
129
+
130
+ it("rejects Owner<\"id\"> when id is not explicitly auth user id", () => {
131
+ // @ts-expect-error - id must be SupatypeAuthUserId for Owner<"id">
132
+ type BadSelfOwned = Model<{
133
+ id: UUID
134
+ name: string
135
+ }, {
136
+ access: {
137
+ update: Owner<"id">
138
+ }
139
+ }>
140
+ expectTypeOf<BadSelfOwned>().toBeNever()
141
+ })
142
+
143
+ it("rejects orphan *_id owner keys that are not relation-backed", () => {
144
+ // @ts-expect-error - author_id exists but has no RelatedTo<...> backing field
145
+ type InvalidOwnerField = Model<{
146
+ id: UUID
147
+ author_id: UUID
148
+ title: string
149
+ }, {
150
+ access: {
151
+ update: Owner<"author_id">
152
+ }
153
+ }>
154
+
155
+ expectTypeOf<InvalidOwnerField>().toBeNever()
156
+ })
157
+
158
+ it("rejects Owner<Model,...> when model does not match current model", () => {
159
+ // @ts-expect-error - cannot use User model owner marker in Post model access
160
+ type WrongModelOwner = Model<{
161
+ id: UUID
162
+ author: RelatedTo<User>
163
+ }, {
164
+ access: {
165
+ update: Owner<User, "id">
166
+ }
167
+ }>
168
+
169
+ expectTypeOf<WrongModelOwner>().toBeNever()
170
+ })
171
+
172
+ it("supports OwnerFrom<relationField> for camelCase relation ownership", () => {
173
+ type Owned = Model<{
174
+ id: UUID
175
+ authUser: RelatedTo<SupatypeAuthUser>
176
+ }, {
177
+ access: {
178
+ update: OwnerFrom<"authUser">
179
+ }
180
+ }>
181
+
182
+ expectTypeOf<Owned>().toHaveProperty("authUser")
183
+
184
+ // @ts-expect-error - must reference an actual relation field name
185
+ type Bad = Model<{
186
+ id: UUID
187
+ authUser: RelatedTo<SupatypeAuthUser>
188
+ }, {
189
+ access: {
190
+ update: OwnerFrom<"auth_user_id">
191
+ }
192
+ }>
193
+ expectTypeOf<Bad>().toBeNever()
194
+ })
195
+
196
+ it("treats ServerDefault as string at the value boundary for timestamps", () => {
197
+ type Row = { publishedAt: ServerDefault<string> }
198
+ expectTypeOf<Row["publishedAt"]>().toMatchTypeOf<string>()
199
+ })
200
+
201
+ it("preserves EditorReadOnly wrapper at type boundary", () => {
202
+ type Row = { title: EditorReadOnly<string> }
203
+ expectTypeOf<Row["title"]>().toMatchTypeOf<string>()
204
+ })
205
+
206
+ it("preserves Computed wrapper at type boundary", () => {
207
+ type Row = { summary: Computed<string> }
208
+ expectTypeOf<Row["summary"]>().toMatchTypeOf<string>()
209
+ })
210
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "outDir": "dist",
5
+ "rootDir": "src",
6
+ "composite": true
7
+ },
8
+ "include": ["src"]
9
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/lexical.ts","./src/index.ts"],"fileIdsList":[[58]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f185b63f8385f309bb69dc680ff3d1e404c53163607f483b23a7e6c7ccb0e7","signature":"7b6457ac325af782f0f1e202c102ce4700da1f65b4fa92dda68ad6f96f632180","impliedFormat":99},{"version":"c7c17aeb06b89633039175b112d3637175df30820d81f1503f2b5b1539c420ea","signature":"4307235f67a0c0aec582559ab82f21ed1da348df6ee4aecc37272d4259f546fa","impliedFormat":99}],"root":[58,59],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9},"referencedMap":[[59,1]],"latestChangedDtsFile":"./dist/index.d.ts","version":"5.9.3"}