@nuasite/cms-client 0.43.0-beta.4 → 0.43.0

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.
@@ -11,7 +11,7 @@
11
11
  * wire types; it is declared here because those types are not part of the
12
12
  * `@nuasite/cms-types` contract surface.
13
13
  */
14
- import type { CollectionDefinition, CollectionEntry, CollectionEntryInfo, MediaListResult, MediaUploadResult, MutationResult } from '@nuasite/cms-types';
14
+ import type { CollectionDefinition, CollectionEntry, CollectionEntryInfo, ComponentDefinition, MediaListResult, MediaUploadResult, MutationResult } from '@nuasite/cms-types';
15
15
  /** Stable error codes the sidecar exposes, each mapped to an HTTP status. */
16
16
  export type CmsErrorCode = 'not_found' | 'conflict' | 'validation' | 'parse_error' | 'io_error' | 'unsupported' | 'unauthorized';
17
17
  /** JSON body returned for every non-2xx response that is not a conflict. */
@@ -117,6 +117,8 @@ export interface CmsClient {
117
117
  getCollections(): Promise<CollectionDefinition[]>;
118
118
  getEntries(collection: string, options?: GetEntriesOptions): Promise<CmsEntriesListResult>;
119
119
  getEntry(collection: string, slug: string): Promise<CollectionEntry>;
120
+ /** Astro component definitions for the MDX body editor (block picker + prop labels). */
121
+ getComponents(): Promise<ComponentDefinition[]>;
120
122
  /**
121
123
  * Merge-patch an entry's frontmatter/body. Returns a discriminated result: a
122
124
  * `409` is surfaced as `{ status: 'conflict' }` (not thrown) so the editor can
@@ -134,10 +136,22 @@ export interface CmsClient {
134
136
  limit?: number;
135
137
  }): Promise<MediaListResult>;
136
138
  uploadMedia(file: File, context?: MediaContext): Promise<MediaUploadResult>;
139
+ /**
140
+ * Build a GET URL for an asset referenced by an entry — an `image`/`file` value
141
+ * such as `../../src/assets/x.webp` that the sidecar resolves relative to the
142
+ * entry source and streams. Suitable for `<img src>` (no auth header needed for
143
+ * the same-origin local studio; the BFF must allow the route for hosted use).
144
+ */
145
+ mediaFileUrl(collection: string, entry: string, path: string): string;
137
146
  deleteMedia(id: string): Promise<{
138
147
  success: boolean;
139
148
  error?: string;
140
149
  }>;
150
+ /** Create an empty media subfolder (sidecar `POST /media` JSON). 501 if the adapter has none. */
151
+ createFolder(folder: string): Promise<{
152
+ success: boolean;
153
+ error?: string;
154
+ }>;
141
155
  }
142
156
  /**
143
157
  * Whether a thrown `CmsClientError` means "media is not available" — the deployed
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/@types/react/global.d.ts","../../../../node_modules/csstype/index.d.ts","../../../../node_modules/@types/react/index.d.ts","../../../../node_modules/@types/react/jsx-runtime.d.ts","../../../cms-types/dist/types/index.d.ts","../../src/client.ts","../../src/form-model.ts","../../src/index.ts"],"fileIdsList":[[90,91],[92],[93,94],[93,94,95,96]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"2577e7e800bdece2956ca027cb5c17aa359abd968eb9355760110c853f4fb9da","impliedFormat":1},{"version":"b838d4c72740eb0afd284bf7575b74c624b105eff2e8c7b4aeead57e7ac320ff","impliedFormat":1},"c43c2a0107a2a099fe50bcc754e90b50aa6b265ce57e464a2489798b38e4dc53",{"version":"5d9827861b2f5c138f2a474a28362869e527b0f41701c6a1c0b0e6df268833dc","signature":"18be101c2011a0c364fc7e5ee231d6a9397808e9a095b4bb25c171adf4f23ff5"},{"version":"5df26b293a5a1aca81be7bab8da2f2e5bb11cfece195a469a20f1ac383f1a854","signature":"35ac5e9e25a23b55393daa079c3e7b85817598eed090c2b6b92d156fbde16c6b"},{"version":"09390c2196b53cb8cfb492ffd276a2c3569db3c0d9487cc3096794d06e267572","signature":"3e03795c405f900bc9283d1ade119adc8e71928febe60b69b868401fea33cdc6"}],"root":[[95,97]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"jsx":4,"module":200,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","skipLibCheck":true,"strict":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[92,1],[93,2],[95,3],[96,3],[97,4]],"latestChangedDtsFile":"./index.d.ts","version":"6.0.2"}
1
+ {"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../../node_modules/typescript/lib/lib.es2024.d.ts","../../../../node_modules/typescript/lib/lib.es2025.d.ts","../../../../node_modules/typescript/lib/lib.esnext.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../../../node_modules/typescript/lib/lib.es2025.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../../node_modules/typescript/lib/lib.es2025.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2025.iterator.d.ts","../../../../node_modules/typescript/lib/lib.es2025.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2025.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../../../node_modules/typescript/lib/lib.esnext.date.d.ts","../../../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../node_modules/typescript/lib/lib.esnext.error.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.esnext.temporal.d.ts","../../../../node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/@types/react/global.d.ts","../../../../node_modules/csstype/index.d.ts","../../../../node_modules/@types/react/index.d.ts","../../../../node_modules/@types/react/jsx-runtime.d.ts","../../../cms-types/dist/types/index.d.ts","../../src/client.ts","../../src/form-model.ts","../../src/index.ts"],"fileIdsList":[[90,91],[92],[93,94],[93,94,95,96]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f57fc4404ff020bc45b9c620aff2b40f700b95fe31164024c453a5e3c163c54","impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"2577e7e800bdece2956ca027cb5c17aa359abd968eb9355760110c853f4fb9da","impliedFormat":1},{"version":"b838d4c72740eb0afd284bf7575b74c624b105eff2e8c7b4aeead57e7ac320ff","impliedFormat":1},"f9c2b8b335210c0ce59d7978e52d91b5fe33af9dbeafb4505b30758783b0470d",{"version":"068fe61a21c80374856d386232637b449a28064e80c3f10490293430c1c11846","signature":"16f76c4b362db8138f4813aabcce18c999e55fc52463a8df46eaa6082d01af7e"},{"version":"5df26b293a5a1aca81be7bab8da2f2e5bb11cfece195a469a20f1ac383f1a854","signature":"35ac5e9e25a23b55393daa079c3e7b85817598eed090c2b6b92d156fbde16c6b"},{"version":"09390c2196b53cb8cfb492ffd276a2c3569db3c0d9487cc3096794d06e267572","signature":"3e03795c405f900bc9283d1ade119adc8e71928febe60b69b868401fea33cdc6"}],"root":[[95,97]],"options":{"allowImportingTsExtensions":true,"allowJs":true,"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"jsx":4,"module":200,"noEmitOnError":true,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":false,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","skipLibCheck":true,"strict":true,"target":99,"verbatimModuleSyntax":true},"referencedMap":[[92,1],[93,2],[95,3],[96,3],[97,4]],"latestChangedDtsFile":"./index.d.ts","version":"6.0.2"}
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "directory": "packages/cms-client"
15
15
  },
16
16
  "license": "Apache-2.0",
17
- "version": "0.43.0-beta.4",
17
+ "version": "0.43.0",
18
18
  "module": "src/index.ts",
19
19
  "types": "src/index.ts",
20
20
  "type": "module",
@@ -26,7 +26,7 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@nuasite/cms-types": "0.43.0-beta.4"
29
+ "@nuasite/cms-types": "0.43.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/bun": "1.3.11"
package/src/client.ts CHANGED
@@ -16,6 +16,7 @@ import type {
16
16
  CollectionDefinition,
17
17
  CollectionEntry,
18
18
  CollectionEntryInfo,
19
+ ComponentDefinition,
19
20
  MediaListResult,
20
21
  MediaUploadResult,
21
22
  MutationResult,
@@ -208,6 +209,9 @@ export interface CmsClient {
208
209
  getEntries(collection: string, options?: GetEntriesOptions): Promise<CmsEntriesListResult>
209
210
  getEntry(collection: string, slug: string): Promise<CollectionEntry>
210
211
 
212
+ /** Astro component definitions for the MDX body editor (block picker + prop labels). */
213
+ getComponents(): Promise<ComponentDefinition[]>
214
+
211
215
  // --- Mutations ---
212
216
 
213
217
  /**
@@ -226,7 +230,16 @@ export interface CmsClient {
226
230
 
227
231
  listMedia(options?: { folder?: string; cursor?: string; limit?: number }): Promise<MediaListResult>
228
232
  uploadMedia(file: File, context?: MediaContext): Promise<MediaUploadResult>
233
+ /**
234
+ * Build a GET URL for an asset referenced by an entry — an `image`/`file` value
235
+ * such as `../../src/assets/x.webp` that the sidecar resolves relative to the
236
+ * entry source and streams. Suitable for `<img src>` (no auth header needed for
237
+ * the same-origin local studio; the BFF must allow the route for hosted use).
238
+ */
239
+ mediaFileUrl(collection: string, entry: string, path: string): string
229
240
  deleteMedia(id: string): Promise<{ success: boolean; error?: string }>
241
+ /** Create an empty media subfolder (sidecar `POST /media` JSON). 501 if the adapter has none. */
242
+ createFolder(folder: string): Promise<{ success: boolean; error?: string }>
230
243
  }
231
244
 
232
245
  /**
@@ -326,6 +339,9 @@ export function createClient(apiBase: string): CmsClient {
326
339
  getCollections() {
327
340
  return request<CollectionDefinition[]>('/collections')
328
341
  },
342
+ getComponents() {
343
+ return request<ComponentDefinition[]>('/components')
344
+ },
329
345
  getEntries(collection, options = {}) {
330
346
  const params = new URLSearchParams()
331
347
  if (options.fields !== undefined) params.set('fields', options.fields)
@@ -398,8 +414,15 @@ export function createClient(apiBase: string): CmsClient {
398
414
  const result: MediaUploadResult = await response.json()
399
415
  return result
400
416
  },
417
+ mediaFileUrl(collection, entry, path) {
418
+ return `${base}${entryPath(collection, entry)}/asset?path=${encodeURIComponent(path)}`
419
+ },
401
420
  deleteMedia(id) {
402
421
  return mutate<{ success: boolean; error?: string }>(`/media/${encodeURIComponent(id)}`, 'DELETE')
403
422
  },
423
+ createFolder(folder) {
424
+ // A JSON body to `POST /media` is the create-folder branch (multipart = upload).
425
+ return mutate<{ success: boolean; error?: string }>('/media', 'POST', { folder })
426
+ },
404
427
  }
405
428
  }
@@ -1,253 +0,0 @@
1
- /**
2
- * Typed client over the cms-sidecar `/cms/v1` HTTP contract (reads + mutations).
3
- *
4
- * The host (webmaster BFF, or a local dev proxy in F7) mounts the sidecar under
5
- * an `apiBase` and adds the `/cms/v1` prefix itself — so this client requests
6
- * `${apiBase}/project`, `${apiBase}/collections`, etc. (never `/cms/v1/...`).
7
- *
8
- * The structural model (collections/entries/fields) is reused 1:1 from
9
- * `@nuasite/cms-types`. The thin HTTP envelope (project model, sparse entries
10
- * list, error codes, mutation bodies, conflict response) mirrors the sidecar's
11
- * wire types; it is declared here because those types are not part of the
12
- * `@nuasite/cms-types` contract surface.
13
- */
14
- /** HTTP status the sidecar uses for an optimistic-concurrency conflict. */
15
- const STATUS_CONFLICT = 409;
16
- // ============================================================================
17
- // Client error
18
- // ============================================================================
19
- /**
20
- * Thrown for any non-2xx response. Carries the parsed sidecar error code so the
21
- * UI can distinguish auth failures (`unauthorized`/`forbidden`) from a missing
22
- * collection/entry (`not_found`) or a generic failure.
23
- */
24
- export class CmsClientError extends Error {
25
- status;
26
- code;
27
- constructor(status, code, message) {
28
- super(message);
29
- this.status = status;
30
- this.code = code;
31
- this.name = 'CmsClientError';
32
- }
33
- /** Session cookie missing/expired upstream — the user must re-authenticate. */
34
- get isUnauthorized() {
35
- return this.code === 'unauthorized' || this.status === 401;
36
- }
37
- /** Authenticated but lacks access to this project. */
38
- get isForbidden() {
39
- return this.code === 'forbidden' || this.status === 403;
40
- }
41
- get isNotFound() {
42
- return this.code === 'not_found' || this.status === 404;
43
- }
44
- }
45
- // ============================================================================
46
- // Client
47
- // ============================================================================
48
- function isApiError(value) {
49
- return isRecord(value)
50
- && typeof value.error === 'string'
51
- && typeof value.code === 'string';
52
- }
53
- /** Narrow `unknown` to a record so property reads typecheck without casts. */
54
- function isRecord(value) {
55
- return typeof value === 'object' && value !== null;
56
- }
57
- function isConflict(value) {
58
- if (!isRecord(value))
59
- return false;
60
- return value.code === 'conflict'
61
- && typeof value.serverHash === 'string'
62
- && isRecord(value.serverFrontmatter);
63
- }
64
- const KNOWN_ERROR_CODES = [
65
- 'not_found',
66
- 'conflict',
67
- 'validation',
68
- 'parse_error',
69
- 'io_error',
70
- 'unsupported',
71
- 'unauthorized',
72
- ];
73
- function isErrorCode(value) {
74
- return KNOWN_ERROR_CODES.includes(value);
75
- }
76
- /**
77
- * Whether a thrown `CmsClientError` means "media is not available" — the deployed
78
- * sidecar may have no media adapter wired (`501 unsupported`). The picker uses
79
- * this to degrade gracefully instead of surfacing a hard error.
80
- */
81
- export function isMediaUnavailable(error) {
82
- return error instanceof CmsClientError && (error.status === 501 || error.code === 'unsupported');
83
- }
84
- export function createClient(apiBase) {
85
- // Normalise: drop a trailing slash so `${base}${path}` joins cleanly.
86
- const base = apiBase.endsWith('/') ? apiBase.slice(0, -1) : apiBase;
87
- async function request(path) {
88
- const response = await fetch(`${base}${path}`, {
89
- method: 'GET',
90
- credentials: 'include',
91
- headers: { accept: 'application/json' },
92
- });
93
- if (!response.ok) {
94
- throw await toError(response);
95
- }
96
- // Successful responses are always JSON in the read-only surface.
97
- const value = await response.json();
98
- return value;
99
- }
100
- async function toError(response) {
101
- // 403 is produced by the BFF (project scope), not the sidecar, so it has no
102
- // sidecar `code`; `errorFromBody` surfaces it as a distinct `forbidden`.
103
- const body = await response.json().catch(() => null);
104
- return errorFromBody(response.status, body);
105
- }
106
- function errorMessageFromBody(body, fallback) {
107
- if (isApiError(body))
108
- return body.error;
109
- if (isRecord(body)) {
110
- const err = body.error;
111
- if (isRecord(err) && typeof err.message === 'string')
112
- return err.message;
113
- }
114
- return fallback;
115
- }
116
- /** Build a `CmsClientError` from an already-parsed body (no re-read of the stream). */
117
- function errorFromBody(status, body) {
118
- if (status === 403) {
119
- return new CmsClientError(403, 'forbidden', errorMessageFromBody(body, 'You do not have access to this project.'));
120
- }
121
- if (isApiError(body) && isErrorCode(body.code)) {
122
- return new CmsClientError(status, body.code, body.error);
123
- }
124
- if (status === 401) {
125
- return new CmsClientError(401, 'unauthorized', 'Your session has expired. Please reload.');
126
- }
127
- return new CmsClientError(status, 'unknown', errorMessageFromBody(body, `Request failed (${status})`));
128
- }
129
- function mutationInit(method, body) {
130
- const init = {
131
- method,
132
- credentials: 'include',
133
- headers: { accept: 'application/json' },
134
- };
135
- if (body !== undefined) {
136
- init.body = JSON.stringify(body);
137
- init.headers = { accept: 'application/json', 'content-type': 'application/json' };
138
- }
139
- return init;
140
- }
141
- /**
142
- * Send a JSON-body mutation (POST/PATCH/DELETE). Throws `CmsClientError` on any
143
- * non-2xx — used by the mutations that have no conflict branch. The
144
- * conflict-aware update has its own path below.
145
- */
146
- async function mutate(path, method, body) {
147
- const response = await fetch(`${base}${path}`, mutationInit(method, body));
148
- if (!response.ok)
149
- throw await toError(response);
150
- // Mutation responses are documented JSON; the asserted shape is trusted
151
- // (`response.json()` widens to the declared `T`, mirroring `request`).
152
- const value = await response.json();
153
- return value;
154
- }
155
- function entryPath(collection, slug) {
156
- return `/collections/${encodeURIComponent(collection)}/entries/${encodeURIComponent(slug)}`;
157
- }
158
- return {
159
- getProject() {
160
- return request('/project');
161
- },
162
- getCollections() {
163
- return request('/collections');
164
- },
165
- getEntries(collection, options = {}) {
166
- const params = new URLSearchParams();
167
- if (options.fields !== undefined)
168
- params.set('fields', options.fields);
169
- if (options.draft !== undefined)
170
- params.set('draft', options.draft);
171
- if (options.cursor !== undefined)
172
- params.set('cursor', options.cursor);
173
- if (options.limit !== undefined)
174
- params.set('limit', String(options.limit));
175
- const query = params.toString();
176
- const suffix = query === '' ? '' : `?${query}`;
177
- return request(`/collections/${encodeURIComponent(collection)}/entries${suffix}`);
178
- },
179
- getEntry(collection, slug) {
180
- return request(entryPath(collection, slug));
181
- },
182
- async updateEntry(collection, slug, input) {
183
- const response = await fetch(`${base}${entryPath(collection, slug)}`, mutationInit('PATCH', input));
184
- // A `409` carries the server version; parse and return it for the dialog.
185
- if (response.status === STATUS_CONFLICT) {
186
- const body = await response.json().catch(() => null);
187
- if (isConflict(body))
188
- return { status: 'conflict', conflict: body };
189
- throw errorFromBody(response.status, body);
190
- }
191
- if (!response.ok)
192
- throw await toError(response);
193
- const result = await response.json();
194
- return { status: 'ok', result };
195
- },
196
- createEntry(collection, input) {
197
- return mutate(`/collections/${encodeURIComponent(collection)}/entries`, 'POST', input);
198
- },
199
- deleteEntry(collection, slug) {
200
- return mutate(entryPath(collection, slug), 'DELETE');
201
- },
202
- renameEntry(collection, slug, to) {
203
- return mutate(`${entryPath(collection, slug)}/rename`, 'POST', { to });
204
- },
205
- addArrayItem(collection, slug, field, value, index) {
206
- const body = index === undefined ? { field, value } : { field, value, index };
207
- return mutate(`${entryPath(collection, slug)}/array`, 'POST', body);
208
- },
209
- removeArrayItem(collection, slug, field, index) {
210
- return mutate(`${entryPath(collection, slug)}/array`, 'DELETE', { field, index });
211
- },
212
- listMedia(options = {}) {
213
- const params = new URLSearchParams();
214
- if (options.folder !== undefined)
215
- params.set('folder', options.folder);
216
- if (options.cursor !== undefined)
217
- params.set('cursor', options.cursor);
218
- if (options.limit !== undefined)
219
- params.set('limit', String(options.limit));
220
- const query = params.toString();
221
- return request(`/media${query === '' ? '' : `?${query}`}`);
222
- },
223
- async uploadMedia(file, context = {}) {
224
- // The sidecar reads upload context (collection/entry/field/folder) from the
225
- // query string; the file rides in multipart form data under `file`.
226
- const params = new URLSearchParams();
227
- if (context.collection !== undefined)
228
- params.set('collection', context.collection);
229
- if (context.entry !== undefined)
230
- params.set('entry', context.entry);
231
- if (context.field !== undefined)
232
- params.set('field', context.field);
233
- if (context.folder !== undefined)
234
- params.set('folder', context.folder);
235
- const query = params.toString();
236
- const form = new FormData();
237
- form.append('file', file);
238
- const response = await fetch(`${base}/media${query === '' ? '' : `?${query}`}`, {
239
- method: 'POST',
240
- credentials: 'include',
241
- headers: { accept: 'application/json' },
242
- body: form,
243
- });
244
- if (!response.ok)
245
- throw await toError(response);
246
- const result = await response.json();
247
- return result;
248
- },
249
- deleteMedia(id) {
250
- return mutate(`/media/${encodeURIComponent(id)}`, 'DELETE');
251
- },
252
- };
253
- }
@@ -1,168 +0,0 @@
1
- /**
2
- * Pure draft model + field coercion for the entry editor (cms-headless F3.2).
3
- *
4
- * The sidecar speaks two slightly different frontmatter shapes:
5
- * - `GET …/entries/:slug` returns `frontmatter: Record<string, { value: string; line: number }>`,
6
- * where `value` is already stringified (objects/arrays are JSON).
7
- * - `PATCH …` accepts `frontmatter?: Record<string, unknown>` of *native* values (merged), and a
8
- * `409` `serverFrontmatter` is likewise native (not stringified).
9
- *
10
- * The editor works on a single native draft (`EntryDraft`): `frontmatter` is a
11
- * `Record<string, unknown>` of native JS values keyed by field name, plus the
12
- * markdown `body`. This module converts to/from the wire and coerces raw input
13
- * (form strings) into the native value a `FieldType` expects. Keeping it pure
14
- * (no React/DOM) makes the mapping unit-testable.
15
- */
16
- function isRecord(value) {
17
- return typeof value === 'object' && value !== null && !Array.isArray(value);
18
- }
19
- /**
20
- * Parse one stringified frontmatter `value` (from `GET …/entries/:slug`) into the
21
- * native value a field of `type` expects. Structural types (object/array) and
22
- * unknowns fall back to a best-effort `JSON.parse`; scalars are coerced per type.
23
- */
24
- export function parseWireValue(type, raw) {
25
- switch (type) {
26
- case 'boolean':
27
- return raw === 'true' || raw === '1' || raw.toLowerCase() === 'yes';
28
- case 'number':
29
- case 'year':
30
- case 'month': {
31
- const n = Number(raw);
32
- return raw.trim() === '' || Number.isNaN(n) ? raw : n;
33
- }
34
- case 'array':
35
- case 'object':
36
- return parseJsonLoose(raw);
37
- default:
38
- return raw;
39
- }
40
- }
41
- /** `JSON.parse` for structural values, falling back to the raw string when invalid. */
42
- function parseJsonLoose(raw) {
43
- const trimmed = raw.trim();
44
- if (trimmed === '')
45
- return undefined;
46
- if (!(trimmed.startsWith('{') || trimmed.startsWith('[') || trimmed.startsWith('"')))
47
- return raw;
48
- try {
49
- return JSON.parse(trimmed);
50
- }
51
- catch {
52
- return raw;
53
- }
54
- }
55
- /**
56
- * Build a native draft from a loaded entry, driven by the collection's fields.
57
- * Frontmatter keys present on the entry but absent from the inferred schema are
58
- * preserved verbatim (as raw strings) so a save never silently drops them.
59
- */
60
- export function draftFromEntry(entry, fields) {
61
- const byName = new Map(fields.map(f => [f.name, f]));
62
- const frontmatter = {};
63
- for (const [key, cell] of Object.entries(entry.frontmatter)) {
64
- const field = byName.get(key);
65
- frontmatter[key] = field ? parseWireValue(field.type, cell.value) : cell.value;
66
- }
67
- return { frontmatter, body: entry.body };
68
- }
69
- /**
70
- * Build a fresh draft for a create form from the collection's fields, seeding
71
- * each field with its `defaultValue` (when present) or a type-appropriate blank.
72
- */
73
- export function draftForCreate(fields) {
74
- const frontmatter = {};
75
- for (const field of fields) {
76
- if (field.hidden)
77
- continue;
78
- if (field.defaultValue !== undefined) {
79
- frontmatter[field.name] = field.defaultValue;
80
- continue;
81
- }
82
- frontmatter[field.name] = blankValue(field.type);
83
- }
84
- return { frontmatter, body: '' };
85
- }
86
- /** A type-appropriate empty value used to seed create forms. */
87
- export function blankValue(type) {
88
- switch (type) {
89
- case 'boolean':
90
- return false;
91
- case 'array':
92
- return [];
93
- case 'object':
94
- return {};
95
- default:
96
- return '';
97
- }
98
- }
99
- /**
100
- * Adopt a server-provided native frontmatter map (from a `409` `serverFrontmatter`)
101
- * into a draft, re-coercing per field where a definition exists.
102
- */
103
- export function draftFromServerFrontmatter(serverFrontmatter, serverBody, fields) {
104
- const byName = new Map(fields.map(f => [f.name, f]));
105
- const frontmatter = {};
106
- for (const [key, value] of Object.entries(serverFrontmatter)) {
107
- const field = byName.get(key);
108
- // Server values are already native; only re-coerce when the value arrived as
109
- // a string for a numeric/boolean field (e.g. YAML quirks).
110
- frontmatter[key] = field && typeof value === 'string' ? parseWireValue(field.type, value) : value;
111
- }
112
- return { frontmatter, body: serverBody ?? '' };
113
- }
114
- /**
115
- * Coerce a raw form-control string into the native value a field expects. Used by
116
- * the widgets, whose `<input>` values are always strings.
117
- */
118
- export function coerceInput(type, raw) {
119
- switch (type) {
120
- case 'boolean':
121
- return raw === 'true';
122
- case 'number': {
123
- if (raw.trim() === '')
124
- return undefined;
125
- const n = Number(raw);
126
- return Number.isNaN(n) ? raw : n;
127
- }
128
- case 'year':
129
- case 'month': {
130
- if (raw.trim() === '')
131
- return undefined;
132
- const n = Number(raw);
133
- return Number.isNaN(n) ? raw : n;
134
- }
135
- default:
136
- return raw;
137
- }
138
- }
139
- /** Render a native value back to a string for a text/number/date/select control. */
140
- export function valueToInput(value) {
141
- if (value === undefined || value === null)
142
- return '';
143
- if (typeof value === 'string')
144
- return value;
145
- if (typeof value === 'number' || typeof value === 'boolean')
146
- return String(value);
147
- return JSON.stringify(value);
148
- }
149
- /** Read a value as a boolean for toggle widgets, tolerating string encodings. */
150
- export function valueToBoolean(value) {
151
- if (typeof value === 'boolean')
152
- return value;
153
- if (typeof value === 'string')
154
- return value === 'true' || value === '1' || value.toLowerCase() === 'yes';
155
- return Boolean(value);
156
- }
157
- /** Read a value as an array of items for repeater widgets. */
158
- export function valueToArray(value) {
159
- return Array.isArray(value) ? value : [];
160
- }
161
- /** Read a value as an object for nested-group widgets. */
162
- export function valueToObject(value) {
163
- return isRecord(value) ? value : {};
164
- }
165
- /** Immutably set a top-level frontmatter key in a draft. */
166
- export function setDraftField(draft, name, value) {
167
- return { ...draft, frontmatter: { ...draft.frontmatter, [name]: value } };
168
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * `@nuasite/cms-client` — the headless TypeScript SDK for the Nua CMS.
3
- *
4
- * Framework-agnostic (zero React/DOM): a typed `fetch` client over the
5
- * cms-sidecar `/cms/v1` HTTP contract plus the pure entry-draft form model
6
- * (field coercion, wire ↔ native mapping, optimistic-concurrency helpers).
7
- *
8
- * Any host builds its own collections UI on top of this: webmaster's native
9
- * tab, the `@nuasite/collections-admin` default SPA, or a third party. The
10
- * structural contract types live in `@nuasite/cms-types`; this package adds
11
- * the thin HTTP envelope (project model, sparse entries list, error/conflict
12
- * shapes) and the editor-side draft logic.
13
- */
14
- export * from './client';
15
- export * from './form-model';