@notionhq/custom-blocks-host 0.3.3 → 0.3.5
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 +11 -4
- package/dist/browser.js +1 -1
- package/dist/createCustomBlockHost.d.ts.map +1 -1
- package/dist/createCustomBlockHost.js +68 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lifecycle/legacyPage.d.ts +68 -0
- package/dist/lifecycle/legacyPage.d.ts.map +1 -0
- package/dist/lifecycle/legacyPage.js +159 -0
- package/dist/lifecycle/normalizeHostToSandboxMessage.d.ts +2 -2
- package/dist/lifecycle/normalizeHostToSandboxMessage.d.ts.map +1 -1
- package/dist/lifecycle/normalizeHostToSandboxMessage.js +4 -32
- package/dist/lifecycle/normalizeQueryPage.d.ts +3 -0
- package/dist/lifecycle/normalizeQueryPage.d.ts.map +1 -0
- package/dist/lifecycle/normalizeQueryPage.js +13 -0
- package/dist/messages/parseExternalUrl.d.ts +3 -0
- package/dist/messages/parseExternalUrl.d.ts.map +1 -0
- package/dist/messages/parseExternalUrl.js +15 -0
- package/dist/messages/sandboxMessageRouter.d.ts +2 -0
- package/dist/messages/sandboxMessageRouter.d.ts.map +1 -1
- package/dist/messages/sandboxMessageRouter.js +19 -4
- package/dist/messages/types.d.ts +7 -0
- package/dist/messages/types.d.ts.map +1 -1
- package/dist/protocol/dataSources/dataSourcePage.d.ts +1 -2
- package/dist/protocol/dataSources/dataSourcePage.js +1 -2
- package/dist/protocol/index.d.ts +1 -0
- package/dist/protocol/index.js +1 -0
- package/dist/protocol/messages/hostToSandbox.d.ts +1649 -241
- package/dist/protocol/messages/hostToSandbox.js +15 -6
- package/dist/protocol/messages/openExternalUrl.d.ts +32 -0
- package/dist/protocol/messages/openExternalUrl.js +26 -0
- package/dist/protocol/messages/queryDataSourceResult.d.ts +174 -0
- package/dist/protocol/messages/queryDataSourceResult.js +15 -0
- package/dist/protocol/messages/sandboxToHost.d.ts +4 -0
- package/dist/protocol/messages/sandboxToHost.js +2 -0
- package/package.json +1 -1
- package/src/createCustomBlockHost.ts +79 -1
- package/src/index.ts +4 -0
- package/src/lifecycle/legacyPage.ts +183 -0
- package/src/lifecycle/normalizeHostToSandboxMessage.ts +9 -37
- package/src/lifecycle/normalizeQueryPage.ts +25 -0
- package/src/messages/parseExternalUrl.ts +18 -0
- package/src/messages/sandboxMessageRouter.ts +24 -3
- package/src/messages/types.ts +23 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { unreachable } from "../utils.js";
|
|
2
|
+
export function toLegacyQueryPage(page) {
|
|
3
|
+
const propertiesById = {};
|
|
4
|
+
for (const property of Object.values(page.properties)) {
|
|
5
|
+
if (property) {
|
|
6
|
+
propertiesById[property.id] = toLegacyProperty(property);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
id: page.id,
|
|
11
|
+
is_archived: page.is_archived,
|
|
12
|
+
in_trash: page.in_trash,
|
|
13
|
+
propertiesById,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function plainText(items) {
|
|
17
|
+
return items
|
|
18
|
+
.map(item => {
|
|
19
|
+
if (typeof item.plain_text === "string") {
|
|
20
|
+
return item.plain_text;
|
|
21
|
+
}
|
|
22
|
+
const text = item.text;
|
|
23
|
+
return text &&
|
|
24
|
+
typeof text === "object" &&
|
|
25
|
+
"content" in text &&
|
|
26
|
+
typeof text.content === "string"
|
|
27
|
+
? text.content
|
|
28
|
+
: "";
|
|
29
|
+
})
|
|
30
|
+
.join("");
|
|
31
|
+
}
|
|
32
|
+
function timestamp(value) {
|
|
33
|
+
if (value === undefined || value === null || value === "") {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const date = new Date(value);
|
|
37
|
+
if (!Number.isFinite(date.getTime())) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
type: "datetime",
|
|
42
|
+
start_date: date.toISOString().slice(0, 10),
|
|
43
|
+
start_time: date.toISOString().slice(11, 16),
|
|
44
|
+
time_zone: "UTC",
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function legacyDate(value) {
|
|
48
|
+
const timed = value.start.includes("T") || value.time_zone != null;
|
|
49
|
+
const offset = value.start.match(/([+-])(\d{2}):(\d{2})$/);
|
|
50
|
+
const offsetMinutes = offset
|
|
51
|
+
? (Number(offset[2]) * 60 + Number(offset[3])) *
|
|
52
|
+
(offset[1] === "-" ? -1 : 1)
|
|
53
|
+
: 0;
|
|
54
|
+
const parts = (input) => {
|
|
55
|
+
if (!input.includes("T")) {
|
|
56
|
+
return { date: input, time: "00:00" };
|
|
57
|
+
}
|
|
58
|
+
const wallClock = input.match(/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2})(?::\d{2}(?:\.\d+)?)?$/);
|
|
59
|
+
if (wallClock) {
|
|
60
|
+
return { date: wallClock[1], time: wallClock[2] };
|
|
61
|
+
}
|
|
62
|
+
if (!value.time_zone) {
|
|
63
|
+
const local = new Date(new Date(input).getTime() + offsetMinutes * 60_000).toISOString();
|
|
64
|
+
return { date: local.slice(0, 10), time: local.slice(11, 16) };
|
|
65
|
+
}
|
|
66
|
+
const entries = new Intl.DateTimeFormat("en-CA", {
|
|
67
|
+
timeZone: value.time_zone,
|
|
68
|
+
year: "numeric",
|
|
69
|
+
month: "2-digit",
|
|
70
|
+
day: "2-digit",
|
|
71
|
+
hour: "2-digit",
|
|
72
|
+
minute: "2-digit",
|
|
73
|
+
hourCycle: "h23",
|
|
74
|
+
}).formatToParts(new Date(input));
|
|
75
|
+
const get = (type) => entries.find(part => part.type === type)?.value;
|
|
76
|
+
return {
|
|
77
|
+
date: `${get("year")}-${get("month")}-${get("day")}`,
|
|
78
|
+
time: `${get("hour")}:${get("minute")}`,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const start = parts(value.start);
|
|
82
|
+
const end = value.end ? parts(value.end) : undefined;
|
|
83
|
+
if (!timed) {
|
|
84
|
+
return end
|
|
85
|
+
? { type: "daterange", start_date: start.date, end_date: end.date }
|
|
86
|
+
: { type: "date", start_date: start.date };
|
|
87
|
+
}
|
|
88
|
+
const zone = value.time_zone ??
|
|
89
|
+
(offsetMinutes === 0
|
|
90
|
+
? "UTC"
|
|
91
|
+
: `UTC${offsetMinutes < 0 ? "-" : "+"}${Math.floor(Math.abs(offsetMinutes) / 60)}${Math.abs(offsetMinutes) % 60 === 0 ? "" : `:${String(Math.abs(offsetMinutes) % 60).padStart(2, "0")}`}`);
|
|
92
|
+
return end
|
|
93
|
+
? {
|
|
94
|
+
type: "datetimerange",
|
|
95
|
+
start_date: start.date,
|
|
96
|
+
start_time: start.time,
|
|
97
|
+
end_date: end.date,
|
|
98
|
+
end_time: end.time,
|
|
99
|
+
time_zone: zone,
|
|
100
|
+
}
|
|
101
|
+
: {
|
|
102
|
+
type: "datetime",
|
|
103
|
+
start_date: start.date,
|
|
104
|
+
start_time: start.time,
|
|
105
|
+
time_zone: zone,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function toLegacyProperty(property) {
|
|
109
|
+
switch (property.type) {
|
|
110
|
+
case "title":
|
|
111
|
+
return plainText(property.title);
|
|
112
|
+
case "rich_text":
|
|
113
|
+
return plainText(property.rich_text);
|
|
114
|
+
case "number":
|
|
115
|
+
return property.number ?? undefined;
|
|
116
|
+
case "checkbox":
|
|
117
|
+
return property.checkbox;
|
|
118
|
+
case "url":
|
|
119
|
+
return property.url ?? "";
|
|
120
|
+
case "email":
|
|
121
|
+
return property.email ?? "";
|
|
122
|
+
case "phone_number":
|
|
123
|
+
return property.phone_number ?? "";
|
|
124
|
+
case "select":
|
|
125
|
+
return property.select?.name;
|
|
126
|
+
case "status":
|
|
127
|
+
return property.status?.name;
|
|
128
|
+
case "multi_select":
|
|
129
|
+
return property.multi_select.flatMap(option => option.name ?? []);
|
|
130
|
+
case "date":
|
|
131
|
+
return property.date ? legacyDate(property.date) : undefined;
|
|
132
|
+
case "people":
|
|
133
|
+
return property.people.map(person => person.object === "group"
|
|
134
|
+
? {
|
|
135
|
+
id: person.id,
|
|
136
|
+
table: "space_permission_group",
|
|
137
|
+
spaceId: person.id.split("|")[1],
|
|
138
|
+
}
|
|
139
|
+
: { id: person.id, table: "notion_user" });
|
|
140
|
+
case "relation":
|
|
141
|
+
return property.relation.map(page => ({ id: page.id, table: "block" }));
|
|
142
|
+
case "files":
|
|
143
|
+
return property.files.map(file => file.name).join(",");
|
|
144
|
+
case "place":
|
|
145
|
+
return "";
|
|
146
|
+
case "created_time":
|
|
147
|
+
return timestamp(property.created_time);
|
|
148
|
+
case "last_edited_time":
|
|
149
|
+
return timestamp(property.last_edited_time);
|
|
150
|
+
case "last_visited_time":
|
|
151
|
+
return timestamp(property.last_visited_time);
|
|
152
|
+
case "created_by":
|
|
153
|
+
return property.created_by ? [property.created_by] : undefined;
|
|
154
|
+
case "last_edited_by":
|
|
155
|
+
return property.last_edited_by ? [property.last_edited_by] : undefined;
|
|
156
|
+
default:
|
|
157
|
+
return unreachable(property);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { HostToSandboxMessage } from "../protocol/messages/hostToSandbox.js";
|
|
1
|
+
import type { HostToSandboxMessage, HostToSandboxMessageLegacy } from "../protocol/messages/hostToSandbox.js";
|
|
2
2
|
/**
|
|
3
3
|
* Normalizes an outgoing message for the bridge protocol version requested by the sandbox.
|
|
4
4
|
*/
|
|
5
|
-
export declare function normalizeHostToSandboxMessage(message: HostToSandboxMessage, bridgeProtocolVersion: number):
|
|
5
|
+
export declare function normalizeHostToSandboxMessage(message: HostToSandboxMessage, bridgeProtocolVersion: number): HostToSandboxMessageLegacy;
|
|
6
6
|
//# sourceMappingURL=normalizeHostToSandboxMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizeHostToSandboxMessage.d.ts","sourceRoot":"","sources":["../../src/lifecycle/normalizeHostToSandboxMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"normalizeHostToSandboxMessage.d.ts","sourceRoot":"","sources":["../../src/lifecycle/normalizeHostToSandboxMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,MAAM,4DAA4D,CAAA;AAGnE;;GAEG;AAGH,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,oBAAoB,EAC7B,qBAAqB,EAAE,MAAM,GAC3B,0BAA0B,CAG5B"}
|
|
@@ -1,38 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { normalizeQueryPage } from "./normalizeQueryPage.js";
|
|
2
2
|
/**
|
|
3
3
|
* Normalizes an outgoing message for the bridge protocol version requested by the sandbox.
|
|
4
4
|
*/
|
|
5
5
|
// TODO(custom-blocks): Remove this function when MIN_HOST_SUPPORTED_BRIDGE_PROTOCOL_VERSION
|
|
6
|
-
// reaches
|
|
6
|
+
// reaches 6.
|
|
7
7
|
export function normalizeHostToSandboxMessage(message, bridgeProtocolVersion) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return message;
|
|
11
|
-
}
|
|
12
|
-
const containsDataSources = (message.type === "init" && message.status === "success") ||
|
|
13
|
-
message.type === "dataSourcesChanged";
|
|
14
|
-
if (!containsDataSources) {
|
|
15
|
-
return message;
|
|
16
|
-
}
|
|
17
|
-
// Protocol 5 excludes synthetic IDs such as created_time from collectionSchema.propertiesById.
|
|
18
|
-
// Older SDKs derive read schemas from that map. Restore those entries in outgoing copies so
|
|
19
|
-
// host query validation still uses the actual database schema.
|
|
20
|
-
return {
|
|
21
|
-
...message,
|
|
22
|
-
dataSources: {
|
|
23
|
-
bindings: Object.fromEntries(Object.entries(message.dataSources.bindings).map(([key, binding]) => [
|
|
24
|
-
key,
|
|
25
|
-
{
|
|
26
|
-
...binding,
|
|
27
|
-
collectionSchema: {
|
|
28
|
-
...binding.collectionSchema,
|
|
29
|
-
propertiesById: {
|
|
30
|
-
...binding.collectionSchema?.propertiesById,
|
|
31
|
-
...NOTION_BUILTIN_PROPERTY_SCHEMAS,
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
])),
|
|
36
|
-
},
|
|
37
|
-
};
|
|
8
|
+
const normalizedMessage = normalizeQueryPage(message, bridgeProtocolVersion);
|
|
9
|
+
return normalizedMessage;
|
|
38
10
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { HostToSandboxMessage, HostToSandboxMessageLegacy } from "../protocol/messages/hostToSandbox.js";
|
|
2
|
+
export declare function normalizeQueryPage(message: HostToSandboxMessageLegacy | HostToSandboxMessage, bridgeProtocolVersion: number): HostToSandboxMessageLegacy;
|
|
3
|
+
//# sourceMappingURL=normalizeQueryPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeQueryPage.d.ts","sourceRoot":"","sources":["../../src/lifecycle/normalizeQueryPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EACpB,0BAA0B,EAC1B,MAAM,4DAA4D,CAAA;AAInE,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,0BAA0B,GAAG,oBAAoB,EAC1D,qBAAqB,EAAE,MAAM,GAC3B,0BAA0B,CAc5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LEGACY_PROPERTY_SHAPE_PROTOCOL_VERSION } from "../protocol/protocolVersion.js";
|
|
2
|
+
import { toLegacyQueryPage } from "./legacyPage.js";
|
|
3
|
+
export function normalizeQueryPage(message, bridgeProtocolVersion) {
|
|
4
|
+
if (bridgeProtocolVersion < LEGACY_PROPERTY_SHAPE_PROTOCOL_VERSION &&
|
|
5
|
+
message.type === "queryDataSourceResult" &&
|
|
6
|
+
message.status === "success") {
|
|
7
|
+
return {
|
|
8
|
+
...message,
|
|
9
|
+
items: message.items.map(page => "properties" in page ? toLegacyQueryPage(page) : page),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return message;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseExternalUrl.d.ts","sourceRoot":"","sources":["../../src/messages/parseExternalUrl.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAclE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const MAX_EXTERNAL_URL_LENGTH = 2048;
|
|
2
|
+
/** Returns a normalized, credential-free HTTP or HTTPS URL. */
|
|
3
|
+
export function parseExternalUrl(input) {
|
|
4
|
+
if (input.length > MAX_EXTERNAL_URL_LENGTH || !URL.canParse(input)) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
const parsed = new URL(input);
|
|
8
|
+
if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") ||
|
|
9
|
+
parsed.username !== "" ||
|
|
10
|
+
parsed.password !== "" ||
|
|
11
|
+
parsed.href.length > MAX_EXTERNAL_URL_LENGTH) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
return parsed.href;
|
|
15
|
+
}
|
|
@@ -5,6 +5,7 @@ import type { GetUserMessage } from "../protocol/messages/getUser.js";
|
|
|
5
5
|
import type { InitResultMessage } from "../protocol/messages/initResult.js";
|
|
6
6
|
import type { InvalidSandboxMessage } from "../protocol/messages/invalidSandboxMessage.js";
|
|
7
7
|
import type { ListUsersMessage } from "../protocol/messages/listUsers.js";
|
|
8
|
+
import type { OpenExternalUrlMessage } from "../protocol/messages/openExternalUrl.js";
|
|
8
9
|
import type { OpenPageMessage } from "../protocol/messages/openPage.js";
|
|
9
10
|
import type { QueryDataSourceMessage } from "../protocol/messages/queryDataSource.js";
|
|
10
11
|
import type { ResizeMessage } from "../protocol/messages/resize.js";
|
|
@@ -27,6 +28,7 @@ export type SandboxMessageRouterOptions = {
|
|
|
27
28
|
onUnsubscribeDataSourceQuery: (message: UnsubscribeDataSourceQueryMessage) => void;
|
|
28
29
|
onCreatePage: (message: CreatePageMessage) => void | Promise<void>;
|
|
29
30
|
onOpenPage: (message: OpenPageMessage) => void | Promise<void>;
|
|
31
|
+
onOpenExternalUrl: (message: OpenExternalUrlMessage) => void | Promise<void>;
|
|
30
32
|
onGetPage: (message: GetPageMessage) => void | Promise<void>;
|
|
31
33
|
onGetUser: (message: GetUserMessage) => void | Promise<void>;
|
|
32
34
|
onListUsers: (message: ListUsersMessage) => void | Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandboxMessageRouter.d.ts","sourceRoot":"","sources":["../../src/messages/sandboxMessageRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAA;AAC1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAChG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oEAAoE,CAAA;AAE/G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAA;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uDAAuD,CAAA;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8DAA8D,CAAA;AAC1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAA;AAExF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,yEAAyE,CAAA;AAChI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yDAAyD,CAAA;AAMhG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGvD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAY7D,MAAM,MAAM,2BAA2B,GAAG;IACzC,MAAM,EAAE,iBAAiB,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,UAAU,CAAA;IAC/B,IAAI,EAAE,CAAC,SAAS,EAAE,2BAA2B,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACxE,QAAQ,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAClD,gBAAgB,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAA;IAClE,mBAAmB,EAAE,wBAAwB,CAAC,yBAAyB,CAAC,CAAA;IACxE,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IAC5C,YAAY,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAClD,iBAAiB,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5E,4BAA4B,EAAE,CAC7B,OAAO,EAAE,iCAAiC,KACtC,IAAI,CAAA;IACT,YAAY,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,UAAU,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5D,WAAW,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChE,YAAY,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClE,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAA;CAC1C,CAAA;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,2BAA2B,GAClC,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"sandboxMessageRouter.d.ts","sourceRoot":"","sources":["../../src/messages/sandboxMessageRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,11 @@ const bridgeProtocolVersionSchema = v.object({
|
|
|
13
13
|
bridgeProtocolVersion: v.union([v.number(), v.nan()]),
|
|
14
14
|
});
|
|
15
15
|
export function createSandboxMessageRouter(options) {
|
|
16
|
-
const { iframe, sandboxOrigin, getInitStatus, emit, sendNack, onInvalidConnect, onInvalidInitResult, onConnect, onInitResult, onQueryDataSource, onUnsubscribeDataSourceQuery, onCreatePage, onGetPage, onOpenPage, onGetUser, onListUsers, onUpdatePage, onResize, } = options;
|
|
16
|
+
const { iframe, sandboxOrigin, getInitStatus, emit, sendNack, onInvalidConnect, onInvalidInitResult, onConnect, onInitResult, onQueryDataSource, onUnsubscribeDataSourceQuery, onCreatePage, onGetPage, onOpenPage, onOpenExternalUrl, onGetUser, onListUsers, onUpdatePage, onResize, } = options;
|
|
17
17
|
function onInvalidSandboxMessage(data, issues) {
|
|
18
18
|
emit("warn", {
|
|
19
19
|
message: "Ignored unsupported sandbox message",
|
|
20
|
-
payload: data,
|
|
20
|
+
payload: redactExternalUrl(data),
|
|
21
21
|
issues,
|
|
22
22
|
});
|
|
23
23
|
const response = getInvalidSandboxMessageResponse(data);
|
|
@@ -70,11 +70,11 @@ export function createSandboxMessageRouter(options) {
|
|
|
70
70
|
if (!isInitHandshakeMessage(message) && getInitStatus() !== "initialized") {
|
|
71
71
|
emit("warn", {
|
|
72
72
|
message: `Ignored ${message.type} before initialization completed`,
|
|
73
|
-
payload: message,
|
|
73
|
+
payload: redactExternalUrl(message),
|
|
74
74
|
});
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
emit("in", message);
|
|
77
|
+
emit("in", redactExternalUrl(message));
|
|
78
78
|
switch (message.type) {
|
|
79
79
|
case "connect":
|
|
80
80
|
onConnect(message);
|
|
@@ -94,6 +94,9 @@ export function createSandboxMessageRouter(options) {
|
|
|
94
94
|
case "openPage":
|
|
95
95
|
void onOpenPage(message);
|
|
96
96
|
return;
|
|
97
|
+
case "openExternalUrl":
|
|
98
|
+
void onOpenExternalUrl(message);
|
|
99
|
+
return;
|
|
97
100
|
case "getPage":
|
|
98
101
|
void onGetPage(message);
|
|
99
102
|
return;
|
|
@@ -117,3 +120,15 @@ export function createSandboxMessageRouter(options) {
|
|
|
117
120
|
}
|
|
118
121
|
};
|
|
119
122
|
}
|
|
123
|
+
function redactExternalUrl(data) {
|
|
124
|
+
if (typeof data === "object" &&
|
|
125
|
+
data !== null &&
|
|
126
|
+
"type" in data &&
|
|
127
|
+
data.type === "openExternalUrl") {
|
|
128
|
+
return {
|
|
129
|
+
type: "openExternalUrl",
|
|
130
|
+
...("requestId" in data ? { requestId: data.requestId } : {}),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return data;
|
|
134
|
+
}
|
package/dist/messages/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import type { CustomBlockGetPageErrorInfo, GetPageMessage, getPageMessageSchema,
|
|
|
5
5
|
import type { CustomBlockGetUserErrorInfo, GetUserMessage, getUserMessageSchema, getUserResultMessageSchema } from "../protocol/messages/getUser.js";
|
|
6
6
|
import type { CustomBlockListUsersErrorInfo, ListUsersMessage, listUsersMessageSchema, listUsersResultMessageSchema } from "../protocol/messages/listUsers.js";
|
|
7
7
|
import type { BridgeMessagePayload } from "../protocol/messages/messagePayload.js";
|
|
8
|
+
import type { CustomBlockOpenExternalUrlErrorInfo, OpenExternalUrlMessage, OpenExternalUrlResultMessage, openExternalUrlMessageSchema } from "../protocol/messages/openExternalUrl.js";
|
|
8
9
|
import type { CustomBlockOpenPageErrorInfo, OpenPageMessage, openPageMessageSchema, openPageResultMessageSchema } from "../protocol/messages/openPage.js";
|
|
9
10
|
import type { QueryDataSourceMessage, queryDataSourceMessageSchema } from "../protocol/messages/queryDataSource.js";
|
|
10
11
|
import type { ResizeMessage, resizeMessageSchema } from "../protocol/messages/resize.js";
|
|
@@ -24,6 +25,10 @@ export type CustomBlockHostUpdatePageResult = BridgeMessagePayload<InferInput<ty
|
|
|
24
25
|
export type CustomBlockHostGetUserResult = BridgeMessagePayload<InferInput<typeof getUserResultMessageSchema>, CustomBlockGetUserErrorInfo>;
|
|
25
26
|
export type CustomBlockHostListUsersResult = BridgeMessagePayload<InferInput<typeof listUsersResultMessageSchema>, CustomBlockListUsersErrorInfo>;
|
|
26
27
|
export type CustomBlockHostOpenPageResult = BridgeMessagePayload<InferInput<typeof openPageResultMessageSchema>, CustomBlockOpenPageErrorInfo>;
|
|
28
|
+
export type CustomBlockHostOpenExternalUrlResult = BridgeMessagePayload<OpenExternalUrlResultMessage, CustomBlockOpenExternalUrlErrorInfo>;
|
|
29
|
+
export type CustomBlockHostNavigationContext = {
|
|
30
|
+
signal: AbortSignal;
|
|
31
|
+
};
|
|
27
32
|
export type CustomBlockHostHandlers = {
|
|
28
33
|
queryDataSource: (message: QueryDataSourceMessage) => MaybePromise<CustomBlockHostQueryDataSourceResult>;
|
|
29
34
|
createPage?: (message: CreatePageMessage) => MaybePromise<CustomBlockHostCreatePageResult>;
|
|
@@ -31,6 +36,7 @@ export type CustomBlockHostHandlers = {
|
|
|
31
36
|
getUser?: (message: GetUserMessage) => MaybePromise<CustomBlockHostGetUserResult>;
|
|
32
37
|
listUsers?: (message: ListUsersMessage) => MaybePromise<CustomBlockHostListUsersResult>;
|
|
33
38
|
openPage?: (message: OpenPageMessage) => MaybePromise<CustomBlockHostOpenPageResult>;
|
|
39
|
+
openExternalUrl?: (message: OpenExternalUrlMessage, context: CustomBlockHostNavigationContext) => MaybePromise<CustomBlockHostOpenExternalUrlResult>;
|
|
34
40
|
updatePage?: (message: UpdatePageMessage) => MaybePromise<CustomBlockHostUpdatePageResult>;
|
|
35
41
|
resize?: (message: ResizeMessage) => void;
|
|
36
42
|
};
|
|
@@ -52,6 +58,7 @@ export type GetPageMessageInput = InferInput<typeof getPageMessageSchema>;
|
|
|
52
58
|
export type GetUserMessageInput = InferInput<typeof getUserMessageSchema>;
|
|
53
59
|
export type ListUsersMessageInput = InferInput<typeof listUsersMessageSchema>;
|
|
54
60
|
export type OpenPageMessageInput = InferInput<typeof openPageMessageSchema>;
|
|
61
|
+
export type OpenExternalUrlMessageInput = InferInput<typeof openExternalUrlMessageSchema>;
|
|
55
62
|
export type QueryDataSourceMessageInput = InferInput<typeof queryDataSourceMessageSchema>;
|
|
56
63
|
export type ResizeMessageInput = InferInput<typeof resizeMessageSchema>;
|
|
57
64
|
export type UpdatePageMessageInput = InferInput<typeof updatePageMessageSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/messages/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as v from "valibot";
|
|
2
2
|
/**
|
|
3
3
|
* Bridge shape for a data source page, as parsed from inbound host messages. The host keys
|
|
4
|
-
* properties by raw property ID.
|
|
5
|
-
* `created_by`, `last_edited_by`) are normally present, possibly with `undefined` values.
|
|
4
|
+
* properties by raw property ID. Only actual schema properties are included.
|
|
6
5
|
*/
|
|
7
6
|
export declare const legacyNotionDataSourcePageBridgeSchema: v.ObjectSchema<{
|
|
8
7
|
readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.BrandAction<string, "NotionPageId">]>;
|
|
@@ -4,8 +4,7 @@ import { notionPagePropertyValueSchema } from "../pages/page.js";
|
|
|
4
4
|
import { notionDataSourceValueSchema } from "./dataSourceValue.js";
|
|
5
5
|
/**
|
|
6
6
|
* Bridge shape for a data source page, as parsed from inbound host messages. The host keys
|
|
7
|
-
* properties by raw property ID.
|
|
8
|
-
* `created_by`, `last_edited_by`) are normally present, possibly with `undefined` values.
|
|
7
|
+
* properties by raw property ID. Only actual schema properties are included.
|
|
9
8
|
*/
|
|
10
9
|
export const legacyNotionDataSourcePageBridgeSchema = v.object({
|
|
11
10
|
id: notionPageIdSchema,
|
package/dist/protocol/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./messages/invalidSandboxMessage.js";
|
|
|
34
34
|
export * from "./messages/isInitHandshakeMessage.js";
|
|
35
35
|
export * from "./messages/listUsers.js";
|
|
36
36
|
export * from "./messages/messagePayload.js";
|
|
37
|
+
export * from "./messages/openExternalUrl.js";
|
|
37
38
|
export * from "./messages/openPage.js";
|
|
38
39
|
export * from "./messages/pageChanged.js";
|
|
39
40
|
export * from "./messages/parentChanged.js";
|
package/dist/protocol/index.js
CHANGED
|
@@ -34,6 +34,7 @@ export * from "./messages/invalidSandboxMessage.js";
|
|
|
34
34
|
export * from "./messages/isInitHandshakeMessage.js";
|
|
35
35
|
export * from "./messages/listUsers.js";
|
|
36
36
|
export * from "./messages/messagePayload.js";
|
|
37
|
+
export * from "./messages/openExternalUrl.js";
|
|
37
38
|
export * from "./messages/openPage.js";
|
|
38
39
|
export * from "./messages/pageChanged.js";
|
|
39
40
|
export * from "./messages/parentChanged.js";
|