@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,29 @@
1
+ export class QuerySubscriptions {
2
+ constructor() {
3
+ this.latestByDataSourceId = new Map();
4
+ }
5
+ track(message) {
6
+ this.latestByDataSourceId.set(message.dataSourceId, {
7
+ requestId: message.requestId,
8
+ snapshotId: message.snapshotId,
9
+ limit: message.limit,
10
+ });
11
+ }
12
+ resolveRefresh(args) {
13
+ const queryState = this.latestByDataSourceId.get(args.dataSourceId);
14
+ if (!queryState) {
15
+ return { status: "missing" };
16
+ }
17
+ const items = args.response.items.slice(0, queryState.limit);
18
+ return {
19
+ status: "success",
20
+ requestId: queryState.requestId,
21
+ snapshotId: queryState.snapshotId,
22
+ response: {
23
+ items,
24
+ hasMore: args.response.hasMore ?? args.response.items.length > items.length,
25
+ error: args.response.error,
26
+ },
27
+ };
28
+ }
29
+ }
@@ -0,0 +1,9 @@
1
+ import type { QueryDataSourceMessage } from "../../bridge/messages/queryDataSource.js";
2
+ import type { CustomBlockQueryDataSourceErrorInfo, QueryDataSourceResultMessage } from "../../bridge/messages/queryDataSourceResult.js";
3
+ export type CustomBlockHostQueryDataSourceResult = {
4
+ items: QueryDataSourceResultMessage["items"];
5
+ hasMore?: boolean;
6
+ error?: CustomBlockQueryDataSourceErrorInfo;
7
+ };
8
+ export type QuerySubscriptionState = Pick<QueryDataSourceMessage, "requestId" | "snapshotId" | "limit">;
9
+ //# 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/queries/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AACtF,OAAO,KAAK,EACX,mCAAmC,EACnC,4BAA4B,EAC5B,MAAM,gDAAgD,CAAA;AAEvD,MAAM,MAAM,oCAAoC,GAAG;IAClD,KAAK,EAAE,4BAA4B,CAAC,OAAO,CAAC,CAAA;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,mCAAmC,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACxC,sBAAsB,EACtB,WAAW,GAAG,YAAY,GAAG,OAAO,CACpC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
package/dist/host.d.ts ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Host-side entrypoint for `@notionhq/custom-blocks/host`.
3
+ *
4
+ * Re-exports the bridge valibot schemas and data-source binding types so
5
+ * anything implementing the host side of the bridge can validate inbound
6
+ * sandbox traffic and shape outbound traffic without reaching into private
7
+ * `bridge/*` paths.
8
+ *
9
+ * Nothing here is intended for use inside a sandboxed custom block; that
10
+ * surface lives in the default `@notionhq/custom-blocks` entrypoint.
11
+ */
12
+ export type { NotionDataSourceBinding, NotionDataSourceBindings, } from "./bridge/dataSources/dataSource.js";
13
+ export { notionDataSourceBindingSchema, notionDataSourceBindingsSchema, } from "./bridge/dataSources/dataSource.js";
14
+ export type { NotionDataSourcePageBridge } from "./bridge/dataSources/dataSourcePage.js";
15
+ export { notionDataSourcePageBridgeSchema } from "./bridge/dataSources/dataSourcePage.js";
16
+ export type { CustomBlockDataSourceResolutionErrorCode, CustomBlockDataSourceResolutionErrorInfo, } from "./bridge/dataSources/errors.js";
17
+ export { customBlockDataSourceResolutionErrorCodeSchema } from "./bridge/dataSources/errors.js";
18
+ export type { CustomBlockPropertyErrorCode, CustomBlockPropertyErrorInfo, } from "./bridge/dataSources/resolveProperty.js";
19
+ export { customBlockPropertyErrorCodeSchema } from "./bridge/dataSources/resolveProperty.js";
20
+ export type { CustomBlockErrorInfo } from "./bridge/errors.js";
21
+ export { customBlockErrorInfoSchema } from "./bridge/errors.js";
22
+ export { notionBlockIdSchema, notionDataSourceIdSchema, notionPageIdSchema, } from "./bridge/ids.js";
23
+ export { readIncomingType } from "./bridge/incomingType.js";
24
+ export type { CreatePageMessage } from "./bridge/messages/createPage.js";
25
+ export { createPageMessageSchema } from "./bridge/messages/createPage.js";
26
+ export type { CreatePageResultMessage, CustomBlockCreatePageErrorCode, CustomBlockCreatePageErrorInfo, } from "./bridge/messages/createPageResult.js";
27
+ export { createPageResultMessageSchema, customBlockCreatePageErrorCodeSchema, customBlockCreatePageErrorInfoSchema, } from "./bridge/messages/createPageResult.js";
28
+ export type { CurrentUserChangedMessage } from "./bridge/messages/currentUserChanged.js";
29
+ export { currentUserChangedMessageSchema } from "./bridge/messages/currentUserChanged.js";
30
+ export type { DataSourcesChangedMessage } from "./bridge/messages/dataSourcesChanged.js";
31
+ export { dataSourcesChangedMessageSchema } from "./bridge/messages/dataSourcesChanged.js";
32
+ export type { CustomBlockGetPageErrorCode, CustomBlockGetPageErrorInfo, GetPageMessage, GetPageResultMessage, } from "./bridge/messages/getPage.js";
33
+ export { customBlockGetPageErrorCodeSchema, customBlockGetPageErrorInfoSchema, getPageMessageSchema, getPageResultMessageSchema, } from "./bridge/messages/getPage.js";
34
+ export type { CustomBlockGetUserErrorCode, CustomBlockGetUserErrorInfo, GetUserMessage, GetUserResultMessage, } from "./bridge/messages/getUser.js";
35
+ export { customBlockGetUserErrorCodeSchema, customBlockGetUserErrorInfoSchema, getUserMessageSchema, getUserResultMessageSchema, } from "./bridge/messages/getUser.js";
36
+ export type { HostToSandboxMessage } from "./bridge/messages/hostToSandbox.js";
37
+ export { hostToSandboxMessageSchema } from "./bridge/messages/hostToSandbox.js";
38
+ export type { CustomBlockInitErrorCode, CustomBlockInitErrorInfo, InitMessage, } from "./bridge/messages/init.js";
39
+ export { customBlockInitErrorCodeSchema, customBlockInitErrorInfoSchema, initMessageSchema, } from "./bridge/messages/init.js";
40
+ export type { InvalidHostMessage } from "./bridge/messages/invalidHostMessage.js";
41
+ export { invalidHostMessageSchema } from "./bridge/messages/invalidHostMessage.js";
42
+ export type { InvalidSandboxMessage } from "./bridge/messages/invalidSandboxMessage.js";
43
+ export { invalidSandboxMessageSchema } from "./bridge/messages/invalidSandboxMessage.js";
44
+ export type { CustomBlockListUsersErrorCode, CustomBlockListUsersErrorInfo, ListUsersMessage, ListUsersResultMessage, } from "./bridge/messages/listUsers.js";
45
+ export { customBlockListUsersErrorCodeSchema, customBlockListUsersErrorInfoSchema, listUsersMessageSchema, listUsersResultMessageSchema, } from "./bridge/messages/listUsers.js";
46
+ export type { PageChangedMessage } from "./bridge/messages/pageChanged.js";
47
+ export { pageChangedMessageSchema } from "./bridge/messages/pageChanged.js";
48
+ export type { ParentChangedMessage } from "./bridge/messages/parentChanged.js";
49
+ export { parentChangedMessageSchema } from "./bridge/messages/parentChanged.js";
50
+ export type { QueryDataSourceMessage } from "./bridge/messages/queryDataSource.js";
51
+ export { queryDataSourceMessageSchema } from "./bridge/messages/queryDataSource.js";
52
+ export type { CustomBlockQueryDataSourceErrorCode, CustomBlockQueryDataSourceErrorInfo, QueryDataSourceResultMessage, } from "./bridge/messages/queryDataSourceResult.js";
53
+ export { customBlockQueryDataSourceErrorCodeSchema, customBlockQueryDataSourceErrorInfoSchema, queryDataSourceResultMessageSchema, } from "./bridge/messages/queryDataSourceResult.js";
54
+ export type { ReadyMessage } from "./bridge/messages/ready.js";
55
+ export { readyMessageSchema } from "./bridge/messages/ready.js";
56
+ export type { ResizeMessage } from "./bridge/messages/resize.js";
57
+ export { resizeMessageSchema } from "./bridge/messages/resize.js";
58
+ export type { SandboxToHostMessage } from "./bridge/messages/sandboxToHost.js";
59
+ export { sandboxToHostMessageSchema } from "./bridge/messages/sandboxToHost.js";
60
+ export type { ThemeChangedMessage } from "./bridge/messages/themeChanged.js";
61
+ export { themeChangedMessageSchema } from "./bridge/messages/themeChanged.js";
62
+ export type { UpdatePageMessage } from "./bridge/messages/updatePage.js";
63
+ export { updatePageMessageSchema } from "./bridge/messages/updatePage.js";
64
+ export type { CustomBlockUpdatePageErrorCode, CustomBlockUpdatePageErrorInfo, UpdatePageResultMessage, } from "./bridge/messages/updatePageResult.js";
65
+ export { customBlockUpdatePageErrorCodeSchema, customBlockUpdatePageErrorInfoSchema, updatePageResultMessageSchema, } from "./bridge/messages/updatePageResult.js";
66
+ export type { CustomBlockPage } from "./bridge/pages/page.js";
67
+ export { customBlockPageSchema } from "./bridge/pages/page.js";
68
+ export { notionParentSchema } from "./bridge/parent.js";
69
+ export { type CustomBlockHostHandle, type CustomBlockHostOptions, createCustomBlockHost, } from "./host/createCustomBlockHost.js";
70
+ export type { CustomBlockHostDataSourcesPayload, CustomBlockHostInitialDataSources, CustomBlockHostInitialState, } from "./host/lifecycle/types.js";
71
+ export type { CustomBlockHostCreatePageResult, CustomBlockHostGetPageResult, CustomBlockHostGetUserResult, CustomBlockHostHandlers, CustomBlockHostListUsersResult, CustomBlockHostLogDirection, CustomBlockHostUpdatePageResult, } from "./host/messages/types.js";
72
+ export type { CustomBlockHostQueryDataSourceResult } from "./host/queries/types.js";
73
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/host.ts"],"names":[],"mappings":"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"}
package/dist/host.js ADDED
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Host-side entrypoint for `@notionhq/custom-blocks/host`.
3
+ *
4
+ * Re-exports the bridge valibot schemas and data-source binding types so
5
+ * anything implementing the host side of the bridge can validate inbound
6
+ * sandbox traffic and shape outbound traffic without reaching into private
7
+ * `bridge/*` paths.
8
+ *
9
+ * Nothing here is intended for use inside a sandboxed custom block; that
10
+ * surface lives in the default `@notionhq/custom-blocks` entrypoint.
11
+ */
12
+ export { notionDataSourceBindingSchema, notionDataSourceBindingsSchema, } from "./bridge/dataSources/dataSource.js";
13
+ export { notionDataSourcePageBridgeSchema } from "./bridge/dataSources/dataSourcePage.js";
14
+ export { customBlockDataSourceResolutionErrorCodeSchema } from "./bridge/dataSources/errors.js";
15
+ export { customBlockPropertyErrorCodeSchema } from "./bridge/dataSources/resolveProperty.js";
16
+ export { customBlockErrorInfoSchema } from "./bridge/errors.js";
17
+ export { notionBlockIdSchema, notionDataSourceIdSchema, notionPageIdSchema, } from "./bridge/ids.js";
18
+ export { readIncomingType } from "./bridge/incomingType.js";
19
+ export { createPageMessageSchema } from "./bridge/messages/createPage.js";
20
+ export { createPageResultMessageSchema, customBlockCreatePageErrorCodeSchema, customBlockCreatePageErrorInfoSchema, } from "./bridge/messages/createPageResult.js";
21
+ export { currentUserChangedMessageSchema } from "./bridge/messages/currentUserChanged.js";
22
+ export { dataSourcesChangedMessageSchema } from "./bridge/messages/dataSourcesChanged.js";
23
+ export { customBlockGetPageErrorCodeSchema, customBlockGetPageErrorInfoSchema, getPageMessageSchema, getPageResultMessageSchema, } from "./bridge/messages/getPage.js";
24
+ export { customBlockGetUserErrorCodeSchema, customBlockGetUserErrorInfoSchema, getUserMessageSchema, getUserResultMessageSchema, } from "./bridge/messages/getUser.js";
25
+ export { hostToSandboxMessageSchema } from "./bridge/messages/hostToSandbox.js";
26
+ export { customBlockInitErrorCodeSchema, customBlockInitErrorInfoSchema, initMessageSchema, } from "./bridge/messages/init.js";
27
+ export { invalidHostMessageSchema } from "./bridge/messages/invalidHostMessage.js";
28
+ export { invalidSandboxMessageSchema } from "./bridge/messages/invalidSandboxMessage.js";
29
+ export { customBlockListUsersErrorCodeSchema, customBlockListUsersErrorInfoSchema, listUsersMessageSchema, listUsersResultMessageSchema, } from "./bridge/messages/listUsers.js";
30
+ export { pageChangedMessageSchema } from "./bridge/messages/pageChanged.js";
31
+ export { parentChangedMessageSchema } from "./bridge/messages/parentChanged.js";
32
+ export { queryDataSourceMessageSchema } from "./bridge/messages/queryDataSource.js";
33
+ export { customBlockQueryDataSourceErrorCodeSchema, customBlockQueryDataSourceErrorInfoSchema, queryDataSourceResultMessageSchema, } from "./bridge/messages/queryDataSourceResult.js";
34
+ export { readyMessageSchema } from "./bridge/messages/ready.js";
35
+ export { resizeMessageSchema } from "./bridge/messages/resize.js";
36
+ export { sandboxToHostMessageSchema } from "./bridge/messages/sandboxToHost.js";
37
+ export { themeChangedMessageSchema } from "./bridge/messages/themeChanged.js";
38
+ export { updatePageMessageSchema } from "./bridge/messages/updatePage.js";
39
+ export { customBlockUpdatePageErrorCodeSchema, customBlockUpdatePageErrorInfoSchema, updatePageResultMessageSchema, } from "./bridge/messages/updatePageResult.js";
40
+ export { customBlockPageSchema } from "./bridge/pages/page.js";
41
+ export { notionParentSchema } from "./bridge/parent.js";
42
+ export { createCustomBlockHost, } from "./host/createCustomBlockHost.js";
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Public entrypoint for `@notionhq/custom-blocks`.
3
+ *
4
+ * Everything re-exported here is part of the SDK's public API. Anything not
5
+ * re-exported is internal and may change without notice. Framework-neutral
6
+ * consumers should import from `@notionhq/custom-blocks`; React consumers
7
+ * should import hooks and components from `@notionhq/custom-blocks/react`.
8
+ */
9
+ export type { NotionCollectionSchema, NotionDataSource, } from "./bridge/dataSources/dataSource.js";
10
+ export type { NotionDataSourcePage, NotionDataSourcePageUpdateInput, NotionDataSourcePageUpdateResult, } from "./bridge/dataSources/dataSourcePage.js";
11
+ export type { NotionDataSourceValue } from "./bridge/dataSources/dataSourceValue.js";
12
+ export type { NotionDate, NotionDateRange, NotionDateReminder, NotionDateTime, NotionDateTimeRange, NotionDateTimeReminder, NotionDateValue, NotionNoReminder, NotionTimeReminder, } from "./bridge/dataSources/dateValue.js";
13
+ export type { CustomBlockDataSourceResolutionErrorCode, CustomBlockDataSourceResolutionErrorInfo, } from "./bridge/dataSources/errors.js";
14
+ export type { NotionBuiltinPropertyId, NotionDualProperty, NotionPropertyColor, NotionPropertyOption, NotionPropertySchema, NotionPropertyType, NotionStatusGroup, } from "./bridge/dataSources/propertySchema.js";
15
+ export { NOTION_BUILTIN_PROPERTY_IDS, NOTION_PROPERTY_TYPES, } from "./bridge/dataSources/propertySchema.js";
16
+ export type { NotionRecordPointer } from "./bridge/dataSources/recordPointer.js";
17
+ export type { CustomBlockPropertyErrorCode, CustomBlockPropertyErrorInfo, } from "./bridge/dataSources/resolveProperty.js";
18
+ export type { CustomBlockErrorInfo } from "./bridge/errors.js";
19
+ export type { NotionBlockId, NotionDataSourceId, NotionSpaceId, } from "./bridge/ids.js";
20
+ export type { CustomBlockManifest, ManifestDataSource, ManifestIcon, ManifestProperty, } from "./bridge/manifest.js";
21
+ export type { NotionCreatePagePosition } from "./bridge/messages/createPage.js";
22
+ export type { CustomBlockCreatePageErrorCode, CustomBlockCreatePageErrorInfo, } from "./bridge/messages/createPageResult.js";
23
+ export type { CustomBlockGetPageErrorCode, CustomBlockGetPageErrorInfo, } from "./bridge/messages/getPage.js";
24
+ export type { CustomBlockGetUserErrorCode, CustomBlockGetUserErrorInfo, } from "./bridge/messages/getUser.js";
25
+ export type { CustomBlockInitErrorCode, CustomBlockInitErrorInfo, } from "./bridge/messages/init.js";
26
+ export { CustomBlockInitError } from "./bridge/messages/init.js";
27
+ export type { CustomBlockListUsersErrorCode, CustomBlockListUsersErrorInfo, } from "./bridge/messages/listUsers.js";
28
+ export type { CustomBlockQueryDataSourceErrorCode, CustomBlockQueryDataSourceErrorInfo, } from "./bridge/messages/queryDataSourceResult.js";
29
+ export type { CustomBlockUpdatePageErrorCode, CustomBlockUpdatePageErrorInfo, } from "./bridge/messages/updatePageResult.js";
30
+ export type { NotionPage, NotionPageCover, NotionPageIcon, NotionPageId, NotionPagePropertyInputMap, NotionPagePropertyInputValue, NotionPagePropertyValue, NotionPagePropertyWriteMap, } from "./bridge/pages/page.js";
31
+ export type { NotionParent } from "./bridge/parent.js";
32
+ export { pages, users } from "./bridge/sandboxClient.js";
33
+ export type { NotionTheme } from "./bridge/theme.js";
34
+ export { type CustomBlockState, customBlock } from "./customBlock.js";
35
+ export { type CustomBlockInitial, type InitCustomBlockOptions, initCustomBlock, NotInIframeError, } from "./init.js";
36
+ export * from "./types.js";
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,EACX,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EACX,oBAAoB,EACpB,+BAA+B,EAC/B,gCAAgC,GAChC,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAA;AACpF,YAAY,EACX,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EACX,wCAAwC,EACxC,wCAAwC,GACxC,MAAM,gCAAgC,CAAA;AACvC,YAAY,EACX,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GACjB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,GACrB,MAAM,wCAAwC,CAAA;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AAChF,YAAY,EACX,4BAA4B,EAC5B,4BAA4B,GAC5B,MAAM,yCAAyC,CAAA;AAChD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,aAAa,GACb,MAAM,iBAAiB,CAAA;AACxB,YAAY,EACX,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,GAChB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC/E,YAAY,EACX,8BAA8B,EAC9B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,GAC3B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,GAC3B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACX,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,YAAY,EACX,6BAA6B,EAC7B,6BAA6B,GAC7B,MAAM,gCAAgC,CAAA;AACvC,YAAY,EACX,mCAAmC,EACnC,mCAAmC,GACnC,MAAM,4CAA4C,CAAA;AACnD,YAAY,EACX,8BAA8B,EAC9B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EACX,UAAU,EACV,eAAe,EACf,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,0BAA0B,GAC1B,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,KAAK,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,eAAe,EACf,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,cAAc,YAAY,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Public entrypoint for `@notionhq/custom-blocks`.
3
+ *
4
+ * Everything re-exported here is part of the SDK's public API. Anything not
5
+ * re-exported is internal and may change without notice. Framework-neutral
6
+ * consumers should import from `@notionhq/custom-blocks`; React consumers
7
+ * should import hooks and components from `@notionhq/custom-blocks/react`.
8
+ */
9
+ export { NOTION_BUILTIN_PROPERTY_IDS, NOTION_PROPERTY_TYPES, } from "./bridge/dataSources/propertySchema.js";
10
+ export { CustomBlockInitError } from "./bridge/messages/init.js";
11
+ export { pages, users } from "./bridge/sandboxClient.js";
12
+ export { customBlock } from "./customBlock.js";
13
+ export { initCustomBlock, NotInIframeError, } from "./init.js";
14
+ export * from "./types.js";
package/dist/init.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ import type { NotionDataSource } from "./bridge/dataSources/dataSource.js";
2
+ import type { NotionBlockId } from "./bridge/ids.js";
3
+ import { type CustomBlockInitErrorCode } from "./bridge/messages/init.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
+ /**
9
+ * The payload sent by the host in the `init` message in response to the sandbox's `ready` message.
10
+ */
11
+ export type CustomBlockInitial = {
12
+ theme: NotionTheme;
13
+ blockId: NotionBlockId;
14
+ parent: NotionParent;
15
+ page: CustomBlockPage;
16
+ currentUser: NotionUser;
17
+ dataSources: NotionDataSource[];
18
+ };
19
+ /**
20
+ * Error thrown when the SDK is loaded in a top-level standalone window with no parent frame.
21
+ * `postMessage` would just hit the same window and the handshake can never complete.
22
+ * `<NotionCustomBlock>` catches this specifically and falls back to a standalone preview with a
23
+ * warning banner. Direct callers can `instanceof` it to apply their own policy.
24
+ */
25
+ export declare class NotInIframeError extends Error {
26
+ constructor(message?: string);
27
+ code: CustomBlockInitErrorCode;
28
+ isRetryable: boolean;
29
+ }
30
+ /**
31
+ * Options for {@link initCustomBlock}.
32
+ */
33
+ export type InitCustomBlockOptions = {
34
+ /**
35
+ * How long to wait for the host's `init` response before rejecting with an error.
36
+ *
37
+ * @default 15000 - Intentionally longer than Notion's 10s host-dependency watchdog
38
+ * so host-owned init errors can arrive before the SDK's generic fallback appears.
39
+ */
40
+ timeoutMs?: number;
41
+ };
42
+ /**
43
+ * Performs the SDK <-> host handshake: loads `custom_blocks.json`, posts
44
+ * `ready`, then awaits the host's `init` message. Resolves with that payload.
45
+ *
46
+ * Rejects with a `CustomBlockInitError` if the host doesn't respond inside `timeoutMs`.
47
+ *
48
+ * Idempotent: subsequent calls return the same promise as the first and ignore any new options.
49
+ * Mount your React tree (or call any SDK hook / `customBlock.subscribe`) only after the
50
+ * returned promise resolves.
51
+ */
52
+ export declare function initCustomBlock(opts?: InitCustomBlockOptions): Promise<CustomBlockInitial>;
53
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAEN,KAAK,wBAAwB,EAE7B,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAChC,KAAK,EAAE,WAAW,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAC/B,CAAA;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC9B,OAAO,GAAE,MAA8B;IAOnD,IAAI,EAAE,wBAAwB,CAAA;IAC9B,WAAW,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AASD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC9B,IAAI,GAAE,sBAA2B,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAyD7B"}
package/dist/init.js ADDED
@@ -0,0 +1,87 @@
1
+ import { loadManifest } from "./bridge/loadManifest.js";
2
+ import { CustomBlockInitError, } from "./bridge/messages/init.js";
3
+ import { customBlockHost } from "./bridge/sandboxClient.js";
4
+ /**
5
+ * Error thrown when the SDK is loaded in a top-level standalone window with no parent frame.
6
+ * `postMessage` would just hit the same window and the handshake can never complete.
7
+ * `<NotionCustomBlock>` catches this specifically and falls back to a standalone preview with a
8
+ * warning banner. Direct callers can `instanceof` it to apply their own policy.
9
+ */
10
+ export class NotInIframeError extends Error {
11
+ constructor(message = NOT_IN_IFRAME_MESSAGE) {
12
+ super(message);
13
+ this.name = "NotInIframeError";
14
+ this.code = "not_in_iframe";
15
+ this.isRetryable = false;
16
+ }
17
+ }
18
+ const DEFAULT_INIT_TIMEOUT_MS = 15000;
19
+ const NOT_IN_IFRAME_MESSAGE = "<NotionCustomBlock> only works inside an iframe — use the dev shell or deploy to Notion.";
20
+ let initPromise;
21
+ /**
22
+ * Performs the SDK <-> host handshake: loads `custom_blocks.json`, posts
23
+ * `ready`, then awaits the host's `init` message. Resolves with that payload.
24
+ *
25
+ * Rejects with a `CustomBlockInitError` if the host doesn't respond inside `timeoutMs`.
26
+ *
27
+ * Idempotent: subsequent calls return the same promise as the first and ignore any new options.
28
+ * Mount your React tree (or call any SDK hook / `customBlock.subscribe`) only after the
29
+ * returned promise resolves.
30
+ */
31
+ export function initCustomBlock(opts = {}) {
32
+ if (initPromise === undefined) {
33
+ initPromise = (async () => {
34
+ // Fail fast with a typed error when rendered as a standalone tab and not in a parent frame.
35
+ // Otherwise, it would eventually hit the timeout, since `postMessage` to `window.parent`
36
+ // would just hit the same window and never arrive.
37
+ if (typeof window !== "undefined" && window.parent === window) {
38
+ throw new NotInIframeError();
39
+ }
40
+ // Load the manifest and send it to the host.
41
+ const manifestResult = await loadManifest();
42
+ customBlockHost.sendReady(manifestResult);
43
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_INIT_TIMEOUT_MS;
44
+ let message;
45
+ try {
46
+ message = await customBlockHost.awaitInit(AbortSignal.timeout(timeoutMs));
47
+ }
48
+ catch (error) {
49
+ if (isTimeoutError(error)) {
50
+ throw new CustomBlockInitError({
51
+ code: "init_timeout",
52
+ message: "Host did not respond to init before the timeout.",
53
+ isRetryable: true,
54
+ });
55
+ }
56
+ throw error;
57
+ }
58
+ if (message.status === "error") {
59
+ console.error(`[notion-custom-sdk] host reported init error (${message.error.code}): ${message.error.message}`);
60
+ throw new CustomBlockInitError(message.error);
61
+ }
62
+ const hostState = customBlockHost.getState();
63
+ if (hostState.status !== "initialized") {
64
+ throw new CustomBlockInitError({
65
+ code: "context_unavailable",
66
+ message: "Host block payload is unavailable.",
67
+ isRetryable: true,
68
+ });
69
+ }
70
+ return {
71
+ theme: message.theme,
72
+ blockId: hostState.blockId,
73
+ parent: hostState.parent,
74
+ page: hostState.page,
75
+ currentUser: message.currentUser,
76
+ dataSources: hostState.dataSources,
77
+ };
78
+ })();
79
+ }
80
+ return initPromise;
81
+ }
82
+ function isTimeoutError(error) {
83
+ return (typeof error === "object" &&
84
+ error !== null &&
85
+ "name" in error &&
86
+ (error.name === "TimeoutError" || error.name === "AbortError"));
87
+ }
@@ -0,0 +1,2 @@
1
+ export declare function DebugMessageLog(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=DebugMessageLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugMessageLog.d.ts","sourceRoot":"","sources":["../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/react/DebugMessageLog.tsx"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,4CAa9B"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useSyncExternalStore } from "react";
3
+ import { messageLog } from "../bridge/sandboxClient.js";
4
+ export function DebugMessageLog() {
5
+ const log = useSyncExternalStore(messageLog.subscribe, messageLog.getSnapshot);
6
+ const text = log
7
+ .map(entry => `[${entry.timestamp}] ${entry.direction}: ${JSON.stringify(entry.data)}`)
8
+ .join("\n");
9
+ return (_jsx("pre", { "data-testid": "debug-message-log", style: DEBUG_PRE_STYLE, children: text || "(no messages yet)" }));
10
+ }
11
+ const DEBUG_PRE_STYLE = {
12
+ margin: 0,
13
+ padding: "8px 12px",
14
+ fontSize: 12,
15
+ fontFamily: "ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
16
+ lineHeight: 1.5,
17
+ whiteSpace: "pre-wrap",
18
+ wordBreak: "break-all",
19
+ userSelect: "text",
20
+ background: "#1e1e1e",
21
+ color: "#d4d4d4",
22
+ };
@@ -0,0 +1,110 @@
1
+ .ncblock-standalone-banner {
2
+ --ncblock-standalone-banner-background: #fff8e1;
3
+ --ncblock-standalone-banner-border: #f0d77b;
4
+ --ncblock-standalone-banner-text: #5d4200;
5
+
6
+ padding: 8px 12px;
7
+ background: var(--ncblock-standalone-banner-background);
8
+ color: var(--ncblock-standalone-banner-text);
9
+ border-bottom: 1px solid var(--ncblock-standalone-banner-border);
10
+ font-size: 13px;
11
+ font-family: system-ui, sans-serif;
12
+ line-height: 1.4;
13
+ }
14
+
15
+ .ncblock-default-init-error {
16
+ --ncblock-init-error-background: #f7f7f5;
17
+ --ncblock-init-error-card-background: #ffffff;
18
+ --ncblock-init-error-border: #e5e5e1;
19
+ --ncblock-init-error-text: #1f1f1d;
20
+ --ncblock-init-error-muted-text: #5f5e5b;
21
+ --ncblock-init-error-eyebrow-text: #787774;
22
+ --ncblock-init-error-pre-background: #f1f1ef;
23
+ --ncblock-init-error-pre-text: #37352f;
24
+ --ncblock-init-error-shadow: rgba(0, 0, 0, 0.08);
25
+
26
+ box-sizing: border-box;
27
+ min-height: 240px;
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ padding: 24px;
32
+ background: var(--ncblock-init-error-background);
33
+ color: var(--ncblock-init-error-text);
34
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
35
+ color-scheme: light;
36
+ }
37
+
38
+ .ncblock-default-init-error__card {
39
+ box-sizing: border-box;
40
+ width: 100%;
41
+ max-width: 420px;
42
+ padding: 20px;
43
+ border: 1px solid var(--ncblock-init-error-border);
44
+ border-radius: 12px;
45
+ background: var(--ncblock-init-error-card-background);
46
+ box-shadow: 0 8px 24px var(--ncblock-init-error-shadow);
47
+ }
48
+
49
+ .ncblock-default-init-error__eyebrow {
50
+ margin-bottom: 8px;
51
+ font-size: 11px;
52
+ font-weight: 600;
53
+ letter-spacing: 0.08em;
54
+ text-transform: uppercase;
55
+ color: var(--ncblock-init-error-eyebrow-text);
56
+ }
57
+
58
+ .ncblock-default-init-error__title {
59
+ margin: 0;
60
+ font-size: 18px;
61
+ line-height: 1.3;
62
+ font-weight: 650;
63
+ }
64
+
65
+ .ncblock-default-init-error__body {
66
+ margin: 8px 0 0;
67
+ font-size: 14px;
68
+ line-height: 1.5;
69
+ color: var(--ncblock-init-error-muted-text);
70
+ }
71
+
72
+ .ncblock-default-init-error__details {
73
+ margin-top: 14px;
74
+ font-size: 12px;
75
+ color: var(--ncblock-init-error-muted-text);
76
+ }
77
+
78
+ .ncblock-default-init-error__pre {
79
+ margin: 8px 0 0;
80
+ padding: 10px;
81
+ overflow: auto;
82
+ border-radius: 8px;
83
+ background: var(--ncblock-init-error-pre-background);
84
+ color: var(--ncblock-init-error-pre-text);
85
+ font-size: 12px;
86
+ line-height: 1.4;
87
+ white-space: pre-wrap;
88
+ }
89
+
90
+ @media (prefers-color-scheme: dark) {
91
+ .ncblock-standalone-banner {
92
+ --ncblock-standalone-banner-background: #3b2f0b;
93
+ --ncblock-standalone-banner-border: #6f5713;
94
+ --ncblock-standalone-banner-text: #f5d36c;
95
+ }
96
+
97
+ .ncblock-default-init-error {
98
+ --ncblock-init-error-background: #191918;
99
+ --ncblock-init-error-card-background: #20201f;
100
+ --ncblock-init-error-border: #373633;
101
+ --ncblock-init-error-text: #f1f1ef;
102
+ --ncblock-init-error-muted-text: #b9b8b3;
103
+ --ncblock-init-error-eyebrow-text: #9b9a97;
104
+ --ncblock-init-error-pre-background: #2a2a28;
105
+ --ncblock-init-error-pre-text: #e8e8e4;
106
+ --ncblock-init-error-shadow: rgba(0, 0, 0, 0.35);
107
+
108
+ color-scheme: dark;
109
+ }
110
+ }
@@ -0,0 +1,50 @@
1
+ import { type ReactNode } from "react";
2
+ import { type InitCustomBlockOptions } from "../index.js";
3
+ import "./NotionCustomBlock.css";
4
+ /**
5
+ * Props accepted by {@link NotionCustomBlock}.
6
+ */
7
+ export type NotionCustomBlockProps = InitCustomBlockOptions & {
8
+ children: ReactNode;
9
+ /**
10
+ * Rendered while the SDK ↔ host handshake is in progress. Defaults to
11
+ * `null` (nothing).
12
+ */
13
+ fallback?: ReactNode;
14
+ /**
15
+ * Rendered when the handshake fails. Either a node, or a function that
16
+ * receives the `Error`. When omitted, a friendly default error card is
17
+ * rendered with developer details — replace it for production templates.
18
+ */
19
+ errorFallback?: ReactNode | ((error: Error) => ReactNode);
20
+ /**
21
+ * Whether the provider should automatically post resize messages so the
22
+ * host iframe matches the content height of `#root`. Defaults to `true`.
23
+ * Pass `false` when you want to use the default block size and are ok
24
+ * with scrollbars within the Notion client.
25
+ *
26
+ * @default true
27
+ */
28
+ autoResize?: boolean;
29
+ };
30
+ /**
31
+ * Top-level wrapper that runs the SDK ↔ host handshake and gates `children`
32
+ * until it resolves. Passes `timeoutMs` straight through to
33
+ * {@link initCustomBlock}.
34
+ *
35
+ * Templates that prefer not to write a `Root` gating component (or top-level
36
+ * `await`) can mount their app entirely inside this provider:
37
+ *
38
+ * ```tsx
39
+ * ReactDOM.createRoot(root).render(
40
+ * <NotionCustomBlock>
41
+ * <App />
42
+ * </NotionCustomBlock>,
43
+ * )
44
+ * ```
45
+ *
46
+ * Inside `children`, every SDK hook is guaranteed to return a populated
47
+ * value. Outside the provider (or during the loading window), they throw.
48
+ */
49
+ export declare function NotionCustomBlock({ children, timeoutMs, fallback, errorFallback, autoResize, }: NotionCustomBlockProps): import("react/jsx-runtime").JSX.Element;
50
+ //# sourceMappingURL=NotionCustomBlock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionCustomBlock.d.ts","sourceRoot":"","sources":["../../../../../../../../Users/nsarkar/work/custom-blocks/sdk/src/react/NotionCustomBlock.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,KAAK,sBAAsB,EAAoB,MAAM,aAAa,CAAA;AAM3E,OAAO,yBAAyB,CAAA;AAEhC;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG;IAC7D,QAAQ,EAAE,SAAS,CAAA;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAA;IACzD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,EACjC,QAAQ,EACR,SAAS,EACT,QAAe,EACf,aAAa,EACb,UAAiB,GACjB,EAAE,sBAAsB,2CA4DxB"}