@next-bricks/visual-builder 1.38.1 → 1.38.3
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/dist/bricks.json +18 -18
- package/dist/chunks/1045.da75cb56.js +2 -0
- package/dist/chunks/1045.da75cb56.js.map +1 -0
- package/dist/chunks/1122.3ee6d6f3.js +2 -0
- package/dist/chunks/1122.3ee6d6f3.js.map +1 -0
- package/dist/chunks/114.d6772a35.js +2 -0
- package/dist/chunks/114.d6772a35.js.map +1 -0
- package/dist/chunks/1889.96ce7327.js +2 -0
- package/dist/chunks/1889.96ce7327.js.map +1 -0
- package/dist/chunks/220.b81cb3a9.js +2 -0
- package/dist/chunks/220.b81cb3a9.js.map +1 -0
- package/dist/chunks/2201.301b3dc4.js +2 -0
- package/dist/chunks/2201.301b3dc4.js.map +1 -0
- package/dist/chunks/2980.1544a125.js +2 -0
- package/dist/chunks/2980.1544a125.js.map +1 -0
- package/dist/chunks/3144.1e4265cb.js +3 -0
- package/dist/chunks/3144.1e4265cb.js.map +1 -0
- package/dist/chunks/{3171.5cd02271.js → 3171.d919d954.js} +2 -2
- package/dist/chunks/{3171.5cd02271.js.map → 3171.d919d954.js.map} +1 -1
- package/dist/chunks/{6314.7cf962aa.js → 3933.4363c1cf.js} +2 -2
- package/dist/chunks/{3933.21c52045.js.map → 3933.4363c1cf.js.map} +1 -1
- package/dist/chunks/4041.a9289b9a.js +3 -0
- package/dist/chunks/4041.a9289b9a.js.map +1 -0
- package/dist/chunks/{4837.b122ae40.js → 4837.bbbe8edf.js} +2 -2
- package/dist/chunks/{4837.b122ae40.js.map → 4837.bbbe8edf.js.map} +1 -1
- package/dist/chunks/5250.64cfe342.js +3 -0
- package/dist/chunks/5250.64cfe342.js.map +1 -0
- package/dist/chunks/5522.9b10a351.js +3 -0
- package/dist/chunks/5522.9b10a351.js.map +1 -0
- package/dist/chunks/{5552.3773d6dd.js → 5552.25e8ba44.js} +2 -2
- package/dist/chunks/{5552.3773d6dd.js.map → 5552.25e8ba44.js.map} +1 -1
- package/dist/chunks/5659.db2c4d38.js +3 -0
- package/dist/chunks/5659.db2c4d38.js.map +1 -0
- package/dist/chunks/6117.b8e62bfc.js +1 -0
- package/dist/chunks/{3933.21c52045.js → 6314.68a0856f.js} +2 -2
- package/dist/chunks/{6314.7cf962aa.js.map → 6314.68a0856f.js.map} +1 -1
- package/dist/chunks/6773.29b2dc35.js +2 -0
- package/dist/chunks/6773.29b2dc35.js.map +1 -0
- package/dist/chunks/6840.b8f5fecc.js +3 -0
- package/dist/chunks/6840.b8f5fecc.js.map +1 -0
- package/dist/chunks/7085.5626fe65.js +3 -0
- package/dist/chunks/7085.5626fe65.js.map +1 -0
- package/dist/chunks/{7218.2d0daf7d.js → 7218.698b9922.js} +2 -2
- package/dist/chunks/{7218.2d0daf7d.js.map → 7218.698b9922.js.map} +1 -1
- package/dist/chunks/726.decd1cb8.js +2 -0
- package/dist/chunks/726.decd1cb8.js.map +1 -0
- package/dist/chunks/7304.c45ab907.js +2 -0
- package/dist/chunks/7304.c45ab907.js.map +1 -0
- package/dist/chunks/7434.c8f35cb5.js +2 -0
- package/dist/chunks/7434.c8f35cb5.js.map +1 -0
- package/dist/chunks/{7721.6dd8673d.js → 7721.79a73cc5.js} +3 -3
- package/dist/chunks/7721.79a73cc5.js.map +1 -0
- package/dist/chunks/7733.348a0514.js +2 -0
- package/dist/chunks/7733.348a0514.js.map +1 -0
- package/dist/chunks/871.dd401bcf.js +2 -0
- package/dist/chunks/871.dd401bcf.js.map +1 -0
- package/dist/chunks/8989.1a42d5b8.js +2 -0
- package/dist/chunks/8989.1a42d5b8.js.map +1 -0
- package/dist/chunks/9080.e6f4d552.js +2 -0
- package/dist/chunks/9080.e6f4d552.js.map +1 -0
- package/dist/chunks/9515.b82d9bb4.js +2 -0
- package/dist/chunks/9515.b82d9bb4.js.map +1 -0
- package/dist/chunks/{9844.4328557b.js → 9844.8fa0b43e.js} +2 -2
- package/dist/chunks/{9844.4328557b.js.map → 9844.8fa0b43e.js.map} +1 -1
- package/dist/chunks/batch-update-raw-data-generated-view.d854bc69.js +3 -0
- package/dist/chunks/batch-update-raw-data-generated-view.d854bc69.js.map +1 -0
- package/dist/chunks/chat-conversation.5660eb6c.js +3 -0
- package/dist/chunks/chat-conversation.5660eb6c.js.map +1 -0
- package/dist/chunks/chat-preview.8f851d13.js +3 -0
- package/dist/chunks/chat-preview.8f851d13.js.map +1 -0
- package/dist/chunks/{check-editor-by-name.8e2a4d3c.js → check-editor-by-name.98c9077b.js} +2 -2
- package/dist/chunks/{check-editor-by-name.8e2a4d3c.js.map → check-editor-by-name.98c9077b.js.map} +1 -1
- package/dist/chunks/contract-select.c889a30c.js +3 -0
- package/dist/chunks/contract-select.c889a30c.js.map +1 -0
- package/dist/chunks/generate-snippets-context-menu.146ee748.js +2 -0
- package/dist/chunks/generate-snippets-context-menu.146ee748.js.map +1 -0
- package/dist/chunks/{get-config-by-data-for-ai.40035762.js → get-config-by-data-for-ai.8a90647b.js} +3 -3
- package/dist/chunks/get-config-by-data-for-ai.8a90647b.js.map +1 -0
- package/dist/chunks/{get-data-deps.24231f8f.js → get-data-deps.f481598b.js} +2 -2
- package/dist/chunks/{get-data-deps.24231f8f.js.map → get-data-deps.f481598b.js.map} +1 -1
- package/dist/chunks/{get-dependency-tree.f0dd3414.js → get-dependency-tree.52423efa.js} +2 -2
- package/dist/chunks/{get-dependency-tree.f0dd3414.js.map → get-dependency-tree.52423efa.js.map} +1 -1
- package/dist/chunks/{get-raw-data-system-prompts.e7339ae7.js → get-raw-data-system-prompts.b5899f4d.js} +2 -2
- package/dist/chunks/{get-raw-data-system-prompts.e7339ae7.js.map → get-raw-data-system-prompts.b5899f4d.js.map} +1 -1
- package/dist/chunks/inject-chat-preview-agent.db7f95da.js +2 -0
- package/dist/chunks/inject-chat-preview-agent.db7f95da.js.map +1 -0
- package/dist/chunks/main.40573267.js +2 -0
- package/dist/chunks/main.40573267.js.map +1 -0
- package/dist/chunks/page-arch-node.79a44aac.js +3 -0
- package/dist/chunks/page-arch-node.79a44aac.js.map +1 -0
- package/dist/chunks/parse-path.7e88de06.js +2 -0
- package/dist/chunks/parse-path.7e88de06.js.map +1 -0
- package/dist/chunks/pre-generated-config-preview.ed6be58a.js +2 -0
- package/dist/chunks/pre-generated-config-preview.ed6be58a.js.map +1 -0
- package/dist/chunks/pre-generated-config.927c0982.js +2 -0
- package/dist/chunks/pre-generated-config.927c0982.js.map +1 -0
- package/dist/chunks/pre-generated-container.dddeac27.js +2 -0
- package/dist/chunks/pre-generated-container.dddeac27.js.map +1 -0
- package/dist/chunks/pre-generated-preview.b3ba835a.js +3 -0
- package/dist/chunks/pre-generated-preview.b3ba835a.js.map +1 -0
- package/dist/chunks/pre-generated-table-view.ff0bb488.js +2 -0
- package/dist/chunks/pre-generated-table-view.ff0bb488.js.map +1 -0
- package/dist/chunks/property-editor.a5d944e2.js +2 -0
- package/dist/chunks/{property-editor.f09203b7.js.map → property-editor.a5d944e2.js.map} +1 -1
- package/dist/chunks/raw-data-preview.d668372a.js +3 -0
- package/dist/chunks/raw-data-preview.d668372a.js.map +1 -0
- package/dist/chunks/raw-metric-preview.d1039b5f.js +3 -0
- package/dist/chunks/raw-metric-preview.d1039b5f.js.map +1 -0
- package/dist/chunks/workbench-action-list.68a47ab3.js +2 -0
- package/dist/chunks/workbench-action-list.68a47ab3.js.map +1 -0
- package/dist/chunks/workbench-action.21ea5fa9.js +3 -0
- package/dist/chunks/workbench-action.21ea5fa9.js.map +1 -0
- package/dist/chunks/workbench-history-action.7b17ce0a.js +3 -0
- package/dist/chunks/workbench-history-action.7b17ce0a.js.map +1 -0
- package/dist/chunks/workbench-pane.5f9c12b9.js +3 -0
- package/dist/chunks/workbench-pane.5f9c12b9.js.map +1 -0
- package/dist/chunks/workbench-sidebar.0c0b3d95.js +2 -0
- package/dist/chunks/workbench-sidebar.0c0b3d95.js.map +1 -0
- package/dist/chunks/workbench-tree.e627eae4.js +3 -0
- package/dist/chunks/workbench-tree.e627eae4.js.map +1 -0
- package/dist/index.352964d5.js +2 -0
- package/dist/index.352964d5.js.map +1 -0
- package/dist/manifest.json +71 -71
- package/dist/types.json +300 -300
- package/package.json +4 -4
- package/dist/chunks/1045.f6e80fec.js +0 -2
- package/dist/chunks/1045.f6e80fec.js.map +0 -1
- package/dist/chunks/1122.ba17383d.js +0 -2
- package/dist/chunks/1122.ba17383d.js.map +0 -1
- package/dist/chunks/114.aaa7c484.js +0 -2
- package/dist/chunks/114.aaa7c484.js.map +0 -1
- package/dist/chunks/1889.e5238f90.js +0 -2
- package/dist/chunks/1889.e5238f90.js.map +0 -1
- package/dist/chunks/220.7b1efc80.js +0 -2
- package/dist/chunks/220.7b1efc80.js.map +0 -1
- package/dist/chunks/2201.3d4f3271.js +0 -2
- package/dist/chunks/2201.3d4f3271.js.map +0 -1
- package/dist/chunks/2980.b1bfe52c.js +0 -2
- package/dist/chunks/2980.b1bfe52c.js.map +0 -1
- package/dist/chunks/3144.0096b9c3.js +0 -3
- package/dist/chunks/3144.0096b9c3.js.map +0 -1
- package/dist/chunks/4041.468489fa.js +0 -3
- package/dist/chunks/4041.468489fa.js.map +0 -1
- package/dist/chunks/5250.f22684c9.js +0 -3
- package/dist/chunks/5250.f22684c9.js.map +0 -1
- package/dist/chunks/5522.ab1061cc.js +0 -3
- package/dist/chunks/5522.ab1061cc.js.map +0 -1
- package/dist/chunks/5659.9000e441.js +0 -3
- package/dist/chunks/5659.9000e441.js.map +0 -1
- package/dist/chunks/6117.1d7ec00c.js +0 -1
- package/dist/chunks/6773.9ed5373b.js +0 -2
- package/dist/chunks/6773.9ed5373b.js.map +0 -1
- package/dist/chunks/6840.21d31b93.js +0 -3
- package/dist/chunks/6840.21d31b93.js.map +0 -1
- package/dist/chunks/7085.81897113.js +0 -3
- package/dist/chunks/7085.81897113.js.map +0 -1
- package/dist/chunks/726.b2215460.js +0 -2
- package/dist/chunks/726.b2215460.js.map +0 -1
- package/dist/chunks/7304.09d181ac.js +0 -2
- package/dist/chunks/7304.09d181ac.js.map +0 -1
- package/dist/chunks/7434.67a7c326.js +0 -2
- package/dist/chunks/7434.67a7c326.js.map +0 -1
- package/dist/chunks/7721.6dd8673d.js.map +0 -1
- package/dist/chunks/7733.8b0e5606.js +0 -2
- package/dist/chunks/7733.8b0e5606.js.map +0 -1
- package/dist/chunks/871.fff582b1.js +0 -2
- package/dist/chunks/871.fff582b1.js.map +0 -1
- package/dist/chunks/8989.0517d458.js +0 -2
- package/dist/chunks/8989.0517d458.js.map +0 -1
- package/dist/chunks/9080.b51b1966.js +0 -2
- package/dist/chunks/9080.b51b1966.js.map +0 -1
- package/dist/chunks/9515.80c4b472.js +0 -2
- package/dist/chunks/9515.80c4b472.js.map +0 -1
- package/dist/chunks/batch-update-raw-data-generated-view.bc27d0ef.js +0 -3
- package/dist/chunks/batch-update-raw-data-generated-view.bc27d0ef.js.map +0 -1
- package/dist/chunks/chat-conversation.2429847e.js +0 -3
- package/dist/chunks/chat-conversation.2429847e.js.map +0 -1
- package/dist/chunks/chat-preview.18dbd7b9.js +0 -3
- package/dist/chunks/chat-preview.18dbd7b9.js.map +0 -1
- package/dist/chunks/contract-select.aebbe874.js +0 -3
- package/dist/chunks/contract-select.aebbe874.js.map +0 -1
- package/dist/chunks/generate-snippets-context-menu.d59571b6.js +0 -2
- package/dist/chunks/generate-snippets-context-menu.d59571b6.js.map +0 -1
- package/dist/chunks/get-config-by-data-for-ai.40035762.js.map +0 -1
- package/dist/chunks/inject-chat-preview-agent.e1897fcc.js +0 -2
- package/dist/chunks/inject-chat-preview-agent.e1897fcc.js.map +0 -1
- package/dist/chunks/main.ba14b0f0.js +0 -2
- package/dist/chunks/main.ba14b0f0.js.map +0 -1
- package/dist/chunks/page-arch-node.54cda8e0.js +0 -3
- package/dist/chunks/page-arch-node.54cda8e0.js.map +0 -1
- package/dist/chunks/parse-path.3150102e.js +0 -2
- package/dist/chunks/parse-path.3150102e.js.map +0 -1
- package/dist/chunks/pre-generated-config-preview.77f2caaf.js +0 -2
- package/dist/chunks/pre-generated-config-preview.77f2caaf.js.map +0 -1
- package/dist/chunks/pre-generated-config.e1c53303.js +0 -2
- package/dist/chunks/pre-generated-config.e1c53303.js.map +0 -1
- package/dist/chunks/pre-generated-container.886b45a6.js +0 -2
- package/dist/chunks/pre-generated-container.886b45a6.js.map +0 -1
- package/dist/chunks/pre-generated-preview.679ccfb9.js +0 -3
- package/dist/chunks/pre-generated-preview.679ccfb9.js.map +0 -1
- package/dist/chunks/pre-generated-table-view.61080b88.js +0 -2
- package/dist/chunks/pre-generated-table-view.61080b88.js.map +0 -1
- package/dist/chunks/property-editor.f09203b7.js +0 -2
- package/dist/chunks/raw-data-preview.09ee31ed.js +0 -3
- package/dist/chunks/raw-data-preview.09ee31ed.js.map +0 -1
- package/dist/chunks/raw-metric-preview.fa44b0e6.js +0 -3
- package/dist/chunks/raw-metric-preview.fa44b0e6.js.map +0 -1
- package/dist/chunks/workbench-action-list.2bb5fd96.js +0 -2
- package/dist/chunks/workbench-action-list.2bb5fd96.js.map +0 -1
- package/dist/chunks/workbench-action.d437c289.js +0 -3
- package/dist/chunks/workbench-action.d437c289.js.map +0 -1
- package/dist/chunks/workbench-history-action.9676bc4c.js +0 -3
- package/dist/chunks/workbench-history-action.9676bc4c.js.map +0 -1
- package/dist/chunks/workbench-pane.b0663c72.js +0 -3
- package/dist/chunks/workbench-pane.b0663c72.js.map +0 -1
- package/dist/chunks/workbench-sidebar.4f8979af.js +0 -2
- package/dist/chunks/workbench-sidebar.4f8979af.js.map +0 -1
- package/dist/chunks/workbench-tree.ee9e13e1.js +0 -3
- package/dist/chunks/workbench-tree.ee9e13e1.js.map +0 -1
- package/dist/index.67520381.js +0 -2
- package/dist/index.67520381.js.map +0 -1
- /package/dist/chunks/{3144.0096b9c3.js.LICENSE.txt → 3144.1e4265cb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{4041.468489fa.js.LICENSE.txt → 4041.a9289b9a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{5250.f22684c9.js.LICENSE.txt → 5250.64cfe342.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{5522.ab1061cc.js.LICENSE.txt → 5522.9b10a351.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{5659.9000e441.js.LICENSE.txt → 5659.db2c4d38.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{6840.21d31b93.js.LICENSE.txt → 6840.b8f5fecc.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7085.81897113.js.LICENSE.txt → 7085.5626fe65.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7721.6dd8673d.js.LICENSE.txt → 7721.79a73cc5.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{batch-update-raw-data-generated-view.bc27d0ef.js.LICENSE.txt → batch-update-raw-data-generated-view.d854bc69.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-conversation.2429847e.js.LICENSE.txt → chat-conversation.5660eb6c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{chat-preview.18dbd7b9.js.LICENSE.txt → chat-preview.8f851d13.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{contract-select.aebbe874.js.LICENSE.txt → contract-select.c889a30c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{get-config-by-data-for-ai.40035762.js.LICENSE.txt → get-config-by-data-for-ai.8a90647b.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{page-arch-node.54cda8e0.js.LICENSE.txt → page-arch-node.79a44aac.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{pre-generated-preview.679ccfb9.js.LICENSE.txt → pre-generated-preview.b3ba835a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{raw-data-preview.09ee31ed.js.LICENSE.txt → raw-data-preview.d668372a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{raw-metric-preview.fa44b0e6.js.LICENSE.txt → raw-metric-preview.d1039b5f.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{workbench-action.d437c289.js.LICENSE.txt → workbench-action.21ea5fa9.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{workbench-history-action.9676bc4c.js.LICENSE.txt → workbench-history-action.7b17ce0a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{workbench-pane.b0663c72.js.LICENSE.txt → workbench-pane.5f9c12b9.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{workbench-tree.ee9e13e1.js.LICENSE.txt → workbench-tree.e627eae4.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_visual_builder=globalThis.webpackChunk_next_bricks_visual_builder||[]).push([[6117],{76:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置图标或文字颜色等。\n\n对于 JSON 类型的数据,如果是图标相关的属性,使用图标显示;否则显示为链接(点击后查看详情),或显示为序列化后的内容。\n\n例如菜单模型的菜单图标属性,类型是 JSON,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用图标形式显示,默认中等尺寸;\n2. 使用图标形式显示,大尺寸;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": 0,\n "display": "icon",\n "type": "json",\n "style": {\n "size": "medium"\n }\n },\n {\n "visualWeight": 1,\n "display": "icon",\n "type": "json",\n "style": {\n "size": "large"\n }\n }\n]\n```\n\n又例如菜单模型的菜单设置属性,类型是 JSON,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用链接形式显示,点击后查看详情;\n2. 使用文本形式显示序列化后的内容;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": 0,\n "display": "link",\n "type": "json"\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "json"\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "json";\n\n /** 显示形式,默认为 text */\n display: "text" | "icon" | "link";\n\n /** 样式设置 */\n style?: Style;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "medium" | "large";\n}\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},3084:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置图标或文字颜色等。\n\n对于布尔类型的数据,可以使用固定的图标对或文本对来分别显示 true 和 false 值。\n\n例如主机模型的是否可用属性,类型是布尔,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用文本形式显示,文本内容分别为 “Y” 和 “N”,使用默认的颜色显示;\n2. 使用图标形式显示,使用相应的颜色显示;\n3. 使用图标+文本形式显示,文本内容分别为 “Yes” 和 “No”,使用相应的颜色显示;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "boolean",\n "true": {\n "text": "Y",\n "style": {\n "color": "var(--color-default)"\n }\n },\n "false": {\n "text": "N",\n "style": {\n "color": "var(--color-default)"\n }\n }\n },\n {\n "visualWeight": 0,\n "display": "icon",\n "type": "boolean",\n "true": {\n "icon": "check",\n "style": {\n "color": "var(--color-success)"\n }\n },\n "false": {\n "icon": "xmark",\n "style": {\n "color": "var(--color-error)"\n }\n }\n },\n {\n "visualWeight": 1,\n "display": "icon+text",\n "type": "boolean",\n "true": {\n "icon": "check",\n "text": "Yes",\n "style": {\n "color": "var(--color-success)"\n }\n },\n "false": {\n "icon": "xmark",\n "text": "No",\n "style": {\n "color": "var(--color-error)"\n }\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "boolean";\n\n /** 显示形式,默认为 text */\n display: "text" | "icon" | "icon+text";\n\n /** 值为 true 时的显示配置 */\n true: ValueConfig;\n\n /** 值为 false 时的显示配置 */\n false: ValueConfig;\n}\n\ntype Result = VisualConfig[];\n\ninterface ValueConfig {\n /** 显示的图标 */\n icon?: "check" | "xmark";\n\n /** 显示的文本 */\n text?: string;\n\n /** 样式设置 */\n style?: Style;\n}\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--color-success)" |\n "var(--color-error)";\n}\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},3287:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置文字的字号、字重和颜色。\n\n对于结构体类型的数据,始终降级显示,仅显示其主要属性(通常为名称)。\n\n例如主机模型的 CPU 信息,类型是结构体。该结构体定义的字段有:型号(ID 是 brand,类型是字符串)、架构(ID 是 architecture,类型是字符串)、频率(ID 是 hz,类型是整型)等。有以下几种显示方案:\n\n1. 使用文本形式,显示 CPU 的型号(brand);\n2. 使用链接形式,显示 CPU 的型号(brand);\n3. 使用标签形式,显示 CPU 的型号(brand);\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": 0,\n "display": "text",\n "type": "struct",\n "field": "brand"\n },\n {\n "visualWeight": 1,\n "display": "link",\n "type": "struct",\n "field": "brand"\n },\n {\n "visualWeight": 2,\n "display": "tag",\n "type": "struct",\n "field": "brand"\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "struct";\n\n /** 显示形式,默认为 text */\n display: "text" | "link" | "tag";\n\n /** 样式设置 */\n style?: Style;\n\n /** 当结构体数据降级显示时,仅显示该字段值 */\n field?: string;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--text-color-secondary)" |\n "var(--text-color-disabled)" |\n "var(--color-brand)";\n\n /** 标签变种形式:默认、边框、背景色 */\n variant?: "default" | "outline" | "background";\n\n /** 背景颜色使用预设的 CSS 变量 */\n background?: Background;\n\n /** 背景颜色表 */\n palette?: Record<string, Background>;\n}\n\ntype Background = "blue" | "cyan" | "geekblue" | "grayblue" | "gray" | "green" | "orange" | "purple" | "red" | "yellow" | "teal";\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},3404:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n对于结构体列表类型的数据,仅显示其数量,或列出其前两项数据的主要属性、并附带数量。\n\n例如主机模型的防火墙规则列表,类型是结构体列表。该结构体定义的字段有:名称(ID 是 name,类型是字符串)、说明(ID 是 desc,类型是字符串)、范围(ID 是 range,类型是字符串)等。有以下几种显示方案:\n\n1. 使用文本形式,仅显示数量;\n2. 使用链接形式,仅显示数量;\n3. 使用标签形式,显示前两项规则名称(name)及总数;\n4. 使用标签形式,使用边框,显示前两项规则名称(name)及总数;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "struct-list",\n "countOnly": true\n },\n {\n "visualWeight": 0,\n "display": "link",\n "type": "struct-list",\n "countOnly": true\n },\n {\n "visualWeight": 1,\n "display": "tag",\n "type": "struct-list",\n "field": "name",\n "maxItems": 2,\n "style": {\n "variant": "default"\n }\n },\n {\n "visualWeight": 2,\n "display": "tag",\n "type": "struct-list",\n "field": "name",\n "maxItems": 2,\n "style": {\n "variant": "outline"\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "struct-list";\n\n /** 显示形式,默认为 text */\n display: "text" | "tag" | "link";\n\n /** 样式设置 */\n style?: Style;\n\n /** 最多显示的列表项数量,当结构体列表数据降级显示时使用 */\n maxItems?: number;\n\n /** 尽显示列表类数据的数量 */\n countOnly?: number;\n\n /** 当结构体数据降级显示时,仅显示该字段值 */\n field?: string;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /** 标签变种形式:默认、边框、背景色 */\n variant?: "default" | "outline" | "background";\n}\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},4671:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置文字的字号、字重和颜色。\n\n对于数字类型的属性(包括整型和浮点型),可以表示为数量、货币金额、日期时间等。\n\n其中对于表示日期和时间的数据:\n\n- 不需要关注具体发生时刻的数据,使用相对时间格式,例如日常操作记录的时间;\n- 明确需要使用精确时间的数据,使用精确时间,例如系统日志中的时间;\n- 对于耗时类的数据,使用耗时格式,例如工具执行耗时;\n\n例如主机模型的 cpu 核心数属性,类型是整型,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用中等字号,次级文本颜色显示;\n2. 使用中等字号,默认颜色文本显示;\n3. 使用中等字号,字重加粗,默认颜色文本显示;\n4. 使用大号字号,字重加粗,默认颜色文本显示。\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "medium",\n "color": "var(--text-color-secondary)"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "medium",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "medium",\n "fontWeight": "bold",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 2,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "large",\n "fontWeight": "bold",\n "color": "var(--text-color-default)"\n }\n }\n]\n```\n\n例如主机模型的购买价格属性,类型是浮点型,单位人名币元,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用数字格式化为货币,货币单位 CNY,不保留小数,启用千分位;\n2. 使用数字格式化为货币,货币单位 CNY,保留两位小数,启用千分位;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": 0,\n "display": "text",\n "type": "float",\n "formatter": {\n "type": "number",\n "format": "currency",\n "currency": "CNY",\n "decimals": 0,\n "thousandsSeparator": true\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "float",\n "formatter": {\n "type": "number",\n "format": "currency",\n "currency": "CNY",\n "decimals": 2,\n "thousandsSeparator": true\n }\n }\n]\n```\n\n例如主机模型的上架时间属性,类型是整型,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用日期时间格式化,使用相对时间;\n1. 使用日期时间格式化,使用精确时间;\n1. 使用日期时间格式化,使用完整时间;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "integer",\n "formatter": {\n "type": "date-time",\n "format": "relative"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "integer",\n "formatter": {\n "type": "date-time",\n "format": "accurate"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "integer",\n "formatter": {\n "type": "date-time",\n "format": "full"\n }\n }\n]\n```\n\n又例如主机模型的 CPU 使用率,类型是整型,取值区间是 0 - 100。有以下几种显示方案:\n\n1. 使用中等字号,使用次级文本颜色,使用数字百分比格式化;\n2. 使用中等字号,根据区间取值挑选合适的颜色,使用数字百分比格式化;\n3. 使用大号字号,根据区间取值挑选合适的颜色,使用数字百分比格式化。\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "medium",\n "color": "var(--text-color-secondary)"\n },\n "formatter": {\n "type": "number",\n "format": "percent"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "medium"\n },\n "ranges": [\n {\n "end": 60,\n "style": {\n "color": "green"\n }\n },\n {\n "start": 61,\n "end": 95,\n "style": {\n "color": "orange"\n }\n },\n {\n "start": 96,\n "style": {\n "color": "red"\n }\n }\n ],\n "formatter": {\n "type": "number",\n "format": "percent"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "integer",\n "style": {\n "size": "large"\n },\n "ranges": [\n {\n "end": 60,\n "style": {\n "color": "green"\n }\n },\n {\n "start": 61,\n "end": 95,\n "style": {\n "color": "orange"\n }\n },\n {\n "start": 96,\n "style": {\n "color": "red"\n }\n }\n ],\n "formatter": {\n "type": "number",\n "format": "percent"\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "integer" | "float";\n\n /** 显示形式,默认为 text */\n display: "text";\n\n /** 样式设置 */\n style?: Style;\n\n /** 根据区间设置不同的样式 */\n ranges?: Range[];\n\n /** 格式化设置 */\n formatter?: Formatter;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--text-color-secondary)" |\n "var(--text-color-disabled)" |\n "var(--color-brand)";\n}\n\ninterface Range {\n start?: number;\n end?: number;\n style?: Style;\n}\n\ntype Formatter = DateTimeFormatter | CostTimeFormatter | NumberFormatter;\n\ninterface DateTimeFormatter {\n type: "date-time";\n\n format: "full" | "accurate" | "relative";\n}\n\ninterface CostTimeFormatter {\n type: "cost-time";\n}\n\ninterface NumberFormatter {\n type: "number";\n\n format: "decimal" | "currency" | "percent" | "unit";\n\n /**\n * 货币名,例如 CNY / USD 等\n */\n currency?: string;\n\n /** 数据原始单位,例如 KiB */\n originalUnit?: string;\n\n /** 保留的小数位数 */\n decimals?: number;\n\n thousandsSeparator?: boolean;\n}\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},5799:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置文字的字号、字重和颜色,有时还会设置边框和背景色(表现形式为标签)。另外还需要进行合理的格式化。\n\n**使用标签形式时,只设置颜色、边框和背景,不设置字号和字重**。标签形式的视觉重量通常比普通文本的高,标签有几种形式的变种,视觉重量由低到高:默认、边框、背景填充。\n\n对于枚举类型的数据,通常表示状态或类型等,如果用于表示状态,从默认视觉重量开始使用标签形式。你需要根据其属性名称来判断该属性是否表示状态。\n\n例如主机模型的 agent 状态属性,类型是枚举:未安装; 异常; 正常。根据属性名称判断该属性表示状态,从默认视觉重量开始使用标签形式,有以下几种显示方案:\n\n1. 使用文本形式,中等字号,默认文本颜色显示;\n2. 使用标签形式,根据状态值从色板中挑选合适的颜色;\n3. 使用标签形式,使用边框,根据状态值从色板中挑选合适的颜色;\n4. 使用标签形式,使用背景填充,根据状态值从色板中挑选合适的颜色。\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "enum",\n "style": {\n "size": "medium",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 0,\n "display": "tag",\n "type": "enum",\n "style": {\n "variant": "default",\n "palette": {\n "未安装": "gray",\n "异常": "red",\n "正常": "green"\n }\n }\n },\n {\n "visualWeight": 1,\n "display": "tag",\n "type": "enum",\n "style": {\n "variant": "outline",\n "palette": {\n "未安装": "gray",\n "异常": "red",\n "正常": "green"\n }\n }\n },\n {\n "visualWeight": 2,\n "display": "tag",\n "type": "enum",\n "style": {\n "variant": "background",\n "palette": {\n "未安装": "gray",\n "异常": "red",\n "正常": "green"\n }\n }\n }\n]\n```\n\n又例如主机模型等环境类型属性,类型是枚举:开发;测试;生产。根据属性名称判断该属性不表示状态,有以下几种显示方案:\n\n1. 使用文本形式,中等字号,次级文本颜色显示;\n2. 使用文本形式,中等字号,默认文本颜色显示;\n3. 使用标签形式,根据值从色板中挑选合适的颜色;\n4. 使用标签形式,使用边框,根据状态值从色板中挑选合适的颜色;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-secondary)"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 1,\n "display": "tag",\n "type": "enum",\n "style": {\n "variant": "default",\n "palette": {\n "开发": "gray",\n "测试": "orange",\n "生产": "blue"\n }\n }\n },\n {\n "visualWeight": 2,\n "display": "tag",\n "type": "enum",\n "style": {\n "variant": "outline",\n "palette": {\n "开发": "gray",\n "测试": "orange",\n "生产": "blue"\n }\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "enum";\n\n /** 显示形式,默认为 text */\n display: "text" | "tag";\n\n /** 样式设置 */\n style?: Style;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--text-color-secondary)" |\n "var(--text-color-disabled)" |\n "var(--color-brand)";\n\n /** 标签变种形式:默认、边框、背景色 */\n variant?: "default" | "outline" | "background";\n\n /** 背景颜色使用预设的 CSS 变量 */\n background?: Background;\n\n /** 背景颜色表 */\n palette?: Record<string, Background>;\n}\n\ntype Background = "blue" | "cyan" | "geekblue" | "grayblue" | "gray" | "green" | "orange" | "purple" | "red" | "yellow" | "teal";\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},7710:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n对于日期和时间类型的数据:\n\n- 不需要关注具体发生时刻的数据,使用相对时间格式,例如日常操作记录的时间;\n- 明确需要使用精确时间的数据,使用精确时间,例如系统日志中的时间;\n- 对于耗时类的数据,使用耗时格式,例如工具执行耗时;\n\n例如主机模型的上架时间属性,类型是日期时间,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用日期时间格式化,使用相对时间;\n2. 使用日期时间格式化,使用精确时间;\n3. 使用日期时间格式化,使用完整时间;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "date-time",\n "formatter": {\n "type": "date-time",\n "format": "relative"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "date-time",\n "formatter": {\n "type": "date-time",\n "format": "accurate"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "date-time",\n "formatter": {\n "type": "date-time",\n "format": "full"\n }\n }\n]\n```\n\n又例如主机模型的交付日期属性,类型是日期,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用日期时间格式化,使用相对时间;\n2. 使用日期时间格式化,使用精确时间;\n3. 使用日期时间格式化,使用完整时间;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "date",\n "formatter": {\n "type": "date",\n "format": "relative"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "date",\n "formatter": {\n "type": "date",\n "format": "accurate"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "date",\n "formatter": {\n "type": "date",\n "format": "full"\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "date" | "date-time";\n\n /** 显示形式,默认为 text */\n display: "text";\n\n /** 样式设置 */\n style?: Style;\n\n /** 格式化设置 */\n formatter?: DateTimeFormatter;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--text-color-secondary)" |\n "var(--text-color-disabled)" |\n "var(--color-brand)";\n}\n\ninterface DateTimeFormatter {\n type: "date" | "date-time";\n\n format: "full" | "accurate" | "relative";\n}\n\ninterface CostTimeFormatter {\n type: "cost-time";\n}\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'},8397:n=>{n.exports='你的职责是根据用户提供的模型属性定义,根据示例按标准 JSON 格式输出显示方案。\n\n一项数据,根据其类型和业务性质,在不同的场景和需求下展示,通常会使用不同的视觉重量来呈现,通常方式为设置文字的字号、字重和颜色。\n\n对于文本类型的数据,如果该属性属于该模型的重要信息,例如名称、ID等,可以添加字重加粗和大号字号的方案,其他不重要的属性,只需要较弱和普通两种视觉重量方案。\n\n例如主机模型的 IP 属性,类型是字符串,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用中等字号,次级文本颜色显示;\n2. 使用中等字号,默认颜色文本显示;\n3. 使用中等字号,字重加粗,默认颜色文本显示;\n4. 使用大号字号,字重加粗,默认颜色文本显示。\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-secondary)"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 1,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "fontWeight": "bold",\n "color": "var(--text-color-default)"\n }\n },\n {\n "visualWeight": 2,\n "display": "text",\n "type": "string",\n "style": {\n "size": "large",\n "fontWeight": "bold",\n "color": "var(--text-color-default)"\n }\n }\n]\n```\n\n又例如主机模型的备注属性,类型是字符串,按视觉重量从低到高,有以下几种显示方案:\n\n1. 使用中等字号,次级文本颜色显示;\n2. 使用中等字号,默认颜色文本显示;\n\n期望返回结果:\n\n```json\n[\n {\n "visualWeight": -1,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-secondary)"\n }\n },\n {\n "visualWeight": 0,\n "display": "text",\n "type": "string",\n "style": {\n "size": "medium",\n "color": "var(--text-color-default)"\n }\n }\n]\n```\n\n将这些显示方案严格地按预设的 TypeScript 接口定义为格式,输出标准的 JSON 格式内容。\n\n接口定义如下:\n\n```typescript\ninterface VisualConfig {\n /** 视觉重量,整型,默认为 0,取值范围 [-1, 2] */\n visualWeight: -1 | 0 | 1 | 2;\n\n /** 原始数据类型 */\n type: "string";\n\n /** 显示形式,默认为 text */\n display: "text";\n\n /** 样式设置 */\n style?: Style;\n}\n\ntype Result = VisualConfig[];\n\ninterface Style {\n /**\n * 尺寸\n *\n * @default "medium"\n */\n size?: "small" | "medium" | "large" | "x-large";\n\n /**\n * 字重\n *\n * @default "normal"\n */\n fontWeight?: "normal" | "bold";\n\n /** 内容颜色使用预设的 CSS 变量 */\n color?:\n "var(--text-color-default)" |\n "var(--text-color-secondary)" |\n "var(--text-color-disabled)" |\n "var(--color-brand)";\n\n /** 标签变种形式:默认、边框、背景色 */\n variant?: "default" | "outline" | "background";\n\n /** 背景颜色使用预设的 CSS 变量 */\n background?: Background;\n\n /** 背景颜色表 */\n palette?: Record<string, Background>;\n}\n\ntype Background = "blue" | "cyan" | "geekblue" | "grayblue" | "gray" | "green" | "orange" | "purple" | "red" | "yellow" | "teal";\n```\n\n注意不要在输出的方案内容中包含任何上述接口中未定义的字段。\n'}}]);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_visual_builder=globalThis.webpackChunk_next_bricks_visual_builder||[]).push([[3933,6314],{3933:(e,t,o)=>{function n(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(r,s){if("string"==typeof t?r.name===t:t.includes(r.name)){const t=[];for(let i=1;i<=o;i++){const o=s[s.length-i];if("MemberExpression"===(null==o?void 0:o.node.type)&&"object"===o.key){const s=o.node;s.computed||"Identifier"!==s.property.type?s.computed&&"Literal"===s.property.type&&"string"==typeof s.property.value?t.push(n?`${r.name}.${s.property.value}`:s.property.value):e.hasNonStaticUsage=!0:t.push(n?`${r.name}.${s.property.name}`:s.property.name)}else e.hasNonStaticUsage=!0}t.length===o&&e.usedProperties.add(t.join("."))}}}function r(e,t){return function(o,n,r){if(n.name===e){const e=r[r.length-1],n=r[r.length-2];if("CallExpression"===(null==n?void 0:n.node.type)&&"callee"===(null==n?void 0:n.key)&&"MemberExpression"===(null==e?void 0:e.node.type)&&"object"===e.key&&(e.node.computed?"Literal"===e.node.property.type&&e.node.property.value===t:"Identifier"===e.node.property.type&&e.node.property.name===t)){const e=n.node.arguments;if(e.length>0){const t=e[0];"Literal"===t.type&&"string"==typeof t.value?o.usedArgs.add(t.value):o.hasNonStaticUsage=!0}}}}}o.r(t),o.d(t,{beforeVisitGlobalMember:()=>n,collectAppGetMenuUsage:()=>s,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>S,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>P,scanPermissionActionsInStoryboard:()=>m,strictCollectMemberUsage:()=>l,track:()=>f,trackAll:()=>y,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>g,traverseStoryboardFunctions:()=>h,unwrapProvider:()=>c.unwrapProvider});const s=r("APP","getMenu"),i=r("INSTALLED_APPS","has");var a=o(1321),c=o(
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_visual_builder=globalThis.webpackChunk_next_bricks_visual_builder||[]).push([[3933,6314],{3933:(e,t,o)=>{function n(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(r,s){if("string"==typeof t?r.name===t:t.includes(r.name)){const t=[];for(let i=1;i<=o;i++){const o=s[s.length-i];if("MemberExpression"===(null==o?void 0:o.node.type)&&"object"===o.key){const s=o.node;s.computed||"Identifier"!==s.property.type?s.computed&&"Literal"===s.property.type&&"string"==typeof s.property.value?t.push(n?`${r.name}.${s.property.value}`:s.property.value):e.hasNonStaticUsage=!0:t.push(n?`${r.name}.${s.property.name}`:s.property.name)}else e.hasNonStaticUsage=!0}t.length===o&&e.usedProperties.add(t.join("."))}}}function r(e,t){return function(o,n,r){if(n.name===e){const e=r[r.length-1],n=r[r.length-2];if("CallExpression"===(null==n?void 0:n.node.type)&&"callee"===(null==n?void 0:n.key)&&"MemberExpression"===(null==e?void 0:e.node.type)&&"object"===e.key&&(e.node.computed?"Literal"===e.node.property.type&&e.node.property.value===t:"Identifier"===e.node.property.type&&e.node.property.name===t)){const e=n.node.arguments;if(e.length>0){const t=e[0];"Literal"===t.type&&"string"==typeof t.value?o.usedArgs.add(t.value):o.hasNonStaticUsage=!0}}}}}o.r(t),o.d(t,{beforeVisitGlobalMember:()=>n,collectAppGetMenuUsage:()=>s,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>S,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>P,scanPermissionActionsInStoryboard:()=>m,strictCollectMemberUsage:()=>l,track:()=>f,trackAll:()=>y,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>g,traverseStoryboardFunctions:()=>h,unwrapProvider:()=>c.unwrapProvider});const s=r("APP","getMenu"),i=r("INSTALLED_APPS","has");var a=o(1321),c=o(2304);function u(e,t,o){const n=new WeakSet,{matchExpressionString:r,visitNotMatchedExpressionString:s,visitNonExpressionString:i,visitObject:u}="string"==typeof o?{matchExpressionString:e=>e.includes(o)}:o;!function e(o){if("string"==typeof o)if((0,a.isEvaluable)(o))if(r(o))try{(0,a.preevaluate)(o,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal(e,n){t(e,n,o)}}})}catch(e){console.error("Parse storyboard expression failed:",e)}else null==s||s(o);else null==i||i(o);else if((0,c.isObject)(o)){if(n.has(o))return;n.add(o),null==u||u(o);for(const t of Array.isArray(o)?o:Object.values(o))e(t)}}(e)}function l(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const{hasNonStaticUsage:n,nonStaticUsage:r,usedProperties:s}=p(e,t,o);if(n)throw new Error(`Non-static usage of ${t} is prohibited, check your expression: "${r}"`);return s}function p(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const r={usedProperties:new Set,hasNonStaticUsage:!1},s=n(r,t,o);return u(e,((e,t,o)=>{s(e,t),r.hasNonStaticUsage&&(r.nonStaticUsage=o)}),t),r}const d=["CTX","STATE","FORM_STATE"];function f(e,t,o){if(e.includes(t)){const r={usedProperties:new Set,hasNonStaticUsage:!1},{expression:s}=(0,a.preevaluate)(e,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal:n(r,o)}});let i;if("SequenceExpression"===s.type&&(i=s.expressions[0])&&"Literal"===i.type&&i.value===t){if(r.usedProperties.size>0)return r.usedProperties;console.warn(`You are using "${t}" but no \`${o}\` usage found in your expression: ${JSON.stringify(e)}`)}}return!1}function y(e){if(d.some((t=>e.includes(t)))){const t={usedProperties:new Set,hasNonStaticUsage:!1};if((0,a.preevaluate)(e,{cache:!0,withParent:!0,hooks:{beforeVisitGlobal:n(t,d,1,!0)}}),t.usedProperties.size>0){const e=[...t.usedProperties],o={context:!1,state:!1,formState:!1},n={CTX:"context",STATE:"state",FORM_STATE:"formState"};return e.forEach((e=>{const[t,r]=e.split(".");o[n[t]]||(o[n[t]]=[]),o[n[t]].push(r)})),o}console.warn(`You are using track all but no "CTX" or "STATE" or "FORM_STATE" usage found in your expression: ${JSON.stringify(e)}`)}return!1}function h(e,t,o){if(Array.isArray(e))for(const n of e)null!=o&&o.matchSource&&!o.matchSource(n.source)||g(n,t)}function g(e,t,o){try{(0,a.precookFunction)(e.source,{typescript:e.typescript,withParent:!0,hooks:{beforeVisitGlobal:t},cacheKey:e})}catch(t){o||console.error(`Parse storyboard function "${e.name}" failed:`,t)}}function S(e,t,o){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;const s={usedProperties:new Set,hasNonStaticUsage:!1};if(e.source.includes(t)&&g(e,n(s,t,r),o),s.hasNonStaticUsage&&!o)throw new Error(`Non-static usage of ${t} is prohibited, check your function: "${e.name}"`);return s.usedProperties.delete(e.name),s.usedProperties}const b="PERMISSIONS",v="check";function m(e){var t;const o=new Set,n=k(o),{customTemplates:r,functions:s}=null!==(t=e.meta)&&void 0!==t?t:{};return u([e.routes,r],n,b),h(s,n,{matchSource:e=>e.includes(b)}),Array.from(o)}function P(e){const t=new Set;return u(e,k(t),b),Array.from(t)}function k(e){return function(t,o){if(t.name===b){const t=o[o.length-1],n=o[o.length-2];if("CallExpression"===(null==n?void 0:n.node.type)&&"callee"===(null==n?void 0:n.key)&&"MemberExpression"===(null==t?void 0:t.node.type)&&"object"===t.key&&(t.node.computed?"Literal"===t.node.property.type&&t.node.property.value===v:"Identifier"===t.node.property.type&&t.node.property.name===v))for(const t of n.node.arguments)"Literal"===t.type&&"string"==typeof t.value&&e.add(t.value)}}}}}]);
|
|
2
|
+
//# sourceMappingURL=6314.68a0856f.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/6314.7cf962aa.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n let rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n const segments = [];\n for (let i = 1; i <= level; i++) {\n const memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n const memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? `${node.name}.${memberNode.property.name}` : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? `${node.name}.${memberNode.property.value}` : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n const memberParent = parent[parent.length - 1];\n const callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n const args = callParent.node.arguments;\n if (args.length > 0) {\n const firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport const collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport const collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n const memo = new WeakSet();\n const {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (const item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n const {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(`Non-static usage of ${objectName} is prohibited, check your expression: \"${nonStaticUsage}\"`);\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n const beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nconst TRACK_NAMES = [\"CTX\", \"STATE\", \"FORM_STATE\"];\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n const {\n expression\n } = preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n let trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`You are using \"${trackText}\" but no \\`${variableName}\\` usage found in your expression: ${JSON.stringify(raw)}`);\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n // Do not pre-evaluate a string if it doesn't include track names.\n if (TRACK_NAMES.some(name => raw.includes(name))) {\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, TRACK_NAMES, 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n const usedProperties = [...usage.usedProperties];\n const result = {\n context: false,\n state: false,\n formState: false\n };\n const keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperties.forEach(item => {\n const [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`You are using track all but no \"CTX\" or \"STATE\" or \"FORM_STATE\" usage found in your expression: ${JSON.stringify(raw)}`);\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal, options) {\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n if (!(options !== null && options !== void 0 && options.matchSource) || options.matchSource(fn.source)) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n },\n cacheKey: fn\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(`Parse storyboard function \"${fn.name}\" failed:`, error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n let level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n if (fn.source.includes(objectName)) {\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n }\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(`Non-static usage of ${objectName} is prohibited, check your function: \"${fn.name}\"`);\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nconst PERMISSIONS = \"PERMISSIONS\";\nconst check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n const collection = new Set();\n const beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n const {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions, {\n matchSource(source) {\n return source.includes(PERMISSIONS);\n }\n });\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n const collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n const memberParent = parent[parent.length - 1];\n const callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (const arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","cache","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","TRACK_NAMES","track","raw","trackText","variableName","expression","trackCtxExp","expressions","size","warn","JSON","stringify","trackAll","some","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","matchSource","source","traverseStoryboardFunction","silentErrors","precookFunction","typescript","cacheKey","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/6314.68a0856f.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n let rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n const segments = [];\n for (let i = 1; i <= level; i++) {\n const memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n const memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? `${node.name}.${memberNode.property.name}` : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? `${node.name}.${memberNode.property.value}` : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n const memberParent = parent[parent.length - 1];\n const callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n const args = callParent.node.arguments;\n if (args.length > 0) {\n const firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport const collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport const collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n const memo = new WeakSet();\n const {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (const item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n const {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(`Non-static usage of ${objectName} is prohibited, check your expression: \"${nonStaticUsage}\"`);\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n let level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n const beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nconst TRACK_NAMES = [\"CTX\", \"STATE\", \"FORM_STATE\"];\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n const {\n expression\n } = preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n let trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`You are using \"${trackText}\" but no \\`${variableName}\\` usage found in your expression: ${JSON.stringify(raw)}`);\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n // Do not pre-evaluate a string if it doesn't include track names.\n if (TRACK_NAMES.some(name => raw.includes(name))) {\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n cache: true,\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, TRACK_NAMES, 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n const usedProperties = [...usage.usedProperties];\n const result = {\n context: false,\n state: false,\n formState: false\n };\n const keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperties.forEach(item => {\n const [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`You are using track all but no \"CTX\" or \"STATE\" or \"FORM_STATE\" usage found in your expression: ${JSON.stringify(raw)}`);\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal, options) {\n if (Array.isArray(functions)) {\n for (const fn of functions) {\n if (!(options !== null && options !== void 0 && options.matchSource) || options.matchSource(fn.source)) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n },\n cacheKey: fn\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(`Parse storyboard function \"${fn.name}\" failed:`, error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n let level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n const usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n if (fn.source.includes(objectName)) {\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n }\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(`Non-static usage of ${objectName} is prohibited, check your function: \"${fn.name}\"`);\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nconst PERMISSIONS = \"PERMISSIONS\";\nconst check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n const collection = new Set();\n const beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n const {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions, {\n matchSource(source) {\n return source.includes(PERMISSIONS);\n }\n });\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n const collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n const memberParent = parent[parent.length - 1];\n const callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (const arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","cache","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","TRACK_NAMES","track","raw","trackText","variableName","expression","trackCtxExp","expressions","size","warn","JSON","stringify","trackAll","some","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","matchSource","source","traverseStoryboardFunction","silentErrors","precookFunction","typescript","cacheKey","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
|