@baijimu/platform-application-sdk 3.0.0 → 4.0.1

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
@@ -3,7 +3,7 @@
3
3
  百积木 Platform Application 的标准浏览器 SDK。它统一负责:
4
4
 
5
5
  - 读取平台应用启动参数;
6
- - 用内置平台根公钥验证 30 天环境证书和 5 分钟环境启动签名;
6
+ - 从受管应用同源 HTTPS 读取可信环境配置;
7
7
  - 生成并校验 Authorization Code + PKCE 会话;
8
8
  - 兑换、校验、保存和撤销 App Gateway token;
9
9
  - 通过规范的逐方法 Runtime 路由调用已声明能力;
@@ -20,27 +20,51 @@ npm install @baijimu/platform-application-sdk
20
20
 
21
21
  ## 初始化
22
22
 
23
- SDK 不包含任何生产、测试或私有化环境的域名默认值。标准入口只接收稳定的
24
- `platformAppId`;三个环境地址来自当前启动 URL 中的平台签名描述。SDK 先用内置平台根公钥
25
- 验证环境证书,再用证书内的环境公钥验证启动描述,并校验应用、安装记录、页面来源与有效期。
26
- 任一环节失败都会关闭启动,不会回退到公共 SaaS 或猜测地址。
23
+ 环境托管应用使用固定同源配置,不读取 URL 中的授权地址,也不需要 Control Plane 启动证书。
24
+ 必须与平台托管设施、app-gateway 和应用版本一起升级;只升级 SDK 不会让外部网站获得平台授权或私有化能力。
27
25
 
28
26
  ```ts
29
- import { createPlatformApplicationClientFromLaunch } from "@baijimu/platform-application-sdk";
30
-
31
- const client = await createPlatformApplicationClientFromLaunch(applicationDefinition.id);
27
+ import { createPlatformApplicationClientFromHostedConfiguration } from "@baijimu/platform-application-sdk";
32
28
 
29
+ const client = await createPlatformApplicationClientFromHostedConfiguration(applicationDefinition.id);
33
30
  const session = await client.bootstrap();
34
31
  ```
35
32
 
36
- `bootstrap()` 会按当前 URL 自动执行以下状态机:
33
+ 配置只从当前 HTTPS origin 的 `/.well-known/baijimu-platform-application.json` 读取。
34
+ 禁止重定向、不缓存配置、不从 URL 参数、旧证书缓存或公共地址恢复。当前闭合合同为:
35
+
36
+ ```json
37
+ {
38
+ "contractVersion": "1.0.0",
39
+ "platformAppId": "example-app",
40
+ "applicationOrigin": "https://app-version.example.test",
41
+ "releasePath": "/_releases/release-id/",
42
+ "appGatewayApiBase": "https://api.example.test/app-gateway/api",
43
+ "authorizationUrl": "https://console.example.test/#/platform-app-authorize",
44
+ "managementUrl": "https://console.example.test/"
45
+ }
46
+ ```
47
+
48
+ `managementUrl` 可选;其余字段必填。地址由目标环境和托管 owner 生成,不写入应用源码。
49
+ 共享配置不得包含 `installId`、workspaceId、用户身份、Token 或 Secret;未知字段直接拒绝。
50
+ `releasePath` 是不透明部署目录,不是 SDK 负责解释的应用版本号。
51
+
52
+ `installId` 只从启动 URL 的 query 或 hash 取得,用作安装选择器,不能证明访问权限。
53
+ 缺失、空白或相互冲突的重复选择器会拒绝启动;配置本身可供多个工作区安装共享。
54
+ 每次 `bootstrap()` 核对当前 origin 和版本路径,然后执行现有授权流程:
55
+
56
+ 1. 有有效的当前安装 Token:返回对应会话;
57
+ 2. 有授权回跳 code:校验 state,使用原始 PKCE verifier 兑换 Token;
58
+ 3. 其他情况:生成 verifier、challenge 和 state,跳转配置中的授权页。
37
59
 
38
- 1. 有仍然有效的当前安装 token:直接返回会话;
39
- 2. 有授权回跳 `code`:校验 `state`,使用原始 verifier 兑换 token;
40
- 3. 其他情况:生成新的 verifier、challenge 和 state,并用 `location.replace` 跳转统一授权页。
60
+ 托管 owner 必须保护固定配置路径,禁止应用归档覆盖,并保证应用的 origin 隔离。
61
+ 同源下按安装区分存储键只是命名隔离,不是浏览器安全边界;不能声称同源应用代码无法读取其他键。
62
+ `cache: no-store` 不能防御恶意同源代码或 Service Worker。安装权限、回调地址、Token 作用域与撤销仍由服务端负责。
41
63
 
42
- `createPlatformApplicationClient(config)` 仍保留给显式受控集成和本机测试;跨环境发布的
43
- Platform Application 应使用可信启动工厂,不应在构建产物或公开配置文件中写入环境地址。
64
+ 4.0.0 已删除 `createPlatformApplicationClientFromLaunch`、内置根公钥、环境证书与启动签名解析,
65
+ 不保留签名启动兼容分支。旧应用需升级初始化代码并重新发布。
66
+ `createPlatformApplicationClient(config)` 仅供显式受控集成和本机测试;其配置必须由集成方信任,
67
+ 不得把未校验的 query 参数作为授权服务地址。外部自托管应用使用自有后台授权,不借该接口绕过平台托管要求。
44
68
 
45
69
  ## 调用 Runtime 方法
46
70
 
@@ -68,8 +92,13 @@ SDK 不接收运行时 `service`,也不会访问平台内部 API、拼接 Pod
68
92
  - PKCE verifier 和 state 只进入当前浏览器会话存储,不进入 URL;
69
93
  - `CModelFailureError` 保留 HTTP 状态和 `errorCode`;
70
94
  - `PlatformApplicationSdkError` 表示 SDK 配置、启动上下文和浏览器状态错误;
71
- - HTTP 401 或 CModel `UNAUTHORIZED` 会清除当前会话;后者也适用于网关按统一
72
- CModel 契约返回 HTTP 200 的情况。普通业务错误不会被误判为授权失效。
95
+ - CModel `APP_GATEWAY_UNAUTHORIZED`(以及已有协议的 `UNAUTHORIZED`)会清除失效的当前会话,
96
+ 包括 HTTP 200 响应;没有可识别 CModel 失败的 HTTP 401 也会清除会话。
97
+ 其他服务的鉴权错误、禁止访问及业务错误不会清除会话,即使它们返回 HTTP 401。
98
+ - SDK 保留原始错误,不重放业务请求,不自动跳转。应用可在捕获错误且 `client.getSession()`
99
+ 为空时调用 `client.restartAuthorization()`,重新加载后由 `bootstrap()` 发起新的 PKCE 授权。
100
+ 不要把所有错误都转换成重新授权或无限重试;重新授权失败应展示明确错误。
101
+ - 并发请求的旧会话失败不会清除已经完成重新授权的新会话,也不会清除其他安装的会话。
73
102
 
74
103
  ## 注销与管理入口
75
104
 
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,qBAAqB,QAAO,iCAoBxC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,qBAAqB,QAAO,iCAmBxC,CAAC"}
package/dist/browser.js CHANGED
@@ -12,7 +12,6 @@ export const defaultBrowserRuntime = () => {
12
12
  crypto: window.crypto,
13
13
  fetch: window.fetch.bind(window),
14
14
  btoa: window.btoa.bind(window),
15
- atob: window.atob.bind(window),
16
15
  open: window.open.bind(window),
17
16
  nowEpochSeconds: () => Math.floor(Date.now() / 1000),
18
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAsC,EAAE;IAC3E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,2BAA2B,CACnC,kBAAkB,EAClB,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ;QACR,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACrD,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAsC,EAAE;IAC3E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,2BAA2B,CACnC,kBAAkB,EAClB,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ;QACR,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACrD,CAAC;AACJ,CAAC,CAAC"}
package/dist/client.d.ts CHANGED
@@ -4,6 +4,7 @@ export declare class PlatformApplicationClient {
4
4
  readonly config: NormalizedPlatformApplicationSdkConfig;
5
5
  readonly runtime: PlatformApplicationBrowserRuntime;
6
6
  private currentSession;
7
+ private readonly hostedLocation;
7
8
  constructor(config: PlatformApplicationSdkConfig, options?: PlatformApplicationClientOptions);
8
9
  getSession(): PlatformApplicationSession | null;
9
10
  bootstrap(): Promise<PlatformApplicationSession>;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EACV,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAcpB,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,OAAO,CAAC,cAAc,CAA2C;gBAErD,MAAM,EAAE,4BAA4B,EAAE,OAAO,GAAE,gCAAqC;IAKhG,UAAU,IAAI,0BAA0B,GAAG,IAAI;IAIzC,SAAS,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAoBtD,YAAY,IAAI,IAAI;IAOpB,oBAAoB,IAAI,IAAI;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAcvB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,+BAA+B,EACvC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC7C,OAAO,CAAC,CAAC,CAAC;IAsCb,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;YAW1B,kBAAkB;YAelB,qBAAqB;IA+CnC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;CAGxB;AA0CD,eAAO,MAAM,+BAA+B,GAC1C,QAAQ,4BAA4B,EACpC,UAAS,gCAAqC,KAC7C,yBAA2E,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,sCAAsC,EAC5C,MAAM,aAAa,CAAC;AAQrB,OAAO,KAAK,EACV,iCAAiC,EACjC,gCAAgC,EAChC,+BAA+B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAcpB,qBAAa,yBAAyB;IACpC,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC;IACpD,OAAO,CAAC,cAAc,CAA2C;IACjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;gBAEnE,MAAM,EAAE,4BAA4B,EAAE,OAAO,GAAE,gCAAqC;IAMhG,UAAU,IAAI,0BAA0B,GAAG,IAAI;IAIzC,SAAS,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAuBtD,YAAY,IAAI,IAAI;IAOpB,oBAAoB,IAAI,IAAI;IAKtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAcvB,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,MAAM,EAAE,+BAA+B,EACvC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC7C,OAAO,CAAC,CAAC,CAAC;IAwCb,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;YAW1B,kBAAkB;YAelB,qBAAqB;IA+CnC,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;CAGxB;AA0CD,eAAO,MAAM,+BAA+B,GAC1C,QAAQ,4BAA4B,EACpC,UAAS,gCAAqC,KAC7C,yBAA2E,CAAC"}
package/dist/client.js CHANGED
@@ -3,6 +3,7 @@ import { requireCModelData, parseJsonResponseBody } from "./cmodel.js";
3
3
  import { normalizePlatformApplicationSdkConfig, } from "./config.js";
4
4
  import { CModelFailureError, PlatformApplicationSdkError } from "./errors.js";
5
5
  import { createCodeChallenge, generateCodeVerifier } from "./pkce.js";
6
+ import { readHostedInstallId, validateHostedLocation } from "./hosted-location.js";
6
7
  import { parsePlatformApplicationToken, validatePlatformApplicationSession, } from "./session.js";
7
8
  import { buildAuthorizationCallbackUrl, buildPlatformAuthorizationUrl, buildPlatformManagementUrl, readPlatformApplicationLaunchParameters, removeAuthorizationParameters, runtimeMethodCallUrl, runtimeTokenExchangeUrl, runtimeTokenRevokeUrl, } from "./urls.js";
8
9
  const storagePrefix = "@baijimu/platform-application-sdk";
@@ -10,16 +11,22 @@ export class PlatformApplicationClient {
10
11
  config;
11
12
  runtime;
12
13
  currentSession = null;
14
+ hostedLocation;
13
15
  constructor(config, options = {}) {
14
16
  this.config = normalizePlatformApplicationSdkConfig(config);
15
17
  this.runtime = options.runtime ?? defaultBrowserRuntime();
18
+ this.hostedLocation = options.hostedLocation ? Object.freeze({ ...options.hostedLocation }) : undefined;
16
19
  }
17
20
  getSession() {
18
21
  return this.currentSession;
19
22
  }
20
23
  async bootstrap() {
24
+ if (this.hostedLocation)
25
+ validateHostedLocation(this.runtime.location.href, this.hostedLocation);
21
26
  const parameters = readPlatformApplicationLaunchParameters(this.runtime.location.href);
22
- const installId = String(parameters.get("installId") ?? "").trim();
27
+ const installId = this.hostedLocation
28
+ ? readHostedInstallId(this.runtime.location.href)
29
+ : String(parameters.get("installId") ?? "").trim();
23
30
  if (!installId) {
24
31
  throw new PlatformApplicationSdkError("MISSING_INSTALL_ID", "入口地址缺少installId");
25
32
  }
@@ -70,13 +77,15 @@ export class PlatformApplicationClient {
70
77
  params: params ?? {},
71
78
  }),
72
79
  });
73
- const payload = await parseJsonResponseBody(response);
74
80
  try {
81
+ const payload = await parseJsonResponseBody(response);
75
82
  return requireCModelData(response.status, payload, "runtime method call", (value) => value);
76
83
  }
77
84
  catch (error) {
78
- if (response.status === 401
79
- || (error instanceof CModelFailureError && error.errorCode === "UNAUTHORIZED")) {
85
+ if (this.currentSession === session
86
+ && (error instanceof CModelFailureError
87
+ ? error.errorCode === "APP_GATEWAY_UNAUTHORIZED" || error.errorCode === "UNAUTHORIZED"
88
+ : response.status === 401)) {
80
89
  this.clearSession();
81
90
  }
82
91
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { PlatformApplicationHostedLocation } from "./types.js";
2
+ export declare const validateHostedLocation: (href: string, binding: PlatformApplicationHostedLocation) => void;
3
+ /** Install identity is an untrusted selector, never part of shared deployment configuration. */
4
+ export declare const readHostedInstallId: (href: string) => string;
5
+ //# sourceMappingURL=hosted-location.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-location.d.ts","sourceRoot":"","sources":["../src/hosted-location.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAEpE,eAAO,MAAM,sBAAsB,GACjC,MAAM,MAAM,EACZ,SAAS,iCAAiC,KACzC,IAQF,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAkBlD,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { PlatformApplicationSdkError } from "./errors.js";
2
+ export const validateHostedLocation = (href, binding) => {
3
+ const url = new URL(href);
4
+ if (url.protocol !== "https:" || url.username || url.password
5
+ || url.origin !== binding.applicationOrigin || !url.pathname.startsWith(binding.releasePath)) {
6
+ throw new PlatformApplicationSdkError("INVALID_HOSTED_CONFIGURATION", "当前应用入口与已部署的origin或版本路径不一致");
7
+ }
8
+ };
9
+ /** Install identity is an untrusted selector, never part of shared deployment configuration. */
10
+ export const readHostedInstallId = (href) => {
11
+ const url = new URL(href);
12
+ const hash = url.hash.slice(1);
13
+ const hashQuery = hash.includes("?") ? hash.slice(hash.indexOf("?") + 1) : hash;
14
+ const selectors = [
15
+ ...url.searchParams.getAll("installId"),
16
+ ...new URLSearchParams(hashQuery).getAll("installId"),
17
+ ];
18
+ const installId = selectors[0];
19
+ if (!installId || !installId.trim()) {
20
+ throw new PlatformApplicationSdkError("MISSING_INSTALL_ID", "入口地址缺少installId");
21
+ }
22
+ if (installId.trim() !== installId || selectors.some((value) => value !== installId)) {
23
+ throw new PlatformApplicationSdkError("INVALID_INSTALL_ID", "入口installId存在空白或相互冲突的选择器");
24
+ }
25
+ return installId;
26
+ };
27
+ //# sourceMappingURL=hosted-location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-location.js","sourceRoot":"","sources":["../src/hosted-location.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAAY,EACZ,OAA0C,EACpC,EAAE;IACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;WACxD,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/F,MAAM,IAAI,2BAA2B,CACnC,8BAA8B,EAAE,2BAA2B,CAC5D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAU,EAAE;IAC1D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,MAAM,SAAS,GAAG;QAChB,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACvC,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;KACtD,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,2BAA2B,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,2BAA2B,CACnC,oBAAoB,EAAE,0BAA0B,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { PlatformApplicationClient } from "./client.js";
2
+ import type { PlatformApplicationClientOptions } from "./types.js";
3
+ export declare const platformApplicationConfigurationPath = "/.well-known/baijimu-platform-application.json";
4
+ /** Reads deployment-owned configuration. No endpoint is accepted from launch parameters. */
5
+ export declare const createPlatformApplicationClientFromHostedConfiguration: (platformAppId: string, options?: PlatformApplicationClientOptions) => Promise<PlatformApplicationClient>;
6
+ //# sourceMappingURL=hosted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../src/hosted.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAIxD,OAAO,KAAK,EACV,gCAAgC,EAEjC,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,oCAAoC,mDAAmD,CAAC;AAsCrG,4FAA4F;AAC5F,eAAO,MAAM,sDAAsD,GACjE,eAAe,MAAM,EACrB,UAAS,gCAAqC,KAC7C,OAAO,CAAC,yBAAyB,CA+CnC,CAAC"}
package/dist/hosted.js ADDED
@@ -0,0 +1,102 @@
1
+ import { defaultBrowserRuntime } from "./browser.js";
2
+ import { PlatformApplicationClient } from "./client.js";
3
+ import { normalizePlatformApplicationSdkConfig } from "./config.js";
4
+ import { PlatformApplicationSdkError } from "./errors.js";
5
+ import { validateHostedLocation } from "./hosted-location.js";
6
+ export const platformApplicationConfigurationPath = "/.well-known/baijimu-platform-application.json";
7
+ const fail = (message) => {
8
+ throw new PlatformApplicationSdkError("INVALID_HOSTED_CONFIGURATION", message);
9
+ };
10
+ const text = (value, field) => {
11
+ if (typeof value !== "string" || !value || value.trim() !== value) {
12
+ return fail(`${field}必须是无首尾空白的非空字符串`);
13
+ }
14
+ return value;
15
+ };
16
+ const object = (input) => {
17
+ if (typeof input !== "object" || input === null || Array.isArray(input)) {
18
+ return fail("运行时配置必须是JSON对象");
19
+ }
20
+ const value = input;
21
+ const required = [
22
+ "contractVersion", "platformAppId", "applicationOrigin", "releasePath",
23
+ "appGatewayApiBase", "authorizationUrl",
24
+ ];
25
+ if (required.some((key) => !(key in value))
26
+ || Object.keys(value).some((key) => !required.includes(key) && key !== "managementUrl")) {
27
+ return fail("运行时配置存在缺失或未知字段");
28
+ }
29
+ return value;
30
+ };
31
+ const secureUrl = (value, field) => {
32
+ let url;
33
+ try {
34
+ url = new URL(value);
35
+ }
36
+ catch {
37
+ return fail(`${field}必须是绝对URL`);
38
+ }
39
+ if (url.protocol !== "https:" || url.username || url.password) {
40
+ return fail(`${field}必须使用不含用户凭据的HTTPS地址`);
41
+ }
42
+ return url;
43
+ };
44
+ /** Reads deployment-owned configuration. No endpoint is accepted from launch parameters. */
45
+ export const createPlatformApplicationClientFromHostedConfiguration = async (platformAppId, options = {}) => {
46
+ const runtime = options.runtime ?? defaultBrowserRuntime();
47
+ const page = secureUrl(runtime.location.href, "当前应用入口");
48
+ if (page.origin !== runtime.location.origin)
49
+ fail("浏览器origin与当前页面不一致");
50
+ const url = new URL(platformApplicationConfigurationPath, page.origin);
51
+ let response;
52
+ try {
53
+ response = await runtime.fetch(url.toString(), {
54
+ method: "GET", mode: "same-origin", redirect: "error", cache: "no-store",
55
+ credentials: "omit", headers: { Accept: "application/json" },
56
+ });
57
+ }
58
+ catch (cause) {
59
+ throw new PlatformApplicationSdkError("HOSTED_CONFIGURATION_UNAVAILABLE", "无法读取同源运行时配置", { cause });
60
+ }
61
+ if (!response.ok || response.redirected || (response.url && response.url !== url.toString())) {
62
+ fail("同源运行时配置响应失败或地址发生变化");
63
+ }
64
+ if (response.headers.get("content-type")?.split(";", 1)[0]?.trim().toLowerCase() !== "application/json") {
65
+ fail("运行时配置必须以application/json提供,不能返回应用页面");
66
+ }
67
+ let input;
68
+ try {
69
+ input = await response.json();
70
+ }
71
+ catch {
72
+ return fail("运行时配置不是合法JSON");
73
+ }
74
+ const value = object(input);
75
+ if (value.contractVersion !== "1.0.0")
76
+ fail("不支持的运行时配置contractVersion");
77
+ if (text(value.platformAppId, "platformAppId") !== text(platformAppId, "期望platformAppId")) {
78
+ fail("运行时配置与当前应用身份不一致");
79
+ }
80
+ const binding = {
81
+ applicationOrigin: text(value.applicationOrigin, "applicationOrigin"),
82
+ releasePath: text(value.releasePath, "releasePath"),
83
+ };
84
+ if (!/^\/_releases\/[A-Za-z0-9][A-Za-z0-9._-]*\/$/.test(binding.releasePath)) {
85
+ fail("releasePath必须指向一个明确的不可变版本目录");
86
+ }
87
+ validateHostedLocation(runtime.location.href, binding);
88
+ const api = secureUrl(text(value.appGatewayApiBase, "appGatewayApiBase"), "appGatewayApiBase");
89
+ if (api.search || api.hash)
90
+ fail("appGatewayApiBase不能包含查询参数或fragment");
91
+ const authorizationUrl = secureUrl(text(value.authorizationUrl, "authorizationUrl"), "authorizationUrl");
92
+ const config = normalizePlatformApplicationSdkConfig({
93
+ platformAppId,
94
+ appGatewayApiBase: api.toString(),
95
+ authorizationUrl: authorizationUrl.toString(),
96
+ ...(value.managementUrl === undefined ? {} : {
97
+ managementUrl: secureUrl(text(value.managementUrl, "managementUrl"), "managementUrl").toString(),
98
+ }),
99
+ });
100
+ return new PlatformApplicationClient(config, { runtime, hostedLocation: binding });
101
+ };
102
+ //# sourceMappingURL=hosted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted.js","sourceRoot":"","sources":["../src/hosted.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./client.js";
2
2
  export * from "./config.js";
3
3
  export * from "./errors.js";
4
- export { createPlatformApplicationClientFromLaunch } from "./launch.js";
4
+ export { createPlatformApplicationClientFromHostedConfiguration, platformApplicationConfigurationPath } from "./hosted.js";
5
5
  export * from "./session.js";
6
6
  export * from "./types.js";
7
7
  export * from "./urls.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,yCAAyC,EAAE,MAAM,aAAa,CAAC;AACxE,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,sDAAsD,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAC3H,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./client.js";
2
2
  export * from "./config.js";
3
3
  export * from "./errors.js";
4
- export { createPlatformApplicationClientFromLaunch } from "./launch.js";
4
+ export { createPlatformApplicationClientFromHostedConfiguration, platformApplicationConfigurationPath } from "./hosted.js";
5
5
  export * from "./session.js";
6
6
  export * from "./types.js";
7
7
  export * from "./urls.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,yCAAyC,EAAE,MAAM,aAAa,CAAC;AACxE,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,sDAAsD,EAAE,oCAAoC,EAAE,MAAM,aAAa,CAAC;AAC3H,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
package/dist/types.d.ts CHANGED
@@ -24,12 +24,16 @@ export interface PlatformApplicationBrowserRuntime {
24
24
  readonly crypto: Pick<Crypto, "getRandomValues" | "subtle">;
25
25
  readonly fetch: typeof fetch;
26
26
  readonly btoa: typeof btoa;
27
- readonly atob?: typeof atob;
28
27
  readonly open: typeof window.open;
29
28
  readonly nowEpochSeconds: () => number;
30
29
  }
31
30
  export interface PlatformApplicationClientOptions {
32
31
  readonly runtime?: PlatformApplicationBrowserRuntime;
32
+ readonly hostedLocation?: PlatformApplicationHostedLocation;
33
+ }
34
+ export interface PlatformApplicationHostedLocation {
35
+ readonly applicationOrigin: string;
36
+ readonly releasePath: string;
33
37
  }
34
38
  export type PlatformApplicationMethodTarget = Readonly<{
35
39
  type: "resource";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC5E,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IAC3E,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IAC7E,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAAC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,iCAAiC,CAAC;CACtD;AAED,MAAM,MAAM,+BAA+B,GACvC,QAAQ,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,QAAQ,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IAC5E,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IAC3E,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC;IAC7E,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,QAAQ,CAAC,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,iCAAiC,CAAC;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,iCAAiC,CAAC;CAC7D;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,+BAA+B,GACvC,QAAQ,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,QAAQ,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baijimu/platform-application-sdk",
3
- "version": "3.0.0",
3
+ "version": "4.0.1",
4
4
  "description": "Standard browser SDK for Baijimu Platform Application authorization and Runtime method calls",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,7 +17,7 @@
17
17
  "LICENSE"
18
18
  ],
19
19
  "scripts": {
20
- "build": "tsc -p tsconfig.json",
20
+ "build": "node scripts/build.mjs",
21
21
  "check": "tsc -p tsconfig.json --noEmit",
22
22
  "test": "npm run build && node --test test/*.test.mjs",
23
23
  "pack:check": "node scripts/validate-package.mjs"
package/dist/launch.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { PlatformApplicationClient } from "./client.js";
2
- import type { PlatformApplicationBrowserRuntime, PlatformApplicationClientOptions, PlatformApplicationSdkConfig } from "./types.js";
3
- export declare const verifyPlatformApplicationLaunchDescriptor: (encodedEnvelope: string, runtime: PlatformApplicationBrowserRuntime, platformAppId: string, installId: string, origin: string, trustedRootPublicKeys: Readonly<Record<string, string>>) => Promise<{
4
- config: PlatformApplicationSdkConfig;
5
- certificateExpiresAt: number;
6
- }>;
7
- export declare const createPlatformApplicationClientFromLaunch: (platformAppId: string, options?: PlatformApplicationClientOptions) => Promise<PlatformApplicationClient>;
8
- //# sourceMappingURL=launch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAGxD,OAAO,KAAK,EACV,iCAAiC,EACjC,gCAAgC,EAChC,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAmRpB,eAAO,MAAM,yCAAyC,GACpD,iBAAiB,MAAM,EACvB,SAAS,iCAAiC,EAC1C,eAAe,MAAM,EACrB,WAAW,MAAM,EACjB,QAAQ,MAAM,EACd,uBAAuB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KACtD,OAAO,CAAC;IAAE,MAAM,EAAE,4BAA4B,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,CAqDhF,CAAC;AAEF,eAAO,MAAM,yCAAyC,GACpD,eAAe,MAAM,EACrB,UAAS,gCAAqC,KAC7C,OAAO,CAAC,yBAAyB,CAiCnC,CAAC"}
package/dist/launch.js DELETED
@@ -1,271 +0,0 @@
1
- import { defaultBrowserRuntime } from "./browser.js";
2
- import { PlatformApplicationClient } from "./client.js";
3
- import { normalizePlatformApplicationSdkConfig } from "./config.js";
4
- import { PlatformApplicationSdkError } from "./errors.js";
5
- import { readPlatformApplicationLaunchParameters } from "./urls.js";
6
- const contractVersion = "1.0.0";
7
- const launchParameter = "baijimuLaunch";
8
- const certificateType = "baijimu-environment-launch-certificate+jws";
9
- const assertionType = "baijimu-platform-application-launch+jws";
10
- const clockSkewSeconds = 60;
11
- const certificateTtlSeconds = 30 * 24 * 60 * 60;
12
- const maximumLaunchTtlSeconds = 5 * 60;
13
- const rootPublicKeys = Object.freeze({
14
- "connected-license-2026-07-28-01": "OXm6q6qWHYLv9OJbqqvES/HnAMqSVnFMcPx6X+hS4Po=",
15
- });
16
- const fail = (code, message, cause) => {
17
- throw new PlatformApplicationSdkError(code, message, cause === undefined ? undefined : { cause });
18
- };
19
- const exactObject = (value, name, requiredKeys) => {
20
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
21
- return fail("INVALID_LAUNCH_DESCRIPTOR", `${name}必须是对象`);
22
- }
23
- const record = value;
24
- const actual = Object.keys(record).sort();
25
- const expected = [...requiredKeys].sort();
26
- if (actual.length !== expected.length || actual.some((key, index) => key !== expected[index])) {
27
- return fail("INVALID_LAUNCH_DESCRIPTOR", `${name}字段不符合可信启动协议`);
28
- }
29
- return record;
30
- };
31
- const textField = (record, key, name) => {
32
- const value = record[key];
33
- if (typeof value !== "string" || !value.trim()) {
34
- return fail("INVALID_LAUNCH_DESCRIPTOR", `${name}.${key}必须是非空字符串`);
35
- }
36
- return value;
37
- };
38
- const integerField = (record, key, name) => {
39
- const value = record[key];
40
- if (typeof value !== "number" || !Number.isSafeInteger(value)) {
41
- return fail("INVALID_LAUNCH_DESCRIPTOR", `${name}.${key}必须是安全整数`);
42
- }
43
- return value;
44
- };
45
- const decodeBase64 = (value, runtime, urlSafe) => {
46
- try {
47
- const standard = urlSafe ? value.replace(/-/g, "+").replace(/_/g, "/") : value;
48
- const padded = standard.padEnd(Math.ceil(standard.length / 4) * 4, "=");
49
- const decoder = runtime.atob ?? globalThis.atob?.bind(globalThis);
50
- if (typeof decoder !== "function") {
51
- return fail("INVALID_LAUNCH_DESCRIPTOR", "当前运行环境不支持base64解码");
52
- }
53
- const binary = decoder(padded);
54
- return Uint8Array.from(binary, (character) => character.charCodeAt(0));
55
- }
56
- catch (cause) {
57
- return fail("INVALID_LAUNCH_DESCRIPTOR", "可信启动数据不是有效的base64", cause);
58
- }
59
- };
60
- const decodeJson = (value, runtime, name) => {
61
- try {
62
- return JSON.parse(new TextDecoder().decode(decodeBase64(value, runtime, true)));
63
- }
64
- catch (cause) {
65
- return fail("INVALID_LAUNCH_DESCRIPTOR", `${name}不是有效JSON`, cause);
66
- }
67
- };
68
- const parseHeader = (value, expectedType) => {
69
- const record = exactObject(value, "JWS header", ["alg", "kid", "typ"]);
70
- const header = {
71
- alg: textField(record, "alg", "JWS header"),
72
- kid: textField(record, "kid", "JWS header"),
73
- typ: textField(record, "typ", "JWS header"),
74
- };
75
- if (header.alg !== "EdDSA" || header.typ !== expectedType) {
76
- return fail("INVALID_LAUNCH_SIGNATURE", "JWS算法或类型不符合可信启动协议");
77
- }
78
- return header;
79
- };
80
- const splitJws = (compact, runtime, expectedType) => {
81
- const segments = compact.split(".");
82
- if (segments.length !== 3 || segments.some((segment) => !segment)) {
83
- return fail("INVALID_LAUNCH_DESCRIPTOR", "JWS必须包含三个非空分段");
84
- }
85
- const [encodedHeader, encodedPayload, encodedSignature] = segments;
86
- return {
87
- header: parseHeader(decodeJson(encodedHeader, runtime, "JWS header"), expectedType),
88
- payload: decodeJson(encodedPayload, runtime, "JWS payload"),
89
- signature: decodeBase64(encodedSignature, runtime, true),
90
- signingInput: new TextEncoder().encode(`${encodedHeader}.${encodedPayload}`),
91
- };
92
- };
93
- const verifyEd25519 = async (runtime, publicKey, jws) => {
94
- try {
95
- const keyBytes = Uint8Array.from(publicKey).buffer;
96
- const signatureBytes = Uint8Array.from(jws.signature).buffer;
97
- const signingInputBytes = Uint8Array.from(jws.signingInput).buffer;
98
- const key = await runtime.crypto.subtle.importKey("raw", keyBytes, "Ed25519", false, ["verify"]);
99
- if (!(await runtime.crypto.subtle.verify("Ed25519", key, signatureBytes, signingInputBytes))) {
100
- fail("INVALID_LAUNCH_SIGNATURE", "可信启动签名校验失败");
101
- }
102
- }
103
- catch (cause) {
104
- if (cause instanceof PlatformApplicationSdkError)
105
- throw cause;
106
- fail("INVALID_LAUNCH_SIGNATURE", "浏览器无法验证可信启动签名", cause);
107
- }
108
- };
109
- const parseCertificateClaims = (value) => {
110
- const record = exactObject(value, "environment certificate", [
111
- "contractVersion", "tokenType", "issuer", "subject", "environmentId",
112
- "environmentKeyId", "publicKey", "usage", "issuedAt", "expiresAt",
113
- ]);
114
- return {
115
- contractVersion: textField(record, "contractVersion", "environment certificate"),
116
- tokenType: textField(record, "tokenType", "environment certificate"),
117
- issuer: textField(record, "issuer", "environment certificate"),
118
- subject: textField(record, "subject", "environment certificate"),
119
- environmentId: textField(record, "environmentId", "environment certificate"),
120
- environmentKeyId: textField(record, "environmentKeyId", "environment certificate"),
121
- publicKey: textField(record, "publicKey", "environment certificate"),
122
- usage: textField(record, "usage", "environment certificate"),
123
- issuedAt: integerField(record, "issuedAt", "environment certificate"),
124
- expiresAt: integerField(record, "expiresAt", "environment certificate"),
125
- };
126
- };
127
- const parseEndpoints = (value) => {
128
- const record = exactObject(value, "launch endpoints", [
129
- "appGatewayApiBase", "authorizationUrl", "managementUrl",
130
- ]);
131
- return {
132
- appGatewayApiBase: textField(record, "appGatewayApiBase", "launch endpoints"),
133
- authorizationUrl: textField(record, "authorizationUrl", "launch endpoints"),
134
- managementUrl: textField(record, "managementUrl", "launch endpoints"),
135
- };
136
- };
137
- const parseAssertionClaims = (value) => {
138
- const record = exactObject(value, "launch assertion", [
139
- "contractVersion", "tokenType", "issuer", "audience", "environmentKeyId", "installId",
140
- "applicationOrigin", "endpoints", "issuedAt", "expiresAt", "nonce",
141
- ]);
142
- return {
143
- contractVersion: textField(record, "contractVersion", "launch assertion"),
144
- tokenType: textField(record, "tokenType", "launch assertion"),
145
- issuer: textField(record, "issuer", "launch assertion"),
146
- audience: textField(record, "audience", "launch assertion"),
147
- environmentKeyId: textField(record, "environmentKeyId", "launch assertion"),
148
- installId: textField(record, "installId", "launch assertion"),
149
- applicationOrigin: textField(record, "applicationOrigin", "launch assertion"),
150
- endpoints: parseEndpoints(record.endpoints),
151
- issuedAt: integerField(record, "issuedAt", "launch assertion"),
152
- expiresAt: integerField(record, "expiresAt", "launch assertion"),
153
- nonce: textField(record, "nonce", "launch assertion"),
154
- };
155
- };
156
- const cacheKey = (platformAppId, installId) => (`@baijimu/platform-application-sdk:launch:${encodeURIComponent(platformAppId)}:${encodeURIComponent(installId)}`);
157
- const readCachedConfig = (runtime, platformAppId, installId, origin) => {
158
- const key = cacheKey(platformAppId, installId);
159
- const raw = runtime.localStorage.getItem(key);
160
- if (!raw) {
161
- return fail("MISSING_LAUNCH_DESCRIPTOR", "入口地址缺少可信启动描述,请从平台重新打开应用");
162
- }
163
- try {
164
- const value = JSON.parse(raw);
165
- const record = exactObject(value, "cached launch configuration", [
166
- "contractVersion", "platformAppId", "installId", "applicationOrigin",
167
- "certificateExpiresAt", "config",
168
- ]);
169
- if (textField(record, "contractVersion", "cached launch configuration") !== contractVersion
170
- || textField(record, "platformAppId", "cached launch configuration") !== platformAppId
171
- || textField(record, "installId", "cached launch configuration") !== installId
172
- || textField(record, "applicationOrigin", "cached launch configuration") !== origin
173
- || integerField(record, "certificateExpiresAt", "cached launch configuration")
174
- < runtime.nowEpochSeconds() - clockSkewSeconds) {
175
- return fail("EXPIRED_LAUNCH_DESCRIPTOR", "缓存的环境证书已过期,请从平台重新打开应用");
176
- }
177
- return normalizePlatformApplicationSdkConfig(record.config);
178
- }
179
- catch (cause) {
180
- runtime.localStorage.removeItem(key);
181
- if (cause instanceof PlatformApplicationSdkError)
182
- throw cause;
183
- return fail("MISSING_LAUNCH_DESCRIPTOR", "入口地址缺少可信启动描述,请从平台重新打开应用", cause);
184
- }
185
- };
186
- // Kept outside the package root exports so tests can exercise the complete
187
- // signature chain without exposing trust-root substitution as public SDK API.
188
- export const verifyPlatformApplicationLaunchDescriptor = async (encodedEnvelope, runtime, platformAppId, installId, origin, trustedRootPublicKeys) => {
189
- const envelopeRecord = exactObject(decodeJson(encodedEnvelope, runtime, "launch envelope"), "launch envelope", [
190
- "contractVersion", "certificate", "assertion",
191
- ]);
192
- const envelope = {
193
- contractVersion: textField(envelopeRecord, "contractVersion", "launch envelope"),
194
- certificate: textField(envelopeRecord, "certificate", "launch envelope"),
195
- assertion: textField(envelopeRecord, "assertion", "launch envelope"),
196
- };
197
- if (envelope.contractVersion !== contractVersion) {
198
- return fail("INVALID_LAUNCH_DESCRIPTOR", "不支持的可信启动协议版本");
199
- }
200
- const certificate = splitJws(envelope.certificate, runtime, certificateType);
201
- const root = trustedRootPublicKeys[certificate.header.kid];
202
- if (!root)
203
- return fail("UNTRUSTED_PLATFORM_ROOT", "环境证书不是由SDK信任的平台根密钥签发");
204
- await verifyEd25519(runtime, decodeBase64(root, runtime, false), certificate);
205
- const certificateClaims = parseCertificateClaims(certificate.payload);
206
- const now = runtime.nowEpochSeconds();
207
- if (certificateClaims.contractVersion !== contractVersion
208
- || certificateClaims.tokenType !== certificateType
209
- || certificateClaims.issuer !== "baijimu-control-plane"
210
- || certificateClaims.subject !== `environment:${certificateClaims.environmentId}`
211
- || certificateClaims.usage !== "platform-application-launch"
212
- || certificateClaims.expiresAt <= certificateClaims.issuedAt
213
- || certificateClaims.expiresAt - certificateClaims.issuedAt !== certificateTtlSeconds
214
- || certificateClaims.issuedAt > now + clockSkewSeconds
215
- || certificateClaims.expiresAt < now - clockSkewSeconds) {
216
- return fail("INVALID_ENVIRONMENT_CERTIFICATE", "环境证书身份或有效期不符合可信启动协议");
217
- }
218
- const assertion = splitJws(envelope.assertion, runtime, assertionType);
219
- if (assertion.header.kid !== certificateClaims.environmentKeyId) {
220
- return fail("INVALID_LAUNCH_SIGNATURE", "启动签名密钥与环境证书不一致");
221
- }
222
- await verifyEd25519(runtime, decodeBase64(certificateClaims.publicKey, runtime, true), assertion);
223
- const claims = parseAssertionClaims(assertion.payload);
224
- if (claims.contractVersion !== contractVersion
225
- || claims.tokenType !== assertionType
226
- || claims.issuer !== certificateClaims.environmentId
227
- || claims.environmentKeyId !== certificateClaims.environmentKeyId
228
- || claims.audience !== platformAppId
229
- || claims.installId !== installId
230
- || claims.applicationOrigin !== origin
231
- || claims.expiresAt <= claims.issuedAt
232
- || claims.expiresAt - claims.issuedAt > maximumLaunchTtlSeconds
233
- || claims.issuedAt > now + clockSkewSeconds
234
- || claims.expiresAt < now - clockSkewSeconds
235
- || claims.expiresAt > certificateClaims.expiresAt) {
236
- return fail("INVALID_LAUNCH_DESCRIPTOR", "可信启动描述与当前应用、安装记录、来源或有效期不匹配");
237
- }
238
- const config = normalizePlatformApplicationSdkConfig({ platformAppId, ...claims.endpoints });
239
- return { config, certificateExpiresAt: certificateClaims.expiresAt };
240
- };
241
- export const createPlatformApplicationClientFromLaunch = async (platformAppId, options = {}) => {
242
- const runtime = options.runtime ?? defaultBrowserRuntime();
243
- const parameters = readPlatformApplicationLaunchParameters(runtime.location.href);
244
- const installId = String(parameters.get("installId") ?? "").trim();
245
- if (!installId)
246
- return fail("MISSING_INSTALL_ID", "入口地址缺少installId");
247
- const normalizedPlatformAppId = String(platformAppId ?? "").trim();
248
- if (!normalizedPlatformAppId)
249
- return fail("INVALID_CONFIG", "platformAppId不能为空");
250
- const origin = new URL(runtime.location.href).origin;
251
- const encodedEnvelope = String(parameters.get(launchParameter) ?? "").trim();
252
- let config;
253
- if (encodedEnvelope) {
254
- const verified = await verifyPlatformApplicationLaunchDescriptor(encodedEnvelope, runtime, normalizedPlatformAppId, installId, origin, rootPublicKeys);
255
- config = verified.config;
256
- const cached = {
257
- contractVersion,
258
- platformAppId: normalizedPlatformAppId,
259
- installId,
260
- applicationOrigin: origin,
261
- certificateExpiresAt: verified.certificateExpiresAt,
262
- config,
263
- };
264
- runtime.localStorage.setItem(cacheKey(normalizedPlatformAppId, installId), JSON.stringify(cached));
265
- }
266
- else {
267
- config = readCachedConfig(runtime, normalizedPlatformAppId, installId, origin);
268
- }
269
- return new PlatformApplicationClient(config, { runtime });
270
- };
271
- //# sourceMappingURL=launch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"launch.js","sourceRoot":"","sources":["../src/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,qCAAqC,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAM1D,OAAO,EAAE,uCAAuC,EAAE,MAAM,WAAW,CAAC;AAEpE,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,eAAe,GAAG,eAAe,CAAC;AACxC,MAAM,eAAe,GAAG,4CAA4C,CAAC;AACrE,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAChE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAChD,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,CAAC;AACvC,MAAM,cAAc,GAAqC,MAAM,CAAC,MAAM,CAAC;IACrE,iCAAiC,EAAE,8CAA8C;CAClF,CAAC,CAAC;AAwDH,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,KAAe,EAAS,EAAE;IACrE,MAAM,IAAI,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,KAAc,EACd,IAAY,EACZ,YAA+B,EACN,EAAE;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC,2BAA2B,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC,2BAA2B,EAAE,GAAG,IAAI,aAAa,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAA+B,EAAE,GAAW,EAAE,IAAY,EAAU,EAAE;IACvF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,2BAA2B,EAAE,GAAG,IAAI,IAAI,GAAG,UAAU,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAA+B,EAAE,GAAW,EAAE,IAAY,EAAU,EAAE;IAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC,2BAA2B,EAAE,GAAG,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,KAAa,EACb,OAA0C,EAC1C,OAAgB,EACJ,EAAE;IACd,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,2BAA2B,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACvE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,KAAa,EACb,OAA0C,EAC1C,IAAY,EACH,EAAE;IACX,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAY,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,2BAA2B,EAAE,GAAG,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,YAAoB,EAAc,EAAE;IACvE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG;QACb,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;QAC3C,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;QAC3C,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;KAC5C,CAAC;IACF,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,0BAA0B,EAAE,mBAAmB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CACf,OAAe,EACf,OAA0C,EAC1C,YAAoB,EACuE,EAAE;IAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC,2BAA2B,EAAE,eAAe,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,CAAC,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAAC,GAAG,QAAoC,CAAC;IAC/F,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC;QACnF,OAAO,EAAE,UAAU,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,CAAC;QAC3D,SAAS,EAAE,YAAY,CAAC,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC;QACxD,YAAY,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,aAAa,IAAI,cAAc,EAAE,CAAC;KAC7E,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EACzB,OAA0C,EAC1C,SAAqB,EACrB,GAAgC,EACjB,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QACnD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;QACnE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAC7F,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,2BAA2B;YAAE,MAAM,KAAK,CAAC;QAC9D,IAAI,CAAC,0BAA0B,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,KAAc,EAAgC,EAAE;IAC9E,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,yBAAyB,EAAE;QAC3D,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe;QACpE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW;KAClE,CAAC,CAAC;IACH,OAAO;QACL,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,yBAAyB,CAAC;QAChF,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,yBAAyB,CAAC;QACpE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,yBAAyB,CAAC;QAC9D,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,yBAAyB,CAAC;QAChE,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,yBAAyB,CAAC;QAC5E,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,yBAAyB,CAAC;QAClF,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,yBAAyB,CAAC;QACpE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,yBAAyB,CAAC;QAC5D,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,yBAAyB,CAAC;QACrE,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,yBAAyB,CAAC;KACxE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAmB,EAAE;IACzD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE;QACpD,mBAAmB,EAAE,kBAAkB,EAAE,eAAe;KACzD,CAAC,CAAC;IACH,OAAO;QACL,iBAAiB,EAAE,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;QAC7E,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;QAC3E,aAAa,EAAE,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,kBAAkB,CAAC;KACtE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAyB,EAAE;IACrE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,kBAAkB,EAAE;QACpD,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW;QACrF,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO;KACnE,CAAC,CAAC;IACH,OAAO;QACL,eAAe,EAAE,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;QACzE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAC7D,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC;QACvD,QAAQ,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC3D,gBAAgB,EAAE,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,CAAC;QAC3E,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAC7D,iBAAiB,EAAE,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;QAC7E,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3C,QAAQ,EAAE,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC;QAC9D,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,CAAC;QAChE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC;KACtD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAU,EAAE,CAAC,CACrE,4CAA4C,kBAAkB,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CACjH,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,OAA0C,EAC1C,aAAqB,EACrB,SAAiB,EACjB,MAAc,EACgB,EAAE;IAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC,2BAA2B,EAAE,yBAAyB,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,6BAA6B,EAAE;YAC/D,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB;YACpE,sBAAsB,EAAE,QAAQ;SACjC,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,KAAK,eAAe;eACtF,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,6BAA6B,CAAC,KAAK,aAAa;eACnF,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,6BAA6B,CAAC,KAAK,SAAS;eAC3E,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,6BAA6B,CAAC,KAAK,MAAM;eAChF,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,6BAA6B,CAAC;kBAC1E,OAAO,CAAC,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,2BAA2B,EAAE,uBAAuB,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,qCAAqC,CAAC,MAAM,CAAC,MAAsC,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,YAAY,2BAA2B;YAAE,MAAM,KAAK,CAAC;QAC9D,OAAO,IAAI,CAAC,2BAA2B,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC,CAAC;AAEF,2EAA2E;AAC3E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,EAC5D,eAAuB,EACvB,OAA0C,EAC1C,aAAqB,EACrB,SAAiB,EACjB,MAAc,EACd,qBAAuD,EAC0B,EAAE;IACnF,MAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,EAAE;QAC7G,iBAAiB,EAAE,aAAa,EAAE,WAAW;KAC9C,CAAC,CAAC;IACH,MAAM,QAAQ,GAAmB;QAC/B,eAAe,EAAE,SAAS,CAAC,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;QAChF,WAAW,EAAE,SAAS,CAAC,cAAc,EAAE,aAAa,EAAE,iBAAiB,CAAC;QACxE,SAAS,EAAE,SAAS,CAAC,cAAc,EAAE,WAAW,EAAE,iBAAiB,CAAC;KACrE,CAAC;IACF,IAAI,QAAQ,CAAC,eAAe,KAAK,eAAe,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,2BAA2B,EAAE,cAAc,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,sBAAsB,CAAC,CAAC;IAC1E,MAAM,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;IAC9E,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACtC,IAAI,iBAAiB,CAAC,eAAe,KAAK,eAAe;WACpD,iBAAiB,CAAC,SAAS,KAAK,eAAe;WAC/C,iBAAiB,CAAC,MAAM,KAAK,uBAAuB;WACpD,iBAAiB,CAAC,OAAO,KAAK,eAAe,iBAAiB,CAAC,aAAa,EAAE;WAC9E,iBAAiB,CAAC,KAAK,KAAK,6BAA6B;WACzD,iBAAiB,CAAC,SAAS,IAAI,iBAAiB,CAAC,QAAQ;WACzD,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC,QAAQ,KAAK,qBAAqB;WAClF,iBAAiB,CAAC,QAAQ,GAAG,GAAG,GAAG,gBAAgB;WACnD,iBAAiB,CAAC,SAAS,GAAG,GAAG,GAAG,gBAAgB,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC,iCAAiC,EAAE,qBAAqB,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IAClG,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,eAAe,KAAK,eAAe;WACzC,MAAM,CAAC,SAAS,KAAK,aAAa;WAClC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,aAAa;WACjD,MAAM,CAAC,gBAAgB,KAAK,iBAAiB,CAAC,gBAAgB;WAC9D,MAAM,CAAC,QAAQ,KAAK,aAAa;WACjC,MAAM,CAAC,SAAS,KAAK,SAAS;WAC9B,MAAM,CAAC,iBAAiB,KAAK,MAAM;WACnC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ;WACnC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,uBAAuB;WAC5D,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,gBAAgB;WACxC,MAAM,CAAC,SAAS,GAAG,GAAG,GAAG,gBAAgB;WACzC,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,2BAA2B,EAAE,4BAA4B,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,qCAAqC,CAAC,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7F,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yCAAyC,GAAG,KAAK,EAC5D,aAAqB,EACrB,UAA4C,EAAE,EACV,EAAE;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,qBAAqB,EAAE,CAAC;IAC3D,MAAM,UAAU,GAAG,uCAAuC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACrE,MAAM,uBAAuB,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,CAAC,uBAAuB;QAAE,OAAO,IAAI,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,eAAe,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,IAAI,MAAoC,CAAC;IACzC,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,yCAAyC,CAC9D,eAAe,EACf,OAAO,EACP,uBAAuB,EACvB,SAAS,EACT,MAAM,EACN,cAAc,CACf,CAAC;QACF,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzB,MAAM,MAAM,GAA8B;YACxC,eAAe;YACf,aAAa,EAAE,uBAAuB;YACtC,SAAS;YACT,iBAAiB,EAAE,MAAM;YACzB,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;YACnD,MAAM;SACP,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACrG,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI,yBAAyB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC"}