@notionhq/custom-blocks 0.1.6 → 0.1.8

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/README.md +14 -1
  2. package/bin/notion-custom-blocks/cli.js +6 -0
  3. package/dist/bridge/SandboxBridge.d.ts +3 -9
  4. package/dist/bridge/SandboxBridge.d.ts.map +1 -1
  5. package/dist/bridge/SandboxBridge.js +5 -10
  6. package/dist/bridge/dataSources/resolve.d.ts +3 -3
  7. package/dist/bridge/dataSources/resolve.d.ts.map +1 -1
  8. package/dist/bridge/dataSources/resolve.js +1 -1
  9. package/dist/bridge/dataSources/resolveProperty.d.ts +6 -9
  10. package/dist/bridge/dataSources/resolveProperty.d.ts.map +1 -1
  11. package/dist/bridge/dataSources/resolveProperty.js +3 -6
  12. package/dist/bridge/hostState.d.ts +11 -11
  13. package/dist/bridge/hostState.d.ts.map +1 -1
  14. package/dist/bridge/loadManifest.d.ts +2 -2
  15. package/dist/bridge/loadManifest.d.ts.map +1 -1
  16. package/dist/bridge/loadManifest.js +1 -1
  17. package/dist/bridge/sandboxClient.d.ts +1 -1
  18. package/dist/bridge/sandboxClient.d.ts.map +1 -1
  19. package/dist/customBlock.d.ts +8 -8
  20. package/dist/customBlock.d.ts.map +1 -1
  21. package/dist/index.d.ts +24 -25
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -2
  24. package/dist/init.d.ts +8 -8
  25. package/dist/init.d.ts.map +1 -1
  26. package/dist/init.js +1 -1
  27. package/dist/protocol/contrast.d.ts.map +1 -0
  28. package/dist/protocol/dataSources/dataSource.d.ts.map +1 -0
  29. package/dist/protocol/dataSources/dataSourcePage.d.ts.map +1 -0
  30. package/dist/protocol/dataSources/dataSourceValue.d.ts.map +1 -0
  31. package/dist/protocol/dataSources/dateValue.d.ts.map +1 -0
  32. package/dist/{bridge → protocol}/dataSources/errors.d.ts +3 -0
  33. package/dist/protocol/dataSources/errors.d.ts.map +1 -0
  34. package/dist/{bridge → protocol}/dataSources/errors.js +3 -0
  35. package/dist/protocol/dataSources/propertySchema.d.ts.map +1 -0
  36. package/dist/protocol/dataSources/recordPointer.d.ts.map +1 -0
  37. package/dist/protocol/errors.d.ts.map +1 -0
  38. package/dist/protocol/ids.d.ts.map +1 -0
  39. package/dist/protocol/incomingType.d.ts.map +1 -0
  40. package/dist/protocol/index.d.ts +48 -0
  41. package/dist/protocol/index.d.ts.map +1 -0
  42. package/dist/protocol/index.js +47 -0
  43. package/dist/protocol/manifest.d.ts.map +1 -0
  44. package/dist/protocol/messages/connect.d.ts.map +1 -0
  45. package/dist/protocol/messages/contrastModeChanged.d.ts.map +1 -0
  46. package/dist/protocol/messages/createPage.d.ts.map +1 -0
  47. package/dist/protocol/messages/createPageResult.d.ts.map +1 -0
  48. package/dist/protocol/messages/currentUserChanged.d.ts.map +1 -0
  49. package/dist/{bridge → protocol}/messages/dataSourcesChanged.d.ts +1 -1
  50. package/dist/protocol/messages/dataSourcesChanged.d.ts.map +1 -0
  51. package/dist/{bridge → protocol}/messages/dataSourcesChanged.js +1 -1
  52. package/dist/protocol/messages/getPage.d.ts.map +1 -0
  53. package/dist/protocol/messages/getUser.d.ts.map +1 -0
  54. package/dist/{bridge → protocol}/messages/hostToSandbox.d.ts.map +1 -1
  55. package/dist/protocol/messages/init.d.ts.map +1 -0
  56. package/dist/protocol/messages/initResult.d.ts.map +1 -0
  57. package/dist/protocol/messages/invalidHostMessage.d.ts.map +1 -0
  58. package/dist/protocol/messages/invalidSandboxMessage.d.ts.map +1 -0
  59. package/dist/protocol/messages/listUsers.d.ts.map +1 -0
  60. package/dist/protocol/messages/pageChanged.d.ts.map +1 -0
  61. package/dist/protocol/messages/parentChanged.d.ts.map +1 -0
  62. package/dist/protocol/messages/queryDataSource.d.ts.map +1 -0
  63. package/dist/protocol/messages/queryDataSourceResult.d.ts.map +1 -0
  64. package/dist/protocol/messages/resize.d.ts.map +1 -0
  65. package/dist/{bridge → protocol}/messages/sandboxToHost.d.ts.map +1 -1
  66. package/dist/protocol/messages/themeChanged.d.ts.map +1 -0
  67. package/dist/protocol/messages/updatePage.d.ts.map +1 -0
  68. package/dist/protocol/messages/updatePageResult.d.ts.map +1 -0
  69. package/dist/{bridge → protocol}/pages/page.d.ts +1 -1
  70. package/dist/protocol/pages/page.d.ts.map +1 -0
  71. package/dist/protocol/parent.d.ts.map +1 -0
  72. package/dist/protocol/protocolVersion.d.ts +7 -0
  73. package/dist/protocol/protocolVersion.d.ts.map +1 -0
  74. package/dist/protocol/protocolVersion.js +6 -0
  75. package/dist/protocol/theme.d.ts.map +1 -0
  76. package/dist/protocol/users/user.d.ts.map +1 -0
  77. package/dist/react/index.d.ts +1 -1
  78. package/dist/react/index.js +1 -1
  79. package/dist/react/standalonePreview.d.ts.map +1 -1
  80. package/dist/react/standalonePreview.js +2 -2
  81. package/dist/react/useCustomBlockInit.d.ts +1 -1
  82. package/dist/react/useCustomBlockInit.d.ts.map +1 -1
  83. package/dist/react/useDataSource.d.ts +1 -1
  84. package/dist/react/useDataSource.js +1 -1
  85. package/dist/react/useRuntimeState.d.ts +9 -9
  86. package/dist/react/useRuntimeState.d.ts.map +1 -1
  87. package/dist/react/useRuntimeState.js +2 -2
  88. package/dist/types.d.ts +19 -18
  89. package/dist/types.d.ts.map +1 -1
  90. package/dist/version.js +1 -1
  91. package/docs/block-location.md +1 -1
  92. package/docs/data-sources.md +1 -1
  93. package/docs/deployment.md +1 -1
  94. package/docs/errors.md +0 -2
  95. package/docs/lifecycle.md +5 -5
  96. package/docs/pages.md +4 -4
  97. package/package.json +3 -7
  98. package/src/bridge/SandboxBridge.ts +36 -42
  99. package/src/bridge/dataSources/resolve.ts +3 -3
  100. package/src/bridge/dataSources/resolveProperty.ts +14 -20
  101. package/src/bridge/hostState.ts +15 -12
  102. package/src/bridge/loadManifest.ts +5 -2
  103. package/src/bridge/sandboxClient.ts +1 -1
  104. package/src/customBlock.ts +8 -8
  105. package/src/index.ts +26 -30
  106. package/src/init.ts +8 -8
  107. package/src/react/index.ts +1 -1
  108. package/src/react/standalonePreview.ts +5 -2
  109. package/src/react/useCustomBlockInit.ts +1 -1
  110. package/src/react/useDataSource.ts +1 -1
  111. package/src/react/useRuntimeState.ts +9 -9
  112. package/src/types.ts +27 -24
  113. package/HOST.md +0 -224
  114. package/dist/bridge/contrast.d.ts.map +0 -1
  115. package/dist/bridge/dataSources/dataSource.d.ts.map +0 -1
  116. package/dist/bridge/dataSources/dataSourcePage.d.ts.map +0 -1
  117. package/dist/bridge/dataSources/dataSourceValue.d.ts.map +0 -1
  118. package/dist/bridge/dataSources/dateValue.d.ts.map +0 -1
  119. package/dist/bridge/dataSources/errors.d.ts.map +0 -1
  120. package/dist/bridge/dataSources/propertySchema.d.ts.map +0 -1
  121. package/dist/bridge/dataSources/recordPointer.d.ts.map +0 -1
  122. package/dist/bridge/errors.d.ts.map +0 -1
  123. package/dist/bridge/ids.d.ts.map +0 -1
  124. package/dist/bridge/incomingType.d.ts.map +0 -1
  125. package/dist/bridge/manifest.d.ts.map +0 -1
  126. package/dist/bridge/messages/connect.d.ts.map +0 -1
  127. package/dist/bridge/messages/contrastModeChanged.d.ts.map +0 -1
  128. package/dist/bridge/messages/createPage.d.ts.map +0 -1
  129. package/dist/bridge/messages/createPageResult.d.ts.map +0 -1
  130. package/dist/bridge/messages/currentUserChanged.d.ts.map +0 -1
  131. package/dist/bridge/messages/dataSourcesChanged.d.ts.map +0 -1
  132. package/dist/bridge/messages/getPage.d.ts.map +0 -1
  133. package/dist/bridge/messages/getUser.d.ts.map +0 -1
  134. package/dist/bridge/messages/init.d.ts.map +0 -1
  135. package/dist/bridge/messages/initResult.d.ts.map +0 -1
  136. package/dist/bridge/messages/invalidHostMessage.d.ts.map +0 -1
  137. package/dist/bridge/messages/invalidSandboxMessage.d.ts.map +0 -1
  138. package/dist/bridge/messages/listUsers.d.ts.map +0 -1
  139. package/dist/bridge/messages/pageChanged.d.ts.map +0 -1
  140. package/dist/bridge/messages/parentChanged.d.ts.map +0 -1
  141. package/dist/bridge/messages/queryDataSource.d.ts.map +0 -1
  142. package/dist/bridge/messages/queryDataSourceResult.d.ts.map +0 -1
  143. package/dist/bridge/messages/resize.d.ts.map +0 -1
  144. package/dist/bridge/messages/themeChanged.d.ts.map +0 -1
  145. package/dist/bridge/messages/updatePage.d.ts.map +0 -1
  146. package/dist/bridge/messages/updatePageResult.d.ts.map +0 -1
  147. package/dist/bridge/pages/page.d.ts.map +0 -1
  148. package/dist/bridge/parent.d.ts.map +0 -1
  149. package/dist/bridge/theme.d.ts.map +0 -1
  150. package/dist/bridge/users/user.d.ts.map +0 -1
  151. package/dist/host/createCustomBlockHost.d.ts +0 -39
  152. package/dist/host/createCustomBlockHost.d.ts.map +0 -1
  153. package/dist/host/createCustomBlockHost.js +0 -495
  154. package/dist/host/lifecycle/initErrors.d.ts +0 -13
  155. package/dist/host/lifecycle/initErrors.d.ts.map +0 -1
  156. package/dist/host/lifecycle/initErrors.js +0 -152
  157. package/dist/host/lifecycle/protocolVersion.d.ts +0 -2
  158. package/dist/host/lifecycle/protocolVersion.d.ts.map +0 -1
  159. package/dist/host/lifecycle/protocolVersion.js +0 -3
  160. package/dist/host/lifecycle/types.d.ts +0 -28
  161. package/dist/host/lifecycle/types.d.ts.map +0 -1
  162. package/dist/host/lifecycle/types.js +0 -1
  163. package/dist/host/messages/invalidSandboxMessage.d.ts +0 -7
  164. package/dist/host/messages/invalidSandboxMessage.d.ts.map +0 -1
  165. package/dist/host/messages/invalidSandboxMessage.js +0 -21
  166. package/dist/host/messages/types.d.ts +0 -60
  167. package/dist/host/messages/types.d.ts.map +0 -1
  168. package/dist/host/messages/types.js +0 -1
  169. package/dist/host/queries/querySubscriptions.d.ts +0 -20
  170. package/dist/host/queries/querySubscriptions.d.ts.map +0 -1
  171. package/dist/host/queries/querySubscriptions.js +0 -45
  172. package/dist/host/queries/types.d.ts +0 -11
  173. package/dist/host/queries/types.d.ts.map +0 -1
  174. package/dist/host/queries/types.js +0 -1
  175. package/dist/host.d.ts +0 -79
  176. package/dist/host.d.ts.map +0 -1
  177. package/dist/host.js +0 -45
  178. package/src/bridge/contrast.ts +0 -6
  179. package/src/bridge/dataSources/dataSource.ts +0 -63
  180. package/src/bridge/dataSources/dataSourcePage.ts +0 -71
  181. package/src/bridge/dataSources/dataSourceValue.ts +0 -19
  182. package/src/bridge/dataSources/dateValue.ts +0 -96
  183. package/src/bridge/dataSources/errors.ts +0 -14
  184. package/src/bridge/dataSources/propertySchema.ts +0 -186
  185. package/src/bridge/dataSources/recordPointer.ts +0 -13
  186. package/src/bridge/errors.ts +0 -21
  187. package/src/bridge/ids.ts +0 -72
  188. package/src/bridge/incomingType.ts +0 -19
  189. package/src/bridge/manifest.ts +0 -47
  190. package/src/bridge/messages/connect.ts +0 -42
  191. package/src/bridge/messages/contrastModeChanged.ts +0 -12
  192. package/src/bridge/messages/createPage.ts +0 -62
  193. package/src/bridge/messages/createPageResult.ts +0 -52
  194. package/src/bridge/messages/currentUserChanged.ts +0 -14
  195. package/src/bridge/messages/dataSourcesChanged.ts +0 -18
  196. package/src/bridge/messages/getPage.ts +0 -51
  197. package/src/bridge/messages/getUser.ts +0 -49
  198. package/src/bridge/messages/hostToSandbox.ts +0 -39
  199. package/src/bridge/messages/init.ts +0 -99
  200. package/src/bridge/messages/initResult.ts +0 -37
  201. package/src/bridge/messages/invalidHostMessage.ts +0 -16
  202. package/src/bridge/messages/invalidSandboxMessage.ts +0 -18
  203. package/src/bridge/messages/listUsers.ts +0 -50
  204. package/src/bridge/messages/pageChanged.ts +0 -12
  205. package/src/bridge/messages/parentChanged.ts +0 -14
  206. package/src/bridge/messages/queryDataSource.ts +0 -20
  207. package/src/bridge/messages/queryDataSourceResult.ts +0 -45
  208. package/src/bridge/messages/resize.ts +0 -13
  209. package/src/bridge/messages/sandboxToHost.ts +0 -32
  210. package/src/bridge/messages/themeChanged.ts +0 -15
  211. package/src/bridge/messages/updatePage.ts +0 -22
  212. package/src/bridge/messages/updatePageResult.ts +0 -49
  213. package/src/bridge/pages/page.ts +0 -290
  214. package/src/bridge/parent.ts +0 -30
  215. package/src/bridge/theme.ts +0 -5
  216. package/src/bridge/users/user.ts +0 -31
  217. package/src/host/createCustomBlockHost.ts +0 -662
  218. package/src/host/lifecycle/initErrors.ts +0 -165
  219. package/src/host/lifecycle/protocolVersion.ts +0 -3
  220. package/src/host/lifecycle/types.ts +0 -40
  221. package/src/host/messages/invalidSandboxMessage.ts +0 -35
  222. package/src/host/messages/types.ts +0 -67
  223. package/src/host/queries/querySubscriptions.ts +0 -71
  224. package/src/host/queries/types.ts +0 -13
  225. package/src/host.ts +0 -182
  226. /package/dist/{bridge → protocol}/contrast.d.ts +0 -0
  227. /package/dist/{bridge → protocol}/contrast.js +0 -0
  228. /package/dist/{bridge → protocol}/dataSources/dataSource.d.ts +0 -0
  229. /package/dist/{bridge → protocol}/dataSources/dataSource.js +0 -0
  230. /package/dist/{bridge → protocol}/dataSources/dataSourcePage.d.ts +0 -0
  231. /package/dist/{bridge → protocol}/dataSources/dataSourcePage.js +0 -0
  232. /package/dist/{bridge → protocol}/dataSources/dataSourceValue.d.ts +0 -0
  233. /package/dist/{bridge → protocol}/dataSources/dataSourceValue.js +0 -0
  234. /package/dist/{bridge → protocol}/dataSources/dateValue.d.ts +0 -0
  235. /package/dist/{bridge → protocol}/dataSources/dateValue.js +0 -0
  236. /package/dist/{bridge → protocol}/dataSources/propertySchema.d.ts +0 -0
  237. /package/dist/{bridge → protocol}/dataSources/propertySchema.js +0 -0
  238. /package/dist/{bridge → protocol}/dataSources/recordPointer.d.ts +0 -0
  239. /package/dist/{bridge → protocol}/dataSources/recordPointer.js +0 -0
  240. /package/dist/{bridge → protocol}/errors.d.ts +0 -0
  241. /package/dist/{bridge → protocol}/errors.js +0 -0
  242. /package/dist/{bridge → protocol}/ids.d.ts +0 -0
  243. /package/dist/{bridge → protocol}/ids.js +0 -0
  244. /package/dist/{bridge → protocol}/incomingType.d.ts +0 -0
  245. /package/dist/{bridge → protocol}/incomingType.js +0 -0
  246. /package/dist/{bridge → protocol}/manifest.d.ts +0 -0
  247. /package/dist/{bridge → protocol}/manifest.js +0 -0
  248. /package/dist/{bridge → protocol}/messages/connect.d.ts +0 -0
  249. /package/dist/{bridge → protocol}/messages/connect.js +0 -0
  250. /package/dist/{bridge → protocol}/messages/contrastModeChanged.d.ts +0 -0
  251. /package/dist/{bridge → protocol}/messages/contrastModeChanged.js +0 -0
  252. /package/dist/{bridge → protocol}/messages/createPage.d.ts +0 -0
  253. /package/dist/{bridge → protocol}/messages/createPage.js +0 -0
  254. /package/dist/{bridge → protocol}/messages/createPageResult.d.ts +0 -0
  255. /package/dist/{bridge → protocol}/messages/createPageResult.js +0 -0
  256. /package/dist/{bridge → protocol}/messages/currentUserChanged.d.ts +0 -0
  257. /package/dist/{bridge → protocol}/messages/currentUserChanged.js +0 -0
  258. /package/dist/{bridge → protocol}/messages/getPage.d.ts +0 -0
  259. /package/dist/{bridge → protocol}/messages/getPage.js +0 -0
  260. /package/dist/{bridge → protocol}/messages/getUser.d.ts +0 -0
  261. /package/dist/{bridge → protocol}/messages/getUser.js +0 -0
  262. /package/dist/{bridge → protocol}/messages/hostToSandbox.d.ts +0 -0
  263. /package/dist/{bridge → protocol}/messages/hostToSandbox.js +0 -0
  264. /package/dist/{bridge → protocol}/messages/init.d.ts +0 -0
  265. /package/dist/{bridge → protocol}/messages/init.js +0 -0
  266. /package/dist/{bridge → protocol}/messages/initResult.d.ts +0 -0
  267. /package/dist/{bridge → protocol}/messages/initResult.js +0 -0
  268. /package/dist/{bridge → protocol}/messages/invalidHostMessage.d.ts +0 -0
  269. /package/dist/{bridge → protocol}/messages/invalidHostMessage.js +0 -0
  270. /package/dist/{bridge → protocol}/messages/invalidSandboxMessage.d.ts +0 -0
  271. /package/dist/{bridge → protocol}/messages/invalidSandboxMessage.js +0 -0
  272. /package/dist/{bridge → protocol}/messages/listUsers.d.ts +0 -0
  273. /package/dist/{bridge → protocol}/messages/listUsers.js +0 -0
  274. /package/dist/{bridge → protocol}/messages/pageChanged.d.ts +0 -0
  275. /package/dist/{bridge → protocol}/messages/pageChanged.js +0 -0
  276. /package/dist/{bridge → protocol}/messages/parentChanged.d.ts +0 -0
  277. /package/dist/{bridge → protocol}/messages/parentChanged.js +0 -0
  278. /package/dist/{bridge → protocol}/messages/queryDataSource.d.ts +0 -0
  279. /package/dist/{bridge → protocol}/messages/queryDataSource.js +0 -0
  280. /package/dist/{bridge → protocol}/messages/queryDataSourceResult.d.ts +0 -0
  281. /package/dist/{bridge → protocol}/messages/queryDataSourceResult.js +0 -0
  282. /package/dist/{bridge → protocol}/messages/resize.d.ts +0 -0
  283. /package/dist/{bridge → protocol}/messages/resize.js +0 -0
  284. /package/dist/{bridge → protocol}/messages/sandboxToHost.d.ts +0 -0
  285. /package/dist/{bridge → protocol}/messages/sandboxToHost.js +0 -0
  286. /package/dist/{bridge → protocol}/messages/themeChanged.d.ts +0 -0
  287. /package/dist/{bridge → protocol}/messages/themeChanged.js +0 -0
  288. /package/dist/{bridge → protocol}/messages/updatePage.d.ts +0 -0
  289. /package/dist/{bridge → protocol}/messages/updatePage.js +0 -0
  290. /package/dist/{bridge → protocol}/messages/updatePageResult.d.ts +0 -0
  291. /package/dist/{bridge → protocol}/messages/updatePageResult.js +0 -0
  292. /package/dist/{bridge → protocol}/pages/page.js +0 -0
  293. /package/dist/{bridge → protocol}/parent.d.ts +0 -0
  294. /package/dist/{bridge → protocol}/parent.js +0 -0
  295. /package/dist/{bridge → protocol}/theme.d.ts +0 -0
  296. /package/dist/{bridge → protocol}/theme.js +0 -0
  297. /package/dist/{bridge → protocol}/users/user.d.ts +0 -0
  298. /package/dist/{bridge → protocol}/users/user.js +0 -0
@@ -1,165 +0,0 @@
1
- import type {
2
- CustomBlockInitErrorCode,
3
- CustomBlockInitErrorInfo,
4
- } from "../../bridge/messages/init.js"
5
-
6
- const UNKNOWN_ERROR_MESSAGE =
7
- "Unexpected error while initializing custom block."
8
-
9
- /**
10
- * Returns the error info for a given `init` failure code.
11
- *
12
- * `init` handshakes are one-shot: after an `init` error, this host instance will not answer another
13
- * `connect` message. `isRetryable` means a fresh iframe / `init` attempt could plausibly succeed
14
- * without changing block code or host configuration.
15
- */
16
- export function initErrorForFailureReason(
17
- reason: CustomBlockInitErrorCode,
18
- data: {
19
- minBridgeProtocolVersion?: number
20
- currentBridgeProtocolVersion?: number
21
- } = {},
22
- ): CustomBlockInitErrorInfo {
23
- switch (reason) {
24
- case "no_connect":
25
- return {
26
- code: reason,
27
- message: "Sandbox did not send a connect message.",
28
- isRetryable: true,
29
- }
30
- case "invalid_connect":
31
- return {
32
- code: reason,
33
- message: "Sandbox sent an invalid connect message.",
34
- // The sandbox must be updated to send a valid connect message.
35
- isRetryable: false,
36
- }
37
- case "manifest_unavailable":
38
- return {
39
- code: reason,
40
- message: "The custom block manifest is unavailable.",
41
- isRetryable: true,
42
- }
43
- case "manifest_invalid":
44
- return {
45
- code: reason,
46
- message: "Sandbox sent an invalid manifest.",
47
- // The sandbox must be updated to a valid manifest.
48
- isRetryable: false,
49
- }
50
- case "invalid_protocol_version": {
51
- const versionText = data.currentBridgeProtocolVersion
52
- ? `: ${data.currentBridgeProtocolVersion}`
53
- : "."
54
- return {
55
- code: reason,
56
- message: `Sandbox reported an invalid bridge protocol version ${versionText}`,
57
- // The sandbox must be updated to a supported protocol version.
58
- isRetryable: false,
59
- }
60
- }
61
- case "unsupported_protocol_version": {
62
- const currentVersionText = data.currentBridgeProtocolVersion
63
- ? `${data.currentBridgeProtocolVersion} `
64
- : ""
65
- const minVersionText = data.minBridgeProtocolVersion
66
- ? ` Minimum supported version is ${data.minBridgeProtocolVersion}.`
67
- : ""
68
- return {
69
- code: reason,
70
- message: `Sandbox bridge protocol version ${currentVersionText}is not supported.${minVersionText}`,
71
- // The sandbox must be updated to a supported protocol version.
72
- isRetryable: false,
73
- }
74
- }
75
- case "context_unavailable":
76
- return {
77
- code: reason,
78
- message: "Host page context is unavailable.",
79
- isRetryable: true,
80
- }
81
- case "current_user_unavailable":
82
- return {
83
- code: reason,
84
- message: "Current user is unavailable.",
85
- isRetryable: true,
86
- }
87
- case "missing_data_source_binding":
88
- return {
89
- code: reason,
90
- message: "A required data source is not mapped.",
91
- // Host configuration must be changed before this block can initialize.
92
- isRetryable: false,
93
- }
94
- case "data_source_unavailable":
95
- return {
96
- code: reason,
97
- message: "A mapped data source is unavailable.",
98
- // This error combines some retryable errors (e.g. data source failed to load) with
99
- // some non-retryable errors (e.g. data source does not exist or user does not have
100
- // access). Fallback to assuming the error is retryable.
101
- isRetryable: true,
102
- }
103
- case "missing_property_binding":
104
- return {
105
- code: reason,
106
- message: "A required data source property is not mapped.",
107
- // Host configuration must be changed before this block can initialize.
108
- isRetryable: false,
109
- }
110
- case "invalid_property_binding":
111
- return {
112
- code: reason,
113
- message: "A mapped data source property is missing or incompatible.",
114
- // The bound property's schema must be updated or the binding must be updated to
115
- // a property with a compatible schema.
116
- isRetryable: false,
117
- }
118
- case "no_init_result":
119
- return {
120
- code: reason,
121
- message: "Sandbox did not acknowledge initialization.",
122
- isRetryable: true,
123
- }
124
- case "invalid_init_result":
125
- return {
126
- code: reason,
127
- message: "Sandbox sent an invalid initialization result.",
128
- isRetryable: false,
129
- }
130
- case "invalid_init_bindings":
131
- return {
132
- code: reason,
133
- message: "Sandbox rejected the host-provided data source bindings.",
134
- isRetryable: false,
135
- }
136
- case "not_in_iframe":
137
- return {
138
- code: reason,
139
- message: "<NotionCustomBlock> only works inside an iframe.",
140
- // The block must be embedded in an iframe.
141
- isRetryable: false,
142
- }
143
- case "init_timeout":
144
- return {
145
- code: reason,
146
- message: "Host did not respond to init before the timeout.",
147
- isRetryable: true,
148
- }
149
- case "unknown_error":
150
- return {
151
- code: reason,
152
- message: UNKNOWN_ERROR_MESSAGE,
153
- // Treat unknown errors as non-retryable.
154
- isRetryable: false,
155
- }
156
- default:
157
- console.warn(`Unexpected custom block init error: ${reason}`)
158
- return {
159
- code: reason,
160
- message: UNKNOWN_ERROR_MESSAGE,
161
- // Treat unknown error codes as non-retryable.
162
- isRetryable: false,
163
- }
164
- }
165
- }
@@ -1,3 +0,0 @@
1
- export function isValidBridgeProtocolVersion(version: number): boolean {
2
- return Number.isFinite(version) && Number.isInteger(version) && version >= 1
3
- }
@@ -1,40 +0,0 @@
1
- import type { NotionContrastMode } from "../../bridge/contrast.js"
2
- import type { NotionDataSourceBindings } from "../../bridge/dataSources/dataSource.js"
3
- import type { NotionBlockId } from "../../bridge/ids.js"
4
- import type { CustomBlockManifest } from "../../bridge/manifest.js"
5
- import type { ConnectMessage } from "../../bridge/messages/connect.js"
6
- import type { CustomBlockPage } from "../../bridge/pages/page.js"
7
- import type { NotionParent } from "../../bridge/parent.js"
8
- import type { NotionTheme } from "../../bridge/theme.js"
9
- import type { NotionUser } from "../../bridge/users/user.js"
10
-
11
- export type ConnectSuccessMessage = Extract<
12
- ConnectMessage,
13
- { status: "success" }
14
- >
15
-
16
- export type InitStatus =
17
- | "waitingForConnect"
18
- | "waitingForInitResult"
19
- | "success"
20
- | "error"
21
-
22
- export type CustomBlockHostDataSourcesPayload = {
23
- bindings: NotionDataSourceBindings
24
- }
25
-
26
- export type CustomBlockHostInitialDataSources =
27
- | CustomBlockHostDataSourcesPayload
28
- | ((connect: ConnectSuccessMessage) => CustomBlockHostDataSourcesPayload)
29
-
30
- export type CustomBlockHostInitialState = {
31
- theme: NotionTheme
32
- // TODO(custom-blocks): Make this required when next bumping the protocol version.
33
- contrastMode?: NotionContrastMode
34
- blockId: NotionBlockId
35
- parent: NotionParent
36
- page: CustomBlockPage
37
- manifest: CustomBlockManifest
38
- dataSources: CustomBlockHostInitialDataSources
39
- currentUser: NotionUser
40
- }
@@ -1,35 +0,0 @@
1
- import { readIncomingType } from "../../bridge/incomingType.js"
2
- import type { InvalidSandboxMessage } from "../../bridge/messages/invalidSandboxMessage.js"
3
-
4
- export type InvalidSandboxMessageResponse = {
5
- incomingType: string | undefined
6
- nack?: InvalidSandboxMessage
7
- }
8
-
9
- export function getInvalidSandboxMessageResponse(
10
- data: unknown,
11
- ): InvalidSandboxMessageResponse {
12
- const incomingType = readIncomingType(data)
13
- if (
14
- incomingType === "invalidHostMessage" ||
15
- incomingType === "invalidSandboxMessage"
16
- ) {
17
- return { incomingType }
18
- }
19
- return {
20
- incomingType,
21
- nack: {
22
- type: "invalidSandboxMessage",
23
- reason: nackReasonForInvalidSandboxMessage(incomingType),
24
- },
25
- }
26
- }
27
-
28
- function nackReasonForInvalidSandboxMessage(
29
- incomingType: string | undefined,
30
- ): string {
31
- if (incomingType !== undefined) {
32
- return `Unsupported sandbox message of type "${incomingType}"`
33
- }
34
- return "Unsupported sandbox message (no `type` field or non-object payload)"
35
- }
@@ -1,67 +0,0 @@
1
- import type { CreatePageMessage } from "../../bridge/messages/createPage.js"
2
- import type { CustomBlockCreatePageErrorInfo } from "../../bridge/messages/createPageResult.js"
3
- import type {
4
- CustomBlockGetPageErrorInfo,
5
- GetPageMessage,
6
- } from "../../bridge/messages/getPage.js"
7
- import type {
8
- CustomBlockGetUserErrorInfo,
9
- GetUserMessage,
10
- } from "../../bridge/messages/getUser.js"
11
- import type {
12
- CustomBlockListUsersErrorInfo,
13
- ListUsersMessage,
14
- } from "../../bridge/messages/listUsers.js"
15
- import type { QueryDataSourceMessage } from "../../bridge/messages/queryDataSource.js"
16
- import type { ResizeMessage } from "../../bridge/messages/resize.js"
17
- import type { UpdatePageMessage } from "../../bridge/messages/updatePage.js"
18
- import type { CustomBlockUpdatePageErrorInfo } from "../../bridge/messages/updatePageResult.js"
19
- import type { NotionPage } from "../../bridge/pages/page.js"
20
- import type { NotionUser, NotionUserList } from "../../bridge/users/user.js"
21
- import type { CustomBlockHostQueryDataSourceResult } from "../queries/types.js"
22
-
23
- type MaybePromise<T> = T | Promise<T>
24
-
25
- export type CustomBlockHostCreatePageResult =
26
- | { status: "success"; page: NotionPage }
27
- | { status: "error"; error: CustomBlockCreatePageErrorInfo }
28
-
29
- export type CustomBlockHostGetPageResult =
30
- | { status: "success"; page: NotionPage }
31
- | { status: "error"; error: CustomBlockGetPageErrorInfo }
32
-
33
- export type CustomBlockHostUpdatePageResult =
34
- | { status: "success"; page: NotionPage }
35
- | { status: "error"; error: CustomBlockUpdatePageErrorInfo }
36
-
37
- export type CustomBlockHostGetUserResult =
38
- | { status: "success"; user: NotionUser }
39
- | { status: "error"; error: CustomBlockGetUserErrorInfo }
40
-
41
- export type CustomBlockHostListUsersResult =
42
- | { status: "success"; list: NotionUserList }
43
- | { status: "error"; error: CustomBlockListUsersErrorInfo }
44
-
45
- export type CustomBlockHostHandlers = {
46
- queryDataSource: (
47
- message: QueryDataSourceMessage,
48
- ) => MaybePromise<CustomBlockHostQueryDataSourceResult>
49
- createPage?: (
50
- message: CreatePageMessage,
51
- ) => MaybePromise<CustomBlockHostCreatePageResult>
52
- getPage?: (
53
- message: GetPageMessage,
54
- ) => MaybePromise<CustomBlockHostGetPageResult>
55
- getUser?: (
56
- message: GetUserMessage,
57
- ) => MaybePromise<CustomBlockHostGetUserResult>
58
- listUsers?: (
59
- message: ListUsersMessage,
60
- ) => MaybePromise<CustomBlockHostListUsersResult>
61
- updatePage?: (
62
- message: UpdatePageMessage,
63
- ) => MaybePromise<CustomBlockHostUpdatePageResult>
64
- resize?: (message: ResizeMessage) => void
65
- }
66
-
67
- export type CustomBlockHostLogDirection = "in" | "out" | "warn"
@@ -1,71 +0,0 @@
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
-
5
- export type QueryRefresh = {
6
- subscriptionId: string
7
- response: CustomBlockHostQueryDataSourceResult
8
- }
9
-
10
- type QuerySubscriptionToken = object
11
-
12
- type QuerySubscriptionState = {
13
- dataSourceId: NotionDataSourceId
14
- limit: number
15
- token: QuerySubscriptionToken
16
- }
17
-
18
- export class QuerySubscriptions {
19
- private readonly bySubscriptionId = new Map<string, QuerySubscriptionState>()
20
-
21
- track(message: QueryDataSourceMessage): QuerySubscriptionToken {
22
- const token = {}
23
- this.bySubscriptionId.set(message.subscriptionId, {
24
- dataSourceId: message.dataSourceId,
25
- limit: message.limit,
26
- token,
27
- })
28
- return token
29
- }
30
-
31
- isCurrent(subscriptionId: string, token: QuerySubscriptionToken): boolean {
32
- return this.bySubscriptionId.get(subscriptionId)?.token === token
33
- }
34
-
35
- resolveRefreshes(args: {
36
- dataSourceId: NotionDataSourceId
37
- response: CustomBlockHostQueryDataSourceResult
38
- }): QueryRefresh[] {
39
- const refreshes: QueryRefresh[] = []
40
- for (const [subscriptionId, queryState] of this.bySubscriptionId) {
41
- if (queryState.dataSourceId !== args.dataSourceId) {
42
- continue
43
- }
44
- queryState.token = {}
45
- refreshes.push({
46
- subscriptionId,
47
- response: limitResponse(args.response, queryState.limit),
48
- })
49
- }
50
- return refreshes
51
- }
52
-
53
- clear() {
54
- this.bySubscriptionId.clear()
55
- }
56
- }
57
-
58
- function limitResponse(
59
- response: CustomBlockHostQueryDataSourceResult,
60
- limit: number,
61
- ): CustomBlockHostQueryDataSourceResult {
62
- if (response.status === "error") {
63
- return response
64
- }
65
- const items = response.items.slice(0, limit)
66
- return {
67
- status: "success",
68
- items,
69
- hasMore: response.hasMore || response.items.length > items.length,
70
- }
71
- }
@@ -1,13 +0,0 @@
1
- import type { NotionDataSourcePageBridge } from "../../bridge/dataSources/dataSourcePage.js"
2
- import type { CustomBlockQueryDataSourceErrorInfo } from "../../bridge/messages/queryDataSourceResult.js"
3
-
4
- export type CustomBlockHostQueryDataSourceResult =
5
- | {
6
- status: "success"
7
- items: NotionDataSourcePageBridge[]
8
- hasMore: boolean
9
- }
10
- | {
11
- status: "error"
12
- error: CustomBlockQueryDataSourceErrorInfo
13
- }
package/src/host.ts DELETED
@@ -1,182 +0,0 @@
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
-
13
- export type { NotionContrastMode } from "./bridge/contrast.js"
14
- export { notionContrastModeSchema } from "./bridge/contrast.js"
15
- export type {
16
- NotionDataSourceBinding,
17
- NotionDataSourceBindings,
18
- } from "./bridge/dataSources/dataSource.js"
19
- export {
20
- notionDataSourceBindingSchema,
21
- notionDataSourceBindingsSchema,
22
- } from "./bridge/dataSources/dataSource.js"
23
- export type { NotionDataSourcePageBridge } from "./bridge/dataSources/dataSourcePage.js"
24
- export { notionDataSourcePageBridgeSchema } from "./bridge/dataSources/dataSourcePage.js"
25
- export type {
26
- CustomBlockDataSourceResolutionErrorCode,
27
- CustomBlockDataSourceResolutionErrorInfo,
28
- } from "./bridge/dataSources/errors.js"
29
- export { customBlockDataSourceResolutionErrorCodeSchema } from "./bridge/dataSources/errors.js"
30
- export type {
31
- CustomBlockPropertyErrorCode,
32
- CustomBlockPropertyErrorInfo,
33
- } from "./bridge/dataSources/resolveProperty.js"
34
- export { customBlockPropertyErrorCodeSchema } from "./bridge/dataSources/resolveProperty.js"
35
- export type { CustomBlockErrorInfo } from "./bridge/errors.js"
36
- export { customBlockErrorInfoSchema } from "./bridge/errors.js"
37
- export {
38
- notionBlockIdSchema,
39
- notionDataSourceIdSchema,
40
- notionPageIdSchema,
41
- } from "./bridge/ids.js"
42
- export { readIncomingType } from "./bridge/incomingType.js"
43
- export type { ConnectMessage } from "./bridge/messages/connect.js"
44
- export { connectMessageSchema } from "./bridge/messages/connect.js"
45
- export type { ContrastModeChangedMessage } from "./bridge/messages/contrastModeChanged.js"
46
- export { contrastModeChangedMessageSchema } from "./bridge/messages/contrastModeChanged.js"
47
- export type { CreatePageMessage } from "./bridge/messages/createPage.js"
48
- export { createPageMessageSchema } from "./bridge/messages/createPage.js"
49
- export type {
50
- CreatePageResultMessage,
51
- CustomBlockCreatePageErrorCode,
52
- CustomBlockCreatePageErrorInfo,
53
- } from "./bridge/messages/createPageResult.js"
54
- export {
55
- createPageResultMessageSchema,
56
- customBlockCreatePageErrorCodeSchema,
57
- customBlockCreatePageErrorInfoSchema,
58
- } from "./bridge/messages/createPageResult.js"
59
- export type { CurrentUserChangedMessage } from "./bridge/messages/currentUserChanged.js"
60
- export { currentUserChangedMessageSchema } from "./bridge/messages/currentUserChanged.js"
61
- export type { DataSourcesChangedMessage } from "./bridge/messages/dataSourcesChanged.js"
62
- export { dataSourcesChangedMessageSchema } from "./bridge/messages/dataSourcesChanged.js"
63
- export type {
64
- CustomBlockGetPageErrorCode,
65
- CustomBlockGetPageErrorInfo,
66
- GetPageMessage,
67
- GetPageResultMessage,
68
- } from "./bridge/messages/getPage.js"
69
- export {
70
- customBlockGetPageErrorCodeSchema,
71
- customBlockGetPageErrorInfoSchema,
72
- getPageMessageSchema,
73
- getPageResultMessageSchema,
74
- } from "./bridge/messages/getPage.js"
75
- export type {
76
- CustomBlockGetUserErrorCode,
77
- CustomBlockGetUserErrorInfo,
78
- GetUserMessage,
79
- GetUserResultMessage,
80
- } from "./bridge/messages/getUser.js"
81
- export {
82
- customBlockGetUserErrorCodeSchema,
83
- customBlockGetUserErrorInfoSchema,
84
- getUserMessageSchema,
85
- getUserResultMessageSchema,
86
- } from "./bridge/messages/getUser.js"
87
- export type { HostToSandboxMessage } from "./bridge/messages/hostToSandbox.js"
88
- export { hostToSandboxMessageSchema } from "./bridge/messages/hostToSandbox.js"
89
- export type {
90
- CustomBlockInitErrorCode,
91
- CustomBlockInitErrorInfo,
92
- InitMessage,
93
- } from "./bridge/messages/init.js"
94
- export {
95
- customBlockInitErrorCodeSchema,
96
- customBlockInitErrorInfoSchema,
97
- initMessageSchema,
98
- } from "./bridge/messages/init.js"
99
- export type {
100
- CustomBlockInitResultErrorCode,
101
- CustomBlockInitResultErrorInfo,
102
- InitResultMessage,
103
- } from "./bridge/messages/initResult.js"
104
- export {
105
- customBlockInitResultErrorCodeSchema,
106
- customBlockInitResultErrorInfoSchema,
107
- initResultMessageSchema,
108
- } from "./bridge/messages/initResult.js"
109
- export type { InvalidHostMessage } from "./bridge/messages/invalidHostMessage.js"
110
- export { invalidHostMessageSchema } from "./bridge/messages/invalidHostMessage.js"
111
- export type { InvalidSandboxMessage } from "./bridge/messages/invalidSandboxMessage.js"
112
- export { invalidSandboxMessageSchema } from "./bridge/messages/invalidSandboxMessage.js"
113
- export type {
114
- CustomBlockListUsersErrorCode,
115
- CustomBlockListUsersErrorInfo,
116
- ListUsersMessage,
117
- ListUsersResultMessage,
118
- } from "./bridge/messages/listUsers.js"
119
- export {
120
- customBlockListUsersErrorCodeSchema,
121
- customBlockListUsersErrorInfoSchema,
122
- listUsersMessageSchema,
123
- listUsersResultMessageSchema,
124
- } from "./bridge/messages/listUsers.js"
125
- export type { PageChangedMessage } from "./bridge/messages/pageChanged.js"
126
- export { pageChangedMessageSchema } from "./bridge/messages/pageChanged.js"
127
- export type { ParentChangedMessage } from "./bridge/messages/parentChanged.js"
128
- export { parentChangedMessageSchema } from "./bridge/messages/parentChanged.js"
129
- export type { QueryDataSourceMessage } from "./bridge/messages/queryDataSource.js"
130
- export { queryDataSourceMessageSchema } from "./bridge/messages/queryDataSource.js"
131
- export type {
132
- CustomBlockQueryDataSourceErrorCode,
133
- CustomBlockQueryDataSourceErrorInfo,
134
- QueryDataSourceResultMessage,
135
- } from "./bridge/messages/queryDataSourceResult.js"
136
- export {
137
- customBlockQueryDataSourceErrorCodeSchema,
138
- customBlockQueryDataSourceErrorInfoSchema,
139
- queryDataSourceResultMessageSchema,
140
- } from "./bridge/messages/queryDataSourceResult.js"
141
- export type { ResizeMessage } from "./bridge/messages/resize.js"
142
- export { resizeMessageSchema } from "./bridge/messages/resize.js"
143
- export type { SandboxToHostMessage } from "./bridge/messages/sandboxToHost.js"
144
- export { sandboxToHostMessageSchema } from "./bridge/messages/sandboxToHost.js"
145
- export type { ThemeChangedMessage } from "./bridge/messages/themeChanged.js"
146
- export { themeChangedMessageSchema } from "./bridge/messages/themeChanged.js"
147
- export type { UpdatePageMessage } from "./bridge/messages/updatePage.js"
148
- export { updatePageMessageSchema } from "./bridge/messages/updatePage.js"
149
- export type {
150
- CustomBlockUpdatePageErrorCode,
151
- CustomBlockUpdatePageErrorInfo,
152
- UpdatePageResultMessage,
153
- } from "./bridge/messages/updatePageResult.js"
154
- export {
155
- customBlockUpdatePageErrorCodeSchema,
156
- customBlockUpdatePageErrorInfoSchema,
157
- updatePageResultMessageSchema,
158
- } from "./bridge/messages/updatePageResult.js"
159
- export type { CustomBlockPage } from "./bridge/pages/page.js"
160
- export { customBlockPageSchema } from "./bridge/pages/page.js"
161
- export { notionParentSchema } from "./bridge/parent.js"
162
- export {
163
- type CustomBlockHostHandle,
164
- type CustomBlockHostOptions,
165
- createCustomBlockHost,
166
- } from "./host/createCustomBlockHost.js"
167
- export type {
168
- ConnectSuccessMessage,
169
- CustomBlockHostDataSourcesPayload,
170
- CustomBlockHostInitialDataSources,
171
- CustomBlockHostInitialState,
172
- } from "./host/lifecycle/types.js"
173
- export type {
174
- CustomBlockHostCreatePageResult,
175
- CustomBlockHostGetPageResult,
176
- CustomBlockHostGetUserResult,
177
- CustomBlockHostHandlers,
178
- CustomBlockHostListUsersResult,
179
- CustomBlockHostLogDirection,
180
- CustomBlockHostUpdatePageResult,
181
- } from "./host/messages/types.js"
182
- export type { CustomBlockHostQueryDataSourceResult } from "./host/queries/types.js"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes