@notionhq/custom-blocks 0.0.58

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 (298) hide show
  1. package/HOST.md +171 -0
  2. package/README.md +57 -0
  3. package/bin/cli/attach.js +180 -0
  4. package/bin/cli/cli.js +248 -0
  5. package/bin/cli/create.js +106 -0
  6. package/bin/cli/datasources.js +255 -0
  7. package/bin/cli/deploy.js +109 -0
  8. package/bin/cli/ids.js +13 -0
  9. package/bin/cli/ntn.js +95 -0
  10. package/bin/cli/pullData.js +76 -0
  11. package/bin/cli/pullManifest.js +158 -0
  12. package/bin/cli/target.js +95 -0
  13. package/bin/src/bridge/dataSources/propertySchema.js +148 -0
  14. package/bin/src/bridge/manifest.js +40 -0
  15. package/dist/autoResize.d.ts +4 -0
  16. package/dist/autoResize.d.ts.map +1 -0
  17. package/dist/autoResize.js +71 -0
  18. package/dist/bridge/SandboxBridge.d.ts +92 -0
  19. package/dist/bridge/SandboxBridge.d.ts.map +1 -0
  20. package/dist/bridge/SandboxBridge.js +718 -0
  21. package/dist/bridge/dataSources/dataSource.d.ts +732 -0
  22. package/dist/bridge/dataSources/dataSource.d.ts.map +1 -0
  23. package/dist/bridge/dataSources/dataSource.js +37 -0
  24. package/dist/bridge/dataSources/dataSourcePage.d.ts +118 -0
  25. package/dist/bridge/dataSources/dataSourcePage.d.ts.map +1 -0
  26. package/dist/bridge/dataSources/dataSourcePage.js +14 -0
  27. package/dist/bridge/dataSources/dataSourceValue.d.ts +67 -0
  28. package/dist/bridge/dataSources/dataSourceValue.d.ts.map +1 -0
  29. package/dist/bridge/dataSources/dataSourceValue.js +14 -0
  30. package/dist/bridge/dataSources/dateValue.d.ts +158 -0
  31. package/dist/bridge/dataSources/dateValue.d.ts.map +1 -0
  32. package/dist/bridge/dataSources/dateValue.js +59 -0
  33. package/dist/bridge/dataSources/errors.d.ts +6 -0
  34. package/dist/bridge/dataSources/errors.d.ts.map +1 -0
  35. package/dist/bridge/dataSources/errors.js +4 -0
  36. package/dist/bridge/dataSources/propertySchema.d.ts +191 -0
  37. package/dist/bridge/dataSources/propertySchema.d.ts.map +1 -0
  38. package/dist/bridge/dataSources/propertySchema.js +148 -0
  39. package/dist/bridge/dataSources/recordPointer.d.ts +10 -0
  40. package/dist/bridge/dataSources/recordPointer.d.ts.map +1 -0
  41. package/dist/bridge/dataSources/recordPointer.js +8 -0
  42. package/dist/bridge/dataSources/resolve.d.ts +22 -0
  43. package/dist/bridge/dataSources/resolve.d.ts.map +1 -0
  44. package/dist/bridge/dataSources/resolve.js +65 -0
  45. package/dist/bridge/dataSources/resolveProperty.d.ts +41 -0
  46. package/dist/bridge/dataSources/resolveProperty.d.ts.map +1 -0
  47. package/dist/bridge/dataSources/resolveProperty.js +73 -0
  48. package/dist/bridge/errors.d.ts +12 -0
  49. package/dist/bridge/errors.d.ts.map +1 -0
  50. package/dist/bridge/errors.js +6 -0
  51. package/dist/bridge/hostState.d.ts +65 -0
  52. package/dist/bridge/hostState.d.ts.map +1 -0
  53. package/dist/bridge/hostState.js +65 -0
  54. package/dist/bridge/ids.d.ts +39 -0
  55. package/dist/bridge/ids.d.ts.map +1 -0
  56. package/dist/bridge/ids.js +5 -0
  57. package/dist/bridge/incomingType.d.ts +10 -0
  58. package/dist/bridge/incomingType.d.ts.map +1 -0
  59. package/dist/bridge/incomingType.js +17 -0
  60. package/dist/bridge/loadManifest.d.ts +25 -0
  61. package/dist/bridge/loadManifest.d.ts.map +1 -0
  62. package/dist/bridge/loadManifest.js +68 -0
  63. package/dist/bridge/manifest.d.ts +66 -0
  64. package/dist/bridge/manifest.d.ts.map +1 -0
  65. package/dist/bridge/manifest.js +40 -0
  66. package/dist/bridge/messages/createPage.d.ts +225 -0
  67. package/dist/bridge/messages/createPage.d.ts.map +1 -0
  68. package/dist/bridge/messages/createPage.js +46 -0
  69. package/dist/bridge/messages/createPageResult.d.ts +211 -0
  70. package/dist/bridge/messages/createPageResult.d.ts.map +1 -0
  71. package/dist/bridge/messages/createPageResult.js +28 -0
  72. package/dist/bridge/messages/currentUserChanged.d.ts +19 -0
  73. package/dist/bridge/messages/currentUserChanged.d.ts.map +1 -0
  74. package/dist/bridge/messages/currentUserChanged.js +9 -0
  75. package/dist/bridge/messages/dataSourcesChanged.d.ts +158 -0
  76. package/dist/bridge/messages/dataSourcesChanged.d.ts.map +1 -0
  77. package/dist/bridge/messages/dataSourcesChanged.js +13 -0
  78. package/dist/bridge/messages/getPage.d.ts +216 -0
  79. package/dist/bridge/messages/getPage.d.ts.map +1 -0
  80. package/dist/bridge/messages/getPage.js +33 -0
  81. package/dist/bridge/messages/getUser.d.ts +45 -0
  82. package/dist/bridge/messages/getUser.d.ts.map +1 -0
  83. package/dist/bridge/messages/getUser.js +32 -0
  84. package/dist/bridge/messages/hostToSandbox.d.ts +1089 -0
  85. package/dist/bridge/messages/hostToSandbox.d.ts.map +1 -0
  86. package/dist/bridge/messages/hostToSandbox.js +32 -0
  87. package/dist/bridge/messages/init.d.ts +209 -0
  88. package/dist/bridge/messages/init.d.ts.map +1 -0
  89. package/dist/bridge/messages/init.js +47 -0
  90. package/dist/bridge/messages/invalidHostMessage.d.ts +15 -0
  91. package/dist/bridge/messages/invalidHostMessage.d.ts.map +1 -0
  92. package/dist/bridge/messages/invalidHostMessage.js +13 -0
  93. package/dist/bridge/messages/invalidSandboxMessage.d.ts +15 -0
  94. package/dist/bridge/messages/invalidSandboxMessage.d.ts.map +1 -0
  95. package/dist/bridge/messages/invalidSandboxMessage.js +13 -0
  96. package/dist/bridge/messages/listUsers.d.ts +53 -0
  97. package/dist/bridge/messages/listUsers.d.ts.map +1 -0
  98. package/dist/bridge/messages/listUsers.js +33 -0
  99. package/dist/bridge/messages/pageChanged.d.ts +12 -0
  100. package/dist/bridge/messages/pageChanged.d.ts.map +1 -0
  101. package/dist/bridge/messages/pageChanged.js +9 -0
  102. package/dist/bridge/messages/parentChanged.d.ts +22 -0
  103. package/dist/bridge/messages/parentChanged.d.ts.map +1 -0
  104. package/dist/bridge/messages/parentChanged.js +9 -0
  105. package/dist/bridge/messages/queryDataSource.d.ts +20 -0
  106. package/dist/bridge/messages/queryDataSource.d.ts.map +1 -0
  107. package/dist/bridge/messages/queryDataSource.js +19 -0
  108. package/dist/bridge/messages/queryDataSourceResult.d.ts +90 -0
  109. package/dist/bridge/messages/queryDataSourceResult.d.ts.map +1 -0
  110. package/dist/bridge/messages/queryDataSourceResult.js +21 -0
  111. package/dist/bridge/messages/ready.d.ts +45 -0
  112. package/dist/bridge/messages/ready.d.ts.map +1 -0
  113. package/dist/bridge/messages/ready.js +37 -0
  114. package/dist/bridge/messages/resize.d.ts +12 -0
  115. package/dist/bridge/messages/resize.d.ts.map +1 -0
  116. package/dist/bridge/messages/resize.js +10 -0
  117. package/dist/bridge/messages/sandboxToHost.d.ts +410 -0
  118. package/dist/bridge/messages/sandboxToHost.d.ts.map +1 -0
  119. package/dist/bridge/messages/sandboxToHost.js +25 -0
  120. package/dist/bridge/messages/themeChanged.d.ts +11 -0
  121. package/dist/bridge/messages/themeChanged.d.ts.map +1 -0
  122. package/dist/bridge/messages/themeChanged.js +10 -0
  123. package/dist/bridge/messages/updatePage.d.ts +171 -0
  124. package/dist/bridge/messages/updatePage.d.ts.map +1 -0
  125. package/dist/bridge/messages/updatePage.js +15 -0
  126. package/dist/bridge/messages/updatePageResult.d.ts +210 -0
  127. package/dist/bridge/messages/updatePageResult.d.ts.map +1 -0
  128. package/dist/bridge/messages/updatePageResult.js +27 -0
  129. package/dist/bridge/pages/page.d.ts +600 -0
  130. package/dist/bridge/pages/page.d.ts.map +1 -0
  131. package/dist/bridge/pages/page.js +217 -0
  132. package/dist/bridge/parent.d.ts +25 -0
  133. package/dist/bridge/parent.d.ts.map +1 -0
  134. package/dist/bridge/parent.js +11 -0
  135. package/dist/bridge/pendingRequests.d.ts +14 -0
  136. package/dist/bridge/pendingRequests.d.ts.map +1 -0
  137. package/dist/bridge/pendingRequests.js +27 -0
  138. package/dist/bridge/sandboxClient.d.ts +63 -0
  139. package/dist/bridge/sandboxClient.d.ts.map +1 -0
  140. package/dist/bridge/sandboxClient.js +92 -0
  141. package/dist/bridge/theme.d.ts +4 -0
  142. package/dist/bridge/theme.d.ts.map +1 -0
  143. package/dist/bridge/theme.js +2 -0
  144. package/dist/bridge/users/user.d.ts +36 -0
  145. package/dist/bridge/users/user.d.ts.map +1 -0
  146. package/dist/bridge/users/user.js +19 -0
  147. package/dist/customBlock.d.ts +36 -0
  148. package/dist/customBlock.d.ts.map +1 -0
  149. package/dist/customBlock.js +65 -0
  150. package/dist/host/createCustomBlockHost.d.ts +34 -0
  151. package/dist/host/createCustomBlockHost.d.ts.map +1 -0
  152. package/dist/host/createCustomBlockHost.js +278 -0
  153. package/dist/host/lifecycle/initErrors.d.ts +10 -0
  154. package/dist/host/lifecycle/initErrors.d.ts.map +1 -0
  155. package/dist/host/lifecycle/initErrors.js +123 -0
  156. package/dist/host/lifecycle/ready.d.ts +8 -0
  157. package/dist/host/lifecycle/ready.d.ts.map +1 -0
  158. package/dist/host/lifecycle/ready.js +24 -0
  159. package/dist/host/lifecycle/types.d.ts +24 -0
  160. package/dist/host/lifecycle/types.d.ts.map +1 -0
  161. package/dist/host/lifecycle/types.js +1 -0
  162. package/dist/host/messages/invalidSandboxMessage.d.ts +7 -0
  163. package/dist/host/messages/invalidSandboxMessage.d.ts.map +1 -0
  164. package/dist/host/messages/invalidSandboxMessage.js +24 -0
  165. package/dist/host/messages/types.d.ts +60 -0
  166. package/dist/host/messages/types.d.ts.map +1 -0
  167. package/dist/host/messages/types.js +1 -0
  168. package/dist/host/queries/querySubscriptions.d.ts +20 -0
  169. package/dist/host/queries/querySubscriptions.d.ts.map +1 -0
  170. package/dist/host/queries/querySubscriptions.js +29 -0
  171. package/dist/host/queries/types.d.ts +9 -0
  172. package/dist/host/queries/types.d.ts.map +1 -0
  173. package/dist/host/queries/types.js +1 -0
  174. package/dist/host.d.ts +73 -0
  175. package/dist/host.d.ts.map +1 -0
  176. package/dist/host.js +42 -0
  177. package/dist/index.d.ts +37 -0
  178. package/dist/index.d.ts.map +1 -0
  179. package/dist/index.js +14 -0
  180. package/dist/init.d.ts +53 -0
  181. package/dist/init.d.ts.map +1 -0
  182. package/dist/init.js +87 -0
  183. package/dist/react/DebugMessageLog.d.ts +2 -0
  184. package/dist/react/DebugMessageLog.d.ts.map +1 -0
  185. package/dist/react/DebugMessageLog.js +22 -0
  186. package/dist/react/NotionCustomBlock.css +110 -0
  187. package/dist/react/NotionCustomBlock.d.ts +50 -0
  188. package/dist/react/NotionCustomBlock.d.ts.map +1 -0
  189. package/dist/react/NotionCustomBlock.js +81 -0
  190. package/dist/react/index.d.ts +14 -0
  191. package/dist/react/index.d.ts.map +1 -0
  192. package/dist/react/index.js +13 -0
  193. package/dist/react/standalonePreview.d.ts +2 -0
  194. package/dist/react/standalonePreview.d.ts.map +1 -0
  195. package/dist/react/standalonePreview.js +26 -0
  196. package/dist/react/useCustomBlockAutoResize.d.ts +30 -0
  197. package/dist/react/useCustomBlockAutoResize.d.ts.map +1 -0
  198. package/dist/react/useCustomBlockAutoResize.js +35 -0
  199. package/dist/react/useCustomBlockInit.d.ts +43 -0
  200. package/dist/react/useCustomBlockInit.d.ts.map +1 -0
  201. package/dist/react/useCustomBlockInit.js +60 -0
  202. package/dist/react/useDataSource.d.ts +13 -0
  203. package/dist/react/useDataSource.d.ts.map +1 -0
  204. package/dist/react/useDataSource.js +37 -0
  205. package/dist/react/useHostState.d.ts +2 -0
  206. package/dist/react/useHostState.d.ts.map +1 -0
  207. package/dist/react/useHostState.js +5 -0
  208. package/dist/react/useRuntimeState.d.ts +66 -0
  209. package/dist/react/useRuntimeState.d.ts.map +1 -0
  210. package/dist/react/useRuntimeState.js +73 -0
  211. package/dist/types.d.ts +154 -0
  212. package/dist/types.d.ts.map +1 -0
  213. package/dist/types.js +1 -0
  214. package/dist/utils.d.ts +9 -0
  215. package/dist/utils.d.ts.map +1 -0
  216. package/dist/utils.js +10 -0
  217. package/dist/version.d.ts +9 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/version.js +7 -0
  220. package/docs/block-location.md +83 -0
  221. package/docs/data-sources.md +186 -0
  222. package/docs/lifecycle.md +172 -0
  223. package/docs/manifest.md +42 -0
  224. package/docs/pages.md +143 -0
  225. package/docs/users.md +92 -0
  226. package/package.json +69 -0
  227. package/src/autoResize.ts +84 -0
  228. package/src/bridge/SandboxBridge.ts +921 -0
  229. package/src/bridge/dataSources/dataSource.ts +63 -0
  230. package/src/bridge/dataSources/dataSourcePage.ts +71 -0
  231. package/src/bridge/dataSources/dataSourceValue.ts +19 -0
  232. package/src/bridge/dataSources/dateValue.ts +96 -0
  233. package/src/bridge/dataSources/errors.ts +14 -0
  234. package/src/bridge/dataSources/propertySchema.ts +186 -0
  235. package/src/bridge/dataSources/recordPointer.ts +13 -0
  236. package/src/bridge/dataSources/resolve.ts +99 -0
  237. package/src/bridge/dataSources/resolveProperty.ts +130 -0
  238. package/src/bridge/errors.ts +13 -0
  239. package/src/bridge/hostState.ts +154 -0
  240. package/src/bridge/ids.ts +58 -0
  241. package/src/bridge/incomingType.ts +19 -0
  242. package/src/bridge/loadManifest.ts +89 -0
  243. package/src/bridge/manifest.ts +53 -0
  244. package/src/bridge/messages/createPage.ts +67 -0
  245. package/src/bridge/messages/createPageResult.ts +52 -0
  246. package/src/bridge/messages/currentUserChanged.ts +14 -0
  247. package/src/bridge/messages/dataSourcesChanged.ts +18 -0
  248. package/src/bridge/messages/getPage.ts +52 -0
  249. package/src/bridge/messages/getUser.ts +48 -0
  250. package/src/bridge/messages/hostToSandbox.ts +37 -0
  251. package/src/bridge/messages/init.ts +81 -0
  252. package/src/bridge/messages/invalidHostMessage.ts +16 -0
  253. package/src/bridge/messages/invalidSandboxMessage.ts +18 -0
  254. package/src/bridge/messages/listUsers.ts +49 -0
  255. package/src/bridge/messages/pageChanged.ts +12 -0
  256. package/src/bridge/messages/parentChanged.ts +14 -0
  257. package/src/bridge/messages/queryDataSource.ts +24 -0
  258. package/src/bridge/messages/queryDataSourceResult.ts +38 -0
  259. package/src/bridge/messages/ready.ts +41 -0
  260. package/src/bridge/messages/resize.ts +13 -0
  261. package/src/bridge/messages/sandboxToHost.ts +30 -0
  262. package/src/bridge/messages/themeChanged.ts +15 -0
  263. package/src/bridge/messages/updatePage.ts +22 -0
  264. package/src/bridge/messages/updatePageResult.ts +49 -0
  265. package/src/bridge/pages/page.ts +281 -0
  266. package/src/bridge/parent.ts +27 -0
  267. package/src/bridge/pendingRequests.ts +28 -0
  268. package/src/bridge/sandboxClient.ts +137 -0
  269. package/src/bridge/theme.ts +5 -0
  270. package/src/bridge/users/user.ts +31 -0
  271. package/src/css.d.ts +1 -0
  272. package/src/customBlock.ts +102 -0
  273. package/src/host/createCustomBlockHost.ts +392 -0
  274. package/src/host/lifecycle/initErrors.ts +132 -0
  275. package/src/host/lifecycle/ready.ts +36 -0
  276. package/src/host/lifecycle/types.ts +28 -0
  277. package/src/host/messages/invalidSandboxMessage.ts +38 -0
  278. package/src/host/messages/types.ts +67 -0
  279. package/src/host/queries/querySubscriptions.ts +52 -0
  280. package/src/host/queries/types.ts +16 -0
  281. package/src/host.ts +167 -0
  282. package/src/index.ts +115 -0
  283. package/src/init.ts +143 -0
  284. package/src/react/DebugMessageLog.tsx +30 -0
  285. package/src/react/NotionCustomBlock.css +110 -0
  286. package/src/react/NotionCustomBlock.tsx +151 -0
  287. package/src/react/index.ts +28 -0
  288. package/src/react/standalonePreview.ts +28 -0
  289. package/src/react/useCustomBlockAutoResize.ts +46 -0
  290. package/src/react/useCustomBlockInit.ts +91 -0
  291. package/src/react/useDataSource.ts +47 -0
  292. package/src/react/useHostState.ts +9 -0
  293. package/src/react/useRuntimeState.ts +85 -0
  294. package/src/types.ts +175 -0
  295. package/src/utils.ts +13 -0
  296. package/src/version.ts +8 -0
  297. package/vite-plugin/index.d.ts +46 -0
  298. package/vite-plugin/index.js +115 -0
@@ -0,0 +1,34 @@
1
+ import type { NotionDataSourceId } from "../bridge/ids.js";
2
+ import type { HostToSandboxMessage } from "../bridge/messages/hostToSandbox.js";
3
+ import type { CustomBlockPage } from "../bridge/pages/page.js";
4
+ import type { NotionParent } from "../bridge/parent.js";
5
+ import type { NotionTheme } from "../bridge/theme.js";
6
+ import type { NotionUser } from "../bridge/users/user.js";
7
+ import type { CustomBlockHostDataSourcesPayload, CustomBlockHostInitialState, ReadySuccessMessage } from "./lifecycle/types.js";
8
+ import type { CustomBlockHostHandlers, CustomBlockHostLogDirection } from "./messages/types.js";
9
+ import type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js";
10
+ export type CustomBlockHostOptions = {
11
+ iframe: HTMLIFrameElement;
12
+ targetOrigin?: string;
13
+ minBridgeProtocolVersion?: number;
14
+ noReadyTimeoutMs?: number;
15
+ initialState: CustomBlockHostInitialState;
16
+ handlers: CustomBlockHostHandlers;
17
+ onReady?: (message: ReadySuccessMessage) => void;
18
+ onLog?: (direction: CustomBlockHostLogDirection, payload: unknown) => void;
19
+ };
20
+ export type CustomBlockHostHandle = {
21
+ stop: () => void;
22
+ post: (message: HostToSandboxMessage) => void;
23
+ setTheme: (theme: NotionTheme) => void;
24
+ setParent: (parent: NotionParent) => void;
25
+ setPage: (page: CustomBlockPage) => void;
26
+ setDataSources: (dataSources: CustomBlockHostDataSourcesPayload) => void;
27
+ setCurrentUser: (currentUser: NotionUser) => void;
28
+ refreshQuery: (args: {
29
+ dataSourceId: NotionDataSourceId;
30
+ response: CustomBlockHostQueryDataSourceResult;
31
+ }) => void;
32
+ };
33
+ export declare function createCustomBlockHost(options: CustomBlockHostOptions): CustomBlockHostHandle;
34
+ //# sourceMappingURL=createCustomBlockHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createCustomBlockHost.d.ts","sourceRoot":"","sources":["../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/createCustomBlockHost.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAY1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAkB/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAIzD,OAAO,KAAK,EACX,iCAAiC,EACjC,2BAA2B,EAE3B,mBAAmB,EACnB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EACX,uBAAuB,EACvB,2BAA2B,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAA;AAE9E,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,2BAA2B,CAAA;IACzC,QAAQ,EAAE,uBAAuB,CAAA;IACjC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAChD,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1E,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;IACxC,cAAc,EAAE,CAAC,WAAW,EAAE,iCAAiC,KAAK,IAAI,CAAA;IACxE,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE;QACpB,YAAY,EAAE,kBAAkB,CAAA;QAChC,QAAQ,EAAE,oCAAoC,CAAA;KAC9C,KAAK,IAAI,CAAA;CACV,CAAA;AAKD,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,CAqTvB"}
@@ -0,0 +1,278 @@
1
+ import * as v from "valibot";
2
+ import { sandboxToHostMessageSchema } from "../bridge/messages/sandboxToHost.js";
3
+ import { unreachable } from "../utils.js";
4
+ import { initErrorForFailureReason } from "./lifecycle/initErrors.js";
5
+ import { getReadyInitFailure } from "./lifecycle/ready.js";
6
+ import { getInvalidSandboxMessageResponse } from "./messages/invalidSandboxMessage.js";
7
+ import { QuerySubscriptions } from "./queries/querySubscriptions.js";
8
+ const DEFAULT_NO_READY_TIMEOUT_MS = 5000;
9
+ const DEFAULT_MIN_BRIDGE_PROTOCOL_VERSION = 2;
10
+ export function createCustomBlockHost(options) {
11
+ const { iframe, initialState, handlers, onReady, onLog, targetOrigin = "*", minBridgeProtocolVersion = DEFAULT_MIN_BRIDGE_PROTOCOL_VERSION, noReadyTimeoutMs = DEFAULT_NO_READY_TIMEOUT_MS, } = options;
12
+ let theme = initialState.theme;
13
+ let parent = initialState.parent;
14
+ let page = initialState.page;
15
+ let dataSources = initialState.dataSources;
16
+ let currentUser = initialState.currentUser;
17
+ let initStatus = "pending";
18
+ let noReadyTimeoutId;
19
+ const querySubscriptions = new QuerySubscriptions();
20
+ function emit(direction, payload) {
21
+ onLog?.(direction, payload);
22
+ }
23
+ function post(message) {
24
+ emit("out", message);
25
+ iframe.contentWindow?.postMessage(message, targetOrigin);
26
+ }
27
+ function postQueryDataSourceResult(args) {
28
+ const message = {
29
+ type: "queryDataSourceResult",
30
+ requestId: args.requestId,
31
+ snapshotId: args.snapshotId,
32
+ items: args.response.items,
33
+ hasMore: args.response.hasMore ?? false,
34
+ error: args.response.error,
35
+ };
36
+ post(message);
37
+ }
38
+ function clearNoReadyTimeout() {
39
+ if (noReadyTimeoutId !== undefined) {
40
+ window.clearTimeout(noReadyTimeoutId);
41
+ noReadyTimeoutId = undefined;
42
+ }
43
+ }
44
+ function resolveDataSourcesPayload(ready) {
45
+ return typeof dataSources === "function" ? dataSources(ready) : dataSources;
46
+ }
47
+ function sendInit(ready) {
48
+ if (initStatus !== "pending") {
49
+ return false;
50
+ }
51
+ initStatus = "success";
52
+ clearNoReadyTimeout();
53
+ const message = {
54
+ type: "init",
55
+ status: "success",
56
+ theme,
57
+ blockId: initialState.blockId,
58
+ parent,
59
+ page,
60
+ dataSources: resolveDataSourcesPayload(ready),
61
+ currentUser,
62
+ };
63
+ post(message);
64
+ return true;
65
+ }
66
+ function sendInitError(code, message) {
67
+ if (initStatus !== "pending") {
68
+ return;
69
+ }
70
+ initStatus = "error";
71
+ clearNoReadyTimeout();
72
+ const error = initErrorForFailureReason(code);
73
+ post({
74
+ type: "init",
75
+ status: "error",
76
+ error: {
77
+ ...error,
78
+ message: message ?? error.message,
79
+ },
80
+ });
81
+ }
82
+ function onIframeLoad() {
83
+ clearNoReadyTimeout();
84
+ noReadyTimeoutId = window.setTimeout(() => {
85
+ sendInitError("no_ready");
86
+ }, noReadyTimeoutMs);
87
+ }
88
+ async function handleQuery(message) {
89
+ querySubscriptions.track(message);
90
+ const response = await handlers.queryDataSource(message);
91
+ postQueryDataSourceResult({
92
+ requestId: message.requestId,
93
+ snapshotId: message.snapshotId,
94
+ response,
95
+ });
96
+ }
97
+ async function handleCreatePage(message) {
98
+ if (handlers.createPage === undefined) {
99
+ return;
100
+ }
101
+ const response = await handlers.createPage(message);
102
+ const result = {
103
+ type: "createPageResult",
104
+ requestId: message.requestId,
105
+ ...response,
106
+ };
107
+ post(result);
108
+ }
109
+ async function handleGetPage(message) {
110
+ if (handlers.getPage === undefined) {
111
+ return;
112
+ }
113
+ const response = await handlers.getPage(message);
114
+ const result = {
115
+ type: "getPageResult",
116
+ requestId: message.requestId,
117
+ ...response,
118
+ };
119
+ post(result);
120
+ }
121
+ async function handleGetUser(message) {
122
+ if (handlers.getUser === undefined) {
123
+ return;
124
+ }
125
+ const response = await handlers.getUser(message);
126
+ const result = {
127
+ type: "getUserResult",
128
+ requestId: message.requestId,
129
+ ...response,
130
+ };
131
+ post(result);
132
+ }
133
+ async function handleListUsers(message) {
134
+ if (handlers.listUsers === undefined) {
135
+ return;
136
+ }
137
+ const response = await handlers.listUsers(message);
138
+ const result = {
139
+ type: "listUsersResult",
140
+ requestId: message.requestId,
141
+ ...response,
142
+ };
143
+ post(result);
144
+ }
145
+ async function handleUpdatePage(message) {
146
+ if (handlers.updatePage === undefined) {
147
+ return;
148
+ }
149
+ const response = await handlers.updatePage(message);
150
+ const result = {
151
+ type: "updatePageResult",
152
+ requestId: message.requestId,
153
+ ...response,
154
+ };
155
+ post(result);
156
+ }
157
+ function handleReady(message) {
158
+ const failure = getReadyInitFailure(message, minBridgeProtocolVersion);
159
+ if (failure !== undefined) {
160
+ sendInitError(failure.code, failure.message);
161
+ return;
162
+ }
163
+ if (message.status !== "success") {
164
+ return;
165
+ }
166
+ if (sendInit(message)) {
167
+ onReady?.(message);
168
+ }
169
+ }
170
+ function onInvalidSandboxMessage(data, issues) {
171
+ emit("warn", {
172
+ message: "Ignored unsupported sandbox message",
173
+ payload: data,
174
+ issues,
175
+ });
176
+ const response = getInvalidSandboxMessageResponse(data);
177
+ if (initStatus === "pending" && response.incomingType === "ready") {
178
+ sendInitError("invalid_ready");
179
+ }
180
+ else if (response.nack !== undefined) {
181
+ post(response.nack);
182
+ }
183
+ }
184
+ function onMessage(event) {
185
+ if (event.source !== iframe.contentWindow) {
186
+ return;
187
+ }
188
+ const parsed = v.safeParse(sandboxToHostMessageSchema, event.data);
189
+ if (!parsed.success) {
190
+ onInvalidSandboxMessage(event.data, parsed.issues);
191
+ return;
192
+ }
193
+ const message = parsed.output;
194
+ emit("in", message);
195
+ switch (message.type) {
196
+ case "ready":
197
+ handleReady(message);
198
+ return;
199
+ case "queryDataSource":
200
+ void handleQuery(message);
201
+ return;
202
+ case "createPage":
203
+ void handleCreatePage(message);
204
+ return;
205
+ case "getPage":
206
+ void handleGetPage(message);
207
+ return;
208
+ case "getUser":
209
+ void handleGetUser(message);
210
+ return;
211
+ case "listUsers":
212
+ void handleListUsers(message);
213
+ return;
214
+ case "updatePage":
215
+ void handleUpdatePage(message);
216
+ return;
217
+ case "resize":
218
+ handlers.resize?.(message);
219
+ return;
220
+ case "invalidHostMessage":
221
+ return;
222
+ default:
223
+ unreachable(message);
224
+ }
225
+ }
226
+ window.addEventListener("message", onMessage);
227
+ iframe.addEventListener("load", onIframeLoad);
228
+ return {
229
+ stop() {
230
+ window.removeEventListener("message", onMessage);
231
+ iframe.removeEventListener("load", onIframeLoad);
232
+ clearNoReadyTimeout();
233
+ },
234
+ post,
235
+ setTheme(nextTheme) {
236
+ theme = nextTheme;
237
+ const message = { type: "themeChanged", theme };
238
+ post(message);
239
+ },
240
+ setParent(nextParent) {
241
+ parent = nextParent;
242
+ const message = { type: "parentChanged", parent };
243
+ post(message);
244
+ },
245
+ setPage(nextPage) {
246
+ page = nextPage;
247
+ const message = { type: "pageChanged", page };
248
+ post(message);
249
+ },
250
+ setDataSources(nextDataSources) {
251
+ dataSources = nextDataSources;
252
+ const message = {
253
+ type: "dataSourcesChanged",
254
+ dataSources: nextDataSources,
255
+ };
256
+ post(message);
257
+ },
258
+ setCurrentUser(nextCurrentUser) {
259
+ currentUser = nextCurrentUser;
260
+ post({ type: "currentUserChanged", currentUser });
261
+ },
262
+ refreshQuery({ dataSourceId, response }) {
263
+ const refresh = querySubscriptions.resolveRefresh({
264
+ dataSourceId,
265
+ response,
266
+ });
267
+ if (refresh.status === "missing") {
268
+ emit("warn", `No active query exists for data source "${dataSourceId}"`);
269
+ return;
270
+ }
271
+ postQueryDataSourceResult({
272
+ requestId: refresh.requestId,
273
+ snapshotId: refresh.snapshotId,
274
+ response: refresh.response,
275
+ });
276
+ },
277
+ };
278
+ }
@@ -0,0 +1,10 @@
1
+ import type { CustomBlockInitErrorCode, CustomBlockInitErrorInfo } from "../../bridge/messages/init.js";
2
+ /**
3
+ * Returns the error info for a given `init` failure code.
4
+ *
5
+ * `init` handshakes are one-shot: after an `init` error, this host instance will not answer another
6
+ * `ready` message. `isRetryable` means a fresh iframe / `init` attempt could plausibly succeed
7
+ * without changing block code or host configuration.
8
+ */
9
+ export declare function initErrorForFailureReason(reason: CustomBlockInitErrorCode): CustomBlockInitErrorInfo;
10
+ //# sourceMappingURL=initErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initErrors.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/lifecycle/initErrors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,wBAAwB,EACxB,wBAAwB,EACxB,MAAM,+BAA+B,CAAA;AAKtC;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,wBAAwB,GAC9B,wBAAwB,CAkH1B"}
@@ -0,0 +1,123 @@
1
+ const UNKNOWN_ERROR_MESSAGE = "Unexpected error while initializing custom block.";
2
+ /**
3
+ * Returns the error info for a given `init` failure code.
4
+ *
5
+ * `init` handshakes are one-shot: after an `init` error, this host instance will not answer another
6
+ * `ready` message. `isRetryable` means a fresh iframe / `init` attempt could plausibly succeed
7
+ * without changing block code or host configuration.
8
+ */
9
+ export function initErrorForFailureReason(reason) {
10
+ switch (reason) {
11
+ case "no_ready":
12
+ return {
13
+ code: reason,
14
+ message: "Sandbox did not send a ready message.",
15
+ isRetryable: true,
16
+ };
17
+ case "invalid_ready":
18
+ return {
19
+ code: reason,
20
+ message: "Sandbox sent an invalid ready message.",
21
+ // The sandbox must be updated to send a valid ready message.
22
+ isRetryable: false,
23
+ };
24
+ case "manifest_unavailable":
25
+ return {
26
+ code: reason,
27
+ message: "Sandbox could not load its manifest.",
28
+ isRetryable: true,
29
+ };
30
+ case "manifest_invalid":
31
+ return {
32
+ code: reason,
33
+ message: "Sandbox sent an invalid manifest.",
34
+ // The sandbox must be updated to a valid manifest.
35
+ isRetryable: false,
36
+ };
37
+ case "invalid_protocol_version":
38
+ return {
39
+ code: reason,
40
+ message: "Sandbox reported an invalid bridge protocol version.",
41
+ // The sandbox must be updated to a supported protocol version.
42
+ isRetryable: false,
43
+ };
44
+ case "unsupported_protocol_version":
45
+ return {
46
+ code: reason,
47
+ message: "Sandbox bridge protocol version is not supported.",
48
+ // The sandbox must be updated to a supported protocol version.
49
+ isRetryable: false,
50
+ };
51
+ case "context_unavailable":
52
+ return {
53
+ code: reason,
54
+ message: "Host page context is unavailable.",
55
+ isRetryable: true,
56
+ };
57
+ case "current_user_unavailable":
58
+ return {
59
+ code: reason,
60
+ message: "Current user is unavailable.",
61
+ isRetryable: true,
62
+ };
63
+ case "missing_data_source_binding":
64
+ return {
65
+ code: reason,
66
+ message: "A required data source is not mapped.",
67
+ // Host configuration must be changed before this block can initialize.
68
+ isRetryable: false,
69
+ };
70
+ case "data_source_unavailable":
71
+ return {
72
+ code: reason,
73
+ message: "A mapped data source is unavailable.",
74
+ // This error combines some retryable errors (e.g. data source failed to load) with
75
+ // some non-retryable errors (e.g. data source does not exist or user does not have
76
+ // access). Fallback to assuming the error is retryable.
77
+ isRetryable: true,
78
+ };
79
+ case "missing_property_binding":
80
+ return {
81
+ code: reason,
82
+ message: "A required data source property is not mapped.",
83
+ // Host configuration must be changed before this block can initialize.
84
+ isRetryable: false,
85
+ };
86
+ case "invalid_property_binding":
87
+ return {
88
+ code: reason,
89
+ message: "A mapped data source property is missing or incompatible.",
90
+ // The bound property's schema must be updated or the binding must be updated to
91
+ // a property with a compatible schema.
92
+ isRetryable: false,
93
+ };
94
+ case "not_in_iframe":
95
+ return {
96
+ code: reason,
97
+ message: "<NotionCustomBlock> only works inside an iframe.",
98
+ // The block must be embedded in an iframe.
99
+ isRetryable: false,
100
+ };
101
+ case "init_timeout":
102
+ return {
103
+ code: reason,
104
+ message: "Host did not respond to init before the timeout.",
105
+ isRetryable: true,
106
+ };
107
+ case "unknown_error":
108
+ return {
109
+ code: reason,
110
+ message: UNKNOWN_ERROR_MESSAGE,
111
+ // Treat unknown errors as non-retryable.
112
+ isRetryable: false,
113
+ };
114
+ default:
115
+ console.warn(`Unexpected custom block init error: ${reason}`);
116
+ return {
117
+ code: reason,
118
+ message: UNKNOWN_ERROR_MESSAGE,
119
+ // Treat unknown error codes as non-retryable.
120
+ isRetryable: false,
121
+ };
122
+ }
123
+ }
@@ -0,0 +1,8 @@
1
+ import type { CustomBlockInitErrorCode } from "../../bridge/messages/init.js";
2
+ import type { ReadyMessage } from "../../bridge/messages/ready.js";
3
+ export type ReadyInitFailure = {
4
+ code: CustomBlockInitErrorCode;
5
+ message?: string;
6
+ };
7
+ export declare function getReadyInitFailure(message: ReadyMessage, minBridgeProtocolVersion: number): ReadyInitFailure | undefined;
8
+ //# sourceMappingURL=ready.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ready.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/lifecycle/ready.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAElE,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,wBAAwB,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,YAAY,EACrB,wBAAwB,EAAE,MAAM,GAC9B,gBAAgB,GAAG,SAAS,CAoB9B"}
@@ -0,0 +1,24 @@
1
+ export function getReadyInitFailure(message, minBridgeProtocolVersion) {
2
+ if (!isValidBridgeProtocolVersion(message.bridgeProtocolVersion)) {
3
+ return {
4
+ code: "invalid_protocol_version",
5
+ message: `Sandbox reported invalid bridge protocol version ${message.bridgeProtocolVersion}.`,
6
+ };
7
+ }
8
+ if (message.bridgeProtocolVersion < minBridgeProtocolVersion) {
9
+ return {
10
+ code: "unsupported_protocol_version",
11
+ message: `Sandbox bridge protocol version ${message.bridgeProtocolVersion} is below the host minimum ${minBridgeProtocolVersion}.`,
12
+ };
13
+ }
14
+ if (message.status === "error") {
15
+ return {
16
+ code: message.error.code,
17
+ message: message.error.message,
18
+ };
19
+ }
20
+ return undefined;
21
+ }
22
+ function isValidBridgeProtocolVersion(version) {
23
+ return Number.isFinite(version) && Number.isInteger(version) && version >= 1;
24
+ }
@@ -0,0 +1,24 @@
1
+ import type { NotionDataSourceBindings } from "../../bridge/dataSources/dataSource.js";
2
+ import type { NotionBlockId } from "../../bridge/ids.js";
3
+ import type { ReadyMessage } from "../../bridge/messages/ready.js";
4
+ import type { CustomBlockPage } from "../../bridge/pages/page.js";
5
+ import type { NotionParent } from "../../bridge/parent.js";
6
+ import type { NotionTheme } from "../../bridge/theme.js";
7
+ import type { NotionUser } from "../../bridge/users/user.js";
8
+ export type ReadySuccessMessage = Extract<ReadyMessage, {
9
+ status: "success";
10
+ }>;
11
+ export type InitStatus = "pending" | "success" | "error";
12
+ export type CustomBlockHostDataSourcesPayload = {
13
+ bindings: NotionDataSourceBindings;
14
+ };
15
+ export type CustomBlockHostInitialDataSources = CustomBlockHostDataSourcesPayload | ((ready: ReadySuccessMessage) => CustomBlockHostDataSourcesPayload);
16
+ export type CustomBlockHostInitialState = {
17
+ theme: NotionTheme;
18
+ blockId: NotionBlockId;
19
+ parent: NotionParent;
20
+ page: CustomBlockPage;
21
+ dataSources: CustomBlockHostInitialDataSources;
22
+ currentUser: NotionUser;
23
+ };
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/lifecycle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAA;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAE5D,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,YAAY,EAAE;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC,CAAA;AAE9E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAExD,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,wBAAwB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iCAAiC,GAC1C,iCAAiC,GACjC,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,iCAAiC,CAAC,CAAA;AAEtE,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,iCAAiC,CAAA;IAC9C,WAAW,EAAE,UAAU,CAAA;CACvB,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { InvalidSandboxMessage } from "../../bridge/messages/invalidSandboxMessage.js";
2
+ export type InvalidSandboxMessageResponse = {
3
+ incomingType: string | undefined;
4
+ nack?: InvalidSandboxMessage;
5
+ };
6
+ export declare function getInvalidSandboxMessageResponse(data: unknown): InvalidSandboxMessageResponse;
7
+ //# sourceMappingURL=invalidSandboxMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invalidSandboxMessage.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/messages/invalidSandboxMessage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAA;AAE3F,MAAM,MAAM,6BAA6B,GAAG;IAC3C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,IAAI,CAAC,EAAE,qBAAqB,CAAA;CAC5B,CAAA;AAED,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,OAAO,GACX,6BAA6B,CAe/B"}
@@ -0,0 +1,24 @@
1
+ import { readIncomingType } from "../../bridge/incomingType.js";
2
+ export function getInvalidSandboxMessageResponse(data) {
3
+ const incomingType = readIncomingType(data);
4
+ if (incomingType === "invalidHostMessage" ||
5
+ incomingType === "invalidSandboxMessage") {
6
+ return { incomingType };
7
+ }
8
+ return {
9
+ incomingType,
10
+ nack: {
11
+ type: "invalidSandboxMessage",
12
+ reason: nackReasonForInvalidSandboxMessage(incomingType),
13
+ },
14
+ };
15
+ }
16
+ function nackReasonForInvalidSandboxMessage(incomingType) {
17
+ if (incomingType === "ready") {
18
+ return "Invalid manifest";
19
+ }
20
+ if (incomingType !== undefined) {
21
+ return `Unsupported sandbox message of type "${incomingType}"`;
22
+ }
23
+ return "Unsupported sandbox message (no `type` field or non-object payload)";
24
+ }
@@ -0,0 +1,60 @@
1
+ import type { CreatePageMessage } from "../../bridge/messages/createPage.js";
2
+ import type { CustomBlockCreatePageErrorInfo } from "../../bridge/messages/createPageResult.js";
3
+ import type { CustomBlockGetPageErrorInfo, GetPageMessage } from "../../bridge/messages/getPage.js";
4
+ import type { CustomBlockGetUserErrorInfo, GetUserMessage } from "../../bridge/messages/getUser.js";
5
+ import type { CustomBlockListUsersErrorInfo, ListUsersMessage } from "../../bridge/messages/listUsers.js";
6
+ import type { QueryDataSourceMessage } from "../../bridge/messages/queryDataSource.js";
7
+ import type { ResizeMessage } from "../../bridge/messages/resize.js";
8
+ import type { UpdatePageMessage } from "../../bridge/messages/updatePage.js";
9
+ import type { CustomBlockUpdatePageErrorInfo } from "../../bridge/messages/updatePageResult.js";
10
+ import type { NotionPage } from "../../bridge/pages/page.js";
11
+ import type { NotionUser, NotionUserList } from "../../bridge/users/user.js";
12
+ import type { CustomBlockHostQueryDataSourceResult } from "../queries/types.js";
13
+ type MaybePromise<T> = T | Promise<T>;
14
+ export type CustomBlockHostCreatePageResult = {
15
+ status: "success";
16
+ page: NotionPage;
17
+ } | {
18
+ status: "error";
19
+ error: CustomBlockCreatePageErrorInfo;
20
+ };
21
+ export type CustomBlockHostGetPageResult = {
22
+ status: "success";
23
+ page: NotionPage;
24
+ } | {
25
+ status: "error";
26
+ error: CustomBlockGetPageErrorInfo;
27
+ };
28
+ export type CustomBlockHostUpdatePageResult = {
29
+ status: "success";
30
+ page: NotionPage;
31
+ } | {
32
+ status: "error";
33
+ error: CustomBlockUpdatePageErrorInfo;
34
+ };
35
+ export type CustomBlockHostGetUserResult = {
36
+ status: "success";
37
+ user: NotionUser;
38
+ } | {
39
+ status: "error";
40
+ error: CustomBlockGetUserErrorInfo;
41
+ };
42
+ export type CustomBlockHostListUsersResult = {
43
+ status: "success";
44
+ list: NotionUserList;
45
+ } | {
46
+ status: "error";
47
+ error: CustomBlockListUsersErrorInfo;
48
+ };
49
+ export type CustomBlockHostHandlers = {
50
+ queryDataSource: (message: QueryDataSourceMessage) => MaybePromise<CustomBlockHostQueryDataSourceResult>;
51
+ createPage?: (message: CreatePageMessage) => MaybePromise<CustomBlockHostCreatePageResult>;
52
+ getPage?: (message: GetPageMessage) => MaybePromise<CustomBlockHostGetPageResult>;
53
+ getUser?: (message: GetUserMessage) => MaybePromise<CustomBlockHostGetUserResult>;
54
+ listUsers?: (message: ListUsersMessage) => MaybePromise<CustomBlockHostListUsersResult>;
55
+ updatePage?: (message: UpdatePageMessage) => MaybePromise<CustomBlockHostUpdatePageResult>;
56
+ resize?: (message: ResizeMessage) => void;
57
+ };
58
+ export type CustomBlockHostLogDirection = "in" | "out" | "warn";
59
+ export {};
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/messages/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { NotionDataSourceId } from "../../bridge/ids.js";
2
+ import type { QueryDataSourceMessage } from "../../bridge/messages/queryDataSource.js";
3
+ import type { CustomBlockHostQueryDataSourceResult } from "./types.js";
4
+ export type QueryRefreshResult = {
5
+ status: "success";
6
+ requestId: string;
7
+ snapshotId: string;
8
+ response: CustomBlockHostQueryDataSourceResult;
9
+ } | {
10
+ status: "missing";
11
+ };
12
+ export declare class QuerySubscriptions {
13
+ private readonly latestByDataSourceId;
14
+ track(message: QueryDataSourceMessage): void;
15
+ resolveRefresh(args: {
16
+ dataSourceId: NotionDataSourceId;
17
+ response: CustomBlockHostQueryDataSourceResult;
18
+ }): QueryRefreshResult;
19
+ }
20
+ //# sourceMappingURL=querySubscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"querySubscriptions.d.ts","sourceRoot":"","sources":["../../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host/queries/querySubscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AACtF,OAAO,KAAK,EACX,oCAAoC,EAEpC,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,kBAAkB,GAC3B;IACA,MAAM,EAAE,SAAS,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,oCAAoC,CAAA;CAC7C,GACD;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAExB,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGlC;IAEH,KAAK,CAAC,OAAO,EAAE,sBAAsB;IAQrC,cAAc,CAAC,IAAI,EAAE;QACpB,YAAY,EAAE,kBAAkB,CAAA;QAChC,QAAQ,EAAE,oCAAoC,CAAA;KAC9C,GAAG,kBAAkB;CAkBtB"}