@nbreak/sdk 0.1.0 → 0.1.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 +1 -1
- package/dist/cjs/index.cjs +1 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
package/dist/cjs/index.cjs
CHANGED
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["EXTENSION_TYPES"],"sources":["../../src/define.js","../../src/manifest.js","../../src/index.js"],"sourcesContent":["/**\n * @nbreak/sdk - 扩展定义 API\n *\n * 提供 6 个 define* 工厂函数,每个返回标准 Extension 对象\n * 应用方通过 import 这些函数定义扩展,然后注册到 extensionRegistry\n *\n * 对标:\n * - Superset: defineChartPlugin() / defineDashboardPlugin()\n * - DataV: 自定义组件开发 API\n */\n\nimport { EXTENSION_TYPES } from '@nbreak/shared';\n\n/**\n * 定义组件扩展\n * @param {Object} def - 组件扩展定义\n * @param {string} def.type - 组件类型标识\n * @param {string} def.name - 显示名称\n * @param {string} def.category - 分类\n * @param {Function|Object} def.component - Vue 组件或异步加载函数\n * @param {Array} [def.schema] - 属性字段数组\n * @param {Object} [def.defaults] - 默认配置\n * @param {Array<string>} [def.tags] - 标签\n * @param {string} [def.icon] - 图标\n * @param {string} [def.thumbnail] - 缩略图\n * @param {string} [def.description] - 描述\n * @returns {Object} Extension 对象\n */\nexport function defineComponentExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineComponentExtension 需要 type 字段');\n }\n return {\n type: EXTENSION_TYPES.COMPONENT,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n type: def.type,\n name: def.name || def.type,\n category: def.category || 'other',\n component: def.component,\n schema: def.schema || [],\n defaults: def.defaults || {},\n tags: def.tags || [],\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义主题扩展\n * @param {Object} def\n * @param {string} def.id - 主题 ID\n * @param {string} def.name - 显示名称\n * @param {Object} def.tokens - 主题令牌(CSS 变量映射)\n * @param {string} [def.preview] - 预览图\n * @param {boolean} [def.isDark] - 是否深色主题\n * @returns {Object} Extension 对象\n */\nexport function defineThemeExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineThemeExtension 需要 id 字段');\n }\n return {\n type: EXTENSION_TYPES.THEME,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'BgColorsOutlined',\n thumbnail: def.preview || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n tokens: def.tokens || {},\n preview: def.preview || '',\n isDark: def.isDark !== undefined ? def.isDark : true,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义数据源扩展\n * @param {Object} def\n * @param {string} def.type - 数据源类型\n * @param {string} def.name - 显示名称\n * @param {Object} def.adapter - 适配器实例(实现 fetchData/subscribe/test)\n * @param {Array} [def.configSchema] - 配置字段\n * @param {Object} [def.defaults] - 默认配置\n * @returns {Object} Extension 对象\n */\nexport function defineDataSourceExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineDataSourceExtension 需要 type 字段');\n }\n if (!def.adapter || typeof def.adapter.fetchData !== 'function') {\n throw new Error('[DataScreen SDK] adapter 必须实现 fetchData 方法');\n }\n return {\n type: EXTENSION_TYPES.DATASOURCE,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: 'DatabaseOutlined',\n definition: {\n type: def.type,\n name: def.name || def.type,\n adapter: def.adapter,\n configSchema: def.configSchema || [],\n defaults: def.defaults || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义模板扩展\n * @param {Object} def\n * @param {string} def.id - 模板 ID\n * @param {string} def.name - 显示名称\n * @param {Array} def.pages - 页面定义\n * @param {string} [def.thumbnail] - 缩略图\n * @param {Object} [def.canvasConfig] - 画布配置\n * @returns {Object} Extension 对象\n */\nexport function defineTemplateExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 id 字段');\n }\n if (!Array.isArray(def.pages)) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 pages 数组');\n }\n return {\n type: EXTENSION_TYPES.TEMPLATE,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'LayoutOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n pages: def.pages,\n thumbnail: def.thumbnail || '',\n canvasConfig: def.canvasConfig || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义动作扩展\n * @param {Object} def\n * @param {string} def.actionType - 动作类型\n * @param {Function} def.handler - 处理函数 (params, context) => result\n * @param {Array} [def.schema] - 参数字段\n * @param {string} [def.category] - 动作分类\n * @returns {Object} Extension 对象\n */\nexport function defineActionExtension(def) {\n if (!def || !def.actionType) {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 actionType 字段');\n }\n if (typeof def.handler !== 'function') {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 handler 函数');\n }\n return {\n type: EXTENSION_TYPES.ACTION,\n name: def.actionType,\n displayName: def.displayName || def.actionType,\n description: def.description || '',\n icon: 'ThunderboltOutlined',\n definition: {\n actionType: def.actionType,\n handler: def.handler,\n schema: def.schema || [],\n category: def.category || 'general',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义属性字段扩展\n * @param {Object} def\n * @param {string} def.fieldType - 字段类型标识\n * @param {Function|Object} def.editor - Vue 编辑器组件\n * @param {Function} [def.defaultValue] - 默认值生成函数\n * @param {Function} [def.serialize] - 序列化函数\n * @param {Function} [def.deserialize] - 反序列化函数\n * @returns {Object} Extension 对象\n */\nexport function definePropertyFieldExtension(def) {\n if (!def || !def.fieldType) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 fieldType 字段');\n }\n if (!def.editor) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 editor 组件');\n }\n return {\n type: EXTENSION_TYPES.PROPERTY_FIELD,\n name: def.fieldType,\n displayName: def.displayName || def.fieldType,\n description: def.description || '',\n icon: 'FormOutlined',\n definition: {\n fieldType: def.fieldType,\n editor: def.editor,\n defaultValue: def.defaultValue,\n serialize: def.serialize,\n deserialize: def.deserialize,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 统一定义入口(根据 type 自动分发)\n */\nexport function defineExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineExtension 需要 type 字段');\n }\n switch (def.type) {\n case EXTENSION_TYPES.COMPONENT:\n return defineComponentExtension(def);\n case EXTENSION_TYPES.THEME:\n return defineThemeExtension(def);\n case EXTENSION_TYPES.DATASOURCE:\n return defineDataSourceExtension(def);\n case EXTENSION_TYPES.TEMPLATE:\n return defineTemplateExtension(def);\n case EXTENSION_TYPES.ACTION:\n return defineActionExtension(def);\n case EXTENSION_TYPES.PROPERTY_FIELD:\n return definePropertyFieldExtension(def);\n default:\n throw new Error(`[DataScreen SDK] 未知扩展类型: ${def.type}`);\n }\n}\n","/**\n * @nbreak/sdk - Manifest 工具(浏览器安全子集)\n *\n * 仅保留不依赖 node:fs / node:path 的函数:\n * - checkCompatibility:版本兼容性检查\n * - generateManifestTemplate:生成 manifest 模板对象\n *\n * 依赖文件系统的函数(readManifest / writeManifest / deriveManifestFromPackageJson /\n * validateManifestFile)已迁移至 ./manifest-node.js,仅供 Node 环境(CLI)使用。\n *\n * 拆分原因:原 manifest.js 顶层 `import 'node:fs'` 会被 Vite 静态打包并 externalize,\n * 导致浏览器运行时抛出 \"Module node:fs has been externalized for browser\" 错误。\n * 浏览器侧代码(themes / datasources / ui / vue)通过 @nbreak/sdk 主入口\n * 引入 define* 工厂时,不应触发 node:fs 加载。\n */\n\nimport {\n createManifest,\n isVersionCompatible,\n} from '@nbreak/shared';\n\n/**\n * 检查扩展与宿主版本兼容性\n * @param {Object} manifest\n * @param {string} hostVersion\n * @returns {{compatible: boolean, reason: string}}\n */\nexport function checkCompatibility(manifest, hostVersion) {\n if (!manifest.datascreenVersion) {\n return { compatible: true, reason: '未声明版本要求' };\n }\n if (!hostVersion) {\n return { compatible: true, reason: '宿主版本未知,跳过检查' };\n }\n const compatible = isVersionCompatible(manifest.datascreenVersion, hostVersion);\n return {\n compatible,\n reason: compatible\n ? '版本兼容'\n : `扩展要求 ${manifest.datascreenVersion},当前 ${hostVersion}`,\n };\n}\n\n/**\n * 生成 manifest 模板\n * @param {string} type - 扩展类型\n * @param {string} name - 扩展名称\n * @param {Object} [extra]\n * @returns {Object}\n */\nexport function generateManifestTemplate(type, name, extra = {}) {\n return createManifest({\n name: name,\n type: type,\n ...extra,\n });\n}\n","/**\n * @nbreak/sdk - 入口\n *\n * 扩展开发 SDK,提供:\n * - define* 工厂函数(6 类扩展定义)\n * - Manifest 工具\n * - 注册辅助函数\n */\n\n// 扩展定义 API\nexport {\n defineComponentExtension,\n defineThemeExtension,\n defineDataSourceExtension,\n defineTemplateExtension,\n defineActionExtension,\n definePropertyFieldExtension,\n defineExtension,\n} from './define.js';\n\n// Manifest 工具(浏览器安全子集)\n// 注意:依赖 node:fs 的函数(readManifest / writeManifest /\n// deriveManifestFromPackageJson / validateManifestFile)已迁移到 ./manifest-node.js,\n// 不再从主入口导出,以避免 Vite 浏览器构建时静态引入 node:fs。\n// Node/CLI 环境请直接从 './manifest-node.js' 或 '@nbreak/sdk/manifest-node' 导入。\nexport {\n checkCompatibility,\n generateManifestTemplate,\n} from './manifest.js';\n\n// 共享类型与常量\nexport {\n EXTENSION_TYPES,\n PROPERTY_FIELD_TYPES,\n COMPONENT_CATEGORIES,\n definePropertyField,\n definePropertyGroup,\n groupFields,\n resolveDefaults,\n validateField,\n} from '@nbreak/shared';\n\n// 注册表(re-export 便于直接使用)\nexport { extensionRegistry } from '@nbreak/core';\n\n// 版本信息\nexport const VERSION = '0.1.0';\nexport const PACKAGE_NAME = '@nbreak/sdk';\n\n/**\n * 批量注册扩展(便捷 API)\n * @param {Array} extensions\n * @returns {Promise<Array<boolean>>}\n */\nexport async function registerExtensions(extensions) {\n const { extensionRegistry } = await import('@nbreak/core');\n return extensionRegistry.registerAll(extensions);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["EXTENSION_TYPES"],"sources":["../../src/define.js","../../src/manifest.js","../../src/index.js"],"sourcesContent":["/**\n * @nbreak/sdk - 扩展定义 API\n *\n * 提供 6 个 define* 工厂函数,每个返回标准 Extension 对象\n * 应用方通过 import 这些函数定义扩展,然后注册到 extensionRegistry\n *\n * 对标:\n * - Superset: defineChartPlugin() / defineDashboardPlugin()\n * - DataV: 自定义组件开发 API\n */\n\nimport { EXTENSION_TYPES } from '@nbreak/shared';\n\n/**\n * 定义组件扩展\n * @param {Object} def - 组件扩展定义\n * @param {string} def.type - 组件类型标识\n * @param {string} def.name - 显示名称\n * @param {string} def.category - 分类\n * @param {Function|Object} def.component - Vue 组件或异步加载函数\n * @param {Array} [def.schema] - 属性字段数组\n * @param {Object} [def.defaults] - 默认配置\n * @param {Array<string>} [def.tags] - 标签\n * @param {string} [def.icon] - 图标\n * @param {string} [def.thumbnail] - 缩略图\n * @param {string} [def.description] - 描述\n * @returns {Object} Extension 对象\n */\nexport function defineComponentExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineComponentExtension 需要 type 字段');\n }\n return {\n type: EXTENSION_TYPES.COMPONENT,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n type: def.type,\n name: def.name || def.type,\n category: def.category || 'other',\n component: def.component,\n schema: def.schema || [],\n defaults: def.defaults || {},\n tags: def.tags || [],\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义主题扩展\n * @param {Object} def\n * @param {string} def.id - 主题 ID\n * @param {string} def.name - 显示名称\n * @param {Object} def.tokens - 主题令牌(CSS 变量映射)\n * @param {string} [def.preview] - 预览图\n * @param {boolean} [def.isDark] - 是否深色主题\n * @returns {Object} Extension 对象\n */\nexport function defineThemeExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineThemeExtension 需要 id 字段');\n }\n return {\n type: EXTENSION_TYPES.THEME,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'BgColorsOutlined',\n thumbnail: def.preview || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n tokens: def.tokens || {},\n preview: def.preview || '',\n isDark: def.isDark !== undefined ? def.isDark : true,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义数据源扩展\n * @param {Object} def\n * @param {string} def.type - 数据源类型\n * @param {string} def.name - 显示名称\n * @param {Object} def.adapter - 适配器实例(实现 fetchData/subscribe/test)\n * @param {Array} [def.configSchema] - 配置字段\n * @param {Object} [def.defaults] - 默认配置\n * @returns {Object} Extension 对象\n */\nexport function defineDataSourceExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineDataSourceExtension 需要 type 字段');\n }\n if (!def.adapter || typeof def.adapter.fetchData !== 'function') {\n throw new Error('[DataScreen SDK] adapter 必须实现 fetchData 方法');\n }\n return {\n type: EXTENSION_TYPES.DATASOURCE,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: 'DatabaseOutlined',\n definition: {\n type: def.type,\n name: def.name || def.type,\n adapter: def.adapter,\n configSchema: def.configSchema || [],\n defaults: def.defaults || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义模板扩展\n * @param {Object} def\n * @param {string} def.id - 模板 ID\n * @param {string} def.name - 显示名称\n * @param {Array} def.pages - 页面定义\n * @param {string} [def.thumbnail] - 缩略图\n * @param {Object} [def.canvasConfig] - 画布配置\n * @returns {Object} Extension 对象\n */\nexport function defineTemplateExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 id 字段');\n }\n if (!Array.isArray(def.pages)) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 pages 数组');\n }\n return {\n type: EXTENSION_TYPES.TEMPLATE,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'LayoutOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n pages: def.pages,\n thumbnail: def.thumbnail || '',\n canvasConfig: def.canvasConfig || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义动作扩展\n * @param {Object} def\n * @param {string} def.actionType - 动作类型\n * @param {Function} def.handler - 处理函数 (params, context) => result\n * @param {Array} [def.schema] - 参数字段\n * @param {string} [def.category] - 动作分类\n * @returns {Object} Extension 对象\n */\nexport function defineActionExtension(def) {\n if (!def || !def.actionType) {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 actionType 字段');\n }\n if (typeof def.handler !== 'function') {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 handler 函数');\n }\n return {\n type: EXTENSION_TYPES.ACTION,\n name: def.actionType,\n displayName: def.displayName || def.actionType,\n description: def.description || '',\n icon: 'ThunderboltOutlined',\n definition: {\n actionType: def.actionType,\n handler: def.handler,\n schema: def.schema || [],\n category: def.category || 'general',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义属性字段扩展\n * @param {Object} def\n * @param {string} def.fieldType - 字段类型标识\n * @param {Function|Object} def.editor - Vue 编辑器组件\n * @param {Function} [def.defaultValue] - 默认值生成函数\n * @param {Function} [def.serialize] - 序列化函数\n * @param {Function} [def.deserialize] - 反序列化函数\n * @returns {Object} Extension 对象\n */\nexport function definePropertyFieldExtension(def) {\n if (!def || !def.fieldType) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 fieldType 字段');\n }\n if (!def.editor) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 editor 组件');\n }\n return {\n type: EXTENSION_TYPES.PROPERTY_FIELD,\n name: def.fieldType,\n displayName: def.displayName || def.fieldType,\n description: def.description || '',\n icon: 'FormOutlined',\n definition: {\n fieldType: def.fieldType,\n editor: def.editor,\n defaultValue: def.defaultValue,\n serialize: def.serialize,\n deserialize: def.deserialize,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 统一定义入口(根据 type 自动分发)\n */\nexport function defineExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineExtension 需要 type 字段');\n }\n switch (def.type) {\n case EXTENSION_TYPES.COMPONENT:\n return defineComponentExtension(def);\n case EXTENSION_TYPES.THEME:\n return defineThemeExtension(def);\n case EXTENSION_TYPES.DATASOURCE:\n return defineDataSourceExtension(def);\n case EXTENSION_TYPES.TEMPLATE:\n return defineTemplateExtension(def);\n case EXTENSION_TYPES.ACTION:\n return defineActionExtension(def);\n case EXTENSION_TYPES.PROPERTY_FIELD:\n return definePropertyFieldExtension(def);\n default:\n throw new Error(`[DataScreen SDK] 未知扩展类型: ${def.type}`);\n }\n}\n","/**\n * @nbreak/sdk - Manifest 工具(浏览器安全子集)\n *\n * 仅保留不依赖 node:fs / node:path 的函数:\n * - checkCompatibility:版本兼容性检查\n * - generateManifestTemplate:生成 manifest 模板对象\n *\n * 依赖文件系统的函数(readManifest / writeManifest / deriveManifestFromPackageJson /\n * validateManifestFile)已迁移至 ./manifest-node.js,仅供 Node 环境(CLI)使用。\n *\n * 拆分原因:原 manifest.js 顶层 `import 'node:fs'` 会被 Vite 静态打包并 externalize,\n * 导致浏览器运行时抛出 \"Module node:fs has been externalized for browser\" 错误。\n * 浏览器侧代码(themes / datasources / ui / vue)通过 @nbreak/sdk 主入口\n * 引入 define* 工厂时,不应触发 node:fs 加载。\n */\n\nimport {\n createManifest,\n isVersionCompatible,\n} from '@nbreak/shared';\n\n/**\n * 检查扩展与宿主版本兼容性\n * @param {Object} manifest\n * @param {string} hostVersion\n * @returns {{compatible: boolean, reason: string}}\n */\nexport function checkCompatibility(manifest, hostVersion) {\n if (!manifest.datascreenVersion) {\n return { compatible: true, reason: '未声明版本要求' };\n }\n if (!hostVersion) {\n return { compatible: true, reason: '宿主版本未知,跳过检查' };\n }\n const compatible = isVersionCompatible(manifest.datascreenVersion, hostVersion);\n return {\n compatible,\n reason: compatible\n ? '版本兼容'\n : `扩展要求 ${manifest.datascreenVersion},当前 ${hostVersion}`,\n };\n}\n\n/**\n * 生成 manifest 模板\n * @param {string} type - 扩展类型\n * @param {string} name - 扩展名称\n * @param {Object} [extra]\n * @returns {Object}\n */\nexport function generateManifestTemplate(type, name, extra = {}) {\n return createManifest({\n name: name,\n type: type,\n ...extra,\n });\n}\n","/**\n * @nbreak/sdk - 入口\n *\n * 扩展开发 SDK,提供:\n * - define* 工厂函数(6 类扩展定义)\n * - Manifest 工具\n * - 注册辅助函数\n */\n\n// 扩展定义 API\nexport {\n defineComponentExtension,\n defineThemeExtension,\n defineDataSourceExtension,\n defineTemplateExtension,\n defineActionExtension,\n definePropertyFieldExtension,\n defineExtension,\n} from './define.js';\n\n// Manifest 工具(浏览器安全子集)\n// 注意:依赖 node:fs 的函数(readManifest / writeManifest /\n// deriveManifestFromPackageJson / validateManifestFile)已迁移到 ./manifest-node.js,\n// 不再从主入口导出,以避免 Vite 浏览器构建时静态引入 node:fs。\n// Node/CLI 环境请直接从 './manifest-node.js' 或 '@nbreak/sdk/manifest-node' 导入。\nexport {\n checkCompatibility,\n generateManifestTemplate,\n} from './manifest.js';\n\n// 共享类型与常量\nexport {\n EXTENSION_TYPES,\n PROPERTY_FIELD_TYPES,\n COMPONENT_CATEGORIES,\n definePropertyField,\n definePropertyGroup,\n groupFields,\n resolveDefaults,\n validateField,\n} from '@nbreak/shared';\n\n// 注册表(re-export 便于直接使用)\nexport { extensionRegistry } from '@nbreak/core';\n\n// 版本信息\nexport const VERSION = '0.1.1';\nexport const PACKAGE_NAME = '@nbreak/sdk';\n\n/**\n * 批量注册扩展(便捷 API)\n * @param {Array} extensions\n * @returns {Promise<Array<boolean>>}\n */\nexport async function registerExtensions(extensions) {\n const { extensionRegistry } = await import('@nbreak/core');\n return extensionRegistry.registerAll(extensions);\n}\n"],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["EXTENSION_TYPES"],"sources":["../../src/define.js","../../src/manifest.js","../../src/index.js"],"sourcesContent":["/**\n * @nbreak/sdk - 扩展定义 API\n *\n * 提供 6 个 define* 工厂函数,每个返回标准 Extension 对象\n * 应用方通过 import 这些函数定义扩展,然后注册到 extensionRegistry\n *\n * 对标:\n * - Superset: defineChartPlugin() / defineDashboardPlugin()\n * - DataV: 自定义组件开发 API\n */\n\nimport { EXTENSION_TYPES } from '@nbreak/shared';\n\n/**\n * 定义组件扩展\n * @param {Object} def - 组件扩展定义\n * @param {string} def.type - 组件类型标识\n * @param {string} def.name - 显示名称\n * @param {string} def.category - 分类\n * @param {Function|Object} def.component - Vue 组件或异步加载函数\n * @param {Array} [def.schema] - 属性字段数组\n * @param {Object} [def.defaults] - 默认配置\n * @param {Array<string>} [def.tags] - 标签\n * @param {string} [def.icon] - 图标\n * @param {string} [def.thumbnail] - 缩略图\n * @param {string} [def.description] - 描述\n * @returns {Object} Extension 对象\n */\nexport function defineComponentExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineComponentExtension 需要 type 字段');\n }\n return {\n type: EXTENSION_TYPES.COMPONENT,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n type: def.type,\n name: def.name || def.type,\n category: def.category || 'other',\n component: def.component,\n schema: def.schema || [],\n defaults: def.defaults || {},\n tags: def.tags || [],\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义主题扩展\n * @param {Object} def\n * @param {string} def.id - 主题 ID\n * @param {string} def.name - 显示名称\n * @param {Object} def.tokens - 主题令牌(CSS 变量映射)\n * @param {string} [def.preview] - 预览图\n * @param {boolean} [def.isDark] - 是否深色主题\n * @returns {Object} Extension 对象\n */\nexport function defineThemeExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineThemeExtension 需要 id 字段');\n }\n return {\n type: EXTENSION_TYPES.THEME,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'BgColorsOutlined',\n thumbnail: def.preview || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n tokens: def.tokens || {},\n preview: def.preview || '',\n isDark: def.isDark !== undefined ? def.isDark : true,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义数据源扩展\n * @param {Object} def\n * @param {string} def.type - 数据源类型\n * @param {string} def.name - 显示名称\n * @param {Object} def.adapter - 适配器实例(实现 fetchData/subscribe/test)\n * @param {Array} [def.configSchema] - 配置字段\n * @param {Object} [def.defaults] - 默认配置\n * @returns {Object} Extension 对象\n */\nexport function defineDataSourceExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineDataSourceExtension 需要 type 字段');\n }\n if (!def.adapter || typeof def.adapter.fetchData !== 'function') {\n throw new Error('[DataScreen SDK] adapter 必须实现 fetchData 方法');\n }\n return {\n type: EXTENSION_TYPES.DATASOURCE,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: 'DatabaseOutlined',\n definition: {\n type: def.type,\n name: def.name || def.type,\n adapter: def.adapter,\n configSchema: def.configSchema || [],\n defaults: def.defaults || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义模板扩展\n * @param {Object} def\n * @param {string} def.id - 模板 ID\n * @param {string} def.name - 显示名称\n * @param {Array} def.pages - 页面定义\n * @param {string} [def.thumbnail] - 缩略图\n * @param {Object} [def.canvasConfig] - 画布配置\n * @returns {Object} Extension 对象\n */\nexport function defineTemplateExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 id 字段');\n }\n if (!Array.isArray(def.pages)) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 pages 数组');\n }\n return {\n type: EXTENSION_TYPES.TEMPLATE,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'LayoutOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n pages: def.pages,\n thumbnail: def.thumbnail || '',\n canvasConfig: def.canvasConfig || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义动作扩展\n * @param {Object} def\n * @param {string} def.actionType - 动作类型\n * @param {Function} def.handler - 处理函数 (params, context) => result\n * @param {Array} [def.schema] - 参数字段\n * @param {string} [def.category] - 动作分类\n * @returns {Object} Extension 对象\n */\nexport function defineActionExtension(def) {\n if (!def || !def.actionType) {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 actionType 字段');\n }\n if (typeof def.handler !== 'function') {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 handler 函数');\n }\n return {\n type: EXTENSION_TYPES.ACTION,\n name: def.actionType,\n displayName: def.displayName || def.actionType,\n description: def.description || '',\n icon: 'ThunderboltOutlined',\n definition: {\n actionType: def.actionType,\n handler: def.handler,\n schema: def.schema || [],\n category: def.category || 'general',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义属性字段扩展\n * @param {Object} def\n * @param {string} def.fieldType - 字段类型标识\n * @param {Function|Object} def.editor - Vue 编辑器组件\n * @param {Function} [def.defaultValue] - 默认值生成函数\n * @param {Function} [def.serialize] - 序列化函数\n * @param {Function} [def.deserialize] - 反序列化函数\n * @returns {Object} Extension 对象\n */\nexport function definePropertyFieldExtension(def) {\n if (!def || !def.fieldType) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 fieldType 字段');\n }\n if (!def.editor) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 editor 组件');\n }\n return {\n type: EXTENSION_TYPES.PROPERTY_FIELD,\n name: def.fieldType,\n displayName: def.displayName || def.fieldType,\n description: def.description || '',\n icon: 'FormOutlined',\n definition: {\n fieldType: def.fieldType,\n editor: def.editor,\n defaultValue: def.defaultValue,\n serialize: def.serialize,\n deserialize: def.deserialize,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 统一定义入口(根据 type 自动分发)\n */\nexport function defineExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineExtension 需要 type 字段');\n }\n switch (def.type) {\n case EXTENSION_TYPES.COMPONENT:\n return defineComponentExtension(def);\n case EXTENSION_TYPES.THEME:\n return defineThemeExtension(def);\n case EXTENSION_TYPES.DATASOURCE:\n return defineDataSourceExtension(def);\n case EXTENSION_TYPES.TEMPLATE:\n return defineTemplateExtension(def);\n case EXTENSION_TYPES.ACTION:\n return defineActionExtension(def);\n case EXTENSION_TYPES.PROPERTY_FIELD:\n return definePropertyFieldExtension(def);\n default:\n throw new Error(`[DataScreen SDK] 未知扩展类型: ${def.type}`);\n }\n}\n","/**\n * @nbreak/sdk - Manifest 工具(浏览器安全子集)\n *\n * 仅保留不依赖 node:fs / node:path 的函数:\n * - checkCompatibility:版本兼容性检查\n * - generateManifestTemplate:生成 manifest 模板对象\n *\n * 依赖文件系统的函数(readManifest / writeManifest / deriveManifestFromPackageJson /\n * validateManifestFile)已迁移至 ./manifest-node.js,仅供 Node 环境(CLI)使用。\n *\n * 拆分原因:原 manifest.js 顶层 `import 'node:fs'` 会被 Vite 静态打包并 externalize,\n * 导致浏览器运行时抛出 \"Module node:fs has been externalized for browser\" 错误。\n * 浏览器侧代码(themes / datasources / ui / vue)通过 @nbreak/sdk 主入口\n * 引入 define* 工厂时,不应触发 node:fs 加载。\n */\n\nimport {\n createManifest,\n isVersionCompatible,\n} from '@nbreak/shared';\n\n/**\n * 检查扩展与宿主版本兼容性\n * @param {Object} manifest\n * @param {string} hostVersion\n * @returns {{compatible: boolean, reason: string}}\n */\nexport function checkCompatibility(manifest, hostVersion) {\n if (!manifest.datascreenVersion) {\n return { compatible: true, reason: '未声明版本要求' };\n }\n if (!hostVersion) {\n return { compatible: true, reason: '宿主版本未知,跳过检查' };\n }\n const compatible = isVersionCompatible(manifest.datascreenVersion, hostVersion);\n return {\n compatible,\n reason: compatible\n ? '版本兼容'\n : `扩展要求 ${manifest.datascreenVersion},当前 ${hostVersion}`,\n };\n}\n\n/**\n * 生成 manifest 模板\n * @param {string} type - 扩展类型\n * @param {string} name - 扩展名称\n * @param {Object} [extra]\n * @returns {Object}\n */\nexport function generateManifestTemplate(type, name, extra = {}) {\n return createManifest({\n name: name,\n type: type,\n ...extra,\n });\n}\n","/**\n * @nbreak/sdk - 入口\n *\n * 扩展开发 SDK,提供:\n * - define* 工厂函数(6 类扩展定义)\n * - Manifest 工具\n * - 注册辅助函数\n */\n\n// 扩展定义 API\nexport {\n defineComponentExtension,\n defineThemeExtension,\n defineDataSourceExtension,\n defineTemplateExtension,\n defineActionExtension,\n definePropertyFieldExtension,\n defineExtension,\n} from './define.js';\n\n// Manifest 工具(浏览器安全子集)\n// 注意:依赖 node:fs 的函数(readManifest / writeManifest /\n// deriveManifestFromPackageJson / validateManifestFile)已迁移到 ./manifest-node.js,\n// 不再从主入口导出,以避免 Vite 浏览器构建时静态引入 node:fs。\n// Node/CLI 环境请直接从 './manifest-node.js' 或 '@nbreak/sdk/manifest-node' 导入。\nexport {\n checkCompatibility,\n generateManifestTemplate,\n} from './manifest.js';\n\n// 共享类型与常量\nexport {\n EXTENSION_TYPES,\n PROPERTY_FIELD_TYPES,\n COMPONENT_CATEGORIES,\n definePropertyField,\n definePropertyGroup,\n groupFields,\n resolveDefaults,\n validateField,\n} from '@nbreak/shared';\n\n// 注册表(re-export 便于直接使用)\nexport { extensionRegistry } from '@nbreak/core';\n\n// 版本信息\nexport const VERSION = '0.1.0';\nexport const PACKAGE_NAME = '@nbreak/sdk';\n\n/**\n * 批量注册扩展(便捷 API)\n * @param {Array} extensions\n * @returns {Promise<Array<boolean>>}\n */\nexport async function registerExtensions(extensions) {\n const { extensionRegistry } = await import('@nbreak/core');\n return extensionRegistry.registerAll(extensions);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["EXTENSION_TYPES"],"sources":["../../src/define.js","../../src/manifest.js","../../src/index.js"],"sourcesContent":["/**\n * @nbreak/sdk - 扩展定义 API\n *\n * 提供 6 个 define* 工厂函数,每个返回标准 Extension 对象\n * 应用方通过 import 这些函数定义扩展,然后注册到 extensionRegistry\n *\n * 对标:\n * - Superset: defineChartPlugin() / defineDashboardPlugin()\n * - DataV: 自定义组件开发 API\n */\n\nimport { EXTENSION_TYPES } from '@nbreak/shared';\n\n/**\n * 定义组件扩展\n * @param {Object} def - 组件扩展定义\n * @param {string} def.type - 组件类型标识\n * @param {string} def.name - 显示名称\n * @param {string} def.category - 分类\n * @param {Function|Object} def.component - Vue 组件或异步加载函数\n * @param {Array} [def.schema] - 属性字段数组\n * @param {Object} [def.defaults] - 默认配置\n * @param {Array<string>} [def.tags] - 标签\n * @param {string} [def.icon] - 图标\n * @param {string} [def.thumbnail] - 缩略图\n * @param {string} [def.description] - 描述\n * @returns {Object} Extension 对象\n */\nexport function defineComponentExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineComponentExtension 需要 type 字段');\n }\n return {\n type: EXTENSION_TYPES.COMPONENT,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n type: def.type,\n name: def.name || def.type,\n category: def.category || 'other',\n component: def.component,\n schema: def.schema || [],\n defaults: def.defaults || {},\n tags: def.tags || [],\n icon: def.icon || 'AppstoreOutlined',\n thumbnail: def.thumbnail || '',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义主题扩展\n * @param {Object} def\n * @param {string} def.id - 主题 ID\n * @param {string} def.name - 显示名称\n * @param {Object} def.tokens - 主题令牌(CSS 变量映射)\n * @param {string} [def.preview] - 预览图\n * @param {boolean} [def.isDark] - 是否深色主题\n * @returns {Object} Extension 对象\n */\nexport function defineThemeExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineThemeExtension 需要 id 字段');\n }\n return {\n type: EXTENSION_TYPES.THEME,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'BgColorsOutlined',\n thumbnail: def.preview || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n tokens: def.tokens || {},\n preview: def.preview || '',\n isDark: def.isDark !== undefined ? def.isDark : true,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义数据源扩展\n * @param {Object} def\n * @param {string} def.type - 数据源类型\n * @param {string} def.name - 显示名称\n * @param {Object} def.adapter - 适配器实例(实现 fetchData/subscribe/test)\n * @param {Array} [def.configSchema] - 配置字段\n * @param {Object} [def.defaults] - 默认配置\n * @returns {Object} Extension 对象\n */\nexport function defineDataSourceExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineDataSourceExtension 需要 type 字段');\n }\n if (!def.adapter || typeof def.adapter.fetchData !== 'function') {\n throw new Error('[DataScreen SDK] adapter 必须实现 fetchData 方法');\n }\n return {\n type: EXTENSION_TYPES.DATASOURCE,\n name: def.name || def.type,\n displayName: def.name || def.type,\n description: def.description || '',\n icon: 'DatabaseOutlined',\n definition: {\n type: def.type,\n name: def.name || def.type,\n adapter: def.adapter,\n configSchema: def.configSchema || [],\n defaults: def.defaults || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义模板扩展\n * @param {Object} def\n * @param {string} def.id - 模板 ID\n * @param {string} def.name - 显示名称\n * @param {Array} def.pages - 页面定义\n * @param {string} [def.thumbnail] - 缩略图\n * @param {Object} [def.canvasConfig] - 画布配置\n * @returns {Object} Extension 对象\n */\nexport function defineTemplateExtension(def) {\n if (!def || !def.id) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 id 字段');\n }\n if (!Array.isArray(def.pages)) {\n throw new Error('[DataScreen SDK] defineTemplateExtension 需要 pages 数组');\n }\n return {\n type: EXTENSION_TYPES.TEMPLATE,\n name: def.id,\n displayName: def.name || def.id,\n description: def.description || '',\n icon: 'LayoutOutlined',\n thumbnail: def.thumbnail || '',\n definition: {\n id: def.id,\n name: def.name || def.id,\n pages: def.pages,\n thumbnail: def.thumbnail || '',\n canvasConfig: def.canvasConfig || {},\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义动作扩展\n * @param {Object} def\n * @param {string} def.actionType - 动作类型\n * @param {Function} def.handler - 处理函数 (params, context) => result\n * @param {Array} [def.schema] - 参数字段\n * @param {string} [def.category] - 动作分类\n * @returns {Object} Extension 对象\n */\nexport function defineActionExtension(def) {\n if (!def || !def.actionType) {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 actionType 字段');\n }\n if (typeof def.handler !== 'function') {\n throw new Error('[DataScreen SDK] defineActionExtension 需要 handler 函数');\n }\n return {\n type: EXTENSION_TYPES.ACTION,\n name: def.actionType,\n displayName: def.displayName || def.actionType,\n description: def.description || '',\n icon: 'ThunderboltOutlined',\n definition: {\n actionType: def.actionType,\n handler: def.handler,\n schema: def.schema || [],\n category: def.category || 'general',\n description: def.description || '',\n },\n };\n}\n\n/**\n * 定义属性字段扩展\n * @param {Object} def\n * @param {string} def.fieldType - 字段类型标识\n * @param {Function|Object} def.editor - Vue 编辑器组件\n * @param {Function} [def.defaultValue] - 默认值生成函数\n * @param {Function} [def.serialize] - 序列化函数\n * @param {Function} [def.deserialize] - 反序列化函数\n * @returns {Object} Extension 对象\n */\nexport function definePropertyFieldExtension(def) {\n if (!def || !def.fieldType) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 fieldType 字段');\n }\n if (!def.editor) {\n throw new Error('[DataScreen SDK] definePropertyFieldExtension 需要 editor 组件');\n }\n return {\n type: EXTENSION_TYPES.PROPERTY_FIELD,\n name: def.fieldType,\n displayName: def.displayName || def.fieldType,\n description: def.description || '',\n icon: 'FormOutlined',\n definition: {\n fieldType: def.fieldType,\n editor: def.editor,\n defaultValue: def.defaultValue,\n serialize: def.serialize,\n deserialize: def.deserialize,\n description: def.description || '',\n },\n };\n}\n\n/**\n * 统一定义入口(根据 type 自动分发)\n */\nexport function defineExtension(def) {\n if (!def || !def.type) {\n throw new Error('[DataScreen SDK] defineExtension 需要 type 字段');\n }\n switch (def.type) {\n case EXTENSION_TYPES.COMPONENT:\n return defineComponentExtension(def);\n case EXTENSION_TYPES.THEME:\n return defineThemeExtension(def);\n case EXTENSION_TYPES.DATASOURCE:\n return defineDataSourceExtension(def);\n case EXTENSION_TYPES.TEMPLATE:\n return defineTemplateExtension(def);\n case EXTENSION_TYPES.ACTION:\n return defineActionExtension(def);\n case EXTENSION_TYPES.PROPERTY_FIELD:\n return definePropertyFieldExtension(def);\n default:\n throw new Error(`[DataScreen SDK] 未知扩展类型: ${def.type}`);\n }\n}\n","/**\n * @nbreak/sdk - Manifest 工具(浏览器安全子集)\n *\n * 仅保留不依赖 node:fs / node:path 的函数:\n * - checkCompatibility:版本兼容性检查\n * - generateManifestTemplate:生成 manifest 模板对象\n *\n * 依赖文件系统的函数(readManifest / writeManifest / deriveManifestFromPackageJson /\n * validateManifestFile)已迁移至 ./manifest-node.js,仅供 Node 环境(CLI)使用。\n *\n * 拆分原因:原 manifest.js 顶层 `import 'node:fs'` 会被 Vite 静态打包并 externalize,\n * 导致浏览器运行时抛出 \"Module node:fs has been externalized for browser\" 错误。\n * 浏览器侧代码(themes / datasources / ui / vue)通过 @nbreak/sdk 主入口\n * 引入 define* 工厂时,不应触发 node:fs 加载。\n */\n\nimport {\n createManifest,\n isVersionCompatible,\n} from '@nbreak/shared';\n\n/**\n * 检查扩展与宿主版本兼容性\n * @param {Object} manifest\n * @param {string} hostVersion\n * @returns {{compatible: boolean, reason: string}}\n */\nexport function checkCompatibility(manifest, hostVersion) {\n if (!manifest.datascreenVersion) {\n return { compatible: true, reason: '未声明版本要求' };\n }\n if (!hostVersion) {\n return { compatible: true, reason: '宿主版本未知,跳过检查' };\n }\n const compatible = isVersionCompatible(manifest.datascreenVersion, hostVersion);\n return {\n compatible,\n reason: compatible\n ? '版本兼容'\n : `扩展要求 ${manifest.datascreenVersion},当前 ${hostVersion}`,\n };\n}\n\n/**\n * 生成 manifest 模板\n * @param {string} type - 扩展类型\n * @param {string} name - 扩展名称\n * @param {Object} [extra]\n * @returns {Object}\n */\nexport function generateManifestTemplate(type, name, extra = {}) {\n return createManifest({\n name: name,\n type: type,\n ...extra,\n });\n}\n","/**\n * @nbreak/sdk - 入口\n *\n * 扩展开发 SDK,提供:\n * - define* 工厂函数(6 类扩展定义)\n * - Manifest 工具\n * - 注册辅助函数\n */\n\n// 扩展定义 API\nexport {\n defineComponentExtension,\n defineThemeExtension,\n defineDataSourceExtension,\n defineTemplateExtension,\n defineActionExtension,\n definePropertyFieldExtension,\n defineExtension,\n} from './define.js';\n\n// Manifest 工具(浏览器安全子集)\n// 注意:依赖 node:fs 的函数(readManifest / writeManifest /\n// deriveManifestFromPackageJson / validateManifestFile)已迁移到 ./manifest-node.js,\n// 不再从主入口导出,以避免 Vite 浏览器构建时静态引入 node:fs。\n// Node/CLI 环境请直接从 './manifest-node.js' 或 '@nbreak/sdk/manifest-node' 导入。\nexport {\n checkCompatibility,\n generateManifestTemplate,\n} from './manifest.js';\n\n// 共享类型与常量\nexport {\n EXTENSION_TYPES,\n PROPERTY_FIELD_TYPES,\n COMPONENT_CATEGORIES,\n definePropertyField,\n definePropertyGroup,\n groupFields,\n resolveDefaults,\n validateField,\n} from '@nbreak/shared';\n\n// 注册表(re-export 便于直接使用)\nexport { extensionRegistry } from '@nbreak/core';\n\n// 版本信息\nexport const VERSION = '0.1.1';\nexport const PACKAGE_NAME = '@nbreak/sdk';\n\n/**\n * 批量注册扩展(便捷 API)\n * @param {Array} extensions\n * @returns {Promise<Array<boolean>>}\n */\nexport async function registerExtensions(extensions) {\n const { extensionRegistry } = await import('@nbreak/core');\n return extensionRegistry.registerAll(extensions);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nbreak/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "DataScreen 扩展开发 SDK:定义 API、CLI 工具链、manifest 校验",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
6
7
|
"main": "./dist/cjs/index.cjs",
|
|
7
8
|
"module": "./dist/esm/index.js",
|
|
8
9
|
"bin": {
|
|
@@ -28,8 +29,8 @@
|
|
|
28
29
|
"README.md"
|
|
29
30
|
],
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@nbreak/core": "0.1.
|
|
32
|
-
"@nbreak/shared": "0.1.
|
|
32
|
+
"@nbreak/core": "0.1.1",
|
|
33
|
+
"@nbreak/shared": "0.1.1"
|
|
33
34
|
},
|
|
34
35
|
"publishConfig": {
|
|
35
36
|
"access": "public"
|