@pc-nexus/bridge 0.0.1-next.1 → 0.0.1-next.2

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.
@@ -1,4 +1,4 @@
1
- export * from '@pc-nexus/models';
1
+ export { HistoryAction, NavigationTarget, ViewportSize } from '@pc-nexus/models';
2
2
 
3
3
  function attachObjectToWindow(key, value) {
4
4
  window[key] = value;
@@ -45,9 +45,7 @@ class NexusBridge {
45
45
 
46
46
  class NexusDialog {
47
47
  async open(options) {
48
- return (await NexusBridge.call("openDialog", options).catch((error) => {
49
- console.error("nexus open dialog failed", error);
50
- }));
48
+ return await NexusBridge.call("openDialog", options);
51
49
  }
52
50
  }
53
51
  const dialog = new NexusDialog();
@@ -91,6 +89,12 @@ class NexusView {
91
89
  async close() {
92
90
  await NexusBridge.call("viewClose");
93
91
  }
92
+ async onClose(payload) {
93
+ await NexusBridge.call("viewOnClose", { payload });
94
+ }
95
+ async isDialog() {
96
+ return await NexusBridge.call("viewIsDialog");
97
+ }
94
98
  async createHistory() {
95
99
  const history = await NexusBridge.call("createHistory");
96
100
  history.listen((location, action) => {
@@ -99,22 +103,25 @@ class NexusView {
99
103
  });
100
104
  return history;
101
105
  }
106
+ async submit(payload) {
107
+ await NexusBridge.call("viewSubmit", payload);
108
+ }
102
109
  }
103
110
  const view = new NexusView();
104
111
 
105
112
  const isPlainObject = (value) => {
106
- if (typeof value !== 'object' || value === null) {
113
+ if (typeof value !== "object" || value === null) {
107
114
  return false;
108
115
  }
109
- if (Object.prototype.toString.call(value) !== '[object Object]') {
116
+ if (Object.prototype.toString.call(value) !== "[object Object]") {
110
117
  return false;
111
118
  }
112
119
  const proto = Object.getPrototypeOf(value);
113
120
  if (proto === null) {
114
121
  return true;
115
122
  }
116
- const constructor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor;
117
- return (typeof constructor === 'function' &&
123
+ const constructor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
124
+ return (typeof constructor === "function" &&
118
125
  constructor instanceof constructor &&
119
126
  Function.prototype.call(constructor) === Function.prototype.call(value));
120
127
  };
@@ -122,7 +129,7 @@ const base64ToBlob = (b64string, mimeType) => {
122
129
  if (!b64string) {
123
130
  return null;
124
131
  }
125
- const base64String = b64string.includes(',') ? b64string.split(',')[1] : b64string;
132
+ const base64String = b64string.includes(",") ? b64string.split(",")[1] : b64string;
126
133
  const byteCharacters = atob(base64String);
127
134
  const byteNumbers = new Array(byteCharacters.length);
128
135
  for (let i = 0; i < byteCharacters.length; i++) {
@@ -147,7 +154,7 @@ const serialiseBlobsInPayload = async (payload) => {
147
154
  return {
148
155
  data: base64Data,
149
156
  type: payload.type,
150
- __isBlobData: true
157
+ __isBlobData: true,
151
158
  };
152
159
  }
153
160
  if (Array.isArray(payload)) {
@@ -160,7 +167,7 @@ const serialiseBlobsInPayload = async (payload) => {
160
167
  return payload;
161
168
  };
162
169
  const deserialiseBlobsInPayload = (payload) => {
163
- if (payload && isPlainObject(payload) && '__isBlobData' in payload) {
170
+ if (payload && isPlainObject(payload) && "__isBlobData" in payload) {
164
171
  const typedData = payload;
165
172
  return base64ToBlob(typedData.data, typedData.type);
166
173
  }
@@ -181,7 +188,7 @@ const containsBlobs = (payload) => {
181
188
  return true;
182
189
  }
183
190
  if (Array.isArray(payload)) {
184
- return payload.some(item => containsBlobs(item));
191
+ return payload.some((item) => containsBlobs(item));
185
192
  }
186
193
  if (payload && isPlainObject(payload)) {
187
194
  return Object.values(payload).some((value) => containsBlobs(value));
@@ -189,7 +196,7 @@ const containsBlobs = (payload) => {
189
196
  return false;
190
197
  };
191
198
  const containsSerialisedBlobs = (payload) => {
192
- if (payload && isPlainObject(payload) && '__isBlobData' in payload) {
199
+ if (payload && isPlainObject(payload) && "__isBlobData" in payload) {
193
200
  return true;
194
201
  }
195
202
  if (Array.isArray(payload)) {
@@ -209,18 +216,18 @@ async function on(eventName, callback) {
209
216
  }
210
217
  return callback(newPayload);
211
218
  };
212
- return NexusBridge.call('on', { eventName, callback: wrappedCallback });
219
+ return NexusBridge.call("on", { eventName, callback: wrappedCallback });
213
220
  }
214
221
  async function emit(eventName, payload) {
215
222
  let newPayload = payload;
216
223
  if (containsBlobs(payload)) {
217
224
  newPayload = await serialiseBlobsInPayload(payload);
218
225
  }
219
- return NexusBridge.call('emit', { eventName, payload: newPayload });
226
+ return NexusBridge.call("emit", { eventName, payload: newPayload });
220
227
  }
221
228
  const events = {
222
229
  on,
223
- emit
230
+ emit,
224
231
  };
225
232
 
226
233
  class NexusI18n {
@@ -231,7 +238,7 @@ class NexusI18n {
231
238
  locale = (await view.getContext()).locale;
232
239
  }
233
240
  const translations = await this.loadTranslations(locale);
234
- return { locale, translations };
241
+ return { locale: locale, translations };
235
242
  }
236
243
  async createTranslator(locale) {
237
244
  if (!locale) {
@@ -256,13 +263,44 @@ class NexusI18n {
256
263
  }
257
264
  const i18n = new NexusI18n();
258
265
 
259
- /*
260
- * Public API Surface of bridge
261
- */
266
+ async function buildPayloadByRequestInit(init) {
267
+ const requestBody = init === null || init === void 0 ? void 0 : init.body;
268
+ const requestMethod = init === null || init === void 0 ? void 0 : init.method;
269
+ const requestHeaders = init === null || init === void 0 ? void 0 : init.headers;
270
+ const req = new Request("", {
271
+ body: requestBody,
272
+ method: requestMethod,
273
+ headers: requestHeaders,
274
+ });
275
+ const headers = Object.fromEntries(req.headers.entries());
276
+ const body = req.method !== "GET" ? await req.text() : undefined;
277
+ return {
278
+ ...init,
279
+ body: body,
280
+ headers,
281
+ method: requestMethod ?? "GET",
282
+ };
283
+ }
284
+ async function parseToResponseData(res) {
285
+ const response = new Response(res.body == null ? undefined : typeof res.body === "object" ? JSON.stringify(res.body) : res.body, {
286
+ status: res.status,
287
+ headers: new Headers(res.headers),
288
+ });
289
+ return response;
290
+ }
291
+
292
+ async function callRequestBridge(handlerName, payload) {
293
+ const postPayload = await buildPayloadByRequestInit(payload);
294
+ const { status, headers, body } = await NexusBridge.call(handlerName, postPayload);
295
+ return parseToResponseData({ status, headers, body });
296
+ }
297
+ async function requestApi(path, options) {
298
+ return callRequestBridge("requestApi", { path, ...options });
299
+ }
262
300
 
263
301
  /**
264
302
  * Generated bundle index. Do not edit.
265
303
  */
266
304
 
267
- export { NexusBridge, dialog, events, i18n, invoke, router, view };
305
+ export { dialog, events, i18n, invoke, requestApi, router, view, NexusBridge as ɵNexusBridge };
268
306
  //# sourceMappingURL=pc-nexus-bridge.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pc-nexus-bridge.mjs","sources":["../../../../web/bridge/src/window.ts","../../../../web/bridge/src/bridge.ts","../../../../web/bridge/src/dialog.ts","../../../../web/bridge/src/invoke.ts","../../../../web/bridge/src/router.ts","../../../../web/bridge/src/view.ts","../../../../web/bridge/src/utils/blob-parser.ts","../../../../web/bridge/src/events.ts","../../../../web/bridge/src/i18n.ts","../../../../web/bridge/src/public-api.ts","../../../../web/bridge/src/pc-nexus-bridge.ts"],"sourcesContent":["export type SafeAny = any;\n\nexport function attachObjectToWindow<T>(key: string, value: T) {\n (window as SafeAny)[key] = value;\n}\n\nexport function getObjectFromWindow<T>(key: string) {\n return (window as SafeAny)[key];\n}\n","import { getObjectFromWindow } from \"./window\";\n\nexport interface HostMessageEvent<T = unknown> {\n source: Window | null;\n origin: string;\n data: T;\n}\n\nexport interface Cancelable {\n cancel: () => void;\n}\n\ninterface GlobalBridge {\n call<T>(name: string, payload?: object | undefined): Promise<T>;\n on<T>(name: string, handler: (event: HostMessageEvent<T>) => void): Cancelable;\n}\n\nfunction getBridge() {\n const bridge = getObjectFromWindow<GlobalBridge>(\"__pc_nexus_bridge__\");\n return bridge;\n}\n\nexport class NexusBridge {\n static getBridgeCall<T>(): (name: string, payload?: object) => Promise<T> {\n if (!getBridge()) {\n throw new Error(`\n Unable to establish a connection with the PingCode nexus bridge.\n If you are trying to run your app locally, Nexus apps only work in the context of PingCode products. Refer to https://developer.pingcode.com for how to tunnel when using a local development server.\n `);\n }\n return getBridge().call;\n }\n\n static async call<T>(name: string, payload?: object | undefined): Promise<T> {\n const result = await NexusBridge.getBridgeCall<T>()(name, payload);\n return result as T;\n }\n\n /**\n * 订阅宿主 host 发来的消息。\n * @param name 消息名称\n * @param handler 收到消息时的回调,event 包含 source、origin、data\n * @returns 返回带 cancel() 的对象,调用可取消订阅\n */\n static on<T>(name: string, handler: (event: HostMessageEvent<T>) => void): Cancelable {\n const bridge = getBridge();\n if (!bridge) {\n throw new Error(`\n Unable to establish a connection with the PingCode nexus bridge.\n If you are trying to run your app locally, Nexus apps only work in the context of PingCode products. Refer to https://developer.pingcode.com for how to tunnel when using a local development server.\n `);\n }\n return bridge.on(name, handler);\n }\n}\n","import { DialogOptions, DialogRef } from \"@pc-nexus/models\";\nimport { NexusBridge } from \"./bridge\";\n\nclass NexusDialog {\n async open<T>(options: DialogOptions): Promise<DialogRef<T>> {\n return (await NexusBridge.call<DialogRef<T>>(\"openDialog\", options).catch((error) => {\n console.error(\"nexus open dialog failed\", error);\n })) as DialogRef<T>;\n }\n}\n\nexport const dialog = new NexusDialog();\n","import { NexusBridge } from \"./bridge\";\nimport { InvokeFunctionParams } from \"./models\";\nimport { getObjectFromWindow } from \"./window\";\n\nexport async function invoke<TPayload = any, TResult = any>(functionKey: string, payload?: TPayload): Promise<TResult> {\n const params: InvokeFunctionParams = {\n function: functionKey,\n payload: payload,\n tunnel_token: getObjectFromWindow(\"__TUNNEL_TOKEN__\"),\n } as InvokeFunctionParams;\n const result = await NexusBridge.call(\"invokeFunction\", params);\n return result as TResult;\n}\n","import { NexusBridge } from \"./bridge\";\nimport { NavigationLocation } from \"./models\";\n\nexport class NexusRouter {\n async navigate(urlOrLocation: string | NavigationLocation): Promise<void> {\n await NexusBridge.call<void>(\"routerNavigate\", { urlOrLocation });\n }\n\n async open(urlOrLocation: string | NavigationLocation): Promise<void> {\n await NexusBridge.call<void>(\"routerOpen\", { urlOrLocation });\n }\n\n async getUrl(location: NavigationLocation): Promise<string> {\n return await NexusBridge.call<string>(\"routerGetUrl\", { location });\n }\n\n async reload(): Promise<void> {\n await NexusBridge.call<void>(\"routerReload\", {});\n }\n}\n\nexport const router = new NexusRouter();\n","import { NexusBridge } from \"./bridge\";\nimport { ExtensionData, NexusFullContext } from \"./models\";\n\nexport interface LocationDescriptor {\n pathname: string;\n search?: string;\n hash?: string;\n state?: unknown;\n}\n\nexport type HistoryAction = \"POP\" | \"PUSH\" | \"REPLACE\";\n\nexport type UnlistenCallback = () => void;\n\nexport interface NexusHistory {\n action: HistoryAction;\n location: LocationDescriptor;\n push(path: string, state?: unknown): void;\n push(location: LocationDescriptor): void;\n replace(path: string, state?: unknown): void;\n replace(location: LocationDescriptor): void;\n go(n: number): void;\n goBack(): void;\n goForward(): void;\n listen(listener: (location: LocationDescriptor, action: HistoryAction) => void): Promise<UnlistenCallback>;\n}\n\nexport class NexusView {\n async getContext<T = ExtensionData>(): Promise<NexusFullContext<T>> {\n return await NexusBridge.call(\"getContext\");\n }\n\n async setWindowTitle(title: string): Promise<void> {\n await NexusBridge.call<void>(\"setWindowTitle\", { title });\n }\n\n async reload(): Promise<void> {\n await NexusBridge.call<void>(\"viewReload\");\n }\n\n async close(): Promise<void> {\n await NexusBridge.call<void>(\"viewClose\");\n }\n\n async createHistory(): Promise<NexusHistory> {\n const history = await NexusBridge.call<NexusHistory>(\"createHistory\");\n history.listen((location, action) => {\n history.action = action;\n history.location = location;\n });\n return history;\n }\n}\n\nexport const view = new NexusView();\n","export const isPlainObject = (value: any) => {\n if (typeof value !== 'object' || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const constructor = Object.prototype.hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof constructor === 'function' &&\n constructor instanceof constructor &&\n Function.prototype.call(constructor) === Function.prototype.call(value));\n};\n\nexport const base64ToBlob = (b64string: string, mimeType: string) => {\n if (!b64string) {\n return null;\n }\n const base64String = b64string.includes(',') ? b64string.split(',')[1] : b64string;\n const byteCharacters = atob(base64String);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n return new Blob([byteArray], { type: mimeType });\n};\n\nexport const blobToBase64 = (blob: Blob) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(reader.result);\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\nexport const serialiseBlobsInPayload = async (payload: any): Promise<any> => {\n if (payload instanceof Blob) {\n const base64Data = await blobToBase64(payload);\n return {\n data: base64Data,\n type: payload.type,\n __isBlobData: true\n };\n }\n if (Array.isArray(payload)) {\n return Promise.all(payload.map((item) => serialiseBlobsInPayload(item)));\n }\n if (payload && isPlainObject(payload)) {\n const entries = await Promise.all(Object.entries(payload).map(async ([key, value]) => [key, await serialiseBlobsInPayload(value)]));\n return Object.fromEntries(entries);\n }\n return payload;\n};\n\nexport const deserialiseBlobsInPayload = (payload: any): any => {\n if (payload && isPlainObject(payload) && '__isBlobData' in payload) {\n const typedData = payload;\n return base64ToBlob(typedData.data, typedData.type);\n }\n if (Array.isArray(payload)) {\n return payload.map((item) => deserialiseBlobsInPayload(item));\n }\n if (payload && isPlainObject(payload)) {\n const result = {};\n for (const [key, value] of Object.entries(payload)) {\n (result as any)[key] = deserialiseBlobsInPayload(value);\n }\n return result;\n }\n return payload;\n};\n\nexport const containsBlobs = (payload: any): boolean => {\n if (payload instanceof Blob) {\n return true;\n }\n if (Array.isArray(payload)) {\n return payload.some(item => containsBlobs(item));\n }\n if (payload && isPlainObject(payload)) {\n return Object.values(payload).some((value) => containsBlobs(value));\n }\n return false;\n};\nexport const containsSerialisedBlobs = (payload: any): boolean => {\n if (payload && isPlainObject(payload) && '__isBlobData' in payload) {\n return true;\n }\n if (Array.isArray(payload)) {\n return payload.some((item) => containsSerialisedBlobs(item));\n }\n if (payload && isPlainObject(payload)) {\n return Object.values(payload).some((value) => containsSerialisedBlobs(value));\n }\n return false;\n};\n","import { NexusBridge } from \"./bridge\";\nimport { Subscription } from \"./models\";\nimport { containsBlobs, serialiseBlobsInPayload, containsSerialisedBlobs, deserialiseBlobsInPayload } from \"./utils\";\n\nasync function on<T = any>(eventName: string, callback: (payload?: T) => any): Promise<Subscription> {\n const wrappedCallback = (payload: T) => {\n let newPayload = payload;\n if (containsSerialisedBlobs(payload)) {\n newPayload = deserialiseBlobsInPayload(payload);\n }\n return callback(newPayload);\n };\n return NexusBridge.call('on', { eventName, callback: wrappedCallback });\n}\n\nasync function emit<T = any>(eventName: string, payload: T): Promise<void> {\n let newPayload = payload;\n if (containsBlobs(payload)) {\n newPayload = await serialiseBlobsInPayload(payload);\n }\n return NexusBridge.call('emit', { eventName, payload: newPayload });\n}\n\nexport const events = {\n on,\n emit\n}\n","import { Translator, GetTranslationsResult, NexusSupportedLocaleCode, TranslationResourceContent } from \"@pc-nexus/models\";\nimport { view } from \"./view\";\nimport { NexusBridge } from \"./bridge\";\n\nexport class NexusI18n {\n private translationsCache: Partial<Record<NexusSupportedLocaleCode, Promise<TranslationResourceContent>>> = {};\n\n private i18nFolderName = \"__LOCALES__\";\n\n async getTranslations(locale?: NexusSupportedLocaleCode): Promise<GetTranslationsResult> {\n if (!locale) {\n locale = (await view.getContext()).locale;\n }\n const translations = await this.loadTranslations(locale);\n return { locale, translations };\n }\n\n async createTranslator(locale?: NexusSupportedLocaleCode): Promise<Translator> {\n if (!locale) {\n locale = (await view.getContext()).locale;\n }\n const translations = await this.loadTranslations(locale);\n return await NexusBridge.call(\"createTranslator\", { locale, translations });\n }\n\n private loadTranslations(locale: NexusSupportedLocaleCode): Promise<TranslationResourceContent> {\n const url = `../${this.i18nFolderName}/${locale}.json`;\n if (!this.translationsCache[locale]) {\n this.translationsCache[locale] = fetch(url)\n .then((res) => res.json())\n .catch((err) => {\n // 请求失败要清理缓存\n delete this.translationsCache[locale];\n throw err;\n });\n }\n\n return this.translationsCache[locale]!;\n }\n}\n\nexport const i18n = new NexusI18n();\n","/*\n * Public API Surface of bridge\n */\nexport {\n NexusBridge,\n type HostMessageEvent,\n type Cancelable,\n} from \"./bridge\";\nexport * from \"./dialog\";\nexport * from \"./invoke\";\nexport * from \"./models\";\nexport { router } from \"./router\";\nexport { view, type LocationDescriptor, type HistoryAction, type UnlistenCallback, type NexusHistory } from \"./view\";\nexport { events } from \"./events\";\nexport { i18n } from \"./i18n\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pc-nexus-bridge.mjs","sources":["../../../../web/bridge/src/window.ts","../../../../web/bridge/src/bridge.ts","../../../../web/bridge/src/dialog.ts","../../../../web/bridge/src/invoke.ts","../../../../web/bridge/src/router.ts","../../../../web/bridge/src/view.ts","../../../../web/bridge/src/utils/blob-parser.ts","../../../../web/bridge/src/events.ts","../../../../web/bridge/src/i18n.ts","../../../../web/bridge/src/utils/request.ts","../../../../web/bridge/src/request-api.ts","../../../../web/bridge/src/pc-nexus-bridge.ts"],"sourcesContent":["export type SafeAny = any;\n\nexport function attachObjectToWindow<T>(key: string, value: T) {\n (window as SafeAny)[key] = value;\n}\n\nexport function getObjectFromWindow<T>(key: string) {\n return (window as SafeAny)[key];\n}\n","import { getObjectFromWindow } from \"./window\";\n\ninterface HostMessageEvent<T = unknown> {\n source: Window | null;\n origin: string;\n data: T;\n}\n\ninterface Cancelable {\n cancel: () => void;\n}\n\ninterface GlobalBridge {\n call<T>(name: string, payload?: object | undefined): Promise<T>;\n on<T>(name: string, handler: (event: HostMessageEvent<T>) => void): Cancelable;\n}\n\nfunction getBridge() {\n const bridge = getObjectFromWindow<GlobalBridge>(\"__pc_nexus_bridge__\");\n return bridge;\n}\n\nexport class NexusBridge {\n static getBridgeCall<T>(): (name: string, payload?: object) => Promise<T> {\n if (!getBridge()) {\n throw new Error(`\n Unable to establish a connection with the PingCode nexus bridge.\n If you are trying to run your app locally, Nexus apps only work in the context of PingCode products. Refer to https://developer.pingcode.com for how to tunnel when using a local development server.\n `);\n }\n return getBridge().call;\n }\n\n static async call<T>(name: string, payload?: any): Promise<T> {\n const result = await NexusBridge.getBridgeCall<T>()(name, payload);\n return result as T;\n }\n\n /**\n * 订阅宿主 host 发来的消息。\n * @param name 消息名称\n * @param handler 收到消息时的回调,event 包含 source、origin、data\n * @returns 返回带 cancel() 的对象,调用可取消订阅\n */\n static on<T>(name: string, handler: (event: HostMessageEvent<T>) => void): Cancelable {\n const bridge = getBridge();\n if (!bridge) {\n throw new Error(`\n Unable to establish a connection with the PingCode nexus bridge.\n If you are trying to run your app locally, Nexus apps only work in the context of PingCode products. Refer to https://developer.pingcode.com for how to tunnel when using a local development server.\n `);\n }\n return bridge.on(name, handler);\n }\n}\n","import { DialogOptions, DialogRef } from \"./models\";\nimport { NexusBridge } from \"./bridge\";\n\nclass NexusDialog {\n async open<T>(options: DialogOptions): Promise<DialogRef<T>> {\n return await NexusBridge.call<DialogRef<T>>(\"openDialog\", options);\n }\n}\n\nexport const dialog = new NexusDialog();\n","import { NexusBridge } from \"./bridge\";\nimport { InvokeFunctionParams } from \"./models\";\nimport { getObjectFromWindow } from \"./window\";\n\nexport async function invoke<TPayload = any, TResult = any>(functionKey: string, payload?: TPayload): Promise<TResult> {\n const params: InvokeFunctionParams = {\n function: functionKey,\n payload: payload,\n tunnel_token: getObjectFromWindow(\"__TUNNEL_TOKEN__\"),\n } as InvokeFunctionParams;\n const result = await NexusBridge.call(\"invokeFunction\", params);\n return result as TResult;\n}\n","import { NexusBridge } from \"./bridge\";\nimport { NavigationLocation } from \"./models\";\n\nclass NexusRouter {\n async navigate(urlOrLocation: string | NavigationLocation): Promise<void> {\n await NexusBridge.call<void>(\"routerNavigate\", { urlOrLocation });\n }\n\n async open(urlOrLocation: string | NavigationLocation): Promise<void> {\n await NexusBridge.call<void>(\"routerOpen\", { urlOrLocation });\n }\n\n async getUrl(location: NavigationLocation): Promise<string> {\n return await NexusBridge.call<string>(\"routerGetUrl\", { location });\n }\n\n async reload(): Promise<void> {\n await NexusBridge.call<void>(\"routerReload\", {});\n }\n}\n\nexport const router = new NexusRouter();\n","import { NexusBridge } from \"./bridge\";\nimport { ExtensionData, NexusFullContext, NexusHistory } from \"./models\";\n\nclass NexusView {\n async getContext<T = ExtensionData>(): Promise<NexusFullContext<T>> {\n return await NexusBridge.call(\"getContext\");\n }\n\n async setWindowTitle(title: string): Promise<void> {\n await NexusBridge.call<void>(\"setWindowTitle\", { title });\n }\n\n async reload(): Promise<void> {\n await NexusBridge.call<void>(\"viewReload\");\n }\n\n async close(): Promise<void> {\n await NexusBridge.call<void>(\"viewClose\");\n }\n\n async onClose(payload: () => Promise<void>): Promise<void> {\n await NexusBridge.call<void>(\"viewOnClose\", { payload });\n }\n\n async isDialog(): Promise<boolean> {\n return await NexusBridge.call<boolean>(\"viewIsDialog\");\n }\n\n async createHistory(): Promise<NexusHistory> {\n const history = await NexusBridge.call<NexusHistory>(\"createHistory\");\n history.listen((location, action) => {\n history.action = action;\n history.location = location;\n });\n return history;\n }\n\n async submit<T = any>(payload?: T): Promise<void> {\n await NexusBridge.call<void>(\"viewSubmit\", payload);\n }\n}\n\nexport const view = new NexusView();\n","const isPlainObject = (value: any) => {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n const constructor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return (\n typeof constructor === \"function\" &&\n constructor instanceof constructor &&\n Function.prototype.call(constructor) === Function.prototype.call(value)\n );\n};\n\nconst base64ToBlob = (b64string: string, mimeType: string) => {\n if (!b64string) {\n return null;\n }\n const base64String = b64string.includes(\",\") ? b64string.split(\",\")[1] : b64string;\n const byteCharacters = atob(base64String);\n const byteNumbers = new Array(byteCharacters.length);\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i);\n }\n\n const byteArray = new Uint8Array(byteNumbers);\n return new Blob([byteArray], { type: mimeType });\n};\n\nconst blobToBase64 = (blob: Blob) => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(reader.result);\n };\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n};\n\nexport const serialiseBlobsInPayload = async (payload: any): Promise<any> => {\n if (payload instanceof Blob) {\n const base64Data = await blobToBase64(payload);\n return {\n data: base64Data,\n type: payload.type,\n __isBlobData: true,\n };\n }\n if (Array.isArray(payload)) {\n return Promise.all(payload.map((item) => serialiseBlobsInPayload(item)));\n }\n if (payload && isPlainObject(payload)) {\n const entries = await Promise.all(Object.entries(payload).map(async ([key, value]) => [key, await serialiseBlobsInPayload(value)]));\n return Object.fromEntries(entries);\n }\n return payload;\n};\n\nexport const deserialiseBlobsInPayload = (payload: any): any => {\n if (payload && isPlainObject(payload) && \"__isBlobData\" in payload) {\n const typedData = payload;\n return base64ToBlob(typedData.data, typedData.type);\n }\n if (Array.isArray(payload)) {\n return payload.map((item) => deserialiseBlobsInPayload(item));\n }\n if (payload && isPlainObject(payload)) {\n const result = {};\n for (const [key, value] of Object.entries(payload)) {\n (result as any)[key] = deserialiseBlobsInPayload(value);\n }\n return result;\n }\n return payload;\n};\n\nexport const containsBlobs = (payload: any): boolean => {\n if (payload instanceof Blob) {\n return true;\n }\n if (Array.isArray(payload)) {\n return payload.some((item) => containsBlobs(item));\n }\n if (payload && isPlainObject(payload)) {\n return Object.values(payload).some((value) => containsBlobs(value));\n }\n return false;\n};\n\nexport const containsSerialisedBlobs = (payload: any): boolean => {\n if (payload && isPlainObject(payload) && \"__isBlobData\" in payload) {\n return true;\n }\n if (Array.isArray(payload)) {\n return payload.some((item) => containsSerialisedBlobs(item));\n }\n if (payload && isPlainObject(payload)) {\n return Object.values(payload).some((value) => containsSerialisedBlobs(value));\n }\n return false;\n};\n","import { NexusBridge } from \"./bridge\";\nimport { Subscription } from \"./models\";\nimport { containsBlobs, serialiseBlobsInPayload, containsSerialisedBlobs, deserialiseBlobsInPayload } from \"./utils\";\n\nasync function on<T = any>(eventName: string, callback: (payload?: T) => any): Promise<Subscription> {\n const wrappedCallback = (payload: T) => {\n let newPayload = payload;\n if (containsSerialisedBlobs(payload)) {\n newPayload = deserialiseBlobsInPayload(payload);\n }\n return callback(newPayload);\n };\n return NexusBridge.call(\"on\", { eventName, callback: wrappedCallback });\n}\n\nasync function emit<T = any>(eventName: string, payload: T): Promise<void> {\n let newPayload = payload;\n if (containsBlobs(payload)) {\n newPayload = await serialiseBlobsInPayload(payload);\n }\n return NexusBridge.call(\"emit\", { eventName, payload: newPayload });\n}\n\nexport const events = {\n on,\n emit,\n};\n","import { Translator, GetTranslationsResult, NexusSupportedLocaleCode, TranslationResourceContent } from \"./models\";\nimport { view } from \"./view\";\nimport { NexusBridge } from \"./bridge\";\n\nclass NexusI18n {\n private translationsCache: Partial<Record<NexusSupportedLocaleCode, Promise<TranslationResourceContent>>> = {};\n\n private i18nFolderName = \"__LOCALES__\";\n\n async getTranslations(locale?: NexusSupportedLocaleCode): Promise<GetTranslationsResult> {\n if (!locale) {\n locale = (await view.getContext()).locale;\n }\n const translations = await this.loadTranslations(locale!);\n return { locale: locale!, translations };\n }\n\n async createTranslator(locale?: NexusSupportedLocaleCode): Promise<Translator> {\n if (!locale) {\n locale = (await view.getContext()).locale;\n }\n const translations = await this.loadTranslations(locale!);\n return await NexusBridge.call(\"createTranslator\", { locale, translations });\n }\n\n private loadTranslations(locale: NexusSupportedLocaleCode): Promise<TranslationResourceContent> {\n const url = `../${this.i18nFolderName}/${locale}.json`;\n if (!this.translationsCache[locale]) {\n this.translationsCache[locale] = fetch(url)\n .then((res) => res.json())\n .catch((err) => {\n // 请求失败要清理缓存\n delete this.translationsCache[locale];\n throw err;\n });\n }\n\n return this.translationsCache[locale]!;\n }\n}\n\nexport const i18n = new NexusI18n();\n","import { RequestApiResponseData } from \"../models\";\n\nexport async function buildPayloadByRequestInit<TPayload extends RequestInit = RequestInit>(init?: TPayload) {\n const requestBody = init === null || init === void 0 ? void 0 : init.body;\n const requestMethod = init === null || init === void 0 ? void 0 : init.method;\n const requestHeaders = init === null || init === void 0 ? void 0 : init.headers;\n const req = new Request(\"\", {\n body: requestBody,\n method: requestMethod,\n headers: requestHeaders,\n });\n const headers = Object.fromEntries(req.headers.entries());\n const body = req.method !== \"GET\" ? await req.text() : undefined;\n return {\n ...init,\n body: body,\n headers,\n method: requestMethod ?? \"GET\",\n };\n}\n\nexport async function parseToResponseData(res: RequestApiResponseData): Promise<Response> {\n const response = new Response(\n res.body == null ? undefined : typeof res.body === \"object\" ? JSON.stringify(res.body) : (res.body as BodyInit),\n {\n status: res.status,\n headers: new Headers(res.headers),\n },\n );\n\n return response;\n}\n","import { NexusBridge } from \"./bridge\";\nimport { RequestApiResponseData } from \"./models\";\nimport { buildPayloadByRequestInit, parseToResponseData } from \"./utils/request\";\n\ninterface RequestApiParams extends RequestInit {\n path: string;\n}\n\nasync function callRequestBridge<TPayload extends RequestInit = RequestInit>(handlerName: string, payload: TPayload): Promise<Response> {\n const postPayload = await buildPayloadByRequestInit<TPayload>(payload);\n const { status, headers, body } = await NexusBridge.call<RequestApiResponseData>(handlerName, postPayload);\n return parseToResponseData({ status, headers, body });\n}\n\nexport async function requestApi(path: string, options?: RequestInit): Promise<Response> {\n return callRequestBridge<RequestApiParams>(\"requestApi\", { path, ...options });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@pc-nexus/bridge",
3
- "version": "0.0.1-next.1",
3
+ "version": "0.0.1-next.2",
4
4
  "peerDependencies": {},
5
5
  "dependencies": {
6
- "@pc-nexus/models": "*",
6
+ "@pc-nexus/models": "0.0.1-next.2",
7
7
  "tslib": "^2.3.0"
8
8
  },
9
9
  "sideEffects": false,
@@ -18,4 +18,4 @@
18
18
  "default": "./fesm2022/pc-nexus-bridge.mjs"
19
19
  }
20
20
  }
21
- }
21
+ }
@@ -1,5 +1,5 @@
1
- import { DialogOptions, DialogRef, NavigationLocation, ExtensionData, NexusFullContext, Subscription, NexusSupportedLocaleCode, GetTranslationsResult, Translator } from '@pc-nexus/models';
2
- export * from '@pc-nexus/models';
1
+ import { DialogOptions, DialogRef, NavigationLocation, ExtensionData, NexusFullContext, NexusHistory, Subscription, NexusSupportedLocaleCode, GetTranslationsResult, Translator } from '@pc-nexus/models';
2
+ export { DialogOptions, DialogRef, ExtensionData, GetTranslationsResult, HistoryAction, LocationDescriptor, NavigationLocation, NavigationTarget, NexusFullContext, NexusHistory, NexusSupportedLocaleCode, Subscription, TranslationResourceContent, Translator, UnlistenCallback, ViewportSize } from '@pc-nexus/models';
3
3
 
4
4
  interface HostMessageEvent<T = unknown> {
5
5
  source: Window | null;
@@ -11,7 +11,7 @@ interface Cancelable {
11
11
  }
12
12
  declare class NexusBridge {
13
13
  static getBridgeCall<T>(): (name: string, payload?: object) => Promise<T>;
14
- static call<T>(name: string, payload?: object | undefined): Promise<T>;
14
+ static call<T>(name: string, payload?: any): Promise<T>;
15
15
  /**
16
16
  * 订阅宿主 host 发来的消息。
17
17
  * @param name 消息名称
@@ -36,32 +36,15 @@ declare class NexusRouter {
36
36
  }
37
37
  declare const router: NexusRouter;
38
38
 
39
- interface LocationDescriptor {
40
- pathname: string;
41
- search?: string;
42
- hash?: string;
43
- state?: unknown;
44
- }
45
- type HistoryAction = "POP" | "PUSH" | "REPLACE";
46
- type UnlistenCallback = () => void;
47
- interface NexusHistory {
48
- action: HistoryAction;
49
- location: LocationDescriptor;
50
- push(path: string, state?: unknown): void;
51
- push(location: LocationDescriptor): void;
52
- replace(path: string, state?: unknown): void;
53
- replace(location: LocationDescriptor): void;
54
- go(n: number): void;
55
- goBack(): void;
56
- goForward(): void;
57
- listen(listener: (location: LocationDescriptor, action: HistoryAction) => void): Promise<UnlistenCallback>;
58
- }
59
39
  declare class NexusView {
60
40
  getContext<T = ExtensionData>(): Promise<NexusFullContext<T>>;
61
41
  setWindowTitle(title: string): Promise<void>;
62
42
  reload(): Promise<void>;
63
43
  close(): Promise<void>;
44
+ onClose(payload: () => Promise<void>): Promise<void>;
45
+ isDialog(): Promise<boolean>;
64
46
  createHistory(): Promise<NexusHistory>;
47
+ submit<T = any>(payload?: T): Promise<void>;
65
48
  }
66
49
  declare const view: NexusView;
67
50
 
@@ -81,5 +64,6 @@ declare class NexusI18n {
81
64
  }
82
65
  declare const i18n: NexusI18n;
83
66
 
84
- export { NexusBridge, dialog, events, i18n, invoke, router, view };
85
- export type { Cancelable, HistoryAction, HostMessageEvent, LocationDescriptor, NexusHistory, UnlistenCallback };
67
+ declare function requestApi(path: string, options?: RequestInit): Promise<Response>;
68
+
69
+ export { dialog, events, i18n, invoke, requestApi, router, view, NexusBridge as ɵNexusBridge };