UNPKG

@lark-project/js-sdk

Version:

飞书项目 JSSDK 是飞书项目开放平台面向前端插件开发者提供的基于飞书项目内的开发工具包。 通过使用飞书项目 JSSDK,开发者可以方便的读取平台业务数据,如空间、工作项、字段等,当然也包括插件所运行环境的基础信息,如语言、地区、设备类型等。为开发者提供更高效的插件开发体验。

933 lines (891 loc) 21.6 kB
/** * MIT License * Copyright (c) 2025 Lark Technologies Pte. Ltd. * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * The above copyright notice and this permission notice, shall be included in all copies or substantial portions of the Software. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/index.ts var src_exports = {}; __export(src_exports, { ActionSheet: () => ActionSheet, AttributeType: () => AttributeType, Button: () => Button, ButtonScene: () => ButtonScene, Clipboard: () => Clipboard, ComponentScheduleScene: () => ComponentScheduleScene, Configuration: () => Configuration, ContainerModal: () => ContainerModal, Context: () => Context, Control: () => Control, CustomComponent: () => CustomComponent, CustomComponentType: () => CustomComponentType, CustomField: () => CustomField, Field: () => Field, FieldType: () => FieldType, FlowMode: () => FlowMode, IMPL_KEY: () => IMPL_KEY, Intercept: () => Intercept, InterceptEvent: () => InterceptEvent, InternalError: () => InternalError, InvalidParamsError: () => InvalidParamsError, MEEGO_BIZ_HUB: () => MEEGO_BIZ_HUB, Modal: () => Modal, Navigation: () => Navigation, NoAuthError: () => NoAuthError, NodeStatus: () => NodeStatus, NotFoundError: () => NotFoundError, NotSupportedError: () => NotSupportedError, OutOfLimitError: () => OutOfLimitError, Page: () => Page, RichTextEditor: () => RichTextEditor, SDKClient: () => SDKClient, Shared: () => Shared, Space: () => Space, Storage: () => Storage, Tab: () => Tab, Toast: () => Toast, Utils: () => Utils, View: () => View, WorkItem: () => WorkItem, WorkItemFinder: () => WorkItemFinder, WorkObject: () => WorkObject, default: () => src_default }); module.exports = __toCommonJS(src_exports); // src/constants.ts var MEEGO_BIZ_HUB = "__MEEGO_BIZ_HUB__"; var IMPL_KEY = "__MEEGO_SDK_IMPL_KEY__"; // src/model/BaseModel.ts var BaseModel = class { }; IMPL_KEY; // src/context/index.ts var _a; var Context = class extends BaseModel { /** * 加载上下文 */ static load() { throw new Error("not implemented"); } }; _a = IMPL_KEY; /** * @internal */ Context[_a] = "context"; // src/model/Space.ts var _a2; var Space = class extends BaseModel { /** * 加载空间模型 * @param id 空间唯一标识 * @returns 空间实例(Promise) */ // eslint-disable-next-line @typescript-eslint/no-unused-vars static load(id) { throw new Error("not implemented"); } // /** // * 监听当前空间数据变化 // * @param callback // */ // abstract watch(callback: (next: Space) => void): unwatch; }; _a2 = IMPL_KEY; /** * @internal */ Space[_a2] = "Space"; // src/model/WorkObject.ts var _a3; var WorkObject = class extends BaseModel { /** * 加载工作项对象模型 * @param params * spaceId 空间唯一标识 * workObjectId 工作项对象唯一标识 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars static load(params) { throw new Error("not implemented"); } // /** // * 监听当前工作项对象数据变化 // * @param callback // */ // abstract watch(callback: (next: WorkObject) => void): unwatch; }; _a3 = IMPL_KEY; /** * @internal */ WorkObject[_a3] = "WorkObject"; // src/model/WorkItem.ts var _a4; var WorkItem = class extends BaseModel { /** * 加载工作项实例模型 * @param params * spaceId 空间唯一标识 * workObjectId 工作项对象唯一标识 * workItemId 工作项实例唯一标识 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars static load(params) { throw new Error("not implemented"); } }; _a4 = IMPL_KEY; /** * @internal */ WorkItem[_a4] = "WorkItem"; // src/model/Field.ts var _a5; var Field = class extends BaseModel { /** * 加载字段模型 * @param id 字段唯一标识 * spaceId 空间唯一标识 * workObjectId 工作项对象唯一标识 * fieldId 字段唯一标识 */ // eslint-disable-next-line @typescript-eslint/no-unused-vars static load(params) { throw new Error("not implemented"); } /** * 读取字段的高级配置 */ // abstract getAdvancedConfig<T extends FieldType>(): AdvancedConfigs[T]; }; _a5 = IMPL_KEY; /** * @internal */ Field[_a5] = "Field"; // src/biz/Navigation.ts var _a6; var Navigation = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a6 = IMPL_KEY; /** * @internal */ Navigation[_a6] = "navigation"; // src/biz/Shared.ts var _a7; var Shared = class extends BaseModel { }; _a7 = IMPL_KEY; /** * @internal */ Shared[_a7] = "shared"; // src/biz/Storage.ts var _a8; var Storage = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a8 = IMPL_KEY; /** * @internal */ Storage[_a8] = "storage"; // src/biz/Clipboard.ts var _a9; var Clipboard = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a9 = IMPL_KEY; /** * @internal */ Clipboard[_a9] = "clipboard"; // src/biz/Toast.ts var _a10; var Toast = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a10 = IMPL_KEY; /** * @internal */ Toast[_a10] = "toast"; // src/biz/ActionSheet.ts var _a11; var ActionSheet = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a11 = IMPL_KEY; /** * @internal */ ActionSheet[_a11] = "actionSheet"; // src/biz/Modal.ts var _a12; var Modal = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a12 = IMPL_KEY; /** * @internal */ Modal[_a12] = "modal"; // src/biz/RichTextEditor.ts var _a13; var RichTextEditor = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a13 = IMPL_KEY; /** * @internal */ RichTextEditor[_a13] = "richTextEditor"; // src/biz/WorkItemFinder.ts var _a14; var WorkItemFinder = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a14 = IMPL_KEY; /** * @internal */ WorkItemFinder[_a14] = "workItemFinder"; // src/biz/Utils.ts var _a15; var Utils = class extends BaseModel { /** * @internal */ static load() { throw new Error("not implemented"); } }; _a15 = IMPL_KEY; /** * @internal */ Utils[_a15] = "utils"; // src/features/ContainerModal.ts var _a16; var ContainerModal = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a16 = IMPL_KEY; /** * @internal */ ContainerModal[_a16] = "containerModal"; // src/features/Intercept.ts var _a17; var Intercept = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a17 = IMPL_KEY; /** * @internal */ Intercept[_a17] = "intercept"; // src/features/Control.ts var _a18; var Control = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a18 = IMPL_KEY; /** * @internal */ Control[_a18] = "control"; // src/features/Button.ts var _a19; var Button = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a19 = IMPL_KEY; /** * @internal */ Button[_a19] = "button"; // src/features/Configuration.ts var _a20; var Configuration = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a20 = IMPL_KEY; /** * @internal */ Configuration[_a20] = "configuration"; // src/features/Page.ts var _a21; var Page = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a21 = IMPL_KEY; /** * @internal */ Page[_a21] = "page"; // src/features/Tab.ts var _a22; var Tab = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a22 = IMPL_KEY; /** * @internal */ Tab[_a22] = "tab"; // src/features/View.ts var _a23; var View = class extends BaseModel { /** * 加载数据 */ static load() { throw new Error("not implemented"); } }; _a23 = IMPL_KEY; /** * @internal */ View[_a23] = "view"; // src/features/CustomComponent.ts var _a24; var CustomComponent = class extends BaseModel { }; _a24 = IMPL_KEY; /** * @internal */ CustomComponent[_a24] = "customComponent"; // src/features/CustomField.ts var _a25; var CustomField = class extends BaseModel { }; _a25 = IMPL_KEY; /** * @internal */ CustomField[_a25] = "customField"; // src/client.ts function getImplClass(decl, impls) { return impls == null ? void 0 : impls[decl[IMPL_KEY]]; } function getImplValue(decl, impls) { return impls == null ? void 0 : impls[decl[IMPL_KEY]]; } var _SDKClient = class { /** * 插件容器模态框 * only 2.0 */ get containerModal() { return getImplValue(ContainerModal, this._meegoBizHub); } /** * 拦截事件点位容器特有能力 * only 2.0 */ get intercept() { return getImplValue(Intercept, this._meegoBizHub); } /** * 控件点位容器特有能力 * only 2.0 */ get control() { return getImplValue(Control, this._meegoBizHub); } /** * 按钮点位容器特有能力 * only 2.0 */ get button() { return getImplValue(Button, this._meegoBizHub); } /** * 配置点位容器特有能力 * only 2.0 */ get configuration() { return getImplValue(Configuration, this._meegoBizHub); } /** * 导航点位容器特有能力 * only 2.0 */ get page() { return getImplValue(Page, this._meegoBizHub); } /** * tab 点位容器特有能力 * only 2.0 */ get tab() { return getImplValue(Tab, this._meegoBizHub); } /** * 视图点位容器特有能力 * only 2.0 */ get view() { return getImplValue(View, this._meegoBizHub); } /** * 组件点位容器特有能力 * 现有组件:节点排期 schedule * only 2.0 */ get customComponent() { return getImplValue(CustomComponent, this._meegoBizHub); } /** * 实例字段点位容器特有能力 * only 2.0 */ get customField() { return getImplValue(CustomField, this._meegoBizHub); } /** * 应用导航 */ get navigation() { return getImplValue(Navigation, this._meegoBizHub); } /** * 本地存储 */ get storage() { return getImplValue(Storage, this._meegoBizHub); } /** * 剪贴板 */ get clipboard() { return getImplValue(Clipboard, this._meegoBizHub); } /** * 提示 */ get toast() { return getImplValue(Toast, this._meegoBizHub); } /** * 富文本编辑器 * only 2.0 */ get richTextEditor() { return getImplValue(RichTextEditor, this._meegoBizHub); } /** * 工作项实例筛选器 * only web 2.0 */ get workItemFinder() { return getImplValue(WorkItemFinder, this._meegoBizHub); } /** * 模态框 */ get modal() { return getImplValue(Modal, this._meegoBizHub); } /** * 共享模块 * only 2.0 */ get shared() { return getImplValue(Shared, this._meegoBizHub); } /** * 操作菜单 * only mobile 2.0 */ get actionSheet() { return getImplValue(ActionSheet, this._meegoBizHub); } /** * 工具方法 */ get utils() { return getImplValue(Utils, this._meegoBizHub); } /** * 应用上下文 */ get Context() { return getImplClass(Context, this._meegoBizHub); } /** * 空间 */ get Space() { return getImplClass(Space, this._meegoBizHub); } /** * 工作项配置 */ get WorkObject() { return getImplClass(WorkObject, this._meegoBizHub); } /** * 工作项 */ get WorkItem() { return getImplClass(WorkItem, this._meegoBizHub); } /** * 字段 */ get Field() { return getImplClass(Field, this._meegoBizHub); } /** * JSSDK 初始化配置 * @param options 配置项 * @returns sdk */ config(options) { return __async(this, null, function* () { if (typeof __MEEGO_BIZ_HUB__ !== "function") { throw new Error("The application does not support the sdk"); } this._meegoBizHub = yield __MEEGO_BIZ_HUB__({ sdkVersion: _SDKClient.version }); yield this._meegoBizHub.configure({ pluginId: options.pluginId, isDebug: options.isDebug, version: _SDKClient.version }); return this; }); } }; var SDKClient = _SDKClient; /** * SDK 版本号 */ SDKClient.version = "2.0.13"; // src/types/biz.ts var AttributeType = /* @__PURE__ */ ((AttributeType2) => { AttributeType2["name"] = "name"; AttributeType2["template"] = "template"; return AttributeType2; })(AttributeType || {}); var FieldType = /* @__PURE__ */ ((FieldType2) => { FieldType2["unknown"] = "unknown"; FieldType2["control"] = "control"; FieldType2["text"] = "text"; FieldType2["richText"] = "multi_text"; FieldType2["select"] = "select"; FieldType2["multiSelect"] = "multi_select"; FieldType2["treeSelect"] = "tree_select"; FieldType2["treeMultiSelect"] = "tree_multi_select"; FieldType2["radio"] = "radio"; FieldType2["user"] = "user"; FieldType2["multiUser"] = "multi_user"; FieldType2["date"] = "date"; FieldType2["dateRange"] = "schedule"; FieldType2["simpleVoting"] = "vote_boolean"; FieldType2["singleVoting"] = "vote_option"; FieldType2["multiVoting"] = "vote_option_multi"; FieldType2["link"] = "link"; FieldType2["number"] = "number"; FieldType2["attachment"] = "multi_file"; FieldType2["bool"] = "bool"; FieldType2["singleSignal"] = "signal"; FieldType2["multiSignal"] = "multi_signal"; FieldType2["compoundField"] = "compound_field"; FieldType2["workItemRelatedSelect"] = "work_item_related_select"; FieldType2["workItemRelatedMultiSelect"] = "work_item_related_multi_select"; return FieldType2; })(FieldType || {}); var FlowMode = /* @__PURE__ */ ((FlowMode2) => { FlowMode2["workFlow"] = "workflow"; FlowMode2["stateFlow"] = "stateflow"; return FlowMode2; })(FlowMode || {}); var NodeStatus = /* @__PURE__ */ ((NodeStatus2) => { NodeStatus2[NodeStatus2["unreach"] = 1] = "unreach"; NodeStatus2[NodeStatus2["reached"] = 2] = "reached"; NodeStatus2[NodeStatus2["passed"] = 3] = "passed"; return NodeStatus2; })(NodeStatus || {}); // src/types/features.ts var ButtonScene = /* @__PURE__ */ ((ButtonScene2) => { ButtonScene2[ButtonScene2["workItem"] = 3] = "workItem"; ButtonScene2[ButtonScene2["workItemNode"] = 4] = "workItemNode"; return ButtonScene2; })(ButtonScene || {}); var InterceptEvent = /* @__PURE__ */ ((InterceptEvent2) => { InterceptEvent2[InterceptEvent2["CreateWorkItem"] = 1001] = "CreateWorkItem"; InterceptEvent2[InterceptEvent2["DeleteWorkItem"] = 1002] = "DeleteWorkItem"; InterceptEvent2[InterceptEvent2["BatchDeleteWorkItem"] = 1003] = "BatchDeleteWorkItem"; InterceptEvent2[InterceptEvent2["RecoveryWorkItem"] = 1004] = "RecoveryWorkItem"; InterceptEvent2[InterceptEvent2["AbortWorkItem"] = 1005] = "AbortWorkItem"; InterceptEvent2[InterceptEvent2["UpgradeTemplate"] = 1006] = "UpgradeTemplate"; InterceptEvent2[InterceptEvent2["BatchUpgradeTemplate"] = 1007] = "BatchUpgradeTemplate"; InterceptEvent2[InterceptEvent2["ExportWorkItem"] = 1008] = "ExportWorkItem"; InterceptEvent2[InterceptEvent2["FinishNode"] = 2001] = "FinishNode"; InterceptEvent2[InterceptEvent2["DeleteNode"] = 2002] = "DeleteNode"; InterceptEvent2[InterceptEvent2["RecoveryNode"] = 2003] = "RecoveryNode"; InterceptEvent2[InterceptEvent2["RollBackNode"] = 2004] = "RollBackNode"; InterceptEvent2[InterceptEvent2["EditSchedule"] = 2005] = "EditSchedule"; InterceptEvent2[InterceptEvent2["UpdateState"] = 3001] = "UpdateState"; return InterceptEvent2; })(InterceptEvent || {}); var ComponentScheduleScene = /* @__PURE__ */ ((ComponentScheduleScene2) => { ComponentScheduleScene2[ComponentScheduleScene2["ALL"] = 0] = "ALL"; ComponentScheduleScene2[ComponentScheduleScene2["workItemNode"] = 1] = "workItemNode"; ComponentScheduleScene2[ComponentScheduleScene2["scheduleTable"] = 2] = "scheduleTable"; return ComponentScheduleScene2; })(ComponentScheduleScene || {}); var CustomComponentType = /* @__PURE__ */ ((CustomComponentType2) => { CustomComponentType2["Schedule"] = "schedule"; return CustomComponentType2; })(CustomComponentType || {}); // src/errors/CustomError.ts var CustomError = class extends Error { constructor(options) { super(`${options.message}, ${options.originMessage}`); this.originMessage = options.originMessage; } }; // src/errors/InternalError.ts var InternalError = class extends CustomError { constructor(options) { super({ message: "internal error", originMessage: options.originMessage }); this.name = "InternalError"; } }; // src/errors/NoAuthError.ts var NoAuthError = class extends CustomError { constructor(options) { super({ message: "no auth", originMessage: options.originMessage }); this.name = "NoAuthError"; } }; // src/errors/NotFoundError.ts var NotFoundError = class extends CustomError { constructor(options) { super({ message: "not found", originMessage: options.originMessage }); this.name = "NotFoundError"; } }; // src/errors/OutOfLimitError.ts var OutOfLimitError = class extends CustomError { constructor(options) { super({ message: "out of the limit", originMessage: options.originMessage }); this.name = "OutOfLimitError"; } }; // src/errors/InvalidParamsError.ts var InvalidParamsError = class extends CustomError { constructor(options) { super({ message: "invalid params error", originMessage: options.originMessage }); this.errCode = -1; this.errMsg = "unkown error"; this.name = "InvalidParamsError"; this.errMsg = this.originMessage; this._parseErrorCode(); } _parseErrorCode() { try { const { errCode, errMsg } = JSON.parse(this.originMessage); errCode !== void 0 && (this.errCode = errCode); errMsg !== void 0 && (this.errMsg = errMsg); } catch (e) { } } }; // src/errors/NotSupportedError.ts var NotSupportedError = class extends CustomError { constructor(options) { super({ message: "the api is not supported", originMessage: options.originMessage }); this.name = "NotSupportedError"; } }; // src/index.ts var src_default = SDKClient; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { ActionSheet, AttributeType, Button, ButtonScene, Clipboard, ComponentScheduleScene, Configuration, ContainerModal, Context, Control, CustomComponent, CustomComponentType, CustomField, Field, FieldType, FlowMode, IMPL_KEY, Intercept, InterceptEvent, InternalError, InvalidParamsError, MEEGO_BIZ_HUB, Modal, Navigation, NoAuthError, NodeStatus, NotFoundError, NotSupportedError, OutOfLimitError, Page, RichTextEditor, SDKClient, Shared, Space, Storage, Tab, Toast, Utils, View, WorkItem, WorkItemFinder, WorkObject });