@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,56 @@
1
+ import { customBlockPageSchema } from "@notionhq/custom-blocks-protocol/context/containingPage.js"
2
+ import { notionContrastModeSchema } from "@notionhq/custom-blocks-protocol/context/contrast.js"
3
+ import { notionParentSchema } from "@notionhq/custom-blocks-protocol/context/parent.js"
4
+ import { notionThemeSchema } from "@notionhq/custom-blocks-protocol/context/theme.js"
5
+ import { bridgeDataSourceBindingsSchema } from "@notionhq/custom-blocks-protocol/dataSources/bridgeDataSourceBindings.js"
6
+ import { customBlockInitErrorInfoSchema } from "@notionhq/custom-blocks-protocol/handshake/init.js"
7
+ import type { BridgeCustomBlockManifest } from "@notionhq/custom-blocks-protocol/manifest/manifest.js"
8
+ import { manifestSchema } from "@notionhq/custom-blocks-protocol/manifest/manifest.js"
9
+ import { bridgeUserSchema } from "@notionhq/custom-blocks-protocol/users/bridgeUser.js"
10
+ import { notionBlockIdSchema } from "@notionhq/custom-blocks-protocol/utils/ids.js"
11
+ import * as v from "valibot"
12
+ import type { CustomBlockHostResult } from "../messages/result.js"
13
+
14
+ export const customBlockHostInitialStateSchema = v.object({
15
+ theme: notionThemeSchema,
16
+ /**
17
+ * Defaults to standard for existing host integrations.
18
+ * TODO(custom-blocks): Make this required when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION increases to 4.
19
+ */
20
+ contrastMode: v.optional(notionContrastModeSchema),
21
+ blockId: notionBlockIdSchema,
22
+ parent: notionParentSchema,
23
+ page: customBlockPageSchema,
24
+ manifest: manifestSchema,
25
+ dataSources: v.object({ bindings: bridgeDataSourceBindingsSchema }),
26
+ currentUser: bridgeUserSchema,
27
+ })
28
+
29
+ export type CustomBlockHostInitialState = v.InferInput<
30
+ typeof customBlockHostInitialStateSchema
31
+ >
32
+
33
+ export type CustomBlockHostInitialStateResult = CustomBlockHostResult<{
34
+ initialState: CustomBlockHostInitialState
35
+ }>
36
+
37
+ export const customBlockHostPreparedStateResultSchema = v.variant("status", [
38
+ v.object({
39
+ status: v.literal("success"),
40
+ initialState: v.omit(customBlockHostInitialStateSchema, ["manifest"]),
41
+ }),
42
+ v.object({
43
+ status: v.literal("error"),
44
+ error: customBlockInitErrorInfoSchema,
45
+ }),
46
+ ])
47
+
48
+ /** Adapter-owned state or an explicit preparation error. The host adds the manifest to init. */
49
+ export type CustomBlockHostPreparedStateResult = CustomBlockHostResult<{
50
+ initialState: Omit<CustomBlockHostInitialState, "manifest">
51
+ }>
52
+
53
+ export type CustomBlockHostPrepareInitialState = (args: {
54
+ manifest: BridgeCustomBlockManifest
55
+ signal: AbortSignal
56
+ }) => Promise<CustomBlockHostPreparedStateResult>
@@ -0,0 +1,4 @@
1
+ import type { resizeMessageSchema } from "@notionhq/custom-blocks-protocol/context/messages/resize.js"
2
+ import type { InferInput } from "valibot"
3
+
4
+ export type ResizeMessageInput = InferInput<typeof resizeMessageSchema>
@@ -1,80 +1,80 @@
1
- import type { notionContrastModeSchema } from "@notionhq/custom-blocks-protocol/contrast.js"
2
- import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/dataSource.js"
3
- import { notionDataSourceBindingsSchema } from "@notionhq/custom-blocks-protocol/dataSources/dataSource.js"
4
- import type { NotionDataSourceId } from "@notionhq/custom-blocks-protocol/ids.js"
5
- import { notionDataSourceIdSchema } from "@notionhq/custom-blocks-protocol/ids.js"
6
- import type { CustomBlockManifest } from "@notionhq/custom-blocks-protocol/manifest.js"
7
- import {
8
- type HostToSandboxMessage,
9
- hostToSandboxMessageSchema,
10
- } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
1
+ import type { customBlockPageSchema } from "@notionhq/custom-blocks-protocol/context/containingPage.js"
2
+ import type { NotionContrastMode } from "@notionhq/custom-blocks-protocol/context/contrast.js"
3
+ import type { notionParentSchema } from "@notionhq/custom-blocks-protocol/context/parent.js"
4
+ import type { NotionTheme } from "@notionhq/custom-blocks-protocol/context/theme.js"
5
+ import { bridgeDataSourceBindingsSchema } from "@notionhq/custom-blocks-protocol/dataSources/bridgeDataSourceBindings.js"
6
+ import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/collectionSchema.js"
7
+ import type {
8
+ CustomBlockQueryDataSourceErrorInfo,
9
+ QueryDataSourceMessage,
10
+ queryDataSourceResultMessageSchema,
11
+ } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
12
+ import { resolveDataSourceBinding } from "@notionhq/custom-blocks-protocol/dataSources/resolveDataSourceBinding.js"
13
+ import type { CustomBlockInitErrorInfo } from "@notionhq/custom-blocks-protocol/handshake/init.js"
11
14
  import {
12
- type CustomBlockInitErrorInfo,
13
15
  CustomBlockInitializationError,
14
16
  initMessageSchema,
15
- } from "@notionhq/custom-blocks-protocol/messages/init.js"
17
+ } from "@notionhq/custom-blocks-protocol/handshake/init.js"
18
+ import type { BridgeCustomBlockManifest } from "@notionhq/custom-blocks-protocol/manifest/manifest.js"
19
+ import type { HostToSandboxMessage } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
20
+ import { hostToSandboxMessageSchema } from "@notionhq/custom-blocks-protocol/messages/hostToSandbox.js"
16
21
  import type { InvalidSandboxMessage } from "@notionhq/custom-blocks-protocol/messages/invalidSandboxMessage.js"
22
+ import type { SandboxToHostMessage } from "@notionhq/custom-blocks-protocol/messages/sandboxToHost.js"
17
23
  import type {
18
24
  OpenExternalUrlMessage,
19
25
  OpenExternalUrlResultMessage,
20
- } from "@notionhq/custom-blocks-protocol/messages/openExternalUrl.js"
21
- import type { QueryDataSourceMessage } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
22
- import type {
23
- CustomBlockQueryDataSourceErrorInfo,
24
- queryDataSourceResultMessageSchema,
25
- } from "@notionhq/custom-blocks-protocol/messages/queryDataSourceResult.js"
26
- import type { SandboxToHostMessage } from "@notionhq/custom-blocks-protocol/messages/sandboxToHost.js"
27
- import type { customBlockPageSchema } from "@notionhq/custom-blocks-protocol/pages/page.js"
28
- import type { notionParentSchema } from "@notionhq/custom-blocks-protocol/parent.js"
29
- import { LATEST_BRIDGE_PROTOCOL_VERSION } from "@notionhq/custom-blocks-protocol/protocolVersion.js"
30
- import type { notionThemeSchema } from "@notionhq/custom-blocks-protocol/theme.js"
31
- import type { notionUserSchema } from "@notionhq/custom-blocks-protocol/users/user.js"
26
+ } from "@notionhq/custom-blocks-protocol/navigation/openExternalUrl.js"
27
+ import type { BridgeUser } from "@notionhq/custom-blocks-protocol/users/bridgeUser.js"
28
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
29
+ import type { NotionDataSourceId } from "@notionhq/custom-blocks-protocol/utils/ids.js"
30
+ import { notionDataSourceIdSchema } from "@notionhq/custom-blocks-protocol/utils/ids.js"
31
+ import { LATEST_BRIDGE_PROTOCOL_VERSION } from "@notionhq/custom-blocks-protocol/utils/protocolVersion.js"
32
32
  import type { InferInput } from "valibot"
33
33
  import * as v from "valibot"
34
34
  import { normalizeHostToSandboxMessage } from "./compatibility/normalizeHostToSandboxMessage.js"
35
- import { isAllowedLocalPreviewUrl } from "./isAllowedLocalPreviewUrl.js"
36
- import {
37
- contextUnavailableError,
38
- invalidLocalPreviewUrlError,
39
- invalidPropertyBindingError,
40
- missingDataSourceBindingError,
41
- missingPropertyBindingError,
42
- unknownInitializationError,
43
- } from "./lifecycle/initErrors.js"
44
- import { createInitializationController } from "./lifecycle/initializationController.js"
45
- import { resolveManifest } from "./lifecycle/resolveManifest.js"
46
35
  import type {
47
- CustomBlockHostDataSourcesPayload,
48
36
  CustomBlockHostInitialState,
49
37
  CustomBlockHostInitialStateResult,
50
- CustomBlockHostManifestResult,
51
- CustomBlockHostNormalizedDataSourcesPayload,
52
- CustomBlockHostNormalizedManifestResult,
53
38
  CustomBlockHostPrepareInitialState,
54
- CustomBlockHostStatus,
55
- CustomBlockManifestSource,
56
- } from "./lifecycle/types.js"
39
+ } from "./context/initialState.js"
57
40
  import {
58
41
  customBlockHostInitialStateSchema,
59
- customBlockHostManifestResultSchema,
60
42
  customBlockHostPreparedStateResultSchema,
61
- } from "./lifecycle/types.js"
62
- import { parseExternalUrl } from "./messages/parseExternalUrl.js"
63
- import { createSandboxMessageRouter } from "./messages/sandboxMessageRouter.js"
43
+ } from "./context/initialState.js"
44
+ import type { QuerySubscriptionToken } from "./dataSources/queries/querySubscriptions.js"
45
+ import { QuerySubscriptions } from "./dataSources/queries/querySubscriptions.js"
46
+ import type {
47
+ CustomBlockHostDataSourcesPayload,
48
+ CustomBlockHostNormalizedDataSourcesPayload,
49
+ CustomBlockHostQueryDataSourceResult,
50
+ } from "./dataSources/types.js"
51
+ import { validateQueryDataSourceFilter } from "./dataSources/validation/validateQueryDataSourceFilter.js"
52
+ import { validateQueryDataSourceSorts } from "./dataSources/validation/validateQueryDataSourceSorts.js"
53
+ import { createInitializationController } from "./lifecycle/createInitializationController.js"
54
+ import { contextUnavailableError } from "./lifecycle/errors/contextUnavailableError.js"
55
+ import { invalidLocalPreviewUrlError } from "./lifecycle/errors/invalidLocalPreviewUrlError.js"
56
+ import { invalidPropertyBindingError } from "./lifecycle/errors/invalidPropertyBindingError.js"
57
+ import { missingDataSourceBindingError } from "./lifecycle/errors/missingDataSourceBindingError.js"
58
+ import { missingPropertyBindingError } from "./lifecycle/errors/missingPropertyBindingError.js"
59
+ import { unknownInitializationError } from "./lifecycle/errors/unknownInitializationError.js"
60
+ import { isAllowedLocalPreviewUrl } from "./lifecycle/isAllowedLocalPreviewUrl.js"
64
61
  import type {
65
62
  CustomBlockHostFailure,
66
- CustomBlockHostHandlers,
67
- CustomBlockHostLogDirection,
68
- } from "./messages/types.js"
69
- import { MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION } from "./protocolVersion.js"
70
- import {
71
- QuerySubscriptions,
72
- type QuerySubscriptionToken,
73
- } from "./queries/querySubscriptions.js"
74
- import type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js"
75
- import { validateQueryDataSourceFilter } from "./queries/validateQueryDataSourceFilter.js"
76
- import { validateQueryDataSourceSorts } from "./queries/validateQueryDataSourceSorts.js"
77
- import { unreachable } from "./utils.js"
63
+ CustomBlockHostStatus,
64
+ } from "./lifecycle/types.js"
65
+ import { resolveManifest } from "./manifest/resolveManifest.js"
66
+ import type {
67
+ CustomBlockHostManifestResult,
68
+ CustomBlockHostNormalizedManifestResult,
69
+ CustomBlockManifestSource,
70
+ } from "./manifest/types.js"
71
+ import { customBlockHostManifestResultSchema } from "./manifest/types.js"
72
+ import { createSandboxMessageRouter } from "./messages/createSandboxMessageRouter.js"
73
+ import type { CustomBlockHostHandlers } from "./messages/handlers.js"
74
+ import type { CustomBlockHostLogDirection } from "./messages/logging.js"
75
+ import { parseExternalUrl } from "./navigation/parseExternalUrl.js"
76
+ import { MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION } from "./utils/protocolVersion.js"
77
+ import { unreachable } from "./utils/unreachable.js"
78
78
 
79
79
  // Bridge protocol version that introduced page: { type: "unavailable" }.
80
80
  // Earlier SDKs cannot represent this context, so the host reports context_unavailable.
@@ -113,19 +113,33 @@ export type CustomBlockHostOptions = {
113
113
  initialStateTimeoutMs?: number
114
114
  }
115
115
 
116
+ /** Reports local acceptance, not sandbox delivery or initialization success. */
117
+ export type CustomBlockHostSetDataSourcesResult =
118
+ | { status: "success" }
119
+ | {
120
+ status: "error"
121
+ error: CustomBlockErrorInfo<
122
+ | "missing_data_source_binding"
123
+ | "missing_property_binding"
124
+ | "invalid_property_binding"
125
+ >
126
+ }
127
+
116
128
  export type CustomBlockHostHandle = {
117
129
  stop: () => void
118
- setTheme: (theme: InferInput<typeof notionThemeSchema>) => void
119
- setContrastMode: (
120
- contrastMode: InferInput<typeof notionContrastModeSchema>,
121
- ) => void
130
+ setTheme: (theme: NotionTheme) => void
131
+ setContrastMode: (contrastMode: NotionContrastMode) => void
122
132
  setParent: (parent: InferInput<typeof notionParentSchema>) => void
123
133
  setPage: (page: InferInput<typeof customBlockPageSchema>) => void
124
- setDataSources: (dataSources: CustomBlockHostDataSourcesPayload) => void
125
- setCurrentUser: (currentUser: InferInput<typeof notionUserSchema>) => void
126
- refreshQuery: (args: {
127
- dataSourceId: InferInput<typeof notionDataSourceIdSchema>
128
- }) => void
134
+ /**
135
+ * Reports synchronous local acceptance, not sandbox delivery or initialization success.
136
+ * Malformed bindings can throw during schema parsing.
137
+ */
138
+ setDataSources: (
139
+ dataSources: CustomBlockHostDataSourcesPayload,
140
+ ) => CustomBlockHostSetDataSourcesResult
141
+ setCurrentUser: (currentUser: BridgeUser) => void
142
+ refreshQuery: (args: { dataSourceId: string }) => void
129
143
  }
130
144
 
131
145
  /**
@@ -168,7 +182,7 @@ export function createCustomBlockHost(
168
182
  let pendingState: HostStateUpdates = {}
169
183
  let hasPreparedInitialState = false
170
184
  const preparationController = new AbortController()
171
- let manifest: CustomBlockManifest | undefined
185
+ let manifest: BridgeCustomBlockManifest | undefined
172
186
  let activeDataSources: CustomBlockHostNormalizedDataSourcesPayload | undefined
173
187
  let sandboxBridgeProtocolVersion = LATEST_BRIDGE_PROTOCOL_VERSION
174
188
  const querySubscriptions = new QuerySubscriptions(subscriptionId => {
@@ -545,7 +559,7 @@ export function createCustomBlockHost(
545
559
  }
546
560
 
547
561
  async function prepare(
548
- connectManifest: CustomBlockManifest | undefined,
562
+ connectManifest: BridgeCustomBlockManifest | undefined,
549
563
  ): Promise<CustomBlockHostInitialStateResult> {
550
564
  preparationController.signal.throwIfAborted()
551
565
  const manifestResult = await resolveManifest({
@@ -669,23 +683,27 @@ export function createCustomBlockHost(
669
683
  const normalizedDataSources: CustomBlockHostNormalizedDataSourcesPayload =
670
684
  {
671
685
  bindings: v.parse(
672
- notionDataSourceBindingsSchema,
686
+ bridgeDataSourceBindingsSchema,
673
687
  dataSources.bindings,
674
688
  ),
675
689
  }
676
- if (
677
- initializationController.hasConnectedSandbox &&
678
- manifest !== undefined &&
679
- getBindingError(manifest, normalizedDataSources) !== undefined
680
- ) {
690
+ const bindingError =
691
+ initializationController.hasConnectedSandbox && manifest !== undefined
692
+ ? getBindingError(manifest, normalizedDataSources)
693
+ : undefined
694
+ if (bindingError !== undefined) {
681
695
  emit("warn", {
682
696
  message: "Ignored invalid data source bindings update",
683
697
  payload: normalizedDataSources,
684
698
  })
685
- return
699
+ return {
700
+ status: "error",
701
+ error: bindingError,
702
+ }
686
703
  }
687
704
  activeDataSources = normalizedDataSources
688
705
  updateHostState({ dataSources: normalizedDataSources })
706
+ return { status: "success" }
689
707
  },
690
708
  refreshQuery({ dataSourceId }) {
691
709
  if (initializationController.status !== "initialized") {
@@ -742,30 +760,32 @@ function getCollectionSchema(
742
760
  }
743
761
 
744
762
  function getBindingError(
745
- manifest: CustomBlockManifest,
763
+ manifest: BridgeCustomBlockManifest,
746
764
  dataSources: CustomBlockHostDataSourcesPayload,
747
- ): CustomBlockInitErrorInfo | undefined {
765
+ ) {
748
766
  for (const [dataSourceKey, manifestDataSource] of Object.entries(
749
767
  manifest.dataSources,
750
768
  )) {
751
769
  const binding = dataSources.bindings[dataSourceKey]
770
+ if (binding?.inaccessible === true) {
771
+ continue
772
+ }
773
+ const resolvedBinding = resolveDataSourceBinding({
774
+ manifestDataSource,
775
+ collectionSchema: binding?.collectionSchema,
776
+ propertyIdsByKey: binding?.propertyIdsByKey,
777
+ })
752
778
  if (
753
779
  binding?.collectionPointer === undefined ||
754
- binding.collectionSchema === undefined
780
+ resolvedBinding.status === "missing_schema"
755
781
  ) {
756
782
  return missingDataSourceBindingError()
757
783
  }
758
- for (const [propertyKey, manifestProperty] of Object.entries(
759
- manifestDataSource.properties ?? {},
760
- )) {
761
- const propertyId = binding.propertyIdsByKey?.[propertyKey]
762
- if (propertyId === undefined) {
784
+ for (const property of resolvedBinding.properties) {
785
+ if (property.status === "missing") {
763
786
  return missingPropertyBindingError()
764
787
  }
765
- if (
766
- binding.collectionSchema.propertiesById[propertyId]?.type !==
767
- manifestProperty.type
768
- ) {
788
+ if (property.status !== "mapped") {
769
789
  return invalidPropertyBindingError()
770
790
  }
771
791
  }
@@ -1,4 +1,4 @@
1
- import type { NotionPropertyType } from "@notionhq/custom-blocks-protocol/dataSources/propertySchema.js"
1
+ import type { NotionPropertyType } from "@notionhq/custom-blocks-protocol/dataSources/properties/propertySchema.js"
2
2
 
3
3
  export type AutoBindableProperty = {
4
4
  name: string
@@ -3,8 +3,8 @@ import type {
3
3
  NotionDateRange,
4
4
  NotionDateTime,
5
5
  NotionDateTimeRange,
6
- } from "@notionhq/custom-blocks-protocol/dataSources/dateValue.js"
7
- import type { NotionDateInput } from "@notionhq/custom-blocks-protocol/pages/page.js"
6
+ } from "@notionhq/custom-blocks-protocol/dataSources/properties/dateValue.js"
7
+ import type { NotionDateInput } from "@notionhq/custom-blocks-protocol/pages/properties/dateInput.js"
8
8
 
9
9
  export type CustomBlockDateValue =
10
10
  | NotionDate
@@ -1,5 +1,5 @@
1
- import type { NotionDataSourceId } from "@notionhq/custom-blocks-protocol/ids.js"
2
- import type { QueryDataSourceMessage } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
1
+ import type { QueryDataSourceMessage } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
2
+ import type { NotionDataSourceId } from "@notionhq/custom-blocks-protocol/utils/ids.js"
3
3
 
4
4
  export type QueryRefresh = {
5
5
  message: QueryDataSourceMessage
@@ -0,0 +1,23 @@
1
+ import type { bridgeDataSourceBindingsSchema } from "@notionhq/custom-blocks-protocol/dataSources/bridgeDataSourceBindings.js"
2
+ import type { queryDataSourceMessageSchema } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
3
+ import type { BridgePage } from "@notionhq/custom-blocks-protocol/pages/bridgePage.js"
4
+ import type * as v from "valibot"
5
+ import type { InferInput } from "valibot"
6
+ import type { CustomBlockHostResult } from "../messages/result.js"
7
+
8
+ export type QueryDataSourceMessageInput = InferInput<
9
+ typeof queryDataSourceMessageSchema
10
+ >
11
+
12
+ export type CustomBlockHostDataSourcesPayload = {
13
+ bindings: v.InferInput<typeof bridgeDataSourceBindingsSchema>
14
+ }
15
+
16
+ export type CustomBlockHostNormalizedDataSourcesPayload = {
17
+ bindings: v.InferOutput<typeof bridgeDataSourceBindingsSchema>
18
+ }
19
+
20
+ export type CustomBlockHostQueryDataSourceResult = CustomBlockHostResult<{
21
+ items: BridgePage[]
22
+ hasMore: boolean
23
+ }>
@@ -1,21 +1,19 @@
1
- import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/dataSource.js"
2
- import type {
3
- CustomBlockContainsFilterOperator,
4
- CustomBlockOptionFilterOperator,
5
- ResolvedCustomBlockDataSourceFilter,
6
- ResolvedCustomBlockDataSourcePropertyFilter,
7
- } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
8
- import { customBlockRelationFilterOperatorSchema } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
9
- import type { CustomBlockQueryDataSourceErrorInfo } from "@notionhq/custom-blocks-protocol/messages/queryDataSourceResult.js"
1
+ import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/collectionSchema.js"
2
+ import type { BridgeDataSourceFilter } from "@notionhq/custom-blocks-protocol/dataSources/filters/bridgeDataSourceFilter.js"
3
+ import type { BridgeDataSourceFilterCondition } from "@notionhq/custom-blocks-protocol/dataSources/filters/bridgeDataSourceFilterCondition.js"
4
+ import type { CustomBlockContainsFilterOperator } from "@notionhq/custom-blocks-protocol/dataSources/filters/containsFilterOperator.js"
5
+ import type { CustomBlockOptionFilterOperator } from "@notionhq/custom-blocks-protocol/dataSources/filters/optionFilterOperator.js"
6
+ import { customBlockRelationFilterOperatorSchema } from "@notionhq/custom-blocks-protocol/dataSources/filters/relationFilterOperator.js"
7
+ import type { CustomBlockQueryDataSourceErrorInfo } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
10
8
  import { is } from "valibot"
11
- import { unreachable } from "../utils.js"
9
+ import { unreachable } from "../../utils/unreachable.js"
12
10
 
13
11
  type OptionFilterOperator =
14
12
  | CustomBlockOptionFilterOperator
15
13
  | CustomBlockContainsFilterOperator
16
14
 
17
15
  export function validateQueryDataSourceFilter(
18
- filter: ResolvedCustomBlockDataSourceFilter | undefined,
16
+ filter: BridgeDataSourceFilter | undefined,
19
17
  collectionSchema: NotionCollectionSchema,
20
18
  ): CustomBlockQueryDataSourceErrorInfo | undefined {
21
19
  if (filter === undefined) {
@@ -33,7 +31,7 @@ export function validateQueryDataSourceFilter(
33
31
  }
34
32
 
35
33
  function validatePropertyFilter(
36
- filter: ResolvedCustomBlockDataSourcePropertyFilter,
34
+ filter: BridgeDataSourceFilterCondition,
37
35
  collectionSchema: NotionCollectionSchema,
38
36
  ): CustomBlockQueryDataSourceErrorInfo | undefined {
39
37
  if (!Object.hasOwn(collectionSchema.propertiesById, filter.propertyId)) {
@@ -109,7 +107,7 @@ function validatePropertyFilter(
109
107
  }
110
108
  }
111
109
 
112
- function getOptionFilter(filter: ResolvedCustomBlockDataSourcePropertyFilter):
110
+ function getOptionFilter(filter: BridgeDataSourceFilterCondition):
113
111
  | {
114
112
  propertyType: "select" | "multi_select" | "status"
115
113
  operator: OptionFilterOperator
@@ -1,10 +1,8 @@
1
- import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/dataSource.js"
2
- import { CUSTOM_BLOCK_DATA_SOURCE_SORTABLE_PROPERTY_TYPES } from "@notionhq/custom-blocks-protocol/dataSources/propertySchema.js"
3
- import {
4
- CUSTOM_BLOCK_DATA_SOURCE_QUERY_MAX_SORTS,
5
- type ResolvedCustomBlockDataSourceSort,
6
- } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
7
- import type { CustomBlockQueryDataSourceErrorInfo } from "@notionhq/custom-blocks-protocol/messages/queryDataSourceResult.js"
1
+ import type { NotionCollectionSchema } from "@notionhq/custom-blocks-protocol/dataSources/collectionSchema.js"
2
+ import type { BridgeDataSourceSort } from "@notionhq/custom-blocks-protocol/dataSources/filters/bridgeDataSourceSort.js"
3
+ import { CUSTOM_BLOCK_DATA_SOURCE_QUERY_MAX_SORTS } from "@notionhq/custom-blocks-protocol/dataSources/filters/bridgeDataSourceSort.js"
4
+ import type { CustomBlockQueryDataSourceErrorInfo } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
5
+ import { CUSTOM_BLOCK_DATA_SOURCE_SORTABLE_PROPERTY_TYPES } from "@notionhq/custom-blocks-protocol/dataSources/properties/propertySchema.js"
8
6
 
9
7
  const supportedDataSourceSortPropertyTypes = new Set<string>(
10
8
  CUSTOM_BLOCK_DATA_SOURCE_SORTABLE_PROPERTY_TYPES,
@@ -14,7 +12,7 @@ const supportedDataSourceSortPropertyTypes = new Set<string>(
14
12
  * Ensures the sorts of a data source query are valid.
15
13
  */
16
14
  export function validateQueryDataSourceSorts(
17
- sorts: ResolvedCustomBlockDataSourceSort[] | undefined,
15
+ sorts: BridgeDataSourceSort[] | undefined,
18
16
  collectionSchema: NotionCollectionSchema,
19
17
  ): CustomBlockQueryDataSourceErrorInfo | undefined {
20
18
  if (sorts === undefined) {
package/src/index.ts CHANGED
@@ -1,49 +1,58 @@
1
- export {
2
- type AutoBindableProperty,
3
- getAutoBoundPropertyIdsByKey,
4
- } from "./autoBindProperties.js"
1
+ export type {
2
+ CustomBlockHostInitialState,
3
+ CustomBlockHostInitialStateResult,
4
+ CustomBlockHostPreparedStateResult,
5
+ CustomBlockHostPrepareInitialState,
6
+ } from "./context/initialState.js"
7
+ export type { ResizeMessageInput } from "./context/resize.js"
5
8
  export {
6
9
  type CustomBlockHostHandle,
7
10
  type CustomBlockHostOptions,
11
+ type CustomBlockHostSetDataSourcesResult,
8
12
  createCustomBlockHost,
9
13
  } from "./createCustomBlockHost.js"
14
+ export {
15
+ type AutoBindableProperty,
16
+ getAutoBoundPropertyIdsByKey,
17
+ } from "./dataSources/bindings/getAutoBoundPropertyIdsByKey.js"
10
18
  export {
11
19
  type CustomBlockDateValue,
12
20
  InvalidNotionDateError,
13
21
  toNotionDateValue,
14
- } from "./dateValue.js"
15
- export { toNotionPageId } from "./ids.js"
16
- export { isAllowedLocalPreviewUrl } from "./isAllowedLocalPreviewUrl.js"
22
+ } from "./dataSources/properties/toNotionDateValue.js"
17
23
  export type {
18
24
  CustomBlockHostDataSourcesPayload,
19
- CustomBlockHostInitialState,
20
- CustomBlockHostInitialStateResult,
21
- CustomBlockHostManifestResult,
22
- CustomBlockHostPreparedStateResult,
23
- CustomBlockHostPrepareInitialState,
25
+ CustomBlockHostQueryDataSourceResult,
26
+ QueryDataSourceMessageInput,
27
+ } from "./dataSources/types.js"
28
+ export { isAllowedLocalPreviewUrl } from "./lifecycle/isAllowedLocalPreviewUrl.js"
29
+ export type {
30
+ CustomBlockHostFailure,
24
31
  CustomBlockHostStatus,
25
- CustomBlockManifestSource,
26
32
  } from "./lifecycle/types.js"
27
33
  export type {
28
- CreatePageMessageInput,
29
- CustomBlockHostCreatePageResult,
30
- CustomBlockHostFailure,
31
- CustomBlockHostGetPageResult,
32
- CustomBlockHostGetUserResult,
33
- CustomBlockHostHandlers,
34
- CustomBlockHostListUsersResult,
35
- CustomBlockHostLogDirection,
34
+ CustomBlockHostManifestResult,
35
+ CustomBlockManifestSource,
36
+ } from "./manifest/types.js"
37
+ export type { CustomBlockHostHandlers } from "./messages/handlers.js"
38
+ export type { CustomBlockHostLogDirection } from "./messages/logging.js"
39
+ export type { CustomBlockHostResult } from "./messages/result.js"
40
+ export type {
36
41
  CustomBlockHostNavigationContext,
37
- CustomBlockHostOpenExternalUrlResult,
42
+ OpenExternalUrlMessageInput,
43
+ } from "./navigation/types.js"
44
+ export type {
45
+ CreatePageMessageInput,
38
46
  CustomBlockHostOpenPageResult,
39
- CustomBlockHostUpdatePageResult,
47
+ CustomBlockHostPageResult,
40
48
  GetPageMessageInput,
41
- GetUserMessageInput,
42
- ListUsersMessageInput,
43
- OpenExternalUrlMessageInput,
44
49
  OpenPageMessageInput,
45
- QueryDataSourceMessageInput,
46
- ResizeMessageInput,
47
50
  UpdatePageMessageInput,
48
- } from "./messages/types.js"
49
- export type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js"
51
+ } from "./pages/types.js"
52
+ export type {
53
+ CustomBlockHostUserListResult,
54
+ CustomBlockHostUserResult,
55
+ GetUserMessageInput,
56
+ ListUsersMessageInput,
57
+ } from "./users/types.js"
58
+ export { toNotionPageId } from "./utils/toNotionPageId.js"
@@ -1,27 +1,22 @@
1
- import { DEFAULT_CONTRAST_MODE } from "@notionhq/custom-blocks-protocol/contrast.js"
2
- import type { ConnectMessage } from "@notionhq/custom-blocks-protocol/messages/connect.js"
1
+ import { DEFAULT_CONTRAST_MODE } from "@notionhq/custom-blocks-protocol/context/contrast.js"
2
+ import type { ConnectMessage } from "@notionhq/custom-blocks-protocol/handshake/connect.js"
3
3
  import type {
4
4
  CustomBlockInitErrorInfo,
5
5
  initMessageSchema,
6
- } from "@notionhq/custom-blocks-protocol/messages/init.js"
7
- import type { InitResultMessage } from "@notionhq/custom-blocks-protocol/messages/initResult.js"
6
+ } from "@notionhq/custom-blocks-protocol/handshake/init.js"
7
+ import type { InitResultMessage } from "@notionhq/custom-blocks-protocol/handshake/initResult.js"
8
8
  import type { InferInput } from "valibot"
9
- import type { CustomBlockHostFailure } from "../messages/types.js"
10
- import { unreachable } from "../utils.js"
11
- import {
12
- initialStateTimeoutError,
13
- invalidProtocolVersionError,
14
- noConnectError,
15
- noInitResultError,
16
- unknownInitializationError,
17
- unsupportedProtocolVersionError,
18
- } from "./initErrors.js"
19
- import { isValidBridgeProtocolVersion } from "./protocolVersion.js"
20
- import type {
21
- CustomBlockHostInitialStateResult,
22
- CustomBlockManifestSource,
23
- InitStatus,
24
- } from "./types.js"
9
+ import type { CustomBlockHostInitialStateResult } from "../context/initialState.js"
10
+ import type { CustomBlockManifestSource } from "../manifest/types.js"
11
+ import { unreachable } from "../utils/unreachable.js"
12
+ import { initialStateTimeoutError } from "./errors/initialStateTimeoutError.js"
13
+ import { invalidProtocolVersionError } from "./errors/invalidProtocolVersionError.js"
14
+ import { noConnectError } from "./errors/noConnectError.js"
15
+ import { noInitResultError } from "./errors/noInitResultError.js"
16
+ import { unknownInitializationError } from "./errors/unknownInitializationError.js"
17
+ import { unsupportedProtocolVersionError } from "./errors/unsupportedProtocolVersionError.js"
18
+ import { isValidBridgeProtocolVersion } from "./isValidBridgeProtocolVersion.js"
19
+ import type { CustomBlockHostFailure, InitStatus } from "./types.js"
25
20
 
26
21
  const DEFAULT_NO_CONNECT_TIMEOUT_MS = 5_000
27
22
  const DEFAULT_INITIAL_STATE_TIMEOUT_MS = 5_000
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function contextUnavailableError(): CustomBlockErrorInfo<"context_unavailable"> {
4
+ return {
5
+ code: "context_unavailable",
6
+ message: "Host page context is unavailable.",
7
+ // Page context may become available before a fresh initialization attempt.
8
+ isRetryable: true,
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function initialStateTimeoutError(): CustomBlockErrorInfo<"initial_state_timeout"> {
4
+ return {
5
+ code: "initial_state_timeout",
6
+ message: "Host did not prepare initial state before the timeout.",
7
+ // A fresh attempt may finish loading host dependencies before the timeout.
8
+ isRetryable: true,
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function invalidConnectPayloadError(): CustomBlockErrorInfo<"invalid_connect_payload"> {
4
+ return {
5
+ code: "invalid_connect_payload",
6
+ message: "Sandbox sent an invalid connect message.",
7
+ // The sandbox must be updated to send a valid connect message.
8
+ isRetryable: false,
9
+ }
10
+ }