@notionhq/custom-blocks-host 0.4.2 → 0.5.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.
Files changed (424) hide show
  1. package/README.md +4 -0
  2. package/dist/browser.js +1 -1
  3. package/dist/compatibility/normalizeHostToSandboxMessage.js +4 -4
  4. package/dist/compatibility/normalizeSandboxToHostMessage.d.ts +232 -8
  5. package/dist/compatibility/normalizeSandboxToHostMessage.d.ts.map +1 -1
  6. package/dist/compatibility/{pageResult.d.ts → pages/pageResult.d.ts} +1 -1
  7. package/dist/compatibility/pages/pageResult.d.ts.map +1 -0
  8. package/dist/compatibility/{pageWithNullTextFallbackProperties.d.ts → pages/toPageWithNullTextFallbackProperties.d.ts} +2 -2
  9. package/dist/compatibility/pages/toPageWithNullTextFallbackProperties.d.ts.map +1 -0
  10. package/dist/compatibility/{pageWithNullTextFallbackProperties.js → pages/toPageWithNullTextFallbackProperties.js} +1 -1
  11. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.d.ts → protocol3To4/addMetadataReadSchemasForProtocol3To4.d.ts} +96 -90
  12. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.d.ts.map → protocol3To4/addMetadataReadSchemasForProtocol3To4.d.ts.map} +1 -1
  13. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.js → protocol3To4/addMetadataReadSchemasForProtocol3To4.js} +1 -1
  14. package/dist/compatibility/{normalizePageResultsForProtocol3To5.d.ts → protocol3To5/normalizePageResultsForProtocol3To5.d.ts} +2 -2
  15. package/dist/compatibility/protocol3To5/normalizePageResultsForProtocol3To5.d.ts.map +1 -0
  16. package/dist/compatibility/{normalizePageResultsForProtocol3To5.js → protocol3To5/normalizePageResultsForProtocol3To5.js} +3 -2
  17. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.d.ts +9 -0
  18. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.d.ts.map +1 -0
  19. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.js +21 -0
  20. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.d.ts +12 -0
  21. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.d.ts.map +1 -0
  22. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.js +20 -0
  23. package/dist/compatibility/protocol3To5/toPropertyValueForProtocol3To5.d.ts +10 -0
  24. package/dist/compatibility/protocol3To5/toPropertyValueForProtocol3To5.d.ts.map +1 -0
  25. package/dist/compatibility/{pageForProtocol3To5.js → protocol3To5/toPropertyValueForProtocol3To5.js} +25 -95
  26. package/dist/compatibility/{pageForProtocol3To5.d.ts → protocol3To5/toQueryPageForProtocol3To5.d.ts} +11 -21
  27. package/dist/compatibility/protocol3To5/toQueryPageForProtocol3To5.d.ts.map +1 -0
  28. package/dist/compatibility/protocol3To5/toQueryPageForProtocol3To5.js +32 -0
  29. package/dist/compatibility/{normalizePageResultsForProtocol6.d.ts → protocol6/normalizePageResultsForProtocol6.d.ts} +2 -2
  30. package/dist/compatibility/protocol6/normalizePageResultsForProtocol6.d.ts.map +1 -0
  31. package/dist/compatibility/{normalizePageResultsForProtocol6.js → protocol6/normalizePageResultsForProtocol6.js} +1 -1
  32. package/dist/context/initialState.d.ts +1801 -0
  33. package/dist/context/initialState.d.ts.map +1 -0
  34. package/dist/context/initialState.js +34 -0
  35. package/dist/context/resize.d.ts +4 -0
  36. package/dist/context/resize.d.ts.map +1 -0
  37. package/dist/createCustomBlockHost.d.ts +28 -13
  38. package/dist/createCustomBlockHost.d.ts.map +1 -1
  39. package/dist/createCustomBlockHost.js +46 -28
  40. package/dist/{autoBindProperties.d.ts → dataSources/bindings/getAutoBoundPropertyIdsByKey.d.ts} +2 -2
  41. package/dist/dataSources/bindings/getAutoBoundPropertyIdsByKey.d.ts.map +1 -0
  42. package/dist/{dateValue.d.ts → dataSources/properties/toNotionDateValue.d.ts} +3 -3
  43. package/dist/dataSources/properties/toNotionDateValue.d.ts.map +1 -0
  44. package/dist/{queries → dataSources/queries}/querySubscriptions.d.ts +2 -2
  45. package/dist/dataSources/queries/querySubscriptions.d.ts.map +1 -0
  46. package/dist/dataSources/types.d.ts +18 -0
  47. package/dist/dataSources/types.d.ts.map +1 -0
  48. package/dist/dataSources/validation/validateQueryDataSourceFilter.d.ts +5 -0
  49. package/dist/dataSources/validation/validateQueryDataSourceFilter.d.ts.map +1 -0
  50. package/dist/{queries → dataSources/validation}/validateQueryDataSourceFilter.js +2 -2
  51. package/dist/dataSources/validation/validateQueryDataSourceSorts.d.ts +8 -0
  52. package/dist/dataSources/validation/validateQueryDataSourceSorts.d.ts.map +1 -0
  53. package/dist/{queries → dataSources/validation}/validateQueryDataSourceSorts.js +2 -2
  54. package/dist/index.d.ts +16 -8
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +4 -4
  57. package/dist/lifecycle/{initializationController.d.ts → createInitializationController.d.ts} +7 -6
  58. package/dist/lifecycle/createInitializationController.d.ts.map +1 -0
  59. package/dist/lifecycle/{initializationController.js → createInitializationController.js} +9 -4
  60. package/dist/lifecycle/errors/contextUnavailableError.d.ts +3 -0
  61. package/dist/lifecycle/errors/contextUnavailableError.d.ts.map +1 -0
  62. package/dist/lifecycle/errors/contextUnavailableError.js +8 -0
  63. package/dist/lifecycle/errors/initialStateTimeoutError.d.ts +3 -0
  64. package/dist/lifecycle/errors/initialStateTimeoutError.d.ts.map +1 -0
  65. package/dist/lifecycle/errors/initialStateTimeoutError.js +8 -0
  66. package/dist/lifecycle/errors/invalidConnectPayloadError.d.ts +3 -0
  67. package/dist/lifecycle/errors/invalidConnectPayloadError.d.ts.map +1 -0
  68. package/dist/lifecycle/errors/invalidConnectPayloadError.js +8 -0
  69. package/dist/lifecycle/errors/invalidInitResultPayloadError.d.ts +3 -0
  70. package/dist/lifecycle/errors/invalidInitResultPayloadError.d.ts.map +1 -0
  71. package/dist/lifecycle/errors/invalidInitResultPayloadError.js +8 -0
  72. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.d.ts +3 -0
  73. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.d.ts.map +1 -0
  74. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.js +7 -0
  75. package/dist/lifecycle/errors/invalidPropertyBindingError.d.ts +3 -0
  76. package/dist/lifecycle/errors/invalidPropertyBindingError.d.ts.map +1 -0
  77. package/dist/lifecycle/errors/invalidPropertyBindingError.js +9 -0
  78. package/dist/lifecycle/errors/invalidProtocolVersionError.d.ts +5 -0
  79. package/dist/lifecycle/errors/invalidProtocolVersionError.d.ts.map +1 -0
  80. package/dist/lifecycle/errors/invalidProtocolVersionError.js +9 -0
  81. package/dist/lifecycle/errors/missingDataSourceBindingError.d.ts +3 -0
  82. package/dist/lifecycle/errors/missingDataSourceBindingError.d.ts.map +1 -0
  83. package/dist/lifecycle/errors/missingDataSourceBindingError.js +8 -0
  84. package/dist/lifecycle/errors/missingPropertyBindingError.d.ts +3 -0
  85. package/dist/lifecycle/errors/missingPropertyBindingError.d.ts.map +1 -0
  86. package/dist/lifecycle/errors/missingPropertyBindingError.js +8 -0
  87. package/dist/lifecycle/errors/noConnectError.d.ts +8 -0
  88. package/dist/lifecycle/errors/noConnectError.d.ts.map +1 -0
  89. package/dist/lifecycle/errors/noConnectError.js +13 -0
  90. package/dist/lifecycle/errors/noInitResultError.d.ts +3 -0
  91. package/dist/lifecycle/errors/noInitResultError.d.ts.map +1 -0
  92. package/dist/lifecycle/errors/noInitResultError.js +8 -0
  93. package/dist/lifecycle/errors/unknownInitializationError.d.ts +3 -0
  94. package/dist/lifecycle/errors/unknownInitializationError.d.ts.map +1 -0
  95. package/dist/lifecycle/errors/unknownInitializationError.js +8 -0
  96. package/dist/lifecycle/errors/unsupportedProtocolVersionError.d.ts +6 -0
  97. package/dist/lifecycle/errors/unsupportedProtocolVersionError.d.ts.map +1 -0
  98. package/dist/lifecycle/errors/unsupportedProtocolVersionError.js +9 -0
  99. package/dist/lifecycle/isAllowedLocalPreviewUrl.d.ts.map +1 -0
  100. package/dist/{isAllowedLocalPreviewUrl.js → lifecycle/isAllowedLocalPreviewUrl.js} +1 -1
  101. package/dist/lifecycle/{protocolVersion.d.ts → isValidBridgeProtocolVersion.d.ts} +1 -1
  102. package/dist/lifecycle/isValidBridgeProtocolVersion.d.ts.map +1 -0
  103. package/dist/lifecycle/types.d.ts +16 -1849
  104. package/dist/lifecycle/types.d.ts.map +1 -1
  105. package/dist/lifecycle/types.js +1 -41
  106. package/dist/{lifecycle → manifest}/resolveManifest.d.ts +2 -2
  107. package/dist/manifest/resolveManifest.d.ts.map +1 -0
  108. package/dist/manifest/types.d.ts +55 -0
  109. package/dist/manifest/types.d.ts.map +1 -0
  110. package/dist/manifest/types.js +10 -0
  111. package/dist/messages/{sandboxMessageRouter.d.ts → createSandboxMessageRouter.d.ts} +15 -15
  112. package/dist/messages/createSandboxMessageRouter.d.ts.map +1 -0
  113. package/dist/messages/{sandboxMessageRouter.js → createSandboxMessageRouter.js} +5 -4
  114. package/dist/messages/{invalidSandboxMessage.d.ts → getInvalidSandboxMessageResponse.d.ts} +1 -1
  115. package/dist/messages/getInvalidSandboxMessageResponse.d.ts.map +1 -0
  116. package/dist/messages/handlers.d.ts +27 -0
  117. package/dist/messages/handlers.d.ts.map +1 -0
  118. package/dist/messages/handlers.js +1 -0
  119. package/dist/messages/logging.d.ts +2 -0
  120. package/dist/messages/logging.d.ts.map +1 -0
  121. package/dist/messages/logging.js +1 -0
  122. package/dist/messages/result.d.ts +12 -0
  123. package/dist/messages/result.d.ts.map +1 -0
  124. package/dist/messages/result.js +1 -0
  125. package/dist/navigation/parseExternalUrl.d.ts.map +1 -0
  126. package/dist/navigation/types.d.ts +7 -0
  127. package/dist/navigation/types.d.ts.map +1 -0
  128. package/dist/navigation/types.js +1 -0
  129. package/dist/pages/types.d.ts +18 -0
  130. package/dist/pages/types.d.ts.map +1 -0
  131. package/dist/pages/types.js +1 -0
  132. package/dist/protocol/{messages/updatePage.d.ts → compatibility/protocol3To5/bridgePage.d.ts} +32 -22
  133. package/dist/protocol/compatibility/protocol3To5/bridgePage.js +21 -0
  134. package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourcePage.js +1 -1
  135. package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourceValue.js +2 -2
  136. package/dist/protocol/context/containingPage.d.ts +31 -0
  137. package/dist/protocol/context/containingPage.js +18 -0
  138. package/dist/protocol/{messages → context/messages}/pageChanged.js +1 -1
  139. package/dist/protocol/{parent.d.ts → context/parent.d.ts} +11 -1
  140. package/dist/protocol/context/parent.js +31 -0
  141. package/dist/protocol/dataSources/bridgeDataSourceBinding.d.ts +164 -0
  142. package/dist/protocol/dataSources/bridgeDataSourceBinding.js +25 -0
  143. package/dist/protocol/dataSources/bridgeDataSourceBindings.d.ts +148 -0
  144. package/dist/protocol/dataSources/bridgeDataSourceBindings.js +3 -0
  145. package/dist/protocol/dataSources/collectionPointer.d.ts +7 -0
  146. package/dist/protocol/dataSources/collectionPointer.js +7 -0
  147. package/dist/protocol/dataSources/collectionSchema.d.ts +144 -0
  148. package/dist/protocol/dataSources/collectionSchema.js +12 -0
  149. package/dist/protocol/dataSources/errors.d.ts +2 -2
  150. package/dist/protocol/dataSources/filters/bridgeDataSourceFilter.d.ts +505 -0
  151. package/dist/protocol/dataSources/filters/bridgeDataSourceFilter.js +8 -0
  152. package/dist/protocol/dataSources/filters/bridgeDataSourceFilterCondition.d.ts +253 -0
  153. package/dist/protocol/dataSources/filters/bridgeDataSourceFilterCondition.js +69 -0
  154. package/dist/protocol/dataSources/filters/bridgeDataSourceSort.d.ts +11 -0
  155. package/dist/protocol/dataSources/filters/bridgeDataSourceSort.js +8 -0
  156. package/dist/protocol/dataSources/filters/checkboxFilterOperator.d.ts +7 -0
  157. package/dist/protocol/dataSources/filters/checkboxFilterOperator.js +5 -0
  158. package/dist/protocol/dataSources/filters/containsFilterOperator.d.ts +13 -0
  159. package/dist/protocol/dataSources/filters/containsFilterOperator.js +9 -0
  160. package/dist/protocol/dataSources/filters/createdByFilterOperator.d.ts +17 -0
  161. package/dist/protocol/dataSources/filters/createdByFilterOperator.js +11 -0
  162. package/dist/protocol/dataSources/filters/dateFilterOperator.d.ts +47 -0
  163. package/dist/protocol/dataSources/filters/dateFilterOperator.js +73 -0
  164. package/dist/protocol/dataSources/filters/emptyOperator.d.ts +6 -0
  165. package/dist/protocol/dataSources/filters/emptyOperator.js +5 -0
  166. package/dist/protocol/dataSources/filters/numberFilterOperator.d.ts +19 -0
  167. package/dist/protocol/dataSources/filters/numberFilterOperator.js +11 -0
  168. package/dist/protocol/dataSources/filters/optionFilterOperator.d.ts +11 -0
  169. package/dist/protocol/dataSources/filters/optionFilterOperator.js +8 -0
  170. package/dist/protocol/dataSources/filters/peopleFilterOperator.d.ts +23 -0
  171. package/dist/protocol/dataSources/filters/peopleFilterOperator.js +11 -0
  172. package/dist/protocol/dataSources/filters/relationFilterOperator.d.ts +11 -0
  173. package/dist/protocol/dataSources/filters/relationFilterOperator.js +12 -0
  174. package/dist/protocol/dataSources/filters/statusFilterOperator.d.ts +15 -0
  175. package/dist/protocol/dataSources/filters/statusFilterOperator.js +7 -0
  176. package/dist/protocol/dataSources/filters/statusGroupFilterOperator.d.ts +9 -0
  177. package/dist/protocol/dataSources/filters/statusGroupFilterOperator.js +18 -0
  178. package/dist/protocol/dataSources/filters/stringOrStringArray.d.ts +2 -0
  179. package/dist/protocol/dataSources/filters/stringOrStringArray.js +5 -0
  180. package/dist/protocol/dataSources/filters/textFilterOperator.d.ts +19 -0
  181. package/dist/protocol/dataSources/filters/textFilterOperator.js +11 -0
  182. package/dist/protocol/dataSources/makeBridgeDataSourceBinding.d.ts +6 -0
  183. package/dist/protocol/dataSources/makeBridgeDataSourceBinding.js +6 -0
  184. package/dist/protocol/{messages → dataSources/messages}/dataSourcesChanged.d.ts +1 -0
  185. package/dist/protocol/{messages → dataSources/messages}/dataSourcesChanged.js +2 -2
  186. package/dist/protocol/{messages/queryDataSourceResult.d.ts → dataSources/messages/queryDataSource.d.ts} +525 -2
  187. package/dist/protocol/{messages/queryDataSourceResult.js → dataSources/messages/queryDataSource.js} +22 -2
  188. package/dist/protocol/dataSources/notionDataSource.d.ts +309 -0
  189. package/dist/protocol/dataSources/notionDataSource.js +38 -0
  190. package/dist/protocol/dataSources/resolveDataSourceBinding.d.ts +32 -0
  191. package/dist/protocol/dataSources/resolveDataSourceBinding.js +33 -0
  192. package/dist/protocol/{messages → handshake}/connect.d.ts +4 -0
  193. package/dist/protocol/{messages → handshake}/connect.js +2 -2
  194. package/dist/protocol/{messages → handshake}/init.d.ts +6 -1
  195. package/dist/protocol/{messages → handshake}/init.js +10 -10
  196. package/dist/protocol/{messages → handshake}/initResult.d.ts +1 -1
  197. package/dist/protocol/{messages → handshake}/isInitHandshakeMessage.d.ts +2 -2
  198. package/dist/protocol/index.d.ts +150 -54
  199. package/dist/protocol/index.js +73 -54
  200. package/dist/protocol/manifest/capabilities.d.ts +37 -0
  201. package/dist/protocol/manifest/capabilities.js +13 -0
  202. package/dist/protocol/{manifest.d.ts → manifest/manifest.d.ts} +12 -2
  203. package/dist/protocol/{manifest.js → manifest/manifest.js} +8 -1
  204. package/dist/protocol/messages/hostToSandbox.d.ts +12 -0
  205. package/dist/protocol/messages/hostToSandbox.js +15 -15
  206. package/dist/protocol/messages/messagePayload.d.ts +1 -1
  207. package/dist/protocol/messages/sandboxToHost.d.ts +232 -8
  208. package/dist/protocol/messages/sandboxToHost.js +12 -12
  209. package/dist/protocol/{messages → navigation}/openExternalUrl.d.ts +1 -1
  210. package/dist/protocol/{messages/createPage.d.ts → pages/bridgePage.d.ts} +67 -65
  211. package/dist/protocol/pages/bridgePage.js +25 -0
  212. package/dist/protocol/pages/makeBridgePage.d.ts +6 -0
  213. package/dist/protocol/pages/makeBridgePage.js +12 -0
  214. package/dist/protocol/{messages/createPageResult.d.ts → pages/messages/createPage.d.ts} +500 -2
  215. package/dist/protocol/pages/messages/createPage.js +104 -0
  216. package/dist/protocol/{messages → pages/messages}/getPage.d.ts +2 -2
  217. package/dist/protocol/{messages → pages/messages}/getPage.js +4 -3
  218. package/dist/protocol/{messages → pages/messages}/openPage.d.ts +2 -2
  219. package/dist/protocol/{messages → pages/messages}/openPage.js +1 -1
  220. package/dist/protocol/{messages/updatePageResult.d.ts → pages/messages/updatePage.d.ts} +272 -2
  221. package/dist/protocol/{messages/updatePageResult.js → pages/messages/updatePage.js} +26 -2
  222. package/dist/protocol/pages/pageAppearance.d.ts +62 -0
  223. package/dist/protocol/pages/pageAppearance.js +34 -0
  224. package/dist/protocol/pages/properties/bridgePagePropertyMaps.d.ts +433 -0
  225. package/dist/protocol/pages/properties/bridgePagePropertyMaps.js +4 -0
  226. package/dist/protocol/pages/properties/bridgePagePropertyValue.d.ts +217 -0
  227. package/dist/protocol/pages/properties/bridgePagePropertyValue.js +144 -0
  228. package/dist/protocol/pages/properties/dateInput.d.ts +45 -0
  229. package/dist/protocol/pages/properties/dateInput.js +23 -0
  230. package/dist/protocol/pages/properties/fileInput.d.ts +16 -0
  231. package/dist/protocol/pages/properties/fileInput.js +16 -0
  232. package/dist/protocol/pages/properties/metadataActor.d.ts +6 -0
  233. package/dist/protocol/pages/properties/metadataActor.js +7 -0
  234. package/dist/protocol/pages/properties/placeInput.d.ts +10 -0
  235. package/dist/protocol/pages/properties/placeInput.js +10 -0
  236. package/dist/protocol/pages/properties/relationInput.d.ts +5 -0
  237. package/dist/protocol/pages/properties/relationInput.js +2 -0
  238. package/dist/protocol/pages/properties/richText.d.ts +3 -0
  239. package/dist/protocol/pages/properties/richText.js +2 -0
  240. package/dist/protocol/pages/properties/selectOption.d.ts +13 -0
  241. package/dist/protocol/pages/properties/selectOption.js +16 -0
  242. package/dist/protocol/pages/properties/userInput.d.ts +10 -0
  243. package/dist/protocol/pages/properties/userInput.js +13 -0
  244. package/dist/protocol/users/bridgeUser.d.ts +12 -0
  245. package/dist/protocol/users/bridgeUser.js +12 -0
  246. package/dist/protocol/users/{user.d.ts → bridgeUserList.d.ts} +2 -15
  247. package/dist/protocol/users/bridgeUserList.js +10 -0
  248. package/dist/protocol/users/makeBridgeUser.d.ts +6 -0
  249. package/dist/protocol/users/makeBridgeUser.js +11 -0
  250. package/dist/protocol/{messages → users/messages}/currentUserChanged.js +2 -2
  251. package/dist/protocol/{messages → users/messages}/getUser.d.ts +2 -2
  252. package/dist/protocol/{messages → users/messages}/getUser.js +3 -2
  253. package/dist/protocol/{messages → users/messages}/listUsers.d.ts +2 -2
  254. package/dist/protocol/{messages → users/messages}/listUsers.js +2 -2
  255. package/dist/protocol/users/userId.d.ts +3 -0
  256. package/dist/protocol/users/userId.js +2 -0
  257. package/dist/protocol/{errors.d.ts → utils/errors.d.ts} +6 -0
  258. package/dist/protocol/utils/errors.js +11 -0
  259. package/dist/protocol/utils/nullableStringSchema.d.ts +2 -0
  260. package/dist/protocol/utils/nullableStringSchema.js +2 -0
  261. package/dist/users/types.d.ts +15 -0
  262. package/dist/users/types.d.ts.map +1 -0
  263. package/dist/users/types.js +1 -0
  264. package/dist/utils/maybePromise.d.ts +2 -0
  265. package/dist/utils/maybePromise.d.ts.map +1 -0
  266. package/dist/utils/maybePromise.js +1 -0
  267. package/dist/utils/protocolVersion.d.ts.map +1 -0
  268. package/dist/utils/toNotionPageId.d.ts +3 -0
  269. package/dist/utils/toNotionPageId.d.ts.map +1 -0
  270. package/dist/{ids.js → utils/toNotionPageId.js} +1 -1
  271. package/dist/{utils.d.ts → utils/unreachable.d.ts} +1 -1
  272. package/dist/utils/unreachable.d.ts.map +1 -0
  273. package/docs/bridge/protocol.md +16 -1
  274. package/docs/bridge/versioning.md +2 -2
  275. package/docs/handlers.md +16 -8
  276. package/docs/lifecycle.md +14 -0
  277. package/package.json +1 -1
  278. package/src/compatibility/normalizeHostToSandboxMessage.ts +4 -4
  279. package/src/compatibility/{pageWithNullTextFallbackProperties.ts → pages/toPageWithNullTextFallbackProperties.ts} +2 -2
  280. package/src/compatibility/{addMetadataReadSchemasForProtocol3To4.ts → protocol3To4/addMetadataReadSchemasForProtocol3To4.ts} +1 -1
  281. package/src/compatibility/{normalizePageResultsForProtocol3To5.ts → protocol3To5/normalizePageResultsForProtocol3To5.ts} +4 -6
  282. package/src/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.ts +25 -0
  283. package/src/compatibility/protocol3To5/toPageForProtocol3To5.ts +29 -0
  284. package/src/compatibility/protocol3To5/toPropertyValueForProtocol3To5.ts +102 -0
  285. package/src/compatibility/protocol3To5/toQueryPageForProtocol3To5.ts +35 -0
  286. package/src/compatibility/{normalizePageResultsForProtocol6.ts → protocol6/normalizePageResultsForProtocol6.ts} +2 -2
  287. package/src/context/initialState.ts +56 -0
  288. package/src/context/resize.ts +4 -0
  289. package/src/createCustomBlockHost.ts +108 -88
  290. package/src/{autoBindProperties.ts → dataSources/bindings/getAutoBoundPropertyIdsByKey.ts} +1 -1
  291. package/src/{dateValue.ts → dataSources/properties/toNotionDateValue.ts} +2 -2
  292. package/src/{queries → dataSources/queries}/querySubscriptions.ts +2 -2
  293. package/src/dataSources/types.ts +23 -0
  294. package/src/{queries → dataSources/validation}/validateQueryDataSourceFilter.ts +11 -13
  295. package/src/{queries → dataSources/validation}/validateQueryDataSourceSorts.ts +6 -8
  296. package/src/index.ts +39 -30
  297. package/src/lifecycle/{initializationController.ts → createInitializationController.ts} +15 -20
  298. package/src/lifecycle/errors/contextUnavailableError.ts +10 -0
  299. package/src/lifecycle/errors/initialStateTimeoutError.ts +10 -0
  300. package/src/lifecycle/errors/invalidConnectPayloadError.ts +10 -0
  301. package/src/lifecycle/errors/invalidInitResultPayloadError.ts +10 -0
  302. package/src/lifecycle/errors/invalidLocalPreviewUrlError.ts +10 -0
  303. package/src/lifecycle/errors/invalidPropertyBindingError.ts +11 -0
  304. package/src/lifecycle/errors/invalidProtocolVersionError.ts +13 -0
  305. package/src/lifecycle/errors/missingDataSourceBindingError.ts +10 -0
  306. package/src/lifecycle/errors/missingPropertyBindingError.ts +10 -0
  307. package/src/lifecycle/errors/noConnectError.ts +15 -0
  308. package/src/lifecycle/errors/noInitResultError.ts +10 -0
  309. package/src/lifecycle/errors/unknownInitializationError.ts +10 -0
  310. package/src/lifecycle/errors/unsupportedProtocolVersionError.ts +14 -0
  311. package/src/{isAllowedLocalPreviewUrl.ts → lifecycle/isAllowedLocalPreviewUrl.ts} +1 -1
  312. package/src/lifecycle/types.ts +17 -103
  313. package/src/{lifecycle → manifest}/resolveManifest.ts +2 -2
  314. package/src/manifest/types.ts +28 -0
  315. package/src/messages/{sandboxMessageRouter.ts → createSandboxMessageRouter.ts} +19 -21
  316. package/src/messages/handlers.ts +46 -0
  317. package/src/messages/logging.ts +1 -0
  318. package/src/messages/result.ts +11 -0
  319. package/src/navigation/types.ts +10 -0
  320. package/src/pages/types.ts +22 -0
  321. package/src/users/types.ts +17 -0
  322. package/src/utils/maybePromise.ts +1 -0
  323. package/src/utils/toNotionPageId.ts +7 -0
  324. package/dist/autoBindProperties.d.ts.map +0 -1
  325. package/dist/compatibility/normalizePageResultsForProtocol3To5.d.ts.map +0 -1
  326. package/dist/compatibility/normalizePageResultsForProtocol6.d.ts.map +0 -1
  327. package/dist/compatibility/pageForProtocol3To5.d.ts.map +0 -1
  328. package/dist/compatibility/pageResult.d.ts.map +0 -1
  329. package/dist/compatibility/pageWithNullTextFallbackProperties.d.ts.map +0 -1
  330. package/dist/dateValue.d.ts.map +0 -1
  331. package/dist/ids.d.ts +0 -3
  332. package/dist/ids.d.ts.map +0 -1
  333. package/dist/isAllowedLocalPreviewUrl.d.ts.map +0 -1
  334. package/dist/lifecycle/initErrors.d.ts +0 -25
  335. package/dist/lifecycle/initErrors.d.ts.map +0 -1
  336. package/dist/lifecycle/initErrors.js +0 -111
  337. package/dist/lifecycle/initializationController.d.ts.map +0 -1
  338. package/dist/lifecycle/protocolVersion.d.ts.map +0 -1
  339. package/dist/lifecycle/resolveManifest.d.ts.map +0 -1
  340. package/dist/messages/invalidSandboxMessage.d.ts.map +0 -1
  341. package/dist/messages/parseExternalUrl.d.ts.map +0 -1
  342. package/dist/messages/sandboxMessageRouter.d.ts.map +0 -1
  343. package/dist/messages/types.d.ts +0 -65
  344. package/dist/messages/types.d.ts.map +0 -1
  345. package/dist/protocol/dataSources/dataSource.d.ts +0 -786
  346. package/dist/protocol/dataSources/dataSource.js +0 -66
  347. package/dist/protocol/errors.js +0 -6
  348. package/dist/protocol/messages/createPage.js +0 -51
  349. package/dist/protocol/messages/createPageResult.js +0 -43
  350. package/dist/protocol/messages/queryDataSource.d.ts +0 -1470
  351. package/dist/protocol/messages/queryDataSource.js +0 -254
  352. package/dist/protocol/messages/updatePage.js +0 -23
  353. package/dist/protocol/pages/page.d.ts +0 -1422
  354. package/dist/protocol/pages/page.js +0 -318
  355. package/dist/protocol/parent.js +0 -13
  356. package/dist/protocol/users/user.js +0 -20
  357. package/dist/protocolVersion.d.ts.map +0 -1
  358. package/dist/queries/querySubscriptions.d.ts.map +0 -1
  359. package/dist/queries/types.d.ts +0 -5
  360. package/dist/queries/types.d.ts.map +0 -1
  361. package/dist/queries/validateQueryDataSourceFilter.d.ts +0 -5
  362. package/dist/queries/validateQueryDataSourceFilter.d.ts.map +0 -1
  363. package/dist/queries/validateQueryDataSourceSorts.d.ts +0 -8
  364. package/dist/queries/validateQueryDataSourceSorts.d.ts.map +0 -1
  365. package/dist/utils.d.ts.map +0 -1
  366. package/src/compatibility/pageForProtocol3To5.ts +0 -190
  367. package/src/ids.ts +0 -9
  368. package/src/lifecycle/initErrors.ts +0 -131
  369. package/src/messages/types.ts +0 -171
  370. package/src/queries/types.ts +0 -11
  371. /package/dist/compatibility/{pageResult.js → pages/pageResult.js} +0 -0
  372. /package/dist/{messages/types.js → context/resize.js} +0 -0
  373. /package/dist/{autoBindProperties.js → dataSources/bindings/getAutoBoundPropertyIdsByKey.js} +0 -0
  374. /package/dist/{dateValue.js → dataSources/properties/toNotionDateValue.js} +0 -0
  375. /package/dist/{queries → dataSources/queries}/querySubscriptions.js +0 -0
  376. /package/dist/{queries → dataSources}/types.js +0 -0
  377. /package/dist/{isAllowedLocalPreviewUrl.d.ts → lifecycle/isAllowedLocalPreviewUrl.d.ts} +0 -0
  378. /package/dist/lifecycle/{protocolVersion.js → isValidBridgeProtocolVersion.js} +0 -0
  379. /package/dist/{lifecycle → manifest}/resolveManifest.js +0 -0
  380. /package/dist/messages/{invalidSandboxMessage.js → getInvalidSandboxMessageResponse.js} +0 -0
  381. /package/dist/{messages → navigation}/parseExternalUrl.d.ts +0 -0
  382. /package/dist/{messages → navigation}/parseExternalUrl.js +0 -0
  383. /package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourcePage.d.ts +0 -0
  384. /package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourceValue.d.ts +0 -0
  385. /package/dist/protocol/{contrast.d.ts → context/contrast.d.ts} +0 -0
  386. /package/dist/protocol/{contrast.js → context/contrast.js} +0 -0
  387. /package/dist/protocol/{messages → context/messages}/contrastModeChanged.d.ts +0 -0
  388. /package/dist/protocol/{messages → context/messages}/contrastModeChanged.js +0 -0
  389. /package/dist/protocol/{messages → context/messages}/pageChanged.d.ts +0 -0
  390. /package/dist/protocol/{messages → context/messages}/parentChanged.d.ts +0 -0
  391. /package/dist/protocol/{messages → context/messages}/parentChanged.js +0 -0
  392. /package/dist/protocol/{messages → context/messages}/resize.d.ts +0 -0
  393. /package/dist/protocol/{messages → context/messages}/resize.js +0 -0
  394. /package/dist/protocol/{messages → context/messages}/themeChanged.d.ts +0 -0
  395. /package/dist/protocol/{messages → context/messages}/themeChanged.js +0 -0
  396. /package/dist/protocol/{theme.d.ts → context/theme.d.ts} +0 -0
  397. /package/dist/protocol/{theme.js → context/theme.js} +0 -0
  398. /package/dist/protocol/{messages → dataSources/messages}/unsubscribeDataSourceQuery.d.ts +0 -0
  399. /package/dist/protocol/{messages → dataSources/messages}/unsubscribeDataSourceQuery.js +0 -0
  400. /package/dist/protocol/dataSources/{dateValue.d.ts → properties/dateValue.d.ts} +0 -0
  401. /package/dist/protocol/dataSources/{dateValue.js → properties/dateValue.js} +0 -0
  402. /package/dist/protocol/dataSources/{propertySchema.d.ts → properties/propertySchema.d.ts} +0 -0
  403. /package/dist/protocol/dataSources/{propertySchema.js → properties/propertySchema.js} +0 -0
  404. /package/dist/protocol/{messages → handshake}/initResult.js +0 -0
  405. /package/dist/protocol/{messages → handshake}/isInitHandshakeMessage.js +0 -0
  406. /package/dist/protocol/{messages → navigation}/openExternalUrl.js +0 -0
  407. /package/dist/protocol/{messages → users/messages}/currentUserChanged.d.ts +0 -0
  408. /package/dist/protocol/{ids.d.ts → utils/ids.d.ts} +0 -0
  409. /package/dist/protocol/{ids.js → utils/ids.js} +0 -0
  410. /package/dist/protocol/{isLocalBlockServerUrl.d.ts → utils/isLocalBlockServerUrl.d.ts} +0 -0
  411. /package/dist/protocol/{isLocalBlockServerUrl.js → utils/isLocalBlockServerUrl.js} +0 -0
  412. /package/dist/protocol/{protocolVersion.d.ts → utils/protocolVersion.d.ts} +0 -0
  413. /package/dist/protocol/{protocolVersion.js → utils/protocolVersion.js} +0 -0
  414. /package/dist/protocol/{dataSources → utils}/recordPointer.d.ts +0 -0
  415. /package/dist/protocol/{dataSources → utils}/recordPointer.js +0 -0
  416. /package/dist/{protocolVersion.d.ts → utils/protocolVersion.d.ts} +0 -0
  417. /package/dist/{protocolVersion.js → utils/protocolVersion.js} +0 -0
  418. /package/dist/{utils.js → utils/unreachable.js} +0 -0
  419. /package/src/compatibility/{pageResult.ts → pages/pageResult.ts} +0 -0
  420. /package/src/lifecycle/{protocolVersion.ts → isValidBridgeProtocolVersion.ts} +0 -0
  421. /package/src/messages/{invalidSandboxMessage.ts → getInvalidSandboxMessageResponse.ts} +0 -0
  422. /package/src/{messages → navigation}/parseExternalUrl.ts +0 -0
  423. /package/src/{protocolVersion.ts → utils/protocolVersion.ts} +0 -0
  424. /package/src/{utils.ts → utils/unreachable.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ import * as v from "valibot";
2
+ import type { BridgeUser } from "./bridgeUser.js";
3
+ import { bridgeUserSchema } from "./bridgeUser.js";
4
+ export type MakeBridgeUserArgs = Pick<v.InferInput<typeof bridgeUserSchema>, "id" | "person"> & Partial<Omit<v.InferInput<typeof bridgeUserSchema>, "object" | "type" | "id" | "person">>;
5
+ /** Builds the shared person-user payload; callers supply identity and profile data. */
6
+ export declare function makeBridgeUser(args: MakeBridgeUserArgs): BridgeUser;
@@ -0,0 +1,11 @@
1
+ import * as v from "valibot";
2
+ import { bridgeUserSchema } from "./bridgeUser.js";
3
+ /** Builds the shared person-user payload; callers supply identity and profile data. */
4
+ export function makeBridgeUser(args) {
5
+ return v.parse(bridgeUserSchema, {
6
+ ...args,
7
+ object: "user",
8
+ type: "person",
9
+ avatar_url: args.avatar_url ?? null,
10
+ });
11
+ }
@@ -1,9 +1,9 @@
1
1
  import * as v from "valibot";
2
- import { notionUserSchema } from "../users/user.js";
2
+ import { bridgeUserSchema } from "../bridgeUser.js";
3
3
  /**
4
4
  * Sent by the host when the viewing user's profile changes while the block is mounted.
5
5
  */
6
6
  export const currentUserChangedMessageSchema = v.object({
7
7
  type: v.literal("currentUserChanged"),
8
- currentUser: notionUserSchema,
8
+ currentUser: bridgeUserSchema,
9
9
  });
@@ -1,7 +1,7 @@
1
1
  import * as v from "valibot";
2
- import type { CustomBlockErrorCode, CustomBlockErrorInfo } from "../errors.js";
2
+ import type { CustomBlockCapabilityErrorCode, CustomBlockErrorCode, CustomBlockErrorInfo } from "../../utils/errors.js";
3
3
  export declare const customBlockGetUserErrorCodeSchema: v.StringSchema<undefined>;
4
- export type CustomBlockGetUserErrorCode = CustomBlockErrorCode<"get_user_failed">;
4
+ export type CustomBlockGetUserErrorCode = CustomBlockErrorCode<"get_user_failed" | CustomBlockCapabilityErrorCode>;
5
5
  export type CustomBlockGetUserErrorInfo = CustomBlockErrorInfo<CustomBlockGetUserErrorCode>;
6
6
  export declare const customBlockGetUserErrorInfoSchema: v.ObjectSchema<{
7
7
  readonly code: v.StringSchema<undefined>;
@@ -1,5 +1,6 @@
1
1
  import * as v from "valibot";
2
- import { notionUserIdSchema, notionUserSchema } from "../users/user.js";
2
+ import { bridgeUserSchema } from "../bridgeUser.js";
3
+ import { notionUserIdSchema } from "../userId.js";
3
4
  // The schema accepts any string code. The type lists known codes for
4
5
  // autocomplete, with an open string fallback for newer senders.
5
6
  export const customBlockGetUserErrorCodeSchema = v.string();
@@ -21,7 +22,7 @@ export const getUserResultMessageSchema = v.variant("status", [
21
22
  type: v.literal("getUserResult"),
22
23
  requestId: v.string(),
23
24
  status: v.literal("success"),
24
- user: notionUserSchema,
25
+ user: bridgeUserSchema,
25
26
  }),
26
27
  v.object({
27
28
  type: v.literal("getUserResult"),
@@ -1,7 +1,7 @@
1
1
  import * as v from "valibot";
2
- import type { CustomBlockErrorCode, CustomBlockErrorInfo } from "../errors.js";
2
+ import type { CustomBlockCapabilityErrorCode, CustomBlockErrorCode, CustomBlockErrorInfo } from "../../utils/errors.js";
3
3
  export declare const customBlockListUsersErrorCodeSchema: v.StringSchema<undefined>;
4
- export type CustomBlockListUsersErrorCode = CustomBlockErrorCode<"list_users_failed">;
4
+ export type CustomBlockListUsersErrorCode = CustomBlockErrorCode<"list_users_failed" | CustomBlockCapabilityErrorCode>;
5
5
  export type CustomBlockListUsersErrorInfo = CustomBlockErrorInfo<CustomBlockListUsersErrorCode>;
6
6
  export declare const customBlockListUsersErrorInfoSchema: v.ObjectSchema<{
7
7
  readonly code: v.StringSchema<undefined>;
@@ -1,5 +1,5 @@
1
1
  import * as v from "valibot";
2
- import { notionUserListSchema } from "../users/user.js";
2
+ import { bridgeUserListSchema } from "../bridgeUserList.js";
3
3
  // The schema accepts any string code. The type lists known codes for
4
4
  // autocomplete, with an open string fallback for newer senders.
5
5
  export const customBlockListUsersErrorCodeSchema = v.string();
@@ -22,7 +22,7 @@ export const listUsersResultMessageSchema = v.variant("status", [
22
22
  type: v.literal("listUsersResult"),
23
23
  requestId: v.string(),
24
24
  status: v.literal("success"),
25
- list: notionUserListSchema,
25
+ list: bridgeUserListSchema,
26
26
  }),
27
27
  v.object({
28
28
  type: v.literal("listUsersResult"),
@@ -0,0 +1,3 @@
1
+ import * as v from "valibot";
2
+ export declare const notionUserIdSchema: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.BrandAction<string, "NotionUserId">]>;
3
+ export type NotionUserId = v.InferOutput<typeof notionUserIdSchema>;
@@ -0,0 +1,2 @@
1
+ import * as v from "valibot";
2
+ export const notionUserIdSchema = v.pipe(v.string(), v.brand("NotionUserId"));
@@ -1,5 +1,11 @@
1
1
  import * as v from "valibot";
2
2
  export type CustomBlockErrorCode<KnownCode extends string> = KnownCode | "unknown_error" | (string & {});
3
+ /**
4
+ * Reserved for a request that needs a capability the block did not declare or
5
+ * the viewer did not grant. No host sends it yet.
6
+ */
7
+ export declare const CAPABILITY_NOT_GRANTED_ERROR_CODE = "capability_not_granted";
8
+ export type CustomBlockCapabilityErrorCode = typeof CAPABILITY_NOT_GRANTED_ERROR_CODE;
3
9
  export type CustomBlockErrorInfo<TCode extends string = string> = {
4
10
  code: TCode;
5
11
  message: string;
@@ -0,0 +1,11 @@
1
+ import * as v from "valibot";
2
+ /**
3
+ * Reserved for a request that needs a capability the block did not declare or
4
+ * the viewer did not grant. No host sends it yet.
5
+ */
6
+ export const CAPABILITY_NOT_GRANTED_ERROR_CODE = "capability_not_granted";
7
+ export const customBlockErrorInfoSchema = v.object({
8
+ code: v.string(),
9
+ message: v.string(),
10
+ isRetryable: v.boolean(),
11
+ });
@@ -0,0 +1,2 @@
1
+ import * as v from "valibot";
2
+ export declare const nullableStringSchema: v.NullableSchema<v.StringSchema<undefined>, undefined>;
@@ -0,0 +1,2 @@
1
+ import * as v from "valibot";
2
+ export const nullableStringSchema = v.nullable(v.string());
@@ -0,0 +1,15 @@
1
+ import type { BridgeUser } from "../protocol/users/bridgeUser.js";
2
+ import type { BridgeUserList } from "../protocol/users/bridgeUserList.js";
3
+ import type { getUserMessageSchema } from "../protocol/users/messages/getUser.js";
4
+ import type { listUsersMessageSchema } from "../protocol/users/messages/listUsers.js";
5
+ import type { InferInput } from "valibot";
6
+ import type { CustomBlockHostResult } from "../messages/result.js";
7
+ export type GetUserMessageInput = InferInput<typeof getUserMessageSchema>;
8
+ export type ListUsersMessageInput = InferInput<typeof listUsersMessageSchema>;
9
+ export type CustomBlockHostUserResult = CustomBlockHostResult<{
10
+ user: BridgeUser;
11
+ }>;
12
+ export type CustomBlockHostUserListResult = CustomBlockHostResult<{
13
+ list: BridgeUserList;
14
+ }>;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/users/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sDAAsD,CAAA;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAA;AAC9F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAA;AACtG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAA;AAC1G,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAElE,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEzE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE7E,MAAM,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;IAC7D,IAAI,EAAE,UAAU,CAAA;CAChB,CAAC,CAAA;AACF,MAAM,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;IACjE,IAAI,EAAE,cAAc,CAAA;CACpB,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export type MaybePromise<T> = T | Promise<T>;
2
+ //# sourceMappingURL=maybePromise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maybePromise.d.ts","sourceRoot":"","sources":["../../src/utils/maybePromise.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolVersion.d.ts","sourceRoot":"","sources":["../../src/utils/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,IAAI,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { NotionPageId } from "../protocol/utils/ids.js";
2
+ export declare function toNotionPageId(id: string): NotionPageId;
3
+ //# sourceMappingURL=toNotionPageId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toNotionPageId.d.ts","sourceRoot":"","sources":["../../src/utils/toNotionPageId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAA;AAIjF,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAEvD"}
@@ -1,4 +1,4 @@
1
- import { notionPageIdSchema, } from "./protocol/ids.js";
1
+ import { notionPageIdSchema } from "../protocol/utils/ids.js";
2
2
  import * as v from "valibot";
3
3
  export function toNotionPageId(id) {
4
4
  return v.parse(notionPageIdSchema, id);
@@ -2,4 +2,4 @@
2
2
  * Throws when a discriminated union has an unexpected member.
3
3
  */
4
4
  export declare function unreachable(value: never): never;
5
- //# sourceMappingURL=utils.d.ts.map
5
+ //# sourceMappingURL=unreachable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unreachable.d.ts","sourceRoot":"","sources":["../../src/utils/unreachable.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAI/C"}
@@ -107,13 +107,18 @@ for `code`, including unknown codes. TypeScript aliases list known codes for aut
107
107
 
108
108
  ### Bindings and IDs
109
109
 
110
- Hosts send `NotionDataSourceBindings` as `dataSources: { bindings }`, keyed by the semantic data
110
+ Hosts send `BridgeDataSourceBindings` as `dataSources: { bindings }`, keyed by the semantic data
111
111
  source key declared in the manifest. `collectionSchema` contains only actual database properties.
112
112
 
113
113
  Sandbox-to-host object references are raw IDs. The SDK resolves semantic data-source and property
114
114
  keys before sending query or page-operation requests. Get and update requests can carry an optional
115
115
  resolved `dataSourceId`.
116
116
 
117
+ A binding with `inaccessible: true` marks a bound data source that the viewer can't read. The host
118
+ omits its pointer, schema, and property mappings. The SDK and host still initialize the block. The
119
+ SDK fails queries and page creation that use the data source with `data_source_inaccessible`,
120
+ without sending a message.
121
+
117
122
  ### Query requests
118
123
 
119
124
  `queryDataSource` may include a resolved `filter` and an ordered `sorts` list. Each sort contains a
@@ -160,6 +165,16 @@ filter: {
160
165
  }
161
166
  ```
162
167
 
168
+ ## Capabilities
169
+
170
+ `manifest.capabilities` lists `{ capability, resource }` declarations. Both fields are open strings,
171
+ so a newer vocabulary never makes an older receiver reject a manifest. An omitted `capabilities`
172
+ marks a block that predates approval.
173
+
174
+ The `capability_not_granted` error code is reserved for a request that the viewer's grants do not
175
+ cover, with `isRetryable: false`. No adapter sends it yet, and no receiver restricts requests by
176
+ capability. The SDK's capabilities guide documents the vocabulary.
177
+
163
178
  ## Page context
164
179
 
165
180
  Containing-page context uses `CustomBlockPage`. The `init.page` and `pageChanged.page` fields
@@ -21,8 +21,8 @@ conversions.
21
21
  ## Protocol export names
22
22
 
23
23
  The `@notionhq/custom-blocks-host/protocol` entrypoint exports wire definitions. Page formats used
24
- by protocols 3–5 are named `NotionPageForProtocol3To5` and `NotionDataSourcePageForProtocol3To5`,
25
- with matching `notionPageForProtocol3To5Schema` and `notionDataSourcePageForProtocol3To5Schema`
24
+ by protocols 3–5 are named `BridgePageForProtocol3To5` and `NotionDataSourcePageForProtocol3To5`,
25
+ with matching `bridgePageForProtocol3To5Schema` and `notionDataSourcePageForProtocol3To5Schema`
26
26
  validators. Message types and schemas containing `WithProtocol3To5Compatibility` accept both current
27
27
  page formats and protocol 3–5 page formats. `UNIFIED_PAGE_PROTOCOL_VERSION` is 6, the minimum
28
28
  protocol version that uses unified pages.
package/docs/handlers.md CHANGED
@@ -15,9 +15,14 @@ hosts must provide their own permissions, data access, and persistence.
15
15
  sends no response to that request. A handler returns a result synchronously or as a promise. Errors
16
16
  carry `{ code, message, isRetryable }`, with open string codes.
17
17
 
18
- Handler requests are validated messages with branded IDs. Initial state, setters, handler results,
19
- and `*MessageInput` types accept plain string IDs. The runtime validates these inputs and applies
20
- schema defaults. ID brands do not check record existence or access.
18
+ ### Return bridge data
19
+
20
+ Handlers return data in the bridge's shared types. Use bridge builders to construct complete objects
21
+ from application records.
22
+
23
+ The host validates result shapes, matches responses to requests, and converts responses for the
24
+ block's protocol version. Your application checks that records exist and that the viewer may perform
25
+ the requested operation.
21
26
 
22
27
  Query filters and sorts are validated against the actual bound database schema before
23
28
  `queryDataSource` runs. See the [wire reference](bridge/protocol.md#data-sources) for
@@ -42,11 +47,15 @@ import type {
42
47
  CustomBlockHostDataSourcesPayload,
43
48
  CustomBlockHostHandlers,
44
49
  } from "@notionhq/custom-blocks-host"
45
- import type { CustomBlockManifest, BridgePage } from "@notionhq/custom-blocks-host/protocol"
50
+ import {
51
+ makeBridgePage,
52
+ type BridgeCustomBlockManifest,
53
+ type BridgePage,
54
+ } from "@notionhq/custom-blocks-host/protocol"
46
55
 
47
56
  const tasksId = "44444444-4444-4444-8444-444444444444"
48
57
 
49
- const manifest: CustomBlockManifest = {
58
+ const manifest: BridgeCustomBlockManifest = {
50
59
  version: 1,
51
60
  dataSources: {
52
61
  tasks: {
@@ -110,8 +119,7 @@ const handlers: CustomBlockHostHandlers = {
110
119
  }
111
120
 
112
121
  const items: BridgePage[] = [
113
- {
114
- object: "page",
122
+ makeBridgePage({
115
123
  id: "55555555-5555-4555-8555-555555555555",
116
124
  parent: { type: "data_source_id", data_source_id: tasksId },
117
125
  is_archived: false,
@@ -119,7 +127,7 @@ const handlers: CustomBlockHostHandlers = {
119
127
  properties: {
120
128
  Estimate: { id: "estimate-id", type: "number", number: estimate },
121
129
  },
122
- },
130
+ }),
123
131
  ]
124
132
 
125
133
  return {
package/docs/lifecycle.md CHANGED
@@ -60,6 +60,20 @@ late results. Manifest and state preparation providers must respect their `signa
60
60
  `setCurrentUser()` hold updates during initialization and send them after `initResult.success`. For
61
61
  data-source query refreshes, see [Handlers and data](handlers.md#refresh-active-queries).
62
62
 
63
+ `setDataSources()` returns a synchronous `CustomBlockHostSetDataSourcesResult`. Success means local
64
+ acceptance only; it does not guarantee sandbox delivery or successful initialization. Existing
65
+ callers can ignore the return value. Malformed bindings can throw during schema parsing.
66
+
67
+ - `{ status: "success" }`: accepts the bindings into local state.
68
+ - `{ status: "error", error: { code, message, isRetryable } }`: logs a warning, keeps the last
69
+ accepted bindings and pending update, and sends no update. Codes are
70
+ `missing_data_source_binding`, `missing_property_binding`, and `invalid_property_binding`. All
71
+ have `isRetryable: false`; correct the bindings before resubmitting.
72
+
73
+ Pre-connect updates are checked against the selected manifest during initialization. Later updates
74
+ are validated once that manifest is available. Accepted updates wait for `initResult.success` before
75
+ sending; after failed initialization, they only change local state and do not restart it.
76
+
63
77
  ## Callbacks
64
78
 
65
79
  The required `onStatusChange(state)` callback receives the `CustomBlockHostStatus` union:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notionhq/custom-blocks-host",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "Reusable host runtime for Notion custom blocks.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -5,10 +5,10 @@ import type {
5
5
  import {
6
6
  TEXT_FALLBACK_PROPERTY_PROTOCOL_VERSION,
7
7
  UNIFIED_PAGE_PROTOCOL_VERSION,
8
- } from "@notionhq/custom-blocks-protocol/protocolVersion.js"
9
- import { addMetadataReadSchemasForProtocol3To4 } from "./addMetadataReadSchemasForProtocol3To4.js"
10
- import { normalizePageResultsForProtocol3To5 } from "./normalizePageResultsForProtocol3To5.js"
11
- import { normalizePageResultsForProtocol6 } from "./normalizePageResultsForProtocol6.js"
8
+ } from "@notionhq/custom-blocks-protocol/utils/protocolVersion.js"
9
+ import { addMetadataReadSchemasForProtocol3To4 } from "./protocol3To4/addMetadataReadSchemasForProtocol3To4.js"
10
+ import { normalizePageResultsForProtocol3To5 } from "./protocol3To5/normalizePageResultsForProtocol3To5.js"
11
+ import { normalizePageResultsForProtocol6 } from "./protocol6/normalizePageResultsForProtocol6.js"
12
12
 
13
13
  /**
14
14
  * Encodes current host messages for the sandbox's declared protocol. Handlers use
@@ -1,6 +1,6 @@
1
- import type { bridgePageSchema } from "@notionhq/custom-blocks-protocol/pages/page.js"
1
+ import type { bridgePageSchema } from "@notionhq/custom-blocks-protocol/pages/bridgePage.js"
2
2
  import type { InferOutput } from "valibot"
3
- import { unreachable } from "../utils.js"
3
+ import { unreachable } from "../../utils/unreachable.js"
4
4
 
5
5
  /**
6
6
  * Shared field conversion for receivers that cannot decode text fallback objects.
@@ -1,4 +1,4 @@
1
- import { NOTION_BUILTIN_PROPERTY_SCHEMAS } from "@notionhq/custom-blocks-protocol/dataSources/propertySchema.js"
1
+ import { NOTION_BUILTIN_PROPERTY_SCHEMAS } from "@notionhq/custom-blocks-protocol/dataSources/properties/propertySchema.js"
2
2
  import type { HostToSandboxMessage } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
3
3
 
4
4
  /**
@@ -1,10 +1,8 @@
1
1
  import type { HostToSandboxMessageWithProtocol3To5Compatibility } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
2
- import {
3
- toPageForProtocol3To5,
4
- toQueryPageForProtocol3To5,
5
- } from "./pageForProtocol3To5.js"
6
- import type { SuccessfulPageResult } from "./pageResult.js"
7
- import { toPageWithNullTextFallbackProperties } from "./pageWithNullTextFallbackProperties.js"
2
+ import type { SuccessfulPageResult } from "../pages/pageResult.js"
3
+ import { toPageWithNullTextFallbackProperties } from "../pages/toPageWithNullTextFallbackProperties.js"
4
+ import { toPageForProtocol3To5 } from "./toPageForProtocol3To5.js"
5
+ import { toQueryPageForProtocol3To5 } from "./toQueryPageForProtocol3To5.js"
8
6
 
9
7
  /**
10
8
  * Encodes current pages for protocols 3–5. Query values are flat and ID-keyed.
@@ -0,0 +1,25 @@
1
+ import type { NotionDataSourceValue } from "@notionhq/custom-blocks-protocol/compatibility/protocol3To5/dataSourceValue.js"
2
+
3
+ /**
4
+ * Converts a timestamp to the UTC date/time object used by protocol 3–5 queries.
5
+ * Missing or invalid timestamps produce undefined; time is stored to the minute.
6
+ *
7
+ * Delete when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION >= 6.
8
+ */
9
+ export function toDateTimeValueForProtocol3To5(
10
+ value: string | number | null | undefined,
11
+ ): NotionDataSourceValue | undefined {
12
+ if (value === undefined || value === null || value === "") {
13
+ return undefined
14
+ }
15
+ const date = new Date(value)
16
+ if (!Number.isFinite(date.getTime())) {
17
+ return undefined
18
+ }
19
+ return {
20
+ type: "datetime",
21
+ start_date: date.toISOString().slice(0, 10),
22
+ start_time: date.toISOString().slice(11, 16),
23
+ time_zone: "UTC",
24
+ }
25
+ }
@@ -0,0 +1,29 @@
1
+ import type { BridgePageForProtocol3To5 } from "@notionhq/custom-blocks-protocol/compatibility/protocol3To5/bridgePage.js"
2
+ import type { BridgePage } from "@notionhq/custom-blocks-protocol/pages/bridgePage.js"
3
+
4
+ /**
5
+ * Converts current page data to the page-operation format used by protocols 3–5.
6
+ * Keys property objects by raw ID and omits null properties. Optional icons,
7
+ * covers, timestamps, and URLs use undefined instead of null in this format.
8
+ * Call after clearing property objects unsupported by these protocols.
9
+ *
10
+ * Delete when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION >= 6.
11
+ */
12
+ export function toPageForProtocol3To5(
13
+ page: BridgePage,
14
+ ): BridgePageForProtocol3To5 {
15
+ return {
16
+ ...page,
17
+ properties: Object.fromEntries(
18
+ Object.values(page.properties).flatMap(property =>
19
+ property ? [[property.id, property]] : [],
20
+ ),
21
+ ),
22
+ icon: page.icon ?? undefined,
23
+ cover: page.cover ?? undefined,
24
+ created_time: page.created_time ?? undefined,
25
+ last_edited_time: page.last_edited_time ?? undefined,
26
+ url: page.url ?? undefined,
27
+ public_url: page.public_url ?? undefined,
28
+ }
29
+ }
@@ -0,0 +1,102 @@
1
+ import type { NotionDataSourceValue } from "@notionhq/custom-blocks-protocol/compatibility/protocol3To5/dataSourceValue.js"
2
+ import type { BridgePagePropertyValue } from "@notionhq/custom-blocks-protocol/pages/properties/bridgePagePropertyValue.js"
3
+ import { toNotionDateValue } from "../../dataSources/properties/toNotionDateValue.js"
4
+ import { unreachable } from "../../utils/unreachable.js"
5
+ import { toDateTimeValueForProtocol3To5 } from "./toDateTimeValueForProtocol3To5.js"
6
+
7
+ /**
8
+ * Converts a typed page property to the scalar, list, record-reference, or
9
+ * date/time value used by protocol 3–5 query results.
10
+ *
11
+ * Delete when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION >= 6.
12
+ */
13
+ export function toPropertyValueForProtocol3To5(
14
+ property: BridgePagePropertyValue,
15
+ ): NotionDataSourceValue | undefined {
16
+ switch (property.type) {
17
+ case "title":
18
+ return plainText(property.title)
19
+ case "rich_text":
20
+ return plainText(property.rich_text)
21
+ case "number":
22
+ return property.number ?? undefined
23
+ case "checkbox":
24
+ return property.checkbox
25
+ case "url":
26
+ return property.url ?? ""
27
+ case "email":
28
+ return property.email ?? ""
29
+ case "phone_number":
30
+ return property.phone_number ?? ""
31
+ case "select":
32
+ return property.select?.name
33
+ case "status":
34
+ return property.status?.name
35
+ case "multi_select":
36
+ return property.multi_select.flatMap(option => option.name ?? [])
37
+ case "date":
38
+ return property.date ? toNotionDateValue(property.date) : undefined
39
+ case "people":
40
+ return property.people.map(person =>
41
+ person.object === "group"
42
+ ? {
43
+ id: person.id,
44
+ table: "space_permission_group",
45
+ spaceId: person.id.split("|")[1],
46
+ }
47
+ : { id: person.id, table: "notion_user" },
48
+ )
49
+ case "relation":
50
+ return property.relation.map(page => ({ id: page.id, table: "block" }))
51
+ case "files":
52
+ return property.files.map(file => file.name).join(",")
53
+ case "unique_id":
54
+ return property.unique_id
55
+ case "button":
56
+ return property.button
57
+ case "formula":
58
+ return property.formula
59
+ case "location":
60
+ return property.location
61
+ case "rollup":
62
+ return property.rollup
63
+ case "verification":
64
+ return property.verification
65
+ case "place":
66
+ return ""
67
+ case "created_time":
68
+ return toDateTimeValueForProtocol3To5(property.created_time)
69
+ case "last_edited_time":
70
+ return toDateTimeValueForProtocol3To5(property.last_edited_time)
71
+ case "last_visited_time":
72
+ return toDateTimeValueForProtocol3To5(property.last_visited_time)
73
+ case "created_by":
74
+ return property.created_by ? [property.created_by] : undefined
75
+ case "last_edited_by":
76
+ return property.last_edited_by ? [property.last_edited_by] : undefined
77
+ default:
78
+ return unreachable(property)
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Flattens rich-text items to the string used by protocol 3–5 query values.
84
+ *
85
+ * Delete when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION >= 6.
86
+ */
87
+ function plainText(items: Record<string, unknown>[]): string {
88
+ return items
89
+ .map(item => {
90
+ if (typeof item.plain_text === "string") {
91
+ return item.plain_text
92
+ }
93
+ const text = item.text
94
+ return text &&
95
+ typeof text === "object" &&
96
+ "content" in text &&
97
+ typeof text.content === "string"
98
+ ? text.content
99
+ : ""
100
+ })
101
+ .join("")
102
+ }
@@ -0,0 +1,35 @@
1
+ import type { NotionDataSourceValue } from "@notionhq/custom-blocks-protocol/compatibility/protocol3To5/dataSourceValue.js"
2
+ import type { BridgePage } from "@notionhq/custom-blocks-protocol/pages/bridgePage.js"
3
+ import { toDateTimeValueForProtocol3To5 } from "./toDateTimeValueForProtocol3To5.js"
4
+ import { toPropertyValueForProtocol3To5 } from "./toPropertyValueForProtocol3To5.js"
5
+
6
+ /**
7
+ * Converts a current page to a protocol 3–5 query row, keeping its ID and archive
8
+ * flags while flattening typed property objects into raw-ID-keyed values.
9
+ * Copies page creation and edit metadata into the reserved property IDs that
10
+ * these query readers expect.
11
+ *
12
+ * Delete when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION >= 6.
13
+ */
14
+ export function toQueryPageForProtocol3To5(page: BridgePage) {
15
+ const propertiesById: Record<string, NotionDataSourceValue | undefined> = {}
16
+ for (const property of Object.values(page.properties)) {
17
+ if (property) {
18
+ propertiesById[property.id] = toPropertyValueForProtocol3To5(property)
19
+ }
20
+ }
21
+ return {
22
+ id: page.id,
23
+ is_archived: page.is_archived,
24
+ in_trash: page.in_trash,
25
+ // Reserved metadata IDs retain their historical meaning even if an actual
26
+ // property uses the same ID. Binding schemas use the same precedence.
27
+ propertiesById: {
28
+ ...propertiesById,
29
+ created_time: toDateTimeValueForProtocol3To5(page.created_time),
30
+ last_edited_time: toDateTimeValueForProtocol3To5(page.last_edited_time),
31
+ created_by: page.created_by ? [page.created_by] : undefined,
32
+ last_edited_by: page.last_edited_by ? [page.last_edited_by] : undefined,
33
+ },
34
+ }
35
+ }
@@ -1,6 +1,6 @@
1
1
  import type { HostToSandboxMessage } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
2
- import type { SuccessfulPageResult } from "./pageResult.js"
3
- import { toPageWithNullTextFallbackProperties } from "./pageWithNullTextFallbackProperties.js"
2
+ import type { SuccessfulPageResult } from "../pages/pageResult.js"
3
+ import { toPageWithNullTextFallbackProperties } from "../pages/toPageWithNullTextFallbackProperties.js"
4
4
 
5
5
  /**
6
6
  * Encodes protocol 6 pages, whose receivers require null for text fallback properties.