@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.
- package/HOST.md +68 -37
- package/bin/src/bridge/manifest.js +3 -3
- package/dist/bridge/SandboxBridge.d.ts +6 -12
- package/dist/bridge/SandboxBridge.d.ts.map +1 -1
- package/dist/bridge/SandboxBridge.js +123 -71
- package/dist/bridge/dataSources/resolve.d.ts +3 -4
- package/dist/bridge/dataSources/resolve.d.ts.map +1 -1
- package/dist/bridge/dataSources/resolve.js +2 -12
- package/dist/bridge/hostState.d.ts +3 -2
- package/dist/bridge/hostState.d.ts.map +1 -1
- package/dist/bridge/loadManifest.d.ts +4 -4
- package/dist/bridge/loadManifest.d.ts.map +1 -1
- package/dist/bridge/loadManifest.js +2 -2
- package/dist/bridge/manifest.d.ts +3 -3
- package/dist/bridge/manifest.js +3 -3
- package/dist/bridge/messages/{ready.d.ts → connect.d.ts} +13 -11
- package/dist/bridge/messages/connect.d.ts.map +1 -0
- package/dist/bridge/messages/{ready.js → connect.js} +14 -13
- package/dist/bridge/messages/hostToSandbox.d.ts +24 -79
- package/dist/bridge/messages/hostToSandbox.d.ts.map +1 -1
- package/dist/bridge/messages/hostToSandbox.js +2 -3
- package/dist/bridge/messages/init.d.ts +35 -6
- package/dist/bridge/messages/init.d.ts.map +1 -1
- package/dist/bridge/messages/init.js +8 -4
- package/dist/bridge/messages/initResult.d.ts +29 -0
- package/dist/bridge/messages/initResult.d.ts.map +1 -0
- package/dist/bridge/messages/initResult.js +25 -0
- package/dist/bridge/messages/queryDataSource.d.ts +3 -7
- package/dist/bridge/messages/queryDataSource.d.ts.map +1 -1
- package/dist/bridge/messages/queryDataSource.js +3 -7
- package/dist/bridge/messages/queryDataSourceResult.d.ts +4 -240
- package/dist/bridge/messages/queryDataSourceResult.d.ts.map +1 -1
- package/dist/bridge/messages/queryDataSourceResult.js +4 -22
- package/dist/bridge/messages/sandboxToHost.d.ts +21 -7
- package/dist/bridge/messages/sandboxToHost.d.ts.map +1 -1
- package/dist/bridge/messages/sandboxToHost.js +4 -2
- package/dist/bridge/sandboxClient.d.ts +2 -4
- package/dist/bridge/sandboxClient.d.ts.map +1 -1
- package/dist/bridge/sandboxClient.js +2 -5
- package/dist/customBlock.d.ts +1 -1
- package/dist/customBlock.d.ts.map +1 -1
- package/dist/customBlock.js +1 -1
- package/dist/host/createCustomBlockHost.d.ts +6 -3
- package/dist/host/createCustomBlockHost.d.ts.map +1 -1
- package/dist/host/createCustomBlockHost.js +227 -58
- package/dist/host/lifecycle/initErrors.d.ts +1 -1
- package/dist/host/lifecycle/initErrors.d.ts.map +1 -1
- package/dist/host/lifecycle/initErrors.js +25 -7
- package/dist/host/lifecycle/types.d.ts +6 -4
- package/dist/host/lifecycle/types.d.ts.map +1 -1
- package/dist/host/messages/invalidSandboxMessage.js +0 -3
- package/dist/host/queries/querySubscriptions.d.ts +10 -10
- package/dist/host/queries/querySubscriptions.d.ts.map +1 -1
- package/dist/host/queries/querySubscriptions.js +35 -19
- package/dist/host/queries/types.d.ts +5 -4
- package/dist/host/queries/types.d.ts.map +1 -1
- package/dist/host.d.ts +5 -3
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +2 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/init.d.ts +7 -7
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +70 -50
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/standalonePreview.d.ts.map +1 -1
- package/dist/react/standalonePreview.js +2 -0
- package/dist/react/useCustomBlockInit.d.ts +5 -6
- package/dist/react/useCustomBlockInit.d.ts.map +1 -1
- package/dist/react/useCustomBlockInit.js +3 -19
- package/dist/react/useRuntimeState.d.ts +4 -3
- package/dist/react/useRuntimeState.d.ts.map +1 -1
- package/dist/react/useRuntimeState.js +3 -2
- package/dist/version.js +1 -1
- package/docs/data-sources.md +7 -5
- package/docs/errors.md +5 -1
- package/docs/lifecycle.md +19 -31
- package/docs/manifest.md +1 -1
- package/package.json +1 -1
- package/src/bridge/SandboxBridge.ts +151 -77
- package/src/bridge/dataSources/resolve.ts +3 -14
- package/src/bridge/hostState.ts +3 -2
- package/src/bridge/loadManifest.ts +6 -6
- package/src/bridge/manifest.ts +3 -3
- package/src/bridge/messages/{ready.ts → connect.ts} +15 -14
- package/src/bridge/messages/hostToSandbox.ts +2 -6
- package/src/bridge/messages/init.ts +24 -10
- package/src/bridge/messages/initResult.ts +37 -0
- package/src/bridge/messages/queryDataSource.ts +3 -7
- package/src/bridge/messages/queryDataSourceResult.ts +4 -24
- package/src/bridge/messages/sandboxToHost.ts +4 -2
- package/src/bridge/sandboxClient.ts +3 -8
- package/src/customBlock.ts +2 -2
- package/src/host/createCustomBlockHost.ts +269 -64
- package/src/host/lifecycle/initErrors.ts +25 -7
- package/src/host/lifecycle/types.ts +13 -4
- package/src/host/messages/invalidSandboxMessage.ts +0 -3
- package/src/host/queries/querySubscriptions.ts +58 -39
- package/src/host/queries/types.ts +10 -11
- package/src/host.ts +13 -2
- package/src/index.ts +3 -1
- package/src/init.ts +73 -60
- package/src/react/index.ts +0 -1
- package/src/react/standalonePreview.ts +2 -0
- package/src/react/useCustomBlockInit.ts +6 -27
- package/src/react/useRuntimeState.ts +4 -3
- 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
|
|
7
|
-
|
|
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,
|
|
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
|
package/dist/host.d.ts.map
CHANGED
|
@@ -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":"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"}
|
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 {
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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 {
|
|
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 `
|
|
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
|
|
25
|
+
export declare class NotInIframeError extends CustomBlockInitializationError {
|
|
26
26
|
constructor(message?: string);
|
|
27
|
-
code:
|
|
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
|
-
* `
|
|
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 `
|
|
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
|
package/dist/init.d.ts.map
CHANGED
|
@@ -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,
|
|
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 {
|
|
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
|
|
11
|
+
export class NotInIframeError extends CustomBlockInitializationError {
|
|
11
12
|
constructor(message = NOT_IN_IFRAME_MESSAGE) {
|
|
12
|
-
super(
|
|
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
|
-
* `
|
|
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 `
|
|
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 = (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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" &&
|
package/dist/react/index.d.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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,
|
|
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 {
|
|
2
|
-
import { type CustomBlockInitPayload, type InitCustomBlockOptions
|
|
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:
|
|
10
|
-
* `
|
|
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:
|
|
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,
|
|
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 {
|
|
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
|
-
},
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
package/docs/data-sources.md
CHANGED
|
@@ -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
|
|
64
|
+
function useManifest(): CustomBlockManifest;
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
Returns the
|
|
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
|
|
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
|
|
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 `
|
|
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
|
|