@notionhq/custom-blocks 0.0.76 → 0.0.78

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 (109) hide show
  1. package/HOST.md +68 -37
  2. package/bin/src/bridge/manifest.js +3 -3
  3. package/dist/bridge/SandboxBridge.d.ts +6 -12
  4. package/dist/bridge/SandboxBridge.d.ts.map +1 -1
  5. package/dist/bridge/SandboxBridge.js +123 -71
  6. package/dist/bridge/dataSources/resolve.d.ts +3 -4
  7. package/dist/bridge/dataSources/resolve.d.ts.map +1 -1
  8. package/dist/bridge/dataSources/resolve.js +2 -12
  9. package/dist/bridge/hostState.d.ts +3 -2
  10. package/dist/bridge/hostState.d.ts.map +1 -1
  11. package/dist/bridge/loadManifest.d.ts +4 -4
  12. package/dist/bridge/loadManifest.d.ts.map +1 -1
  13. package/dist/bridge/loadManifest.js +2 -2
  14. package/dist/bridge/manifest.d.ts +3 -3
  15. package/dist/bridge/manifest.js +3 -3
  16. package/dist/bridge/messages/{ready.d.ts → connect.d.ts} +13 -11
  17. package/dist/bridge/messages/connect.d.ts.map +1 -0
  18. package/dist/bridge/messages/{ready.js → connect.js} +14 -13
  19. package/dist/bridge/messages/hostToSandbox.d.ts +24 -79
  20. package/dist/bridge/messages/hostToSandbox.d.ts.map +1 -1
  21. package/dist/bridge/messages/hostToSandbox.js +2 -3
  22. package/dist/bridge/messages/init.d.ts +35 -6
  23. package/dist/bridge/messages/init.d.ts.map +1 -1
  24. package/dist/bridge/messages/init.js +8 -4
  25. package/dist/bridge/messages/initResult.d.ts +29 -0
  26. package/dist/bridge/messages/initResult.d.ts.map +1 -0
  27. package/dist/bridge/messages/initResult.js +25 -0
  28. package/dist/bridge/messages/queryDataSource.d.ts +3 -7
  29. package/dist/bridge/messages/queryDataSource.d.ts.map +1 -1
  30. package/dist/bridge/messages/queryDataSource.js +3 -7
  31. package/dist/bridge/messages/queryDataSourceResult.d.ts +4 -240
  32. package/dist/bridge/messages/queryDataSourceResult.d.ts.map +1 -1
  33. package/dist/bridge/messages/queryDataSourceResult.js +4 -22
  34. package/dist/bridge/messages/sandboxToHost.d.ts +21 -7
  35. package/dist/bridge/messages/sandboxToHost.d.ts.map +1 -1
  36. package/dist/bridge/messages/sandboxToHost.js +4 -2
  37. package/dist/bridge/sandboxClient.d.ts +2 -4
  38. package/dist/bridge/sandboxClient.d.ts.map +1 -1
  39. package/dist/bridge/sandboxClient.js +2 -5
  40. package/dist/customBlock.d.ts +1 -1
  41. package/dist/customBlock.d.ts.map +1 -1
  42. package/dist/customBlock.js +1 -1
  43. package/dist/host/createCustomBlockHost.d.ts +6 -3
  44. package/dist/host/createCustomBlockHost.d.ts.map +1 -1
  45. package/dist/host/createCustomBlockHost.js +227 -58
  46. package/dist/host/lifecycle/initErrors.d.ts +1 -1
  47. package/dist/host/lifecycle/initErrors.d.ts.map +1 -1
  48. package/dist/host/lifecycle/initErrors.js +25 -7
  49. package/dist/host/lifecycle/types.d.ts +6 -4
  50. package/dist/host/lifecycle/types.d.ts.map +1 -1
  51. package/dist/host/messages/invalidSandboxMessage.js +0 -3
  52. package/dist/host/queries/querySubscriptions.d.ts +10 -10
  53. package/dist/host/queries/querySubscriptions.d.ts.map +1 -1
  54. package/dist/host/queries/querySubscriptions.js +35 -19
  55. package/dist/host/queries/types.d.ts +5 -4
  56. package/dist/host/queries/types.d.ts.map +1 -1
  57. package/dist/host.d.ts +5 -3
  58. package/dist/host.d.ts.map +1 -1
  59. package/dist/host.js +2 -1
  60. package/dist/index.d.ts +2 -2
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1 -1
  63. package/dist/init.d.ts +7 -7
  64. package/dist/init.d.ts.map +1 -1
  65. package/dist/init.js +70 -50
  66. package/dist/react/index.d.ts +1 -1
  67. package/dist/react/index.d.ts.map +1 -1
  68. package/dist/react/standalonePreview.d.ts.map +1 -1
  69. package/dist/react/standalonePreview.js +2 -0
  70. package/dist/react/useCustomBlockInit.d.ts +5 -6
  71. package/dist/react/useCustomBlockInit.d.ts.map +1 -1
  72. package/dist/react/useCustomBlockInit.js +3 -19
  73. package/dist/react/useRuntimeState.d.ts +4 -3
  74. package/dist/react/useRuntimeState.d.ts.map +1 -1
  75. package/dist/react/useRuntimeState.js +3 -2
  76. package/dist/version.js +1 -1
  77. package/docs/data-sources.md +7 -5
  78. package/docs/errors.md +5 -1
  79. package/docs/lifecycle.md +19 -31
  80. package/docs/manifest.md +1 -1
  81. package/package.json +1 -1
  82. package/src/bridge/SandboxBridge.ts +151 -77
  83. package/src/bridge/dataSources/resolve.ts +3 -14
  84. package/src/bridge/hostState.ts +3 -2
  85. package/src/bridge/loadManifest.ts +6 -6
  86. package/src/bridge/manifest.ts +3 -3
  87. package/src/bridge/messages/{ready.ts → connect.ts} +15 -14
  88. package/src/bridge/messages/hostToSandbox.ts +2 -6
  89. package/src/bridge/messages/init.ts +24 -10
  90. package/src/bridge/messages/initResult.ts +37 -0
  91. package/src/bridge/messages/queryDataSource.ts +3 -7
  92. package/src/bridge/messages/queryDataSourceResult.ts +4 -24
  93. package/src/bridge/messages/sandboxToHost.ts +4 -2
  94. package/src/bridge/sandboxClient.ts +3 -8
  95. package/src/customBlock.ts +2 -2
  96. package/src/host/createCustomBlockHost.ts +269 -64
  97. package/src/host/lifecycle/initErrors.ts +25 -7
  98. package/src/host/lifecycle/types.ts +13 -4
  99. package/src/host/messages/invalidSandboxMessage.ts +0 -3
  100. package/src/host/queries/querySubscriptions.ts +58 -39
  101. package/src/host/queries/types.ts +10 -11
  102. package/src/host.ts +13 -2
  103. package/src/index.ts +3 -1
  104. package/src/init.ts +73 -60
  105. package/src/react/index.ts +0 -1
  106. package/src/react/standalonePreview.ts +2 -0
  107. package/src/react/useCustomBlockInit.ts +6 -27
  108. package/src/react/useRuntimeState.ts +4 -3
  109. package/dist/bridge/messages/ready.d.ts.map +0 -1
@@ -1,10 +1,11 @@
1
1
  import type { NotionDataSourcePageBridge } from "../../bridge/dataSources/dataSourcePage.js";
2
- import type { QueryDataSourceMessage } from "../../bridge/messages/queryDataSource.js";
3
2
  import type { CustomBlockQueryDataSourceErrorInfo } from "../../bridge/messages/queryDataSourceResult.js";
4
3
  export type CustomBlockHostQueryDataSourceResult = {
4
+ status: "success";
5
5
  items: NotionDataSourcePageBridge[];
6
- hasMore?: boolean;
7
- error?: CustomBlockQueryDataSourceErrorInfo;
6
+ hasMore: boolean;
7
+ } | {
8
+ status: "error";
9
+ error: CustomBlockQueryDataSourceErrorInfo;
8
10
  };
9
- export type QuerySubscriptionState = Pick<QueryDataSourceMessage, "requestId" | "snapshotId" | "limit">;
10
11
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/host/queries/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAA;AACtF,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAA;AAEzG,MAAM,MAAM,oCAAoC,GAAG;IAClD,KAAK,EAAE,0BAA0B,EAAE,CAAA;IACnC,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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/host/queries/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAA;AAC5F,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,gDAAgD,CAAA;AAEzG,MAAM,MAAM,oCAAoC,GAC7C;IACA,MAAM,EAAE,SAAS,CAAA;IACjB,KAAK,EAAE,0BAA0B,EAAE,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;CACf,GACD;IACA,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,mCAAmC,CAAA;CACzC,CAAA"}
package/dist/host.d.ts CHANGED
@@ -21,6 +21,8 @@ export type { CustomBlockErrorInfo } from "./bridge/errors.js";
21
21
  export { customBlockErrorInfoSchema } from "./bridge/errors.js";
22
22
  export { notionBlockIdSchema, notionDataSourceIdSchema, notionPageIdSchema, } from "./bridge/ids.js";
23
23
  export { readIncomingType } from "./bridge/incomingType.js";
24
+ export type { ConnectMessage } from "./bridge/messages/connect.js";
25
+ export { connectMessageSchema } from "./bridge/messages/connect.js";
24
26
  export type { CreatePageMessage } from "./bridge/messages/createPage.js";
25
27
  export { createPageMessageSchema } from "./bridge/messages/createPage.js";
26
28
  export type { CreatePageResultMessage, CustomBlockCreatePageErrorCode, CustomBlockCreatePageErrorInfo, } from "./bridge/messages/createPageResult.js";
@@ -37,6 +39,8 @@ export type { HostToSandboxMessage } from "./bridge/messages/hostToSandbox.js";
37
39
  export { hostToSandboxMessageSchema } from "./bridge/messages/hostToSandbox.js";
38
40
  export type { CustomBlockInitErrorCode, CustomBlockInitErrorInfo, InitMessage, } from "./bridge/messages/init.js";
39
41
  export { customBlockInitErrorCodeSchema, customBlockInitErrorInfoSchema, initMessageSchema, } from "./bridge/messages/init.js";
42
+ export type { CustomBlockInitResultErrorCode, CustomBlockInitResultErrorInfo, InitResultMessage, } from "./bridge/messages/initResult.js";
43
+ export { customBlockInitResultErrorCodeSchema, customBlockInitResultErrorInfoSchema, initResultMessageSchema, } from "./bridge/messages/initResult.js";
40
44
  export type { InvalidHostMessage } from "./bridge/messages/invalidHostMessage.js";
41
45
  export { invalidHostMessageSchema } from "./bridge/messages/invalidHostMessage.js";
42
46
  export type { InvalidSandboxMessage } from "./bridge/messages/invalidSandboxMessage.js";
@@ -51,8 +55,6 @@ export type { QueryDataSourceMessage } from "./bridge/messages/queryDataSource.j
51
55
  export { queryDataSourceMessageSchema } from "./bridge/messages/queryDataSource.js";
52
56
  export type { CustomBlockQueryDataSourceErrorCode, CustomBlockQueryDataSourceErrorInfo, QueryDataSourceResultMessage, } from "./bridge/messages/queryDataSourceResult.js";
53
57
  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
58
  export type { ResizeMessage } from "./bridge/messages/resize.js";
57
59
  export { resizeMessageSchema } from "./bridge/messages/resize.js";
58
60
  export type { SandboxToHostMessage } from "./bridge/messages/sandboxToHost.js";
@@ -67,7 +69,7 @@ export type { CustomBlockPage } from "./bridge/pages/page.js";
67
69
  export { customBlockPageSchema } from "./bridge/pages/page.js";
68
70
  export { notionParentSchema } from "./bridge/parent.js";
69
71
  export { type CustomBlockHostHandle, type CustomBlockHostOptions, createCustomBlockHost, } from "./host/createCustomBlockHost.js";
70
- export type { CustomBlockHostDataSourcesPayload, CustomBlockHostInitialDataSources, CustomBlockHostInitialState, } from "./host/lifecycle/types.js";
72
+ export type { ConnectSuccessMessage, CustomBlockHostDataSourcesPayload, CustomBlockHostInitialDataSources, CustomBlockHostInitialState, } from "./host/lifecycle/types.js";
71
73
  export type { CustomBlockHostCreatePageResult, CustomBlockHostGetPageResult, CustomBlockHostGetUserResult, CustomBlockHostHandlers, CustomBlockHostListUsersResult, CustomBlockHostLogDirection, CustomBlockHostUpdatePageResult, } from "./host/messages/types.js";
72
74
  export type { CustomBlockHostQueryDataSourceResult } from "./host/queries/types.js";
73
75
  //# sourceMappingURL=host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/host.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EACX,uBAAuB,EACvB,wBAAwB,GACxB,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACN,6BAA6B,EAC7B,8BAA8B,GAC9B,MAAM,oCAAoC,CAAA;AAC3C,YAAY,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAA;AACxF,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAA;AACzF,YAAY,EACX,wCAAwC,EACxC,wCAAwC,GACxC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,8CAA8C,EAAE,MAAM,gCAAgC,CAAA;AAC/F,YAAY,EACX,4BAA4B,EAC5B,4BAA4B,GAC5B,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAAE,kCAAkC,EAAE,MAAM,yCAAyC,CAAA;AAC5F,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACN,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACzE,YAAY,EACX,uBAAuB,EACvB,8BAA8B,EAC9B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACN,6BAA6B,EAC7B,oCAAoC,EACpC,oCAAoC,GACpC,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAA;AACzF,YAAY,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAA;AACxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAA;AACzF,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,GACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,iCAAiC,EACjC,iCAAiC,EACjC,oBAAoB,EACpB,0BAA0B,GAC1B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,GACpB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACN,iCAAiC,EACjC,iCAAiC,EACjC,oBAAoB,EACpB,0BAA0B,GAC1B,MAAM,8BAA8B,CAAA;AACrC,YAAY,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,YAAY,EACX,wBAAwB,EACxB,wBAAwB,EACxB,WAAW,GACX,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACN,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,GACjB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,iBAAiB,GACjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACN,oCAAoC,EACpC,oCAAoC,EACpC,uBAAuB,GACvB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAA;AACxF,YAAY,EACX,6BAA6B,EAC7B,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACN,mCAAmC,EACnC,mCAAmC,EACnC,sBAAsB,EACtB,4BAA4B,GAC5B,MAAM,gCAAgC,CAAA;AACvC,YAAY,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAC3E,YAAY,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,YAAY,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAA;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AACnF,YAAY,EACX,mCAAmC,EACnC,mCAAmC,EACnC,4BAA4B,GAC5B,MAAM,4CAA4C,CAAA;AACnD,OAAO,EACN,yCAAyC,EACzC,yCAAyC,EACzC,kCAAkC,GAClC,MAAM,4CAA4C,CAAA;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAA;AAC/E,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAC7E,YAAY,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACzE,YAAY,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,uBAAuB,GACvB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACN,oCAAoC,EACpC,oCAAoC,EACpC,6BAA6B,GAC7B,MAAM,uCAAuC,CAAA;AAC9C,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,qBAAqB,GACrB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EACX,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,EACjC,2BAA2B,GAC3B,MAAM,2BAA2B,CAAA;AAClC,YAAY,EACX,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,GAC/B,MAAM,0BAA0B,CAAA;AACjC,YAAY,EAAE,oCAAoC,EAAE,MAAM,yBAAyB,CAAA"}
package/dist/host.js CHANGED
@@ -16,6 +16,7 @@ export { customBlockPropertyErrorCodeSchema } from "./bridge/dataSources/resolve
16
16
  export { customBlockErrorInfoSchema } from "./bridge/errors.js";
17
17
  export { notionBlockIdSchema, notionDataSourceIdSchema, notionPageIdSchema, } from "./bridge/ids.js";
18
18
  export { readIncomingType } from "./bridge/incomingType.js";
19
+ export { connectMessageSchema } from "./bridge/messages/connect.js";
19
20
  export { createPageMessageSchema } from "./bridge/messages/createPage.js";
20
21
  export { createPageResultMessageSchema, customBlockCreatePageErrorCodeSchema, customBlockCreatePageErrorInfoSchema, } from "./bridge/messages/createPageResult.js";
21
22
  export { currentUserChangedMessageSchema } from "./bridge/messages/currentUserChanged.js";
@@ -24,6 +25,7 @@ export { customBlockGetPageErrorCodeSchema, customBlockGetPageErrorInfoSchema, g
24
25
  export { customBlockGetUserErrorCodeSchema, customBlockGetUserErrorInfoSchema, getUserMessageSchema, getUserResultMessageSchema, } from "./bridge/messages/getUser.js";
25
26
  export { hostToSandboxMessageSchema } from "./bridge/messages/hostToSandbox.js";
26
27
  export { customBlockInitErrorCodeSchema, customBlockInitErrorInfoSchema, initMessageSchema, } from "./bridge/messages/init.js";
28
+ export { customBlockInitResultErrorCodeSchema, customBlockInitResultErrorInfoSchema, initResultMessageSchema, } from "./bridge/messages/initResult.js";
27
29
  export { invalidHostMessageSchema } from "./bridge/messages/invalidHostMessage.js";
28
30
  export { invalidSandboxMessageSchema } from "./bridge/messages/invalidSandboxMessage.js";
29
31
  export { customBlockListUsersErrorCodeSchema, customBlockListUsersErrorInfoSchema, listUsersMessageSchema, listUsersResultMessageSchema, } from "./bridge/messages/listUsers.js";
@@ -31,7 +33,6 @@ export { pageChangedMessageSchema } from "./bridge/messages/pageChanged.js";
31
33
  export { parentChangedMessageSchema } from "./bridge/messages/parentChanged.js";
32
34
  export { queryDataSourceMessageSchema } from "./bridge/messages/queryDataSource.js";
33
35
  export { customBlockQueryDataSourceErrorCodeSchema, customBlockQueryDataSourceErrorInfoSchema, queryDataSourceResultMessageSchema, } from "./bridge/messages/queryDataSourceResult.js";
34
- export { readyMessageSchema } from "./bridge/messages/ready.js";
35
36
  export { resizeMessageSchema } from "./bridge/messages/resize.js";
36
37
  export { sandboxToHostMessageSchema } from "./bridge/messages/sandboxToHost.js";
37
38
  export { themeChangedMessageSchema } from "./bridge/messages/themeChanged.js";
package/dist/index.d.ts CHANGED
@@ -22,8 +22,8 @@ export type { NotionCreatePagePosition } from "./bridge/messages/createPage.js";
22
22
  export type { CustomBlockCreatePageErrorCode, CustomBlockCreatePageErrorInfo, } from "./bridge/messages/createPageResult.js";
23
23
  export type { CustomBlockGetPageErrorCode, CustomBlockGetPageErrorInfo, } from "./bridge/messages/getPage.js";
24
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";
25
+ export type { CustomBlockInitErrorCode, CustomBlockInitErrorInfo, CustomBlockInitializationErrorCode, CustomBlockInitializationErrorInfo, } from "./bridge/messages/init.js";
26
+ export { CustomBlockInitializationError } from "./bridge/messages/init.js";
27
27
  export type { CustomBlockListUsersErrorCode, CustomBlockListUsersErrorInfo, } from "./bridge/messages/listUsers.js";
28
28
  export type { CustomBlockQueryDataSourceErrorCode, CustomBlockQueryDataSourceErrorInfo, } from "./bridge/messages/queryDataSourceResult.js";
29
29
  export type { CustomBlockUpdatePageErrorCode, CustomBlockUpdatePageErrorInfo, } from "./bridge/messages/updatePageResult.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/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,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,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,eAAe,EACf,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/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,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,EACxB,kCAAkC,EAClC,kCAAkC,GAClC,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAC1E,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,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,eAAe,EACf,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,cAAc,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * should import hooks and components from `@notionhq/custom-blocks/react`.
8
8
  */
9
9
  export { NOTION_BUILTIN_PROPERTY_IDS, NOTION_PROPERTY_TYPES, } from "./bridge/dataSources/propertySchema.js";
10
- export { CustomBlockInitError } from "./bridge/messages/init.js";
10
+ export { CustomBlockInitializationError } from "./bridge/messages/init.js";
11
11
  export { pages, users } from "./bridge/sandboxClient.js";
12
12
  export { customBlock } from "./customBlock.js";
13
13
  export { initCustomBlock, NotInIframeError, } from "./init.js";
package/dist/init.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import type { NotionDataSource } from "./bridge/dataSources/dataSource.js";
2
2
  import type { NotionBlockId } from "./bridge/ids.js";
3
- import { type CustomBlockInitErrorCode } from "./bridge/messages/init.js";
3
+ import { CustomBlockInitializationError } from "./bridge/messages/init.js";
4
4
  import type { CustomBlockPage } from "./bridge/pages/page.js";
5
5
  import type { NotionParent } from "./bridge/parent.js";
6
6
  import type { NotionTheme } from "./bridge/theme.js";
7
7
  import type { NotionUser } from "./bridge/users/user.js";
8
8
  /**
9
- * The payload sent by the host in the `init` message in response to the sandbox's `ready` message.
9
+ * The payload sent by the host in the `init` message in response to the sandbox's `connect` message.
10
10
  */
11
11
  export type CustomBlockInitPayload = {
12
12
  theme: NotionTheme;
@@ -22,10 +22,9 @@ export type CustomBlockInitPayload = {
22
22
  * `<NotionCustomBlock>` catches this specifically and falls back to a standalone preview with a
23
23
  * warning banner. Direct callers can `instanceof` it to apply their own policy.
24
24
  */
25
- export declare class NotInIframeError extends Error {
25
+ export declare class NotInIframeError extends CustomBlockInitializationError {
26
26
  constructor(message?: string);
27
- code: CustomBlockInitErrorCode;
28
- isRetryable: boolean;
27
+ code: "not_in_iframe";
29
28
  }
30
29
  /**
31
30
  * Options for {@link initCustomBlock}.
@@ -41,9 +40,10 @@ export type InitCustomBlockOptions = {
41
40
  };
42
41
  /**
43
42
  * Performs the SDK <-> host handshake: loads `custom_blocks.json`, posts
44
- * `ready`, then awaits the host's `init` message. Resolves with that payload.
43
+ * `connect`, then awaits the host's `init` message. Resolves after the sandbox
44
+ * applies the payload and returns `initResult.success`.
45
45
  *
46
- * Rejects with a `CustomBlockInitError` if the host doesn't respond inside `timeoutMs`.
46
+ * Rejects with a `CustomBlockInitializationError` if initialization fails.
47
47
  *
48
48
  * Idempotent: subsequent calls return the same promise as the first and ignore any new options.
49
49
  * Mount your React tree (or call any SDK hook / `customBlock.subscribe`) only after the
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/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,sBAAsB,GAAG;IACpC,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,sBAAsB,CAAC,CAyDjC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../home/runner/work/custom-blocks/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,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAC1E,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;AAGxD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC,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,8BAA8B;gBACvD,OAAO,GAAE,MAA8B;IAS3C,IAAI,EAAE,eAAe,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACpC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AASD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC9B,IAAI,GAAE,sBAA2B,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CAKjC"}
package/dist/init.js CHANGED
@@ -1,18 +1,21 @@
1
1
  import { loadManifest } from "./bridge/loadManifest.js";
2
- import { CustomBlockInitError, } from "./bridge/messages/init.js";
2
+ import { CustomBlockInitializationError } from "./bridge/messages/init.js";
3
3
  import { customBlockHost } from "./bridge/sandboxClient.js";
4
+ import { unreachable } from "./utils.js";
4
5
  /**
5
6
  * Error thrown when the SDK is loaded in a top-level standalone window with no parent frame.
6
7
  * `postMessage` would just hit the same window and the handshake can never complete.
7
8
  * `<NotionCustomBlock>` catches this specifically and falls back to a standalone preview with a
8
9
  * warning banner. Direct callers can `instanceof` it to apply their own policy.
9
10
  */
10
- export class NotInIframeError extends Error {
11
+ export class NotInIframeError extends CustomBlockInitializationError {
11
12
  constructor(message = NOT_IN_IFRAME_MESSAGE) {
12
- super(message);
13
+ super({
14
+ code: "not_in_iframe",
15
+ message,
16
+ isRetryable: false,
17
+ });
13
18
  this.name = "NotInIframeError";
14
- this.code = "not_in_iframe";
15
- this.isRetryable = false;
16
19
  }
17
20
  }
18
21
  const DEFAULT_INIT_TIMEOUT_MS = 15000;
@@ -20,9 +23,10 @@ const NOT_IN_IFRAME_MESSAGE = "<NotionCustomBlock> only works inside an iframe
20
23
  let initPromise;
21
24
  /**
22
25
  * Performs the SDK <-> host handshake: loads `custom_blocks.json`, posts
23
- * `ready`, then awaits the host's `init` message. Resolves with that payload.
26
+ * `connect`, then awaits the host's `init` message. Resolves after the sandbox
27
+ * applies the payload and returns `initResult.success`.
24
28
  *
25
- * Rejects with a `CustomBlockInitError` if the host doesn't respond inside `timeoutMs`.
29
+ * Rejects with a `CustomBlockInitializationError` if initialization fails.
26
30
  *
27
31
  * Idempotent: subsequent calls return the same promise as the first and ignore any new options.
28
32
  * Mount your React tree (or call any SDK hook / `customBlock.subscribe`) only after the
@@ -30,54 +34,70 @@ let initPromise;
30
34
  */
31
35
  export function initCustomBlock(opts = {}) {
32
36
  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(`[custom-blocks-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({
37
+ initPromise = initializeCustomBlock(opts);
38
+ }
39
+ return initPromise;
40
+ }
41
+ async function initializeCustomBlock(opts) {
42
+ try {
43
+ // Fail fast with a typed error when rendered as a standalone tab and not in a parent frame.
44
+ // Otherwise, it would eventually hit the timeout, since `postMessage` to `window.parent`
45
+ // would just hit the same window and never arrive.
46
+ if (typeof window !== "undefined" && window.parent === window) {
47
+ throw new NotInIframeError();
48
+ }
49
+ // Load the manifest and send it to the host.
50
+ const manifestResult = await loadManifest();
51
+ customBlockHost.sendConnect(manifestResult);
52
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_INIT_TIMEOUT_MS;
53
+ await awaitHostInitWithTimeout(timeoutMs);
54
+ const hostState = customBlockHost.getState();
55
+ switch (hostState.status) {
56
+ case "initialized":
57
+ return {
58
+ theme: hostState.theme,
59
+ blockId: hostState.blockId,
60
+ parent: hostState.parent,
61
+ page: hostState.page,
62
+ currentUser: hostState.currentUser,
63
+ dataSources: hostState.dataSources,
64
+ };
65
+ case "uninitialized":
66
+ throw new CustomBlockInitializationError({
65
67
  code: "context_unavailable",
66
68
  message: "Host block payload is unavailable.",
67
69
  isRetryable: true,
68
70
  });
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
- })();
71
+ default:
72
+ return unreachable(hostState);
73
+ }
74
+ }
75
+ catch (error) {
76
+ if (error instanceof CustomBlockInitializationError) {
77
+ throw error;
78
+ }
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ throw new CustomBlockInitializationError({
81
+ code: "unknown_error",
82
+ message,
83
+ isRetryable: false,
84
+ });
85
+ }
86
+ }
87
+ async function awaitHostInitWithTimeout(timeoutMs) {
88
+ try {
89
+ await customBlockHost.awaitInit(AbortSignal.timeout(timeoutMs));
90
+ }
91
+ catch (error) {
92
+ if (isTimeoutError(error)) {
93
+ throw new CustomBlockInitializationError({
94
+ code: "init_timeout",
95
+ message: "Host did not respond to init before the timeout.",
96
+ isRetryable: true,
97
+ });
98
+ }
99
+ throw error;
79
100
  }
80
- return initPromise;
81
101
  }
82
102
  function isTimeoutError(error) {
83
103
  return (typeof error === "object" &&
@@ -8,7 +8,7 @@
8
8
  */
9
9
  export { NotionCustomBlock, type NotionCustomBlockProps, } from "./NotionCustomBlock.js";
10
10
  export { useCustomBlockAutoResize } from "./useCustomBlockAutoResize.js";
11
- export { type CustomBlockInitFailure, type UseCustomBlockInitResult, useCustomBlockInit, } from "./useCustomBlockInit.js";
11
+ export { type UseCustomBlockInitResult, useCustomBlockInit, } from "./useCustomBlockInit.js";
12
12
  export { useDataSource } from "./useDataSource.js";
13
13
  export { useBlockId, useCurrentUser, useManifest, usePage, useParent, useTheme, } from "./useRuntimeState.js";
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,iBAAiB,EACjB,KAAK,sBAAsB,GAC3B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,kBAAkB,GAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EACN,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,GACR,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACN,iBAAiB,EACjB,KAAK,sBAAsB,GAC3B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EACN,KAAK,wBAAwB,EAC7B,kBAAkB,GAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EACN,UAAU,EACV,cAAc,EACd,WAAW,EACX,OAAO,EACP,SAAS,EACT,QAAQ,GACR,MAAM,sBAAsB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"standalonePreview.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/standalonePreview.ts"],"names":[],"mappings":"AAOA,wBAAgB,0BAA0B,SAoBzC"}
1
+ {"version":3,"file":"standalonePreview.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/standalonePreview.ts"],"names":[],"mappings":"AAOA,wBAAgB,0BAA0B,SAsBzC"}
@@ -6,11 +6,13 @@ const previewPageId = v.parse(notionPageIdSchema, "");
6
6
  export function seedStandalonePreviewState() {
7
7
  customBlockHost.setMockState({
8
8
  type: "init",
9
+ initializationId: "standalone-preview",
9
10
  status: "success",
10
11
  theme: "light",
11
12
  blockId: previewBlockId,
12
13
  parent: { type: "page_id", page_id: previewPageId },
13
14
  page: { id: previewPageId, parent: { type: "workspace", workspace: true } },
15
+ manifest: { version: 1, dataSources: {} },
14
16
  dataSources: { bindings: {} },
15
17
  currentUser: {
16
18
  object: "user",
@@ -1,13 +1,12 @@
1
- import { CustomBlockInitError } from "../bridge/messages/init.js";
2
- import { type CustomBlockInitPayload, type InitCustomBlockOptions, NotInIframeError } from "../init.js";
3
- export type CustomBlockInitFailure = CustomBlockInitError | NotInIframeError;
1
+ import type { CustomBlockInitializationError } from "../bridge/messages/init.js";
2
+ import { type CustomBlockInitPayload, type InitCustomBlockOptions } from "../init.js";
4
3
  /**
5
4
  * Discriminated state returned by {@link useCustomBlockInit}.
6
5
  *
7
6
  * Branch on `isLoaded`/`error`:
8
7
  * - `{ isLoaded: false, error: undefined }` — handshake in progress.
9
- * - `{ isLoaded: false, error: CustomBlockInitFailure }` — handshake failed (most commonly a
10
- * `CustomBlockInitError` with code `init_timeout` because the host never sent `init`).
8
+ * - `{ isLoaded: false, error: CustomBlockInitializationError }` — handshake failed (most commonly a
9
+ * `CustomBlockInitializationError` with code `init_timeout` because the host never sent `init`).
11
10
  * - `{ isLoaded: true, initial }` — handshake complete; safe to render
12
11
  * children that call `useTheme`, `useBlockId`, etc.
13
12
  */
@@ -16,7 +15,7 @@ export type UseCustomBlockInitResult = {
16
15
  error: undefined;
17
16
  } | {
18
17
  isLoaded: false;
19
- error: CustomBlockInitFailure;
18
+ error: CustomBlockInitializationError;
20
19
  } | {
21
20
  isLoaded: true;
22
21
  error: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"useCustomBlockInit.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/useCustomBlockInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAE3B,gBAAgB,EAChB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,sBAAsB,GAAG,oBAAoB,GAAG,gBAAgB,CAAA;AAE5E;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GACjC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAA;CAAE,GAClD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,CAAC,EAAE,sBAAsB,GAC3B,wBAAwB,CA8B1B"}
1
+ {"version":3,"file":"useCustomBlockInit.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/useCustomBlockInit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAA;AAChF,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAE3B,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GACjC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GACrC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,8BAA8B,CAAA;CAAE,GAC1D;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAA;CAAE,CAAA;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,CAAC,EAAE,sBAAsB,GAC3B,wBAAwB,CA2B1B"}
@@ -1,6 +1,5 @@
1
1
  import { useEffect, useState } from "react";
2
- import { CustomBlockInitError } from "../bridge/messages/init.js";
3
- import { initCustomBlock, NotInIframeError, } from "../init.js";
2
+ import { initCustomBlock, } from "../init.js";
4
3
  /**
5
4
  * React wrapper around {@link initCustomBlock}. Kicks off the SDK ↔ host
6
5
  * handshake on mount and returns a discriminated state object so the rest of
@@ -29,12 +28,9 @@ export function useCustomBlockInit(opts) {
29
28
  if (!cancelled) {
30
29
  setState({ isLoaded: true, error: undefined, initial });
31
30
  }
32
- }, err => {
31
+ }, error => {
33
32
  if (!cancelled) {
34
- setState({
35
- isLoaded: false,
36
- error: normalizeInitError(err),
37
- });
33
+ setState({ isLoaded: false, error });
38
34
  }
39
35
  });
40
36
  return () => {
@@ -46,15 +42,3 @@ export function useCustomBlockInit(opts) {
46
42
  }, []);
47
43
  return state;
48
44
  }
49
- function normalizeInitError(error) {
50
- if (error instanceof CustomBlockInitError ||
51
- error instanceof NotInIframeError) {
52
- return error;
53
- }
54
- const message = error instanceof Error ? error.message : String(error);
55
- return new CustomBlockInitError({
56
- code: "unknown_error",
57
- message,
58
- isRetryable: false,
59
- });
60
- }
@@ -54,13 +54,14 @@ export declare function useTheme(): NotionTheme;
54
54
  */
55
55
  export declare function useCurrentUser(): NotionUser;
56
56
  /**
57
- * Returns the author-declared manifest loaded from `custom_blocks.json` — the semantic
57
+ * Returns the authoritative manifest received from the host — the semantic
58
58
  * data-source keys plus their declared `name`, `description`, and property declarations.
59
- * `null` when the block ships no manifest.
59
+ *
60
+ * Throws if called before `initCustomBlock` has resolved.
60
61
  *
61
62
  * This is the configuration the block declared, not host-resolved bindings: use
62
63
  * `useDataSource(key)` for rows and resolved schema. Handy for enumerating the declared
63
64
  * data-source keys (e.g. picking a default key, or rendering a key switcher).
64
65
  */
65
- export declare function useManifest(): CustomBlockManifest | null;
66
+ export declare function useManifest(): CustomBlockManifest;
66
67
  //# sourceMappingURL=useRuntimeState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRuntimeState.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/useRuntimeState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,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;AAGzD;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,aAAa,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,eAAe,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,IAAI,WAAW,CAEtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAE3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,GAAG,IAAI,CAExD"}
1
+ {"version":3,"file":"useRuntimeState.d.ts","sourceRoot":"","sources":["../../../../home/runner/work/custom-blocks/custom-blocks/sdk/src/react/useRuntimeState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,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;AAGzD;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,aAAa,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,IAAI,YAAY,CAExC;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,IAAI,eAAe,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,IAAI,WAAW,CAEtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAE3C;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,IAAI,mBAAmB,CAEjD"}
@@ -60,9 +60,10 @@ export function useCurrentUser() {
60
60
  return useSyncExternalStore(customBlock.subscribe, customBlock.getCurrentUser);
61
61
  }
62
62
  /**
63
- * Returns the author-declared manifest loaded from `custom_blocks.json` — the semantic
63
+ * Returns the authoritative manifest received from the host — the semantic
64
64
  * data-source keys plus their declared `name`, `description`, and property declarations.
65
- * `null` when the block ships no manifest.
65
+ *
66
+ * Throws if called before `initCustomBlock` has resolved.
66
67
  *
67
68
  * This is the configuration the block declared, not host-resolved bindings: use
68
69
  * `useDataSource(key)` for rows and resolved schema. Handy for enumerating the declared
package/dist/version.js CHANGED
@@ -4,4 +4,4 @@
4
4
  *
5
5
  * WARNING: Generated during SDK publish. Do not edit in the published package.
6
6
  */
7
- export const CUSTOM_BLOCKS_SDK_VERSION = "0.0.76"
7
+ export const CUSTOM_BLOCKS_SDK_VERSION = "0.0.78"
@@ -61,24 +61,26 @@ Query failures follow the SDK's [error-handling contract](./errors.md).
61
61
  ### `useManifest()`
62
62
 
63
63
  ```ts
64
- function useManifest(): CustomBlockManifest | null;
64
+ function useManifest(): CustomBlockManifest;
65
65
  ```
66
66
 
67
- Returns the author-declared manifest loaded from `custom_blocks.json` the semantic data-source keys plus their declared `name`, `description`, and property declarations. `null` when the block ships no manifest. This is the configuration the block _declared_, not host-resolved bindings; use `useDataSource(key)` for rows and resolved schema. Handy for enumerating declared keys:
67
+ Returns the authoritative block manifest received from the host during initialization, including the semantic data source keys plus their declared `name`, `description`, and property declarations. Handy for enumerating declared keys:
68
68
 
69
69
  ```tsx
70
70
  const manifest = useManifest();
71
- const keys = Object.keys(manifest?.dataSources ?? {});
71
+ const keys = Object.keys(manifest.dataSources);
72
72
  const activeKey = keys[0] ?? "default";
73
73
  ```
74
74
 
75
+ This API throws if called before initialization. This does not include host-resolved bindings nor does it include any actual data rows.
76
+
75
77
  ### `customBlock.getManifest()`
76
78
 
77
79
  ```ts
78
- function customBlock.getManifest(): CustomBlockManifest | null;
80
+ function customBlock.getManifest(): CustomBlockManifest;
79
81
  ```
80
82
 
81
- Framework-neutral getter for the same manifest returned by `useManifest()`. The manifest is static for the lifetime of the sandbox, so there is nothing to subscribe to.
83
+ Framework-neutral getter for the same manifest returned by `useManifest()`. Throws if called before `initCustomBlock()` resolves. The manifest is static for the lifetime of the sandbox, so there is nothing to subscribe to.
82
84
 
83
85
  ```ts
84
86
  await initCustomBlock();
package/docs/errors.md CHANGED
@@ -35,7 +35,11 @@ Each API narrows `code` to its own open string union. The known literals provide
35
35
 
36
36
  ## Initialization errors
37
37
 
38
- Unlike request helpers, `initCustomBlock` rejects with `CustomBlockInitError` when the host rejects initialization. Use `error instanceof CustomBlockInitError`, then inspect its `code` and `isRetryable` fields. Its structured payload is available as `CustomBlockInitErrorInfo`, with `code` narrowed to `CustomBlockInitErrorCode`.
38
+ Unlike request helpers, `initCustomBlock` rejects with `CustomBlockInitializationError`. Its `code` type is `CustomBlockInitializationErrorCode`, which covers failures reported by either side of the handshake plus SDK-local timeout and iframe errors.
39
+
40
+ `CustomBlockInitializationErrorInfo` is the matching `{ code, message, isRetryable }` object type.
41
+
42
+ Host implementers use the narrower message-specific types: `CustomBlockInitErrorInfo` for `init.error` and `CustomBlockInitResultErrorInfo` for `initResult.error`.
39
43
 
40
44
  See [Lifecycle and initialization](./lifecycle.md) for initialization-specific error codes.
41
45