@notionhq/custom-blocks-host 0.4.2 → 0.4.3

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 (418) hide show
  1. package/dist/browser.js +1 -1
  2. package/dist/compatibility/normalizeHostToSandboxMessage.js +4 -4
  3. package/dist/compatibility/normalizeSandboxToHostMessage.d.ts +232 -8
  4. package/dist/compatibility/normalizeSandboxToHostMessage.d.ts.map +1 -1
  5. package/dist/compatibility/{pageResult.d.ts → pages/pageResult.d.ts} +1 -1
  6. package/dist/compatibility/pages/pageResult.d.ts.map +1 -0
  7. package/dist/compatibility/{pageWithNullTextFallbackProperties.d.ts → pages/toPageWithNullTextFallbackProperties.d.ts} +2 -2
  8. package/dist/compatibility/pages/toPageWithNullTextFallbackProperties.d.ts.map +1 -0
  9. package/dist/compatibility/{pageWithNullTextFallbackProperties.js → pages/toPageWithNullTextFallbackProperties.js} +1 -1
  10. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.d.ts → protocol3To4/addMetadataReadSchemasForProtocol3To4.d.ts} +96 -90
  11. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.d.ts.map → protocol3To4/addMetadataReadSchemasForProtocol3To4.d.ts.map} +1 -1
  12. package/dist/compatibility/{addMetadataReadSchemasForProtocol3To4.js → protocol3To4/addMetadataReadSchemasForProtocol3To4.js} +1 -1
  13. package/dist/compatibility/{normalizePageResultsForProtocol3To5.d.ts → protocol3To5/normalizePageResultsForProtocol3To5.d.ts} +2 -2
  14. package/dist/compatibility/protocol3To5/normalizePageResultsForProtocol3To5.d.ts.map +1 -0
  15. package/dist/compatibility/{normalizePageResultsForProtocol3To5.js → protocol3To5/normalizePageResultsForProtocol3To5.js} +3 -2
  16. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.d.ts +9 -0
  17. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.d.ts.map +1 -0
  18. package/dist/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.js +21 -0
  19. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.d.ts +12 -0
  20. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.d.ts.map +1 -0
  21. package/dist/compatibility/protocol3To5/toPageForProtocol3To5.js +20 -0
  22. package/dist/compatibility/protocol3To5/toPropertyValueForProtocol3To5.d.ts +10 -0
  23. package/dist/compatibility/protocol3To5/toPropertyValueForProtocol3To5.d.ts.map +1 -0
  24. package/dist/compatibility/{pageForProtocol3To5.js → protocol3To5/toPropertyValueForProtocol3To5.js} +25 -95
  25. package/dist/compatibility/{pageForProtocol3To5.d.ts → protocol3To5/toQueryPageForProtocol3To5.d.ts} +11 -21
  26. package/dist/compatibility/protocol3To5/toQueryPageForProtocol3To5.d.ts.map +1 -0
  27. package/dist/compatibility/protocol3To5/toQueryPageForProtocol3To5.js +32 -0
  28. package/dist/compatibility/{normalizePageResultsForProtocol6.d.ts → protocol6/normalizePageResultsForProtocol6.d.ts} +2 -2
  29. package/dist/compatibility/protocol6/normalizePageResultsForProtocol6.d.ts.map +1 -0
  30. package/dist/compatibility/{normalizePageResultsForProtocol6.js → protocol6/normalizePageResultsForProtocol6.js} +1 -1
  31. package/dist/context/initialState.d.ts +1809 -0
  32. package/dist/context/initialState.d.ts.map +1 -0
  33. package/dist/context/initialState.js +34 -0
  34. package/dist/context/resize.d.ts +4 -0
  35. package/dist/context/resize.d.ts.map +1 -0
  36. package/dist/createCustomBlockHost.d.ts +13 -9
  37. package/dist/createCustomBlockHost.d.ts.map +1 -1
  38. package/dist/createCustomBlockHost.js +37 -24
  39. package/dist/{autoBindProperties.d.ts → dataSources/bindings/getAutoBoundPropertyIdsByKey.d.ts} +2 -2
  40. package/dist/dataSources/bindings/getAutoBoundPropertyIdsByKey.d.ts.map +1 -0
  41. package/dist/{dateValue.d.ts → dataSources/properties/toNotionDateValue.d.ts} +3 -3
  42. package/dist/dataSources/properties/toNotionDateValue.d.ts.map +1 -0
  43. package/dist/{queries → dataSources/queries}/querySubscriptions.d.ts +2 -2
  44. package/dist/dataSources/queries/querySubscriptions.d.ts.map +1 -0
  45. package/dist/dataSources/types.d.ts +14 -0
  46. package/dist/dataSources/types.d.ts.map +1 -0
  47. package/dist/dataSources/validation/validateQueryDataSourceFilter.d.ts +5 -0
  48. package/dist/dataSources/validation/validateQueryDataSourceFilter.d.ts.map +1 -0
  49. package/dist/{queries → dataSources/validation}/validateQueryDataSourceFilter.js +2 -2
  50. package/dist/dataSources/validation/validateQueryDataSourceSorts.d.ts +8 -0
  51. package/dist/dataSources/validation/validateQueryDataSourceSorts.d.ts.map +1 -0
  52. package/dist/{queries → dataSources/validation}/validateQueryDataSourceSorts.js +2 -2
  53. package/dist/index.d.ts +14 -7
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -4
  56. package/dist/lifecycle/{initializationController.d.ts → createInitializationController.d.ts} +7 -6
  57. package/dist/lifecycle/createInitializationController.d.ts.map +1 -0
  58. package/dist/lifecycle/{initializationController.js → createInitializationController.js} +9 -4
  59. package/dist/lifecycle/errors/contextUnavailableError.d.ts +3 -0
  60. package/dist/lifecycle/errors/contextUnavailableError.d.ts.map +1 -0
  61. package/dist/lifecycle/errors/contextUnavailableError.js +8 -0
  62. package/dist/lifecycle/errors/initialStateTimeoutError.d.ts +3 -0
  63. package/dist/lifecycle/errors/initialStateTimeoutError.d.ts.map +1 -0
  64. package/dist/lifecycle/errors/initialStateTimeoutError.js +8 -0
  65. package/dist/lifecycle/errors/invalidConnectPayloadError.d.ts +3 -0
  66. package/dist/lifecycle/errors/invalidConnectPayloadError.d.ts.map +1 -0
  67. package/dist/lifecycle/errors/invalidConnectPayloadError.js +8 -0
  68. package/dist/lifecycle/errors/invalidInitResultPayloadError.d.ts +3 -0
  69. package/dist/lifecycle/errors/invalidInitResultPayloadError.d.ts.map +1 -0
  70. package/dist/lifecycle/errors/invalidInitResultPayloadError.js +8 -0
  71. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.d.ts +3 -0
  72. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.d.ts.map +1 -0
  73. package/dist/lifecycle/errors/invalidLocalPreviewUrlError.js +7 -0
  74. package/dist/lifecycle/errors/invalidPropertyBindingError.d.ts +3 -0
  75. package/dist/lifecycle/errors/invalidPropertyBindingError.d.ts.map +1 -0
  76. package/dist/lifecycle/errors/invalidPropertyBindingError.js +9 -0
  77. package/dist/lifecycle/errors/invalidProtocolVersionError.d.ts +5 -0
  78. package/dist/lifecycle/errors/invalidProtocolVersionError.d.ts.map +1 -0
  79. package/dist/lifecycle/errors/invalidProtocolVersionError.js +9 -0
  80. package/dist/lifecycle/errors/missingDataSourceBindingError.d.ts +3 -0
  81. package/dist/lifecycle/errors/missingDataSourceBindingError.d.ts.map +1 -0
  82. package/dist/lifecycle/errors/missingDataSourceBindingError.js +8 -0
  83. package/dist/lifecycle/errors/missingPropertyBindingError.d.ts +3 -0
  84. package/dist/lifecycle/errors/missingPropertyBindingError.d.ts.map +1 -0
  85. package/dist/lifecycle/errors/missingPropertyBindingError.js +8 -0
  86. package/dist/lifecycle/errors/noConnectError.d.ts +8 -0
  87. package/dist/lifecycle/errors/noConnectError.d.ts.map +1 -0
  88. package/dist/lifecycle/errors/noConnectError.js +13 -0
  89. package/dist/lifecycle/errors/noInitResultError.d.ts +3 -0
  90. package/dist/lifecycle/errors/noInitResultError.d.ts.map +1 -0
  91. package/dist/lifecycle/errors/noInitResultError.js +8 -0
  92. package/dist/lifecycle/errors/unknownInitializationError.d.ts +3 -0
  93. package/dist/lifecycle/errors/unknownInitializationError.d.ts.map +1 -0
  94. package/dist/lifecycle/errors/unknownInitializationError.js +8 -0
  95. package/dist/lifecycle/errors/unsupportedProtocolVersionError.d.ts +6 -0
  96. package/dist/lifecycle/errors/unsupportedProtocolVersionError.d.ts.map +1 -0
  97. package/dist/lifecycle/errors/unsupportedProtocolVersionError.js +9 -0
  98. package/dist/lifecycle/isAllowedLocalPreviewUrl.d.ts.map +1 -0
  99. package/dist/{isAllowedLocalPreviewUrl.js → lifecycle/isAllowedLocalPreviewUrl.js} +1 -1
  100. package/dist/lifecycle/{protocolVersion.d.ts → isValidBridgeProtocolVersion.d.ts} +1 -1
  101. package/dist/lifecycle/isValidBridgeProtocolVersion.d.ts.map +1 -0
  102. package/dist/lifecycle/types.d.ts +16 -1849
  103. package/dist/lifecycle/types.d.ts.map +1 -1
  104. package/dist/lifecycle/types.js +1 -41
  105. package/dist/{lifecycle → manifest}/resolveManifest.d.ts +2 -2
  106. package/dist/manifest/resolveManifest.d.ts.map +1 -0
  107. package/dist/manifest/types.d.ts +59 -0
  108. package/dist/manifest/types.d.ts.map +1 -0
  109. package/dist/manifest/types.js +10 -0
  110. package/dist/messages/{sandboxMessageRouter.d.ts → createSandboxMessageRouter.d.ts} +15 -15
  111. package/dist/messages/createSandboxMessageRouter.d.ts.map +1 -0
  112. package/dist/messages/{sandboxMessageRouter.js → createSandboxMessageRouter.js} +5 -4
  113. package/dist/messages/{invalidSandboxMessage.d.ts → getInvalidSandboxMessageResponse.d.ts} +1 -1
  114. package/dist/messages/getInvalidSandboxMessageResponse.d.ts.map +1 -0
  115. package/dist/messages/handlers.d.ts +26 -0
  116. package/dist/messages/handlers.d.ts.map +1 -0
  117. package/dist/messages/handlers.js +1 -0
  118. package/dist/messages/logging.d.ts +2 -0
  119. package/dist/messages/logging.d.ts.map +1 -0
  120. package/dist/messages/logging.js +1 -0
  121. package/dist/navigation/parseExternalUrl.d.ts.map +1 -0
  122. package/dist/navigation/types.d.ts +9 -0
  123. package/dist/navigation/types.d.ts.map +1 -0
  124. package/dist/navigation/types.js +1 -0
  125. package/dist/pages/types.d.ts +20 -0
  126. package/dist/pages/types.d.ts.map +1 -0
  127. package/dist/pages/types.js +1 -0
  128. package/dist/protocol/{messages/updatePage.d.ts → compatibility/protocol3To5/bridgePage.d.ts} +32 -22
  129. package/dist/protocol/compatibility/protocol3To5/bridgePage.js +21 -0
  130. package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourcePage.js +1 -1
  131. package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourceValue.js +2 -2
  132. package/dist/protocol/context/containingPage.d.ts +31 -0
  133. package/dist/protocol/context/containingPage.js +18 -0
  134. package/dist/protocol/{messages → context/messages}/pageChanged.js +1 -1
  135. package/dist/protocol/{parent.d.ts → context/parent.d.ts} +11 -1
  136. package/dist/protocol/context/parent.js +31 -0
  137. package/dist/protocol/dataSources/bridgeDataSourceBinding.d.ts +164 -0
  138. package/dist/protocol/dataSources/bridgeDataSourceBinding.js +25 -0
  139. package/dist/protocol/dataSources/bridgeDataSourceBindings.d.ts +148 -0
  140. package/dist/protocol/dataSources/bridgeDataSourceBindings.js +3 -0
  141. package/dist/protocol/dataSources/collectionPointer.d.ts +7 -0
  142. package/dist/protocol/dataSources/collectionPointer.js +7 -0
  143. package/dist/protocol/dataSources/collectionSchema.d.ts +144 -0
  144. package/dist/protocol/dataSources/collectionSchema.js +12 -0
  145. package/dist/protocol/dataSources/errors.d.ts +2 -2
  146. package/dist/protocol/dataSources/filters/bridgeDataSourceFilter.d.ts +505 -0
  147. package/dist/protocol/dataSources/filters/bridgeDataSourceFilter.js +8 -0
  148. package/dist/protocol/dataSources/filters/bridgeDataSourceFilterCondition.d.ts +253 -0
  149. package/dist/protocol/dataSources/filters/bridgeDataSourceFilterCondition.js +69 -0
  150. package/dist/protocol/dataSources/filters/bridgeDataSourceSort.d.ts +11 -0
  151. package/dist/protocol/dataSources/filters/bridgeDataSourceSort.js +8 -0
  152. package/dist/protocol/dataSources/filters/checkboxFilterOperator.d.ts +7 -0
  153. package/dist/protocol/dataSources/filters/checkboxFilterOperator.js +5 -0
  154. package/dist/protocol/dataSources/filters/containsFilterOperator.d.ts +13 -0
  155. package/dist/protocol/dataSources/filters/containsFilterOperator.js +9 -0
  156. package/dist/protocol/dataSources/filters/createdByFilterOperator.d.ts +17 -0
  157. package/dist/protocol/dataSources/filters/createdByFilterOperator.js +11 -0
  158. package/dist/protocol/dataSources/filters/dateFilterOperator.d.ts +47 -0
  159. package/dist/protocol/dataSources/filters/dateFilterOperator.js +73 -0
  160. package/dist/protocol/dataSources/filters/emptyOperator.d.ts +6 -0
  161. package/dist/protocol/dataSources/filters/emptyOperator.js +5 -0
  162. package/dist/protocol/dataSources/filters/numberFilterOperator.d.ts +19 -0
  163. package/dist/protocol/dataSources/filters/numberFilterOperator.js +11 -0
  164. package/dist/protocol/dataSources/filters/optionFilterOperator.d.ts +11 -0
  165. package/dist/protocol/dataSources/filters/optionFilterOperator.js +8 -0
  166. package/dist/protocol/dataSources/filters/peopleFilterOperator.d.ts +23 -0
  167. package/dist/protocol/dataSources/filters/peopleFilterOperator.js +11 -0
  168. package/dist/protocol/dataSources/filters/relationFilterOperator.d.ts +11 -0
  169. package/dist/protocol/dataSources/filters/relationFilterOperator.js +12 -0
  170. package/dist/protocol/dataSources/filters/statusFilterOperator.d.ts +15 -0
  171. package/dist/protocol/dataSources/filters/statusFilterOperator.js +7 -0
  172. package/dist/protocol/dataSources/filters/statusGroupFilterOperator.d.ts +9 -0
  173. package/dist/protocol/dataSources/filters/statusGroupFilterOperator.js +18 -0
  174. package/dist/protocol/dataSources/filters/stringOrStringArray.d.ts +2 -0
  175. package/dist/protocol/dataSources/filters/stringOrStringArray.js +5 -0
  176. package/dist/protocol/dataSources/filters/textFilterOperator.d.ts +19 -0
  177. package/dist/protocol/dataSources/filters/textFilterOperator.js +11 -0
  178. package/dist/protocol/dataSources/makeBridgeDataSourceBinding.d.ts +6 -0
  179. package/dist/protocol/dataSources/makeBridgeDataSourceBinding.js +6 -0
  180. package/dist/protocol/{messages → dataSources/messages}/dataSourcesChanged.d.ts +1 -0
  181. package/dist/protocol/{messages → dataSources/messages}/dataSourcesChanged.js +2 -2
  182. package/dist/protocol/{messages/queryDataSourceResult.d.ts → dataSources/messages/queryDataSource.d.ts} +525 -2
  183. package/dist/protocol/{messages/queryDataSourceResult.js → dataSources/messages/queryDataSource.js} +22 -2
  184. package/dist/protocol/dataSources/notionDataSource.d.ts +309 -0
  185. package/dist/protocol/dataSources/notionDataSource.js +38 -0
  186. package/dist/protocol/dataSources/resolveDataSourceBinding.d.ts +32 -0
  187. package/dist/protocol/dataSources/resolveDataSourceBinding.js +33 -0
  188. package/dist/protocol/{messages → handshake}/connect.d.ts +4 -0
  189. package/dist/protocol/{messages → handshake}/connect.js +2 -2
  190. package/dist/protocol/{messages → handshake}/init.d.ts +6 -1
  191. package/dist/protocol/{messages → handshake}/init.js +10 -10
  192. package/dist/protocol/{messages → handshake}/initResult.d.ts +1 -1
  193. package/dist/protocol/{messages → handshake}/isInitHandshakeMessage.d.ts +2 -2
  194. package/dist/protocol/index.d.ts +150 -54
  195. package/dist/protocol/index.js +73 -54
  196. package/dist/protocol/manifest/capabilities.d.ts +37 -0
  197. package/dist/protocol/manifest/capabilities.js +13 -0
  198. package/dist/protocol/{manifest.d.ts → manifest/manifest.d.ts} +12 -2
  199. package/dist/protocol/{manifest.js → manifest/manifest.js} +8 -1
  200. package/dist/protocol/messages/hostToSandbox.d.ts +12 -0
  201. package/dist/protocol/messages/hostToSandbox.js +15 -15
  202. package/dist/protocol/messages/messagePayload.d.ts +1 -1
  203. package/dist/protocol/messages/sandboxToHost.d.ts +232 -8
  204. package/dist/protocol/messages/sandboxToHost.js +12 -12
  205. package/dist/protocol/{messages → navigation}/openExternalUrl.d.ts +1 -1
  206. package/dist/protocol/{messages/createPage.d.ts → pages/bridgePage.d.ts} +67 -65
  207. package/dist/protocol/pages/bridgePage.js +25 -0
  208. package/dist/protocol/pages/makeBridgePage.d.ts +4 -0
  209. package/dist/protocol/pages/makeBridgePage.js +12 -0
  210. package/dist/protocol/{messages/createPageResult.d.ts → pages/messages/createPage.d.ts} +500 -2
  211. package/dist/protocol/pages/messages/createPage.js +104 -0
  212. package/dist/protocol/{messages → pages/messages}/getPage.d.ts +2 -2
  213. package/dist/protocol/{messages → pages/messages}/getPage.js +4 -3
  214. package/dist/protocol/{messages → pages/messages}/openPage.d.ts +2 -2
  215. package/dist/protocol/{messages → pages/messages}/openPage.js +1 -1
  216. package/dist/protocol/{messages/updatePageResult.d.ts → pages/messages/updatePage.d.ts} +272 -2
  217. package/dist/protocol/{messages/updatePageResult.js → pages/messages/updatePage.js} +26 -2
  218. package/dist/protocol/pages/pageAppearance.d.ts +62 -0
  219. package/dist/protocol/pages/pageAppearance.js +34 -0
  220. package/dist/protocol/pages/properties/bridgePagePropertyMaps.d.ts +433 -0
  221. package/dist/protocol/pages/properties/bridgePagePropertyMaps.js +4 -0
  222. package/dist/protocol/pages/properties/bridgePagePropertyValue.d.ts +217 -0
  223. package/dist/protocol/pages/properties/bridgePagePropertyValue.js +144 -0
  224. package/dist/protocol/pages/properties/dateInput.d.ts +45 -0
  225. package/dist/protocol/pages/properties/dateInput.js +23 -0
  226. package/dist/protocol/pages/properties/fileInput.d.ts +16 -0
  227. package/dist/protocol/pages/properties/fileInput.js +16 -0
  228. package/dist/protocol/pages/properties/metadataActor.d.ts +6 -0
  229. package/dist/protocol/pages/properties/metadataActor.js +7 -0
  230. package/dist/protocol/pages/properties/placeInput.d.ts +10 -0
  231. package/dist/protocol/pages/properties/placeInput.js +10 -0
  232. package/dist/protocol/pages/properties/relationInput.d.ts +5 -0
  233. package/dist/protocol/pages/properties/relationInput.js +2 -0
  234. package/dist/protocol/pages/properties/richText.d.ts +3 -0
  235. package/dist/protocol/pages/properties/richText.js +2 -0
  236. package/dist/protocol/pages/properties/selectOption.d.ts +13 -0
  237. package/dist/protocol/pages/properties/selectOption.js +16 -0
  238. package/dist/protocol/pages/properties/userInput.d.ts +10 -0
  239. package/dist/protocol/pages/properties/userInput.js +13 -0
  240. package/dist/protocol/users/bridgeUser.d.ts +12 -0
  241. package/dist/protocol/users/bridgeUser.js +12 -0
  242. package/dist/protocol/users/{user.d.ts → bridgeUserList.d.ts} +2 -15
  243. package/dist/protocol/users/bridgeUserList.js +10 -0
  244. package/dist/protocol/users/makeBridgeUser.d.ts +4 -0
  245. package/dist/protocol/users/makeBridgeUser.js +11 -0
  246. package/dist/protocol/{messages → users/messages}/currentUserChanged.js +2 -2
  247. package/dist/protocol/{messages → users/messages}/getUser.d.ts +2 -2
  248. package/dist/protocol/{messages → users/messages}/getUser.js +3 -2
  249. package/dist/protocol/{messages → users/messages}/listUsers.d.ts +2 -2
  250. package/dist/protocol/{messages → users/messages}/listUsers.js +2 -2
  251. package/dist/protocol/users/userId.d.ts +3 -0
  252. package/dist/protocol/users/userId.js +2 -0
  253. package/dist/protocol/{errors.d.ts → utils/errors.d.ts} +6 -0
  254. package/dist/protocol/utils/errors.js +11 -0
  255. package/dist/protocol/utils/nullableStringSchema.d.ts +2 -0
  256. package/dist/protocol/utils/nullableStringSchema.js +2 -0
  257. package/dist/users/types.d.ts +9 -0
  258. package/dist/users/types.d.ts.map +1 -0
  259. package/dist/users/types.js +1 -0
  260. package/dist/utils/maybePromise.d.ts +2 -0
  261. package/dist/utils/maybePromise.d.ts.map +1 -0
  262. package/dist/utils/maybePromise.js +1 -0
  263. package/dist/utils/protocolVersion.d.ts.map +1 -0
  264. package/dist/utils/toNotionPageId.d.ts +3 -0
  265. package/dist/utils/toNotionPageId.d.ts.map +1 -0
  266. package/dist/{ids.js → utils/toNotionPageId.js} +1 -1
  267. package/dist/{utils.d.ts → utils/unreachable.d.ts} +1 -1
  268. package/dist/utils/unreachable.d.ts.map +1 -0
  269. package/docs/bridge/protocol.md +16 -1
  270. package/docs/bridge/versioning.md +2 -2
  271. package/docs/handlers.md +2 -2
  272. package/package.json +1 -1
  273. package/src/compatibility/normalizeHostToSandboxMessage.ts +4 -4
  274. package/src/compatibility/{pageWithNullTextFallbackProperties.ts → pages/toPageWithNullTextFallbackProperties.ts} +2 -2
  275. package/src/compatibility/{addMetadataReadSchemasForProtocol3To4.ts → protocol3To4/addMetadataReadSchemasForProtocol3To4.ts} +1 -1
  276. package/src/compatibility/{normalizePageResultsForProtocol3To5.ts → protocol3To5/normalizePageResultsForProtocol3To5.ts} +4 -6
  277. package/src/compatibility/protocol3To5/toDateTimeValueForProtocol3To5.ts +25 -0
  278. package/src/compatibility/protocol3To5/toPageForProtocol3To5.ts +29 -0
  279. package/src/compatibility/protocol3To5/toPropertyValueForProtocol3To5.ts +102 -0
  280. package/src/compatibility/protocol3To5/toQueryPageForProtocol3To5.ts +35 -0
  281. package/src/compatibility/{normalizePageResultsForProtocol6.ts → protocol6/normalizePageResultsForProtocol6.ts} +2 -2
  282. package/src/context/initialState.ts +65 -0
  283. package/src/context/resize.ts +4 -0
  284. package/src/createCustomBlockHost.ts +74 -73
  285. package/src/{autoBindProperties.ts → dataSources/bindings/getAutoBoundPropertyIdsByKey.ts} +1 -1
  286. package/src/{dateValue.ts → dataSources/properties/toNotionDateValue.ts} +2 -2
  287. package/src/{queries → dataSources/queries}/querySubscriptions.ts +2 -2
  288. package/src/dataSources/types.ts +26 -0
  289. package/src/{queries → dataSources/validation}/validateQueryDataSourceFilter.ts +11 -13
  290. package/src/{queries → dataSources/validation}/validateQueryDataSourceSorts.ts +6 -8
  291. package/src/index.ts +37 -27
  292. package/src/lifecycle/{initializationController.ts → createInitializationController.ts} +15 -20
  293. package/src/lifecycle/errors/contextUnavailableError.ts +10 -0
  294. package/src/lifecycle/errors/initialStateTimeoutError.ts +10 -0
  295. package/src/lifecycle/errors/invalidConnectPayloadError.ts +10 -0
  296. package/src/lifecycle/errors/invalidInitResultPayloadError.ts +10 -0
  297. package/src/lifecycle/errors/invalidLocalPreviewUrlError.ts +10 -0
  298. package/src/lifecycle/errors/invalidPropertyBindingError.ts +11 -0
  299. package/src/lifecycle/errors/invalidProtocolVersionError.ts +13 -0
  300. package/src/lifecycle/errors/missingDataSourceBindingError.ts +10 -0
  301. package/src/lifecycle/errors/missingPropertyBindingError.ts +10 -0
  302. package/src/lifecycle/errors/noConnectError.ts +15 -0
  303. package/src/lifecycle/errors/noInitResultError.ts +10 -0
  304. package/src/lifecycle/errors/unknownInitializationError.ts +10 -0
  305. package/src/lifecycle/errors/unsupportedProtocolVersionError.ts +14 -0
  306. package/src/{isAllowedLocalPreviewUrl.ts → lifecycle/isAllowedLocalPreviewUrl.ts} +1 -1
  307. package/src/lifecycle/types.ts +17 -103
  308. package/src/{lifecycle → manifest}/resolveManifest.ts +2 -2
  309. package/src/manifest/types.ts +28 -0
  310. package/src/messages/{sandboxMessageRouter.ts → createSandboxMessageRouter.ts} +19 -21
  311. package/src/messages/handlers.ts +54 -0
  312. package/src/messages/logging.ts +1 -0
  313. package/src/navigation/types.ts +20 -0
  314. package/src/pages/types.ts +55 -0
  315. package/src/users/types.ts +26 -0
  316. package/src/utils/maybePromise.ts +1 -0
  317. package/src/utils/toNotionPageId.ts +7 -0
  318. package/dist/autoBindProperties.d.ts.map +0 -1
  319. package/dist/compatibility/normalizePageResultsForProtocol3To5.d.ts.map +0 -1
  320. package/dist/compatibility/normalizePageResultsForProtocol6.d.ts.map +0 -1
  321. package/dist/compatibility/pageForProtocol3To5.d.ts.map +0 -1
  322. package/dist/compatibility/pageResult.d.ts.map +0 -1
  323. package/dist/compatibility/pageWithNullTextFallbackProperties.d.ts.map +0 -1
  324. package/dist/dateValue.d.ts.map +0 -1
  325. package/dist/ids.d.ts +0 -3
  326. package/dist/ids.d.ts.map +0 -1
  327. package/dist/isAllowedLocalPreviewUrl.d.ts.map +0 -1
  328. package/dist/lifecycle/initErrors.d.ts +0 -25
  329. package/dist/lifecycle/initErrors.d.ts.map +0 -1
  330. package/dist/lifecycle/initErrors.js +0 -111
  331. package/dist/lifecycle/initializationController.d.ts.map +0 -1
  332. package/dist/lifecycle/protocolVersion.d.ts.map +0 -1
  333. package/dist/lifecycle/resolveManifest.d.ts.map +0 -1
  334. package/dist/messages/invalidSandboxMessage.d.ts.map +0 -1
  335. package/dist/messages/parseExternalUrl.d.ts.map +0 -1
  336. package/dist/messages/sandboxMessageRouter.d.ts.map +0 -1
  337. package/dist/messages/types.d.ts +0 -65
  338. package/dist/messages/types.d.ts.map +0 -1
  339. package/dist/protocol/dataSources/dataSource.d.ts +0 -786
  340. package/dist/protocol/dataSources/dataSource.js +0 -66
  341. package/dist/protocol/errors.js +0 -6
  342. package/dist/protocol/messages/createPage.js +0 -51
  343. package/dist/protocol/messages/createPageResult.js +0 -43
  344. package/dist/protocol/messages/queryDataSource.d.ts +0 -1470
  345. package/dist/protocol/messages/queryDataSource.js +0 -254
  346. package/dist/protocol/messages/updatePage.js +0 -23
  347. package/dist/protocol/pages/page.d.ts +0 -1422
  348. package/dist/protocol/pages/page.js +0 -318
  349. package/dist/protocol/parent.js +0 -13
  350. package/dist/protocol/users/user.js +0 -20
  351. package/dist/protocolVersion.d.ts.map +0 -1
  352. package/dist/queries/querySubscriptions.d.ts.map +0 -1
  353. package/dist/queries/types.d.ts +0 -5
  354. package/dist/queries/types.d.ts.map +0 -1
  355. package/dist/queries/validateQueryDataSourceFilter.d.ts +0 -5
  356. package/dist/queries/validateQueryDataSourceFilter.d.ts.map +0 -1
  357. package/dist/queries/validateQueryDataSourceSorts.d.ts +0 -8
  358. package/dist/queries/validateQueryDataSourceSorts.d.ts.map +0 -1
  359. package/dist/utils.d.ts.map +0 -1
  360. package/src/compatibility/pageForProtocol3To5.ts +0 -190
  361. package/src/ids.ts +0 -9
  362. package/src/lifecycle/initErrors.ts +0 -131
  363. package/src/messages/types.ts +0 -171
  364. package/src/queries/types.ts +0 -11
  365. /package/dist/compatibility/{pageResult.js → pages/pageResult.js} +0 -0
  366. /package/dist/{messages/types.js → context/resize.js} +0 -0
  367. /package/dist/{autoBindProperties.js → dataSources/bindings/getAutoBoundPropertyIdsByKey.js} +0 -0
  368. /package/dist/{dateValue.js → dataSources/properties/toNotionDateValue.js} +0 -0
  369. /package/dist/{queries → dataSources/queries}/querySubscriptions.js +0 -0
  370. /package/dist/{queries → dataSources}/types.js +0 -0
  371. /package/dist/{isAllowedLocalPreviewUrl.d.ts → lifecycle/isAllowedLocalPreviewUrl.d.ts} +0 -0
  372. /package/dist/lifecycle/{protocolVersion.js → isValidBridgeProtocolVersion.js} +0 -0
  373. /package/dist/{lifecycle → manifest}/resolveManifest.js +0 -0
  374. /package/dist/messages/{invalidSandboxMessage.js → getInvalidSandboxMessageResponse.js} +0 -0
  375. /package/dist/{messages → navigation}/parseExternalUrl.d.ts +0 -0
  376. /package/dist/{messages → navigation}/parseExternalUrl.js +0 -0
  377. /package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourcePage.d.ts +0 -0
  378. /package/dist/protocol/{dataSources → compatibility/protocol3To5}/dataSourceValue.d.ts +0 -0
  379. /package/dist/protocol/{contrast.d.ts → context/contrast.d.ts} +0 -0
  380. /package/dist/protocol/{contrast.js → context/contrast.js} +0 -0
  381. /package/dist/protocol/{messages → context/messages}/contrastModeChanged.d.ts +0 -0
  382. /package/dist/protocol/{messages → context/messages}/contrastModeChanged.js +0 -0
  383. /package/dist/protocol/{messages → context/messages}/pageChanged.d.ts +0 -0
  384. /package/dist/protocol/{messages → context/messages}/parentChanged.d.ts +0 -0
  385. /package/dist/protocol/{messages → context/messages}/parentChanged.js +0 -0
  386. /package/dist/protocol/{messages → context/messages}/resize.d.ts +0 -0
  387. /package/dist/protocol/{messages → context/messages}/resize.js +0 -0
  388. /package/dist/protocol/{messages → context/messages}/themeChanged.d.ts +0 -0
  389. /package/dist/protocol/{messages → context/messages}/themeChanged.js +0 -0
  390. /package/dist/protocol/{theme.d.ts → context/theme.d.ts} +0 -0
  391. /package/dist/protocol/{theme.js → context/theme.js} +0 -0
  392. /package/dist/protocol/{messages → dataSources/messages}/unsubscribeDataSourceQuery.d.ts +0 -0
  393. /package/dist/protocol/{messages → dataSources/messages}/unsubscribeDataSourceQuery.js +0 -0
  394. /package/dist/protocol/dataSources/{dateValue.d.ts → properties/dateValue.d.ts} +0 -0
  395. /package/dist/protocol/dataSources/{dateValue.js → properties/dateValue.js} +0 -0
  396. /package/dist/protocol/dataSources/{propertySchema.d.ts → properties/propertySchema.d.ts} +0 -0
  397. /package/dist/protocol/dataSources/{propertySchema.js → properties/propertySchema.js} +0 -0
  398. /package/dist/protocol/{messages → handshake}/initResult.js +0 -0
  399. /package/dist/protocol/{messages → handshake}/isInitHandshakeMessage.js +0 -0
  400. /package/dist/protocol/{messages → navigation}/openExternalUrl.js +0 -0
  401. /package/dist/protocol/{messages → users/messages}/currentUserChanged.d.ts +0 -0
  402. /package/dist/protocol/{ids.d.ts → utils/ids.d.ts} +0 -0
  403. /package/dist/protocol/{ids.js → utils/ids.js} +0 -0
  404. /package/dist/protocol/{isLocalBlockServerUrl.d.ts → utils/isLocalBlockServerUrl.d.ts} +0 -0
  405. /package/dist/protocol/{isLocalBlockServerUrl.js → utils/isLocalBlockServerUrl.js} +0 -0
  406. /package/dist/protocol/{protocolVersion.d.ts → utils/protocolVersion.d.ts} +0 -0
  407. /package/dist/protocol/{protocolVersion.js → utils/protocolVersion.js} +0 -0
  408. /package/dist/protocol/{dataSources → utils}/recordPointer.d.ts +0 -0
  409. /package/dist/protocol/{dataSources → utils}/recordPointer.js +0 -0
  410. /package/dist/{protocolVersion.d.ts → utils/protocolVersion.d.ts} +0 -0
  411. /package/dist/{protocolVersion.js → utils/protocolVersion.js} +0 -0
  412. /package/dist/{utils.js → utils/unreachable.js} +0 -0
  413. /package/src/compatibility/{pageResult.ts → pages/pageResult.ts} +0 -0
  414. /package/src/lifecycle/{protocolVersion.ts → isValidBridgeProtocolVersion.ts} +0 -0
  415. /package/src/messages/{invalidSandboxMessage.ts → getInvalidSandboxMessageResponse.ts} +0 -0
  416. /package/src/{messages → navigation}/parseExternalUrl.ts +0 -0
  417. /package/src/{protocolVersion.ts → utils/protocolVersion.ts} +0 -0
  418. /package/src/{utils.ts → utils/unreachable.ts} +0 -0
@@ -1,80 +1,79 @@
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 { notionContrastModeSchema } from "@notionhq/custom-blocks-protocol/context/contrast.js"
3
+ import type { notionParentSchema } from "@notionhq/custom-blocks-protocol/context/parent.js"
4
+ import type { notionThemeSchema } 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 { bridgeUserSchema } from "@notionhq/custom-blocks-protocol/users/bridgeUser.js"
28
+ import type { NotionDataSourceId } from "@notionhq/custom-blocks-protocol/utils/ids.js"
29
+ import { notionDataSourceIdSchema } from "@notionhq/custom-blocks-protocol/utils/ids.js"
30
+ import { LATEST_BRIDGE_PROTOCOL_VERSION } from "@notionhq/custom-blocks-protocol/utils/protocolVersion.js"
32
31
  import type { InferInput } from "valibot"
33
32
  import * as v from "valibot"
34
33
  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
34
  import type {
47
- CustomBlockHostDataSourcesPayload,
48
35
  CustomBlockHostInitialState,
49
36
  CustomBlockHostInitialStateResult,
50
- CustomBlockHostManifestResult,
51
- CustomBlockHostNormalizedDataSourcesPayload,
52
- CustomBlockHostNormalizedManifestResult,
53
37
  CustomBlockHostPrepareInitialState,
54
- CustomBlockHostStatus,
55
- CustomBlockManifestSource,
56
- } from "./lifecycle/types.js"
38
+ } from "./context/initialState.js"
57
39
  import {
58
40
  customBlockHostInitialStateSchema,
59
- customBlockHostManifestResultSchema,
60
41
  customBlockHostPreparedStateResultSchema,
61
- } from "./lifecycle/types.js"
62
- import { parseExternalUrl } from "./messages/parseExternalUrl.js"
63
- import { createSandboxMessageRouter } from "./messages/sandboxMessageRouter.js"
42
+ } from "./context/initialState.js"
43
+ import type { QuerySubscriptionToken } from "./dataSources/queries/querySubscriptions.js"
44
+ import { QuerySubscriptions } from "./dataSources/queries/querySubscriptions.js"
45
+ import type {
46
+ CustomBlockHostDataSourcesPayload,
47
+ CustomBlockHostNormalizedDataSourcesPayload,
48
+ CustomBlockHostQueryDataSourceResult,
49
+ } from "./dataSources/types.js"
50
+ import { validateQueryDataSourceFilter } from "./dataSources/validation/validateQueryDataSourceFilter.js"
51
+ import { validateQueryDataSourceSorts } from "./dataSources/validation/validateQueryDataSourceSorts.js"
52
+ import { createInitializationController } from "./lifecycle/createInitializationController.js"
53
+ import { contextUnavailableError } from "./lifecycle/errors/contextUnavailableError.js"
54
+ import { invalidLocalPreviewUrlError } from "./lifecycle/errors/invalidLocalPreviewUrlError.js"
55
+ import { invalidPropertyBindingError } from "./lifecycle/errors/invalidPropertyBindingError.js"
56
+ import { missingDataSourceBindingError } from "./lifecycle/errors/missingDataSourceBindingError.js"
57
+ import { missingPropertyBindingError } from "./lifecycle/errors/missingPropertyBindingError.js"
58
+ import { unknownInitializationError } from "./lifecycle/errors/unknownInitializationError.js"
59
+ import { isAllowedLocalPreviewUrl } from "./lifecycle/isAllowedLocalPreviewUrl.js"
64
60
  import type {
65
61
  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"
62
+ CustomBlockHostStatus,
63
+ } from "./lifecycle/types.js"
64
+ import { resolveManifest } from "./manifest/resolveManifest.js"
65
+ import type {
66
+ CustomBlockHostManifestResult,
67
+ CustomBlockHostNormalizedManifestResult,
68
+ CustomBlockManifestSource,
69
+ } from "./manifest/types.js"
70
+ import { customBlockHostManifestResultSchema } from "./manifest/types.js"
71
+ import { createSandboxMessageRouter } from "./messages/createSandboxMessageRouter.js"
72
+ import type { CustomBlockHostHandlers } from "./messages/handlers.js"
73
+ import type { CustomBlockHostLogDirection } from "./messages/logging.js"
74
+ import { parseExternalUrl } from "./navigation/parseExternalUrl.js"
75
+ import { MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION } from "./utils/protocolVersion.js"
76
+ import { unreachable } from "./utils/unreachable.js"
78
77
 
79
78
  // Bridge protocol version that introduced page: { type: "unavailable" }.
80
79
  // Earlier SDKs cannot represent this context, so the host reports context_unavailable.
@@ -122,7 +121,7 @@ export type CustomBlockHostHandle = {
122
121
  setParent: (parent: InferInput<typeof notionParentSchema>) => void
123
122
  setPage: (page: InferInput<typeof customBlockPageSchema>) => void
124
123
  setDataSources: (dataSources: CustomBlockHostDataSourcesPayload) => void
125
- setCurrentUser: (currentUser: InferInput<typeof notionUserSchema>) => void
124
+ setCurrentUser: (currentUser: InferInput<typeof bridgeUserSchema>) => void
126
125
  refreshQuery: (args: {
127
126
  dataSourceId: InferInput<typeof notionDataSourceIdSchema>
128
127
  }) => void
@@ -168,7 +167,7 @@ export function createCustomBlockHost(
168
167
  let pendingState: HostStateUpdates = {}
169
168
  let hasPreparedInitialState = false
170
169
  const preparationController = new AbortController()
171
- let manifest: CustomBlockManifest | undefined
170
+ let manifest: BridgeCustomBlockManifest | undefined
172
171
  let activeDataSources: CustomBlockHostNormalizedDataSourcesPayload | undefined
173
172
  let sandboxBridgeProtocolVersion = LATEST_BRIDGE_PROTOCOL_VERSION
174
173
  const querySubscriptions = new QuerySubscriptions(subscriptionId => {
@@ -545,7 +544,7 @@ export function createCustomBlockHost(
545
544
  }
546
545
 
547
546
  async function prepare(
548
- connectManifest: CustomBlockManifest | undefined,
547
+ connectManifest: BridgeCustomBlockManifest | undefined,
549
548
  ): Promise<CustomBlockHostInitialStateResult> {
550
549
  preparationController.signal.throwIfAborted()
551
550
  const manifestResult = await resolveManifest({
@@ -669,7 +668,7 @@ export function createCustomBlockHost(
669
668
  const normalizedDataSources: CustomBlockHostNormalizedDataSourcesPayload =
670
669
  {
671
670
  bindings: v.parse(
672
- notionDataSourceBindingsSchema,
671
+ bridgeDataSourceBindingsSchema,
673
672
  dataSources.bindings,
674
673
  ),
675
674
  }
@@ -742,30 +741,32 @@ function getCollectionSchema(
742
741
  }
743
742
 
744
743
  function getBindingError(
745
- manifest: CustomBlockManifest,
744
+ manifest: BridgeCustomBlockManifest,
746
745
  dataSources: CustomBlockHostDataSourcesPayload,
747
746
  ): CustomBlockInitErrorInfo | undefined {
748
747
  for (const [dataSourceKey, manifestDataSource] of Object.entries(
749
748
  manifest.dataSources,
750
749
  )) {
751
750
  const binding = dataSources.bindings[dataSourceKey]
751
+ if (binding?.inaccessible === true) {
752
+ continue
753
+ }
754
+ const resolvedBinding = resolveDataSourceBinding({
755
+ manifestDataSource,
756
+ collectionSchema: binding?.collectionSchema,
757
+ propertyIdsByKey: binding?.propertyIdsByKey,
758
+ })
752
759
  if (
753
760
  binding?.collectionPointer === undefined ||
754
- binding.collectionSchema === undefined
761
+ resolvedBinding.status === "missing_schema"
755
762
  ) {
756
763
  return missingDataSourceBindingError()
757
764
  }
758
- for (const [propertyKey, manifestProperty] of Object.entries(
759
- manifestDataSource.properties ?? {},
760
- )) {
761
- const propertyId = binding.propertyIdsByKey?.[propertyKey]
762
- if (propertyId === undefined) {
765
+ for (const property of resolvedBinding.properties) {
766
+ if (property.status === "missing") {
763
767
  return missingPropertyBindingError()
764
768
  }
765
- if (
766
- binding.collectionSchema.propertiesById[propertyId]?.type !==
767
- manifestProperty.type
768
- ) {
769
+ if (property.status !== "mapped") {
769
770
  return invalidPropertyBindingError()
770
771
  }
771
772
  }
@@ -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,26 @@
1
+ import type { bridgeDataSourceBindingsSchema } from "@notionhq/custom-blocks-protocol/dataSources/bridgeDataSourceBindings.js"
2
+ import type {
3
+ CustomBlockQueryDataSourceErrorInfo,
4
+ queryDataSourceMessageSchema,
5
+ queryDataSourceResultMessageSchema,
6
+ } from "@notionhq/custom-blocks-protocol/dataSources/messages/queryDataSource.js"
7
+ import type { BridgeMessagePayload } from "@notionhq/custom-blocks-protocol/messages/messagePayload.js"
8
+ import type * as v from "valibot"
9
+ import type { InferInput } from "valibot"
10
+
11
+ export type QueryDataSourceMessageInput = InferInput<
12
+ typeof queryDataSourceMessageSchema
13
+ >
14
+
15
+ export type CustomBlockHostQueryDataSourceResult = BridgeMessagePayload<
16
+ InferInput<typeof queryDataSourceResultMessageSchema>,
17
+ CustomBlockQueryDataSourceErrorInfo
18
+ >
19
+
20
+ export type CustomBlockHostDataSourcesPayload = {
21
+ bindings: v.InferInput<typeof bridgeDataSourceBindingsSchema>
22
+ }
23
+
24
+ export type CustomBlockHostNormalizedDataSourcesPayload = {
25
+ bindings: v.InferOutput<typeof bridgeDataSourceBindingsSchema>
26
+ }
@@ -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,59 @@
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,
8
11
  createCustomBlockHost,
9
12
  } from "./createCustomBlockHost.js"
13
+ export {
14
+ type AutoBindableProperty,
15
+ getAutoBoundPropertyIdsByKey,
16
+ } from "./dataSources/bindings/getAutoBoundPropertyIdsByKey.js"
10
17
  export {
11
18
  type CustomBlockDateValue,
12
19
  InvalidNotionDateError,
13
20
  toNotionDateValue,
14
- } from "./dateValue.js"
15
- export { toNotionPageId } from "./ids.js"
16
- export { isAllowedLocalPreviewUrl } from "./isAllowedLocalPreviewUrl.js"
21
+ } from "./dataSources/properties/toNotionDateValue.js"
17
22
  export type {
18
23
  CustomBlockHostDataSourcesPayload,
19
- CustomBlockHostInitialState,
20
- CustomBlockHostInitialStateResult,
21
- CustomBlockHostManifestResult,
22
- CustomBlockHostPreparedStateResult,
23
- CustomBlockHostPrepareInitialState,
24
+ CustomBlockHostQueryDataSourceResult,
25
+ QueryDataSourceMessageInput,
26
+ } from "./dataSources/types.js"
27
+ export { isAllowedLocalPreviewUrl } from "./lifecycle/isAllowedLocalPreviewUrl.js"
28
+ export type {
29
+ CustomBlockHostFailure,
24
30
  CustomBlockHostStatus,
25
- CustomBlockManifestSource,
26
31
  } from "./lifecycle/types.js"
32
+ export type {
33
+ CustomBlockHostManifestResult,
34
+ CustomBlockManifestSource,
35
+ } from "./manifest/types.js"
36
+ export type { CustomBlockHostHandlers } from "./messages/handlers.js"
37
+ export type { CustomBlockHostLogDirection } from "./messages/logging.js"
38
+ export type {
39
+ CustomBlockHostNavigationContext,
40
+ CustomBlockHostOpenExternalUrlResult,
41
+ OpenExternalUrlMessageInput,
42
+ } from "./navigation/types.js"
27
43
  export type {
28
44
  CreatePageMessageInput,
29
45
  CustomBlockHostCreatePageResult,
30
- CustomBlockHostFailure,
31
46
  CustomBlockHostGetPageResult,
32
- CustomBlockHostGetUserResult,
33
- CustomBlockHostHandlers,
34
- CustomBlockHostListUsersResult,
35
- CustomBlockHostLogDirection,
36
- CustomBlockHostNavigationContext,
37
- CustomBlockHostOpenExternalUrlResult,
38
47
  CustomBlockHostOpenPageResult,
39
48
  CustomBlockHostUpdatePageResult,
40
49
  GetPageMessageInput,
41
- GetUserMessageInput,
42
- ListUsersMessageInput,
43
- OpenExternalUrlMessageInput,
44
50
  OpenPageMessageInput,
45
- QueryDataSourceMessageInput,
46
- ResizeMessageInput,
47
51
  UpdatePageMessageInput,
48
- } from "./messages/types.js"
49
- export type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js"
52
+ } from "./pages/types.js"
53
+ export type {
54
+ CustomBlockHostGetUserResult,
55
+ CustomBlockHostListUsersResult,
56
+ GetUserMessageInput,
57
+ ListUsersMessageInput,
58
+ } from "./users/types.js"
59
+ 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
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function invalidInitResultPayloadError(): CustomBlockErrorInfo<"invalid_init_result_payload"> {
4
+ return {
5
+ code: "invalid_init_result_payload",
6
+ message: "Sandbox sent an invalid initialization result.",
7
+ // The sandbox must be updated to send a valid initialization result.
8
+ isRetryable: false,
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function invalidLocalPreviewUrlError(): CustomBlockErrorInfo<"invalid_local_preview_url"> {
4
+ return {
5
+ code: "invalid_local_preview_url",
6
+ message:
7
+ "Local custom blocks require an HTTP(S) URL on localhost, a .localhost subdomain, or 127.0.0.1, without credentials and on a different origin from the host.",
8
+ isRetryable: false,
9
+ }
10
+ }
@@ -0,0 +1,11 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function invalidPropertyBindingError(): CustomBlockErrorInfo<"invalid_property_binding"> {
4
+ return {
5
+ code: "invalid_property_binding",
6
+ message: "A mapped data source property is missing or incompatible.",
7
+ // The bound property's schema must be updated or the binding must be updated to
8
+ // a property with a compatible schema.
9
+ isRetryable: false,
10
+ }
11
+ }
@@ -0,0 +1,13 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function invalidProtocolVersionError(args: {
4
+ currentBridgeProtocolVersion: number | undefined
5
+ }): CustomBlockErrorInfo<"invalid_protocol_version"> {
6
+ const { currentBridgeProtocolVersion } = args
7
+ return {
8
+ code: "invalid_protocol_version",
9
+ message: `Sandbox reported an invalid bridge protocol version: ${currentBridgeProtocolVersion}`,
10
+ // The sandbox must be updated to a supported protocol version.
11
+ isRetryable: false,
12
+ }
13
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function missingDataSourceBindingError(): CustomBlockErrorInfo<"missing_data_source_binding"> {
4
+ return {
5
+ code: "missing_data_source_binding",
6
+ message: "A required data source is not mapped.",
7
+ // Host configuration must be changed before this block can initialize.
8
+ isRetryable: false,
9
+ }
10
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function missingPropertyBindingError(): CustomBlockErrorInfo<"missing_property_binding"> {
4
+ return {
5
+ code: "missing_property_binding",
6
+ message: "A required data source property is not mapped.",
7
+ // Host configuration must be changed before this block can initialize.
8
+ isRetryable: false,
9
+ }
10
+ }
@@ -0,0 +1,15 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ /**
4
+ * Initialization handshakes are one-shot: after an error, this host instance will not answer
5
+ * another `connect` message. `isRetryable` means a fresh host and iframe could plausibly
6
+ * initialize without changing block code or host configuration.
7
+ */
8
+ export function noConnectError(): CustomBlockErrorInfo<"no_connect"> {
9
+ return {
10
+ code: "no_connect",
11
+ message: "Sandbox did not send a connect message.",
12
+ // A fresh iframe may finish loading and send connect before the timeout.
13
+ isRetryable: true,
14
+ }
15
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockErrorInfo } from "@notionhq/custom-blocks-protocol/utils/errors.js"
2
+
3
+ export function noInitResultError(): CustomBlockErrorInfo<"no_init_result"> {
4
+ return {
5
+ code: "no_init_result",
6
+ message: "Sandbox did not acknowledge initialization.",
7
+ // A fresh iframe may process init and acknowledge it 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 unknownInitializationError(): CustomBlockErrorInfo<"unknown_error"> {
4
+ return {
5
+ code: "unknown_error",
6
+ message: "Unexpected error while initializing custom block.",
7
+ // Without a known transient cause, conservatively treat unknown errors as non-retryable.
8
+ isRetryable: false,
9
+ }
10
+ }