@notionhq/custom-blocks-host 0.1.11 → 0.1.12

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/README.md CHANGED
@@ -48,7 +48,6 @@ import { createCustomBlockHost } from "@notionhq/custom-blocks-host";
48
48
  const host = createCustomBlockHost({
49
49
  iframe,
50
50
  sandboxOrigin: "https://example.com",
51
- minBridgeProtocolVersion: 3,
52
51
  initialState: {
53
52
  theme,
54
53
  contrastMode,
@@ -90,6 +89,10 @@ const host = createCustomBlockHost({
90
89
  });
91
90
  ```
92
91
 
92
+ `minBridgeProtocolVersion` is optional and defaults to the oldest protocol version the host runtime supports.
93
+ Set a higher value to retire older SDKs. Lower values cannot enable versions the runtime no longer supports.
94
+ The host does not enforce a maximum protocol version.
95
+
93
96
  Each host instance initializes once:
94
97
 
95
98
  - `onManifest` provides the selected manifest as soon as it is available after
@@ -114,6 +117,21 @@ request handler may return its result synchronously or as a promise. Results
114
117
  use a `status` discriminator: successful results carry their response payload,
115
118
  while errors carry `{ code, message, isRetryable }`.
116
119
 
120
+ ### Request types
121
+
122
+ TypeScript infers request types for handlers passed to `createCustomBlockHost()`.
123
+ For separately defined handlers and helpers, import the corresponding request
124
+ and page-property types directly from `@notionhq/custom-blocks-host`.
125
+
126
+ Request types such as `GetPageMessage` describe validated messages that handlers
127
+ receive. The corresponding `*MessageInput` types accept plain string IDs for
128
+ adapters and test fixtures that construct requests. These types do not validate
129
+ values at runtime. The host runtime validates incoming messages before it calls
130
+ handlers. Your implementation remains responsible for permissions and record
131
+ access.
132
+
133
+ ### Query requests
134
+
117
135
  The `queryDataSource` handler receives raw data source and property IDs. Its
118
136
  optional `filter` and `sorts` fields have already been resolved by the SDK.
119
137
  The host validates that sorts contain at most 10 unique property IDs, checks
@@ -11,7 +11,12 @@ import type { CustomBlockHostHandlers, CustomBlockHostInitializationFailure, Cus
11
11
  export type CustomBlockHostOptions = {
12
12
  iframe: HTMLIFrameElement;
13
13
  sandboxOrigin: string;
14
- minBridgeProtocolVersion: number;
14
+ /**
15
+ * Minimum sandbox protocol version to accept. Defaults to the host runtime
16
+ * minimum. Higher values retire older SDKs; lower values cannot enable
17
+ * protocol versions the runtime no longer supports.
18
+ */
19
+ minBridgeProtocolVersion?: number;
15
20
  noConnectTimeoutMs?: number;
16
21
  noInitResultTimeoutMs?: number;
17
22
  initialState: CustomBlockHostInitialState;
@@ -1 +1 @@
1
- {"version":3,"file":"createCustomBlockHost.d.ts","sourceRoot":"","sources":["../src/createCustomBlockHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,8CAA8C,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AAavF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAA;AAatG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAE9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAGhF,OAAO,KAAK,EACX,iCAAiC,EACjC,2BAA2B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EACX,uBAAuB,EACvB,oCAAoC,EACpC,2BAA2B,EAC3B,MAAM,qBAAqB,CAAA;AAS5B,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,wBAAwB,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,EAAE,2BAA2B,CAAA;IACzC,QAAQ,EAAE,uBAAuB,CAAA;IACjC,oHAAoH;IACpH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACpD,gGAAgG;IAChG,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,QAAQ,EAAE,mBAAmB,CAAA;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;KACtB,KAAK,IAAI,CAAA;IACV,6FAA6F;IAC7F,uBAAuB,CAAC,EAAE,CACzB,KAAK,EAAE,oCAAoC,KACvC,IAAI,CAAA;IACT;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1E,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,eAAe,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC3D,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;IACxC,cAAc,EAAE,CAAC,WAAW,EAAE,iCAAiC,KAAK,IAAI,CAAA;IACxE,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,kBAAkB,CAAA;KAAE,KAAK,IAAI,CAAA;CAClE,CAAA;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,CAsYvB"}
1
+ {"version":3,"file":"createCustomBlockHost.d.ts","sourceRoot":"","sources":["../src/createCustomBlockHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,kBAAkB,EACvB,MAAM,8CAA8C,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA;AACjF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AAavF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAA;AAatG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAGhF,OAAO,KAAK,EACX,iCAAiC,EACjC,2BAA2B,EAC3B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,KAAK,EACX,uBAAuB,EACvB,oCAAoC,EACpC,2BAA2B,EAC3B,MAAM,qBAAqB,CAAA;AAU5B,MAAM,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,iBAAiB,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,YAAY,EAAE,2BAA2B,CAAA;IACzC,QAAQ,EAAE,uBAAuB,CAAA;IACjC,oHAAoH;IACpH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACpD,gGAAgG;IAChG,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,QAAQ,EAAE,mBAAmB,CAAA;QAC7B,aAAa,CAAC,EAAE,MAAM,CAAA;KACtB,KAAK,IAAI,CAAA;IACV,6FAA6F;IAC7F,uBAAuB,CAAC,EAAE,CACzB,KAAK,EAAE,oCAAoC,KACvC,IAAI,CAAA;IACT;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;CAC1E,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,IAAI,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAA;IACtC,eAAe,EAAE,CAAC,YAAY,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC3D,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAA;IACxC,cAAc,EAAE,CAAC,WAAW,EAAE,iCAAiC,KAAK,IAAI,CAAA;IACxE,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,kBAAkB,CAAA;KAAE,KAAK,IAAI,CAAA;CAClE,CAAA;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,sBAAsB,GAC7B,qBAAqB,CAyYvB"}
@@ -1,14 +1,17 @@
1
1
  import { DEFAULT_CONTRAST_MODE, } from "./protocol/contrast.js";
2
- import { CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION } from "./protocol/protocolVersion.js";
3
2
  import { initErrorForFailureReason } from "./lifecycle/initErrors.js";
4
3
  import { createInitializationController } from "./lifecycle/initializationController.js";
5
4
  import { createSandboxMessageRouter } from "./messages/sandboxMessageRouter.js";
5
+ import { MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION } from "./protocolVersion.js";
6
6
  import { QuerySubscriptions, } from "./queries/querySubscriptions.js";
7
7
  import { validateQueryDataSourceFilter } from "./queries/validateQueryDataSourceFilter.js";
8
8
  import { validateQueryDataSourceSorts } from "./queries/validateQueryDataSourceSorts.js";
9
9
  export function createCustomBlockHost(options) {
10
10
  const { iframe, initialState, handlers, onManifest, onInitialized, onInitializationFailure, onRestartRequired, onLog, sandboxOrigin, minBridgeProtocolVersion: configuredMinBridgeProtocolVersion, noConnectTimeoutMs, noInitResultTimeoutMs, } = options;
11
- const minBridgeProtocolVersion = Math.max(configuredMinBridgeProtocolVersion ?? CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION, CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION);
11
+ // Callers can retire older SDKs, but cannot restore support for protocols
12
+ // the runtime no longer implements. Omission uses the runtime minimum.
13
+ const minBridgeProtocolVersion = Math.max(configuredMinBridgeProtocolVersion ??
14
+ MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION, MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION);
12
15
  let theme = initialState.theme;
13
16
  let contrastMode = initialState.contrastMode ?? DEFAULT_CONTRAST_MODE;
14
17
  let parent = initialState.parent;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,14 @@
1
+ export type { CreatePageMessage } from "./protocol/messages/createPage.js";
2
+ export type { GetPageMessage } from "./protocol/messages/getPage.js";
3
+ export type { GetUserMessage } from "./protocol/messages/getUser.js";
4
+ export type { ListUsersMessage } from "./protocol/messages/listUsers.js";
5
+ export type { QueryDataSourceMessage } from "./protocol/messages/queryDataSource.js";
6
+ export type { ResizeMessage } from "./protocol/messages/resize.js";
7
+ export type { UpdatePageMessage } from "./protocol/messages/updatePage.js";
8
+ export type { NotionPagePropertyValue, NotionPagePropertyWriteMap, NotionRichTextItem, } from "./protocol/pages/page.js";
1
9
  export { type AutoBindableProperty, getAutoBoundPropertyIdsByKey, } from "./autoBindProperties.js";
2
10
  export { type CustomBlockHostHandle, type CustomBlockHostOptions, createCustomBlockHost, } from "./createCustomBlockHost.js";
3
11
  export type { ConnectSuccessMessage, CustomBlockHostDataSourcesPayload, CustomBlockHostInitialDataSources, CustomBlockHostInitialState, } from "./lifecycle/types.js";
4
- export type { CustomBlockHostCreatePageResult, CustomBlockHostGetPageResult, CustomBlockHostGetUserResult, CustomBlockHostHandlers, CustomBlockHostInitializationFailure, CustomBlockHostListUsersResult, CustomBlockHostLogDirection, CustomBlockHostUpdatePageResult, } from "./messages/types.js";
12
+ export type { CreatePageMessageInput, CustomBlockHostCreatePageResult, CustomBlockHostGetPageResult, CustomBlockHostGetUserResult, CustomBlockHostHandlers, CustomBlockHostInitializationFailure, CustomBlockHostListUsersResult, CustomBlockHostLogDirection, CustomBlockHostUpdatePageResult, GetPageMessageInput, GetUserMessageInput, ListUsersMessageInput, QueryDataSourceMessageInput, ResizeMessageInput, UpdatePageMessageInput, } from "./messages/types.js";
5
13
  export type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js";
6
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,oBAAoB,EACzB,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,qBAAqB,GACrB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACX,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,EACjC,2BAA2B,GAC3B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACX,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,oCAAoC,EACpC,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,GAC/B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,YAAY,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAA;AAC9F,YAAY,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAA;AAC1G,YAAY,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAA;AACxF,YAAY,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,YAAY,EACX,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,GAClB,MAAM,gDAAgD,CAAA;AACvD,OAAO,EACN,KAAK,oBAAoB,EACzB,4BAA4B,GAC5B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,qBAAqB,GACrB,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACX,qBAAqB,EACrB,iCAAiC,EACjC,iCAAiC,EACjC,2BAA2B,GAC3B,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EACX,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,oCAAoC,EACpC,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,GACtB,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EAAE,oCAAoC,EAAE,MAAM,oBAAoB,CAAA"}
@@ -17,6 +17,10 @@ export type CustomBlockHostDataSourcesPayload = {
17
17
  export type CustomBlockHostInitialDataSources = CustomBlockHostDataSourcesPayload | ((connect: ConnectSuccessMessage) => CustomBlockHostDataSourcesPayload);
18
18
  export type CustomBlockHostInitialState = {
19
19
  theme: NotionTheme;
20
+ /**
21
+ * Defaults to standard for existing host integrations.
22
+ * TODO(custom-blocks): Make this required when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION increases to 4.
23
+ */
20
24
  contrastMode?: NotionContrastMode;
21
25
  blockId: NotionBlockId;
22
26
  parent: NotionParent;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAA;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAEhF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAC1C,cAAc,EACd;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CACrB,CAAA;AAED,MAAM,MAAM,UAAU,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,SAAS,GACT,OAAO,CAAA;AAEV,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,wBAAwB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iCAAiC,GAC1C,iCAAiC,GACjC,CAAC,CAAC,OAAO,EAAE,qBAAqB,KAAK,iCAAiC,CAAC,CAAA;AAE1E,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,WAAW,CAAA;IAElB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,WAAW,EAAE,iCAAiC,CAAA;IAC9C,WAAW,EAAE,UAAU,CAAA;CACvB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lifecycle/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,4DAA4D,CAAA;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAEhF,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAC1C,cAAc,EACd;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CACrB,CAAA;AAED,MAAM,MAAM,UAAU,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,SAAS,GACT,OAAO,CAAA;AAEV,MAAM,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,wBAAwB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iCAAiC,GAC1C,iCAAiC,GACjC,CAAC,CAAC,OAAO,EAAE,qBAAqB,KAAK,iCAAiC,CAAC,CAAA;AAE1E,MAAM,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,WAAW,CAAA;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB;;;OAGG;IACH,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IAC9B,WAAW,EAAE,iCAAiC,CAAA;IAC9C,WAAW,EAAE,UAAU,CAAA;CACvB,CAAA"}
@@ -1,15 +1,16 @@
1
- import type { CreatePageMessage } from "../protocol/messages/createPage.js";
1
+ import type { CreatePageMessage, createPageMessageSchema } from "../protocol/messages/createPage.js";
2
2
  import type { CreatePageResultMessage, CustomBlockCreatePageErrorInfo } from "../protocol/messages/createPageResult.js";
3
- import type { CustomBlockGetPageErrorInfo, GetPageMessage, GetPageResultMessage } from "../protocol/messages/getPage.js";
4
- import type { CustomBlockGetUserErrorInfo, GetUserMessage, GetUserResultMessage } from "../protocol/messages/getUser.js";
3
+ import type { CustomBlockGetPageErrorInfo, GetPageMessage, GetPageResultMessage, getPageMessageSchema } from "../protocol/messages/getPage.js";
4
+ import type { CustomBlockGetUserErrorInfo, GetUserMessage, GetUserResultMessage, getUserMessageSchema } from "../protocol/messages/getUser.js";
5
5
  import type { CustomBlockInitErrorInfo } from "../protocol/messages/init.js";
6
6
  import type { CustomBlockInitResultErrorInfo } from "../protocol/messages/initResult.js";
7
- import type { CustomBlockListUsersErrorInfo, ListUsersMessage, ListUsersResultMessage } from "../protocol/messages/listUsers.js";
7
+ import type { CustomBlockListUsersErrorInfo, ListUsersMessage, ListUsersResultMessage, listUsersMessageSchema } from "../protocol/messages/listUsers.js";
8
8
  import type { BridgeMessagePayload } from "../protocol/messages/messagePayload.js";
9
- import type { QueryDataSourceMessage } from "../protocol/messages/queryDataSource.js";
10
- import type { ResizeMessage } from "../protocol/messages/resize.js";
11
- import type { UpdatePageMessage } from "../protocol/messages/updatePage.js";
9
+ import type { QueryDataSourceMessage, queryDataSourceMessageSchema } from "../protocol/messages/queryDataSource.js";
10
+ import type { ResizeMessage, resizeMessageSchema } from "../protocol/messages/resize.js";
11
+ import type { UpdatePageMessage, updatePageMessageSchema } from "../protocol/messages/updatePage.js";
12
12
  import type { CustomBlockUpdatePageErrorInfo, UpdatePageResultMessage } from "../protocol/messages/updatePageResult.js";
13
+ import type { InferInput } from "valibot";
13
14
  import type { CustomBlockHostQueryDataSourceResult } from "../queries/types.js";
14
15
  type MaybePromise<T> = T | Promise<T>;
15
16
  export type CustomBlockHostCreatePageResult = BridgeMessagePayload<CreatePageResultMessage, CustomBlockCreatePageErrorInfo>;
@@ -28,5 +29,12 @@ export type CustomBlockHostHandlers = {
28
29
  };
29
30
  export type CustomBlockHostInitializationFailure = CustomBlockInitErrorInfo | CustomBlockInitResultErrorInfo;
30
31
  export type CustomBlockHostLogDirection = "in" | "out" | "warn";
32
+ export type CreatePageMessageInput = InferInput<typeof createPageMessageSchema>;
33
+ export type GetPageMessageInput = InferInput<typeof getPageMessageSchema>;
34
+ export type GetUserMessageInput = InferInput<typeof getUserMessageSchema>;
35
+ export type ListUsersMessageInput = InferInput<typeof listUsersMessageSchema>;
36
+ export type QueryDataSourceMessageInput = InferInput<typeof queryDataSourceMessageSchema>;
37
+ export type ResizeMessageInput = InferInput<typeof resizeMessageSchema>;
38
+ export type UpdatePageMessageInput = InferInput<typeof updatePageMessageSchema>;
31
39
  export {};
32
40
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,OAAO,KAAK,EACX,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,+DAA+D,CAAA;AACtE,OAAO,KAAK,EACX,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,MAAM,sDAAsD,CAAA;AAC7D,OAAO,KAAK,EACX,2BAA2B,EAC3B,cAAc,EACd,oBAAoB,EACpB,MAAM,sDAAsD,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAA;AACjG,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,yDAAyD,CAAA;AAC7G,OAAO,KAAK,EACX,6BAA6B,EAC7B,gBAAgB,EAChB,sBAAsB,EACtB,MAAM,wDAAwD,CAAA;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAA;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAA;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAA;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,OAAO,KAAK,EACX,8BAA8B,EAC9B,uBAAuB,EACvB,MAAM,+DAA+D,CAAA;AACtE,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAA;AAE/E,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAErC,MAAM,MAAM,+BAA+B,GAAG,oBAAoB,CACjE,uBAAuB,EACvB,8BAA8B,CAC9B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAC9D,oBAAoB,EACpB,2BAA2B,CAC3B,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG,oBAAoB,CACjE,uBAAuB,EACvB,8BAA8B,CAC9B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAC9D,oBAAoB,EACpB,2BAA2B,CAC3B,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,oBAAoB,CAChE,sBAAsB,EACtB,6BAA6B,CAC7B,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,eAAe,EAAE,CAChB,OAAO,EAAE,sBAAsB,KAC3B,YAAY,CAAC,oCAAoC,CAAC,CAAA;IACvD,UAAU,CAAC,EAAE,CACZ,OAAO,EAAE,iBAAiB,KACtB,YAAY,CAAC,+BAA+B,CAAC,CAAA;IAClD,OAAO,CAAC,EAAE,CACT,OAAO,EAAE,cAAc,KACnB,YAAY,CAAC,4BAA4B,CAAC,CAAA;IAC/C,OAAO,CAAC,EAAE,CACT,OAAO,EAAE,cAAc,KACnB,YAAY,CAAC,4BAA4B,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,CACX,OAAO,EAAE,gBAAgB,KACrB,YAAY,CAAC,8BAA8B,CAAC,CAAA;IACjD,UAAU,CAAC,EAAE,CACZ,OAAO,EAAE,iBAAiB,KACtB,YAAY,CAAC,+BAA+B,CAAC,CAAA;IAClD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,oCAAoC,GAC7C,wBAAwB,GACxB,8BAA8B,CAAA;AAEjC,MAAM,MAAM,2BAA2B,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,10 @@ const connectMessageCommonEntries = {
5
5
  type: v.literal("connect"),
6
6
  initializationId: v.string(),
7
7
  /**
8
- * Used to ensure that the host and client are using the same version of the bridge protocol. A
9
- * single host needs to support multiple custom blocks built with different versions of the bridge
10
- * protocol. Increment this number any time a breaking change is made to the bridge protocol.
8
+ * The bridge protocol version this sandbox uses to communicate with its host.
9
+ * Hosts control which versions they support and can support multiple versions
10
+ * at the same time. Support for older versions is eventually removed, so blocks
11
+ * may need to update their SDK to continue working.
11
12
  */
12
13
  bridgeProtocolVersion: v.number(),
13
14
  /**
@@ -16,7 +16,8 @@ export const initResultMessageSchema = v.variant("status", [
16
16
  initializationId: v.string(),
17
17
  status: v.literal("success"),
18
18
  /** Height of the initial rendered custom-block content, in CSS pixels. */
19
- // TODO(custom-blocks): Make this required when bumping bridge protocol version 4.
19
+ // Older SDKs can omit the height. Current SDKs always send it.
20
+ // TODO(custom-blocks): Make this required when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION increases to 4.
20
21
  initialHeight: v.optional(v.pipe(v.number(), v.finite(), v.minValue(0))),
21
22
  }),
22
23
  v.object({
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Used to ensure that the host and client are using the same version of the bridge protocol. A
3
- * single host needs to support multiple custom blocks built with different versions of the bridge
4
- * protocol. Increment this number any time a breaking change is made to the bridge protocol.
2
+ * The protocol version that the current SDK sends in `connect`.
3
+ * Increase this value for breaking wire changes. Hosts can continue to accept
4
+ * older versions, so this value does not set the minimum or maximum they accept.
5
5
  */
6
- export declare const CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION = 3;
6
+ export declare const LATEST_BRIDGE_PROTOCOL_VERSION = 3;
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Used to ensure that the host and client are using the same version of the bridge protocol. A
3
- * single host needs to support multiple custom blocks built with different versions of the bridge
4
- * protocol. Increment this number any time a breaking change is made to the bridge protocol.
2
+ * The protocol version that the current SDK sends in `connect`.
3
+ * Increase this value for breaking wire changes. Hosts can continue to accept
4
+ * older versions, so this value does not set the minimum or maximum they accept.
5
5
  */
6
- export const CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION = 3;
6
+ export const LATEST_BRIDGE_PROTOCOL_VERSION = 3;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The oldest bridge protocol version the host runtime supports.
3
+ * Used as the default and lower bound for minBridgeProtocolVersion.
4
+ * Increase only when retiring support for older SDKs, independently
5
+ * of the latest SDK protocol version.
6
+ */
7
+ export declare const MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION = 3;
8
+ //# sourceMappingURL=protocolVersion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocolVersion.d.ts","sourceRoot":"","sources":["../src/protocolVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,IAAI,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The oldest bridge protocol version the host runtime supports.
3
+ * Used as the default and lower bound for minBridgeProtocolVersion.
4
+ * Increase only when retiring support for older SDKs, independently
5
+ * of the latest SDK protocol version.
6
+ */
7
+ export const MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION = 3;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notionhq/custom-blocks-host",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "description": "Reusable host runtime for Notion custom blocks.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,7 +31,6 @@ import type { UpdatePageMessage } from "@notionhq/custom-blocks-protocol/message
31
31
  import type { UpdatePageResultMessage } from "@notionhq/custom-blocks-protocol/messages/updatePageResult.js"
32
32
  import type { CustomBlockPage } from "@notionhq/custom-blocks-protocol/pages/page.js"
33
33
  import type { NotionParent } from "@notionhq/custom-blocks-protocol/parent.js"
34
- import { CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION } from "@notionhq/custom-blocks-protocol/protocolVersion.js"
35
34
  import type { NotionTheme } from "@notionhq/custom-blocks-protocol/theme.js"
36
35
  import type { NotionUser } from "@notionhq/custom-blocks-protocol/users/user.js"
37
36
  import { initErrorForFailureReason } from "./lifecycle/initErrors.js"
@@ -46,6 +45,7 @@ import type {
46
45
  CustomBlockHostInitializationFailure,
47
46
  CustomBlockHostLogDirection,
48
47
  } from "./messages/types.js"
48
+ import { MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION } from "./protocolVersion.js"
49
49
  import {
50
50
  QuerySubscriptions,
51
51
  type QuerySubscriptionToken,
@@ -57,7 +57,12 @@ import { validateQueryDataSourceSorts } from "./queries/validateQueryDataSourceS
57
57
  export type CustomBlockHostOptions = {
58
58
  iframe: HTMLIFrameElement
59
59
  sandboxOrigin: string
60
- minBridgeProtocolVersion: number
60
+ /**
61
+ * Minimum sandbox protocol version to accept. Defaults to the host runtime
62
+ * minimum. Higher values retire older SDKs; lower values cannot enable
63
+ * protocol versions the runtime no longer supports.
64
+ */
65
+ minBridgeProtocolVersion?: number
61
66
  noConnectTimeoutMs?: number
62
67
  noInitResultTimeoutMs?: number
63
68
  initialState: CustomBlockHostInitialState
@@ -110,9 +115,12 @@ export function createCustomBlockHost(
110
115
  noConnectTimeoutMs,
111
116
  noInitResultTimeoutMs,
112
117
  } = options
118
+ // Callers can retire older SDKs, but cannot restore support for protocols
119
+ // the runtime no longer implements. Omission uses the runtime minimum.
113
120
  const minBridgeProtocolVersion = Math.max(
114
- configuredMinBridgeProtocolVersion ?? CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION,
115
- CUSTOM_BLOCK_BRIDGE_PROTOCOL_VERSION,
121
+ configuredMinBridgeProtocolVersion ??
122
+ MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION,
123
+ MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION,
116
124
  )
117
125
 
118
126
  let theme = initialState.theme
package/src/index.ts CHANGED
@@ -1,3 +1,15 @@
1
+ export type { CreatePageMessage } from "@notionhq/custom-blocks-protocol/messages/createPage.js"
2
+ export type { GetPageMessage } from "@notionhq/custom-blocks-protocol/messages/getPage.js"
3
+ export type { GetUserMessage } from "@notionhq/custom-blocks-protocol/messages/getUser.js"
4
+ export type { ListUsersMessage } from "@notionhq/custom-blocks-protocol/messages/listUsers.js"
5
+ export type { QueryDataSourceMessage } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
6
+ export type { ResizeMessage } from "@notionhq/custom-blocks-protocol/messages/resize.js"
7
+ export type { UpdatePageMessage } from "@notionhq/custom-blocks-protocol/messages/updatePage.js"
8
+ export type {
9
+ NotionPagePropertyValue,
10
+ NotionPagePropertyWriteMap,
11
+ NotionRichTextItem,
12
+ } from "@notionhq/custom-blocks-protocol/pages/page.js"
1
13
  export {
2
14
  type AutoBindableProperty,
3
15
  getAutoBoundPropertyIdsByKey,
@@ -14,6 +26,7 @@ export type {
14
26
  CustomBlockHostInitialState,
15
27
  } from "./lifecycle/types.js"
16
28
  export type {
29
+ CreatePageMessageInput,
17
30
  CustomBlockHostCreatePageResult,
18
31
  CustomBlockHostGetPageResult,
19
32
  CustomBlockHostGetUserResult,
@@ -22,5 +35,11 @@ export type {
22
35
  CustomBlockHostListUsersResult,
23
36
  CustomBlockHostLogDirection,
24
37
  CustomBlockHostUpdatePageResult,
38
+ GetPageMessageInput,
39
+ GetUserMessageInput,
40
+ ListUsersMessageInput,
41
+ QueryDataSourceMessageInput,
42
+ ResizeMessageInput,
43
+ UpdatePageMessageInput,
25
44
  } from "./messages/types.js"
26
45
  export type { CustomBlockHostQueryDataSourceResult } from "./queries/types.js"
@@ -29,7 +29,10 @@ export type CustomBlockHostInitialDataSources =
29
29
 
30
30
  export type CustomBlockHostInitialState = {
31
31
  theme: NotionTheme
32
- // TODO(custom-blocks): Make this required when bumping bridge protocol version 4.
32
+ /**
33
+ * Defaults to standard for existing host integrations.
34
+ * TODO(custom-blocks): Make this required when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION increases to 4.
35
+ */
33
36
  contrastMode?: NotionContrastMode
34
37
  blockId: NotionBlockId
35
38
  parent: NotionParent
@@ -1,4 +1,7 @@
1
- import type { CreatePageMessage } from "@notionhq/custom-blocks-protocol/messages/createPage.js"
1
+ import type {
2
+ CreatePageMessage,
3
+ createPageMessageSchema,
4
+ } from "@notionhq/custom-blocks-protocol/messages/createPage.js"
2
5
  import type {
3
6
  CreatePageResultMessage,
4
7
  CustomBlockCreatePageErrorInfo,
@@ -7,11 +10,13 @@ import type {
7
10
  CustomBlockGetPageErrorInfo,
8
11
  GetPageMessage,
9
12
  GetPageResultMessage,
13
+ getPageMessageSchema,
10
14
  } from "@notionhq/custom-blocks-protocol/messages/getPage.js"
11
15
  import type {
12
16
  CustomBlockGetUserErrorInfo,
13
17
  GetUserMessage,
14
18
  GetUserResultMessage,
19
+ getUserMessageSchema,
15
20
  } from "@notionhq/custom-blocks-protocol/messages/getUser.js"
16
21
  import type { CustomBlockInitErrorInfo } from "@notionhq/custom-blocks-protocol/messages/init.js"
17
22
  import type { CustomBlockInitResultErrorInfo } from "@notionhq/custom-blocks-protocol/messages/initResult.js"
@@ -19,15 +24,26 @@ import type {
19
24
  CustomBlockListUsersErrorInfo,
20
25
  ListUsersMessage,
21
26
  ListUsersResultMessage,
27
+ listUsersMessageSchema,
22
28
  } from "@notionhq/custom-blocks-protocol/messages/listUsers.js"
23
29
  import type { BridgeMessagePayload } from "@notionhq/custom-blocks-protocol/messages/messagePayload.js"
24
- import type { QueryDataSourceMessage } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
25
- import type { ResizeMessage } from "@notionhq/custom-blocks-protocol/messages/resize.js"
26
- import type { UpdatePageMessage } from "@notionhq/custom-blocks-protocol/messages/updatePage.js"
30
+ import type {
31
+ QueryDataSourceMessage,
32
+ queryDataSourceMessageSchema,
33
+ } from "@notionhq/custom-blocks-protocol/messages/queryDataSource.js"
34
+ import type {
35
+ ResizeMessage,
36
+ resizeMessageSchema,
37
+ } from "@notionhq/custom-blocks-protocol/messages/resize.js"
38
+ import type {
39
+ UpdatePageMessage,
40
+ updatePageMessageSchema,
41
+ } from "@notionhq/custom-blocks-protocol/messages/updatePage.js"
27
42
  import type {
28
43
  CustomBlockUpdatePageErrorInfo,
29
44
  UpdatePageResultMessage,
30
45
  } from "@notionhq/custom-blocks-protocol/messages/updatePageResult.js"
46
+ import type { InferInput } from "valibot"
31
47
  import type { CustomBlockHostQueryDataSourceResult } from "../queries/types.js"
32
48
 
33
49
  type MaybePromise<T> = T | Promise<T>
@@ -84,3 +100,19 @@ export type CustomBlockHostInitializationFailure =
84
100
  | CustomBlockInitResultErrorInfo
85
101
 
86
102
  export type CustomBlockHostLogDirection = "in" | "out" | "warn"
103
+
104
+ export type CreatePageMessageInput = InferInput<typeof createPageMessageSchema>
105
+
106
+ export type GetPageMessageInput = InferInput<typeof getPageMessageSchema>
107
+
108
+ export type GetUserMessageInput = InferInput<typeof getUserMessageSchema>
109
+
110
+ export type ListUsersMessageInput = InferInput<typeof listUsersMessageSchema>
111
+
112
+ export type QueryDataSourceMessageInput = InferInput<
113
+ typeof queryDataSourceMessageSchema
114
+ >
115
+
116
+ export type ResizeMessageInput = InferInput<typeof resizeMessageSchema>
117
+
118
+ export type UpdatePageMessageInput = InferInput<typeof updatePageMessageSchema>
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The oldest bridge protocol version the host runtime supports.
3
+ * Used as the default and lower bound for minBridgeProtocolVersion.
4
+ * Increase only when retiring support for older SDKs, independently
5
+ * of the latest SDK protocol version.
6
+ */
7
+ export const MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION = 3