fmode-ng 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +32 -0
  3. package/esm2020/fmode-ng.mjs +9 -0
  4. package/esm2020/lib/aigc/comp-markdown-preview/markdown-parse.mjs +9 -0
  5. package/esm2020/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +9 -0
  6. package/esm2020/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +9 -0
  7. package/esm2020/lib/aigc/index.mjs +9 -0
  8. package/esm2020/lib/aigc/service-fmai/fmai.service.mjs +9 -0
  9. package/esm2020/lib/aigc/service-fmai/service-chat/chat-class.mjs +9 -0
  10. package/esm2020/lib/aigc/service-fmai/service-chat/chat.service.mjs +9 -0
  11. package/esm2020/lib/aigc/service-fmai/service-chat/index.mjs +9 -0
  12. package/esm2020/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -0
  13. package/esm2020/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +9 -0
  14. package/esm2020/lib/aigc/service-fmai/service-imagine/index.mjs +9 -0
  15. package/esm2020/lib/aigc/voice/class-asr.mjs +9 -0
  16. package/esm2020/lib/aigc/voice/fmode-voice.service.mjs +9 -0
  17. package/esm2020/lib/aigc/voice/index.mjs +9 -0
  18. package/esm2020/lib/aigc/voice/lib/pcm2wav.mjs +9 -0
  19. package/esm2020/lib/aigc/voice/lib/resample.mjs +9 -0
  20. package/esm2020/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +9 -0
  21. package/esm2020/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +9 -0
  22. package/esm2020/lib/map/index.mjs +9 -0
  23. package/esm2020/lib/map/map.module.mjs +9 -0
  24. package/esm2020/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +9 -0
  25. package/esm2020/lib/map/page-map.start/page-map.start.component.mjs +9 -0
  26. package/esm2020/lib/map/page-plan-route/page-plan-route.component.mjs +9 -0
  27. package/esm2020/lib/nova-cloud/index.mjs +9 -0
  28. package/esm2020/lib/nova-cloud/nova-cloud.service.mjs +9 -0
  29. package/esm2020/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +9 -0
  30. package/esm2020/lib/storage/index.mjs +9 -0
  31. package/esm2020/lib/storage/service-hwobs/hwobs.service.mjs +9 -0
  32. package/esm2020/lib/storage/storage.module.mjs +9 -0
  33. package/esm2020/public-api.mjs +9 -0
  34. package/fesm2015/fmode-ng.mjs +9 -0
  35. package/fesm2015/fmode-ng.mjs.map +1 -0
  36. package/fesm2020/fmode-ng.mjs +9 -0
  37. package/fesm2020/fmode-ng.mjs.map +1 -0
  38. package/index.d.ts +9 -0
  39. package/lib/aigc/comp-markdown-preview/markdown-parse.d.ts +5 -0
  40. package/lib/aigc/comp-markdown-preview/markdown-preview.component.d.ts +16 -0
  41. package/lib/aigc/comp-markdown-preview/markdown-preview.module.d.ts +8 -0
  42. package/lib/aigc/index.d.ts +9 -0
  43. package/lib/aigc/service-fmai/fmai.service.d.ts +10 -0
  44. package/lib/aigc/service-fmai/service-chat/chat-class.d.ts +34 -0
  45. package/lib/aigc/service-fmai/service-chat/chat.service.d.ts +17 -0
  46. package/lib/aigc/service-fmai/service-chat/index.d.ts +9 -0
  47. package/lib/aigc/service-fmai/service-chat/mask-list.d.ts +56 -0
  48. package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +36 -0
  49. package/lib/aigc/service-fmai/service-imagine/index.d.ts +9 -0
  50. package/lib/aigc/voice/class-asr.d.ts +24 -0
  51. package/lib/aigc/voice/fmode-voice.service.d.ts +54 -0
  52. package/lib/aigc/voice/index.d.ts +9 -0
  53. package/lib/aigc/voice/lib/pcm2wav.d.ts +1 -0
  54. package/lib/aigc/voice/lib/resample.d.ts +3 -0
  55. package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +44 -0
  56. package/lib/map/comp-poi-picker/comp-poi-picker.module.d.ts +10 -0
  57. package/lib/map/index.d.ts +9 -0
  58. package/lib/map/map.module.d.ts +13 -0
  59. package/lib/map/page-loca-scatter/page-loca-scatter.component.d.ts +12 -0
  60. package/lib/map/page-map.start/page-map.start.component.d.ts +28 -0
  61. package/lib/map/page-plan-route/page-plan-route.component.d.ts +21 -0
  62. package/lib/nova-cloud/index.d.ts +9 -0
  63. package/lib/nova-cloud/nova-cloud.service.d.ts +17 -0
  64. package/lib/storage/comp-hwobs-manager/hwobs-manager.component.d.ts +15 -0
  65. package/lib/storage/index.d.ts +9 -0
  66. package/lib/storage/service-hwobs/hwobs.service.d.ts +40 -0
  67. package/lib/storage/storage.module.d.ts +9 -0
  68. package/package.json +51 -0
  69. package/public-api.d.ts +9 -0
  70. package/src/lib/aigc/voice/demo/README.md +0 -0
  71. package/src/lib/map/README.md +0 -0
  72. package/src/lib/map/page-loca-scatter/README.md +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fmode-ng.mjs","sources":["../../../projects/fmode-ng/src/lib/aigc/service-fmai/service-chat/mask-list.ts","../../../projects/fmode-ng/src/lib/aigc/service-fmai/service-chat/chat-class.ts","../../../projects/fmode-ng/src/lib/aigc/service-fmai/service-chat/chat.service.ts","../../../projects/fmode-ng/src/lib/nova-cloud/nova-cloud.service.ts","../../../projects/fmode-ng/src/lib/aigc/service-fmai/service-imagine/imagine.service.ts","../../../projects/fmode-ng/src/lib/aigc/service-fmai/fmai.service.ts","../../../projects/fmode-ng/src/lib/aigc/comp-markdown-preview/markdown-parse.ts","../../../projects/fmode-ng/src/lib/aigc/comp-markdown-preview/markdown-preview.component.ts","../../../projects/fmode-ng/src/lib/aigc/comp-markdown-preview/markdown-preview.component.html","../../../projects/fmode-ng/src/lib/aigc/comp-markdown-preview/markdown-preview.module.ts","../../../projects/fmode-ng/src/lib/aigc/voice/lib/pcm2wav.ts","../../../projects/fmode-ng/src/lib/aigc/voice/lib/resample.ts","../../../projects/fmode-ng/src/lib/aigc/voice/class-asr.ts","../../../projects/fmode-ng/src/lib/aigc/voice/fmode-voice.service.ts","../../../projects/fmode-ng/src/lib/map/page-map.start/page-map.start.component.ts","../../../projects/fmode-ng/src/lib/map/page-map.start/page-map.start.component.html","../../../projects/fmode-ng/src/lib/map/comp-poi-picker/comp-poi-picker.component.ts","../../../projects/fmode-ng/src/lib/map/comp-poi-picker/comp-poi-picker.component.html","../../../projects/fmode-ng/src/lib/map/comp-poi-picker/comp-poi-picker.module.ts","../../../projects/fmode-ng/src/lib/map/page-plan-route/page-plan-route.component.ts","../../../projects/fmode-ng/src/lib/map/page-plan-route/page-plan-route.component.html","../../../projects/fmode-ng/src/lib/map/page-loca-scatter/page-loca-scatter.component.ts","../../../projects/fmode-ng/src/lib/map/page-loca-scatter/page-loca-scatter.component.html","../../../projects/fmode-ng/src/lib/map/map.module.ts","../../../projects/fmode-ng/src/lib/storage/service-hwobs/hwobs.service.ts","../../../projects/fmode-ng/src/lib/storage/comp-hwobs-manager/hwobs-manager.component.ts","../../../projects/fmode-ng/src/lib/storage/comp-hwobs-manager/hwobs-manager.component.html","../../../projects/fmode-ng/src/lib/storage/storage.module.ts","../../../projects/fmode-ng/src/public-api.ts","../../../projects/fmode-ng/src/fmode-ng.ts"],"sourcesContent":["let colorMap = [\n \"primary\",\n \"secondary\",\n \"tertiary\",\n \"success\",\n \"warning\",\n \"danger\",\n \"light\",\n \"medium\",\n \"dark\"\n]\n\nexport const MASK_LIST = [\n // 数字员工\n {\n name:\"执行李\",\n type:\"employee\",\n title:\"首席执行官\",\n desc:\"一位富有远见和领导才能的创业新秀。她具备战略思维和决策能力,能够为公司设定长期目标并领导团队实现这些目标。\",\n color:colorMap[0],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_48766.jpg?e=1695974629&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:oPkQSsyQLLD08R_J4SMeO1f1RdM=\"\n },\n {\n name:\"技术刘\",\n type:\"employee\",\n title:\"首席技术官\",\n desc:\"一位技术专家,拥有广泛的技术知识和经验。他善于解决复杂的技术问题,并能够领导开发团队实施创新的技术解决方案。\",\n color:colorMap[1],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/9/29/9_619877.jpg?e=1695952672&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:LDuSg8_n5g4Rj_8F5PKrGzV4T54=\",\"https://imgsource.huashi6.com/images/ai/2023/9/27/20_17767.jpg?e=1695819037&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:a9uOeeJMN2oopK-3WQZzldPXfH0=\"]\n },\n {\n name:\"点子王\",\n type:\"employee\",\n title:\"首席运营官\",\n desc:\"一位富有创意和市场洞察力的市场营销专家。她擅长制定营销策略,了解目标受众,并能够利用各种渠道和工具推广公司的产品或服务。\",\n color:colorMap[2],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/9_186291.jpg?e=1695952125&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:EhEUtwnC9hpu-SXXsBrp2Q-rcJk=\"\n },\n {title:\"设计总监\",\n name:\"李欣\",\n type:\"employee\",\n desc:\"一位富有创造力和用户导向思维的设计师。她能够理解用户需求,并通过设计直观、易用且吸引人的用户界面来提供出色的用户体验。\",\n color:colorMap[3],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/9_18099.jpg?e=1695952201&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:G_a60v52iTTqvJgeTSa_8zJUY2w=\"\n }, \n\n {title:\"运营经理\",\n name:\"刘洁\",\n type:\"employee\",\n desc:\"一位组织能力强、注重细节并擅长解决问题的运营专家。她能够协调各个部门的工作,并确保公司的运营流程高效运行。\",\n color:colorMap[4],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/9_842519.jpg?e=1695952125&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:FM_kKZDzkcLQ1EX4266dXU46cRc=\"\n\n },\n\n {title:\"销售经理\",\n name:\"张伟\",\n type:\"employee\",\n desc:\"一位富有销售天赋和人际交往能力的销售专家。他善于与客户建立良好的关系,并能够推动销售团队实现业绩目标。\",\n color:colorMap[5],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_739110.jpg?e=1695974920&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:vg_sn-qn67MJS-7j2o7mWzOCUSk=\"\n },\n\n\n {title:\"数据分析师\",\n name:\"杨晨\",\n type:\"employee\",\n desc:\"一位善于解读数据和提供商业洞察的数据分析专家。她能够收集、分析和解释数据,为公司的决策制定提供有力的支持。\",\n color:colorMap[6],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_204321.jpg?e=1695974779&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:dC2sGmJekSPBTCycPF76BkQPBoo=\"\n },\n\n\n {title:\"财务经理\",\n name:\"赵晓\",\n type:\"employee\",\n desc:\"一位精通财务管理和分析的专业人士。她能够制定财务战略、管理公司的财务流程,并提供准确的财务报告和预测。\",\n color:colorMap[7],\n cover:\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_947878.jpg?e=1695974779&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:TFGn0_l2PqhUTe9G4A3it769hcU=\"\n },\n {title:\"品牌专员\",\n name:\"王雅\",\n type:\"employee\",\n desc:\"一位富有创意和品牌意识的专业人士。她能够塑造和管理公司的品牌形象,制定品牌营销策略,并与内部和外部利益相关者建立良好的合作关系。\",\n color:colorMap[8],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_129581.jpg?e=1695975151&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:YQrpiv1hBKRPIdaEbDDDkLFuPG8=\",\"https://imgsource.huashi6.com/images/ai/2023/9/29/15_912136.jpg?e=1695975151&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:8SVMU1rdKD8eaJ1gH_qGQzcrMhM=\"]\n },\n // 数字教师\n {\n title:\"全科\",\n name:\"孔博\",\n type:\"teacher\",\n desc:\"擅长全科教学的金牌教师,知识面广泛,博古通今,因材施教,耐心稳重。\",\n color:colorMap[0],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/12_40958.jpg?e=1697604189&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:U7r1Td30lXdf9mE1TMVAnDhBP6c=\"]\n },\n {\n title:\"语文\",\n name:\"王明\",\n type:\"teacher\",\n desc:\"激发学生对文学的热爱,引导他们成为优秀的作家和沟通者。\",\n color:colorMap[1],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/11_698893.jpg?e=1697602689&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:hK_AuY7BA1pp33QVeUue5QjIg4o=\"]\n },\n {\n title:\"数学\",\n name:\"万红\",\n type:\"teacher\",\n desc:\"以清晰的逻辑和耐心的指导,帮助学生掌握数学的基础知识和解题技巧。\",\n color:colorMap[2],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/11_256253.jpg?e=1697603314&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:K2iqp_ZzHYzXNu_0VJlywyANHp8=\"]\n },\n {\n title:\"英语\",\n name:\"张瑞\",\n type:\"teacher\",\n desc:\"激发学生对英语学习的兴趣,培养他们的听、说、读、写能力,让他们自信地运用英语。\",\n color:colorMap[3],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/12_266171.jpg?e=1697603707&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:uhpxBbT-jlSt_KjAnj0SFsFAjWU=\"]\n },\n {\n title:\"物理\",\n name:\"金晓\",\n type:\"teacher\",\n desc:\"通过实验和案例,帮助学生理解物理原理,培养他们的科学思维和实验技能。\",\n color:colorMap[4],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/11_694925.jpg?e=1697603071&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:FznZxhkYUrZ-BzX05dvNt8acTUw=\"]\n },\n {\n title:\"化学\",\n name:\"陈华\",\n type:\"teacher\",\n desc:\"激发学生对化学的好奇心,教授他们化学知识和实验技巧,培养他们的实验和分析能力。\",\n color:colorMap[5],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/11_942234.jpg?e=1697603169&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:__2T8cxLl4J0AwMR9MJdDiooDF0=\"]\n },\n {\n title:\"生物\",\n name:\"杨婷\",\n type:\"teacher\",\n desc:\"引导学生探索生命的奥秘,培养他们的科学观察和实验能力,让他们热爱生物科学。\",\n color:colorMap[6],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/12_330738.jpg?e=1697603491&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:2K5-DHPnUQ-R9GGxtWKiEG68QlE=\"]\n },\n {\n title:\"历史\",\n name:\"赵亮\",\n type:\"teacher\",\n desc:\"帮助学生了解历史事件和文化背景,培养他们的历史意识和批判思维。\",\n color:colorMap[7],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/11_256302.jpg?e=1697602689&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:YP7ffC1YKO-Pb0C3ks4caT0QqZk=\"]\n },\n {\n title:\"地理\",\n name:\"林丽\",\n type:\"teacher\",\n desc:\"引导学生探索地球的奥秘,培养他们的地理观察和分析能力,让他们热爱地理科学。\",\n color:colorMap[8],\n cover:[\"https://imgsource.huashi6.com/images/ai/2023/10/18/12_555804.jpg?e=1697604054&token=qFZErZx7WS1v5B4rgQE2KLMHlYHVNaCuXeaA9OLD:xLN4QW0x9jx9lEB4EFHWvI_gEsI=\"]\n }\n]\n\n/**\n 当涉及到互联网创业公司的九大岗位时,以下是一些常见的角色,以及为每个角色提供的虚拟员工的中文名称和特点描述:\n\n1. 创始人/首席执行官(CEO):\n - 员工姓名:张明(Zhang Ming)\n - 特点描述:张明是一位富有远见和领导才能的创业家。他具备战略思维和决策能力,能够为公司设定长期目标并领导团队实现这些目标。\n\n2. 技术总监(CTO):\n - 员工姓名:王磊(Wang Lei)\n - 特点描述:王磊是一位技术专家,拥有广泛的技术知识和经验。他善于解决复杂的技术问题,并能够领导开发团队实施创新的技术解决方案。\n\n3. 市场营销经理:\n - 员工姓名:李婷(Li Ting)\n - 特点描述:李婷是一位富有创意和市场洞察力的市场营销专家。她擅长制定营销策略,了解目标受众,并能够利用各种渠道和工具推广公司的产品或服务。\n\n4. 用户体验设计师(UX Designer):\n - 员工姓名:陈宇(Chen Yu)\n - 特点描述:陈宇是一位富有创造力和用户导向思维的设计师。他能够理解用户需求,并通过设计直观、易用且吸引人的用户界面来提供出色的用户体验。\n\n5. 运营经理:\n - 员工姓名:刘洁(Liu Jie)\n - 特点描述:刘洁是一位组织能力强、注重细节并擅长解决问题的运营专家。她能够协调各个部门的工作,并确保公司的运营流程高效运行。\n\n6. 销售经理:\n - 员工姓名:张伟(Zhang Wei)\n - 特点描述:张伟是一位富有销售天赋和人际交往能力的销售专家。他善于与客户建立良好的关系,并能够推动销售团队实现业绩目标。\n\n7. 数据分析师:\n - 员工姓名:杨晨(Yang Chen)\n - 特点描述:杨晨是一位善于解读数据和提供商业洞察的数据分析专家。他能够收集、分析和解释数据,为公司的决策制定提供有力的支持。\n\n8. 财务经理:\n - 员工姓名:赵晓(Zhao Xiao)\n - 特点描述:赵晓是一位精通财务管理和分析的专业人士。她能够制定财务战略、管理公司的财务流程,并提供准确的财务报告和预测。\n\n9. 品牌管理专员:\n - 员工姓名:王雅(Wang Ya)\n - 特点描述:王雅是一位富有创意和品牌意识的专业人士。她能够塑造和管理公司的品牌形象,制定品牌营销策略,并与内部和外部利益相关者建立良好的合作关系。\n\n这些角色和员工姓名的选择是为了展示不同岗位的特点和职责。当然,在实际创业公司中,具体的岗位和员工姓名可能会因公司的规模、行业和需求而有所不同。\n */","import { bufferTime, concatMap, Observable, Observer,delay, finalize } from \"rxjs\"\nimport * as Parse from \"parse\";\n// const API_BASE:string = \"http://127.0.0.1:7337/api/apig/aigc/gpt\"\n// const API_BASE:string = \"https://server.fmode.cn/api/apig/aigc/gpt\"\nconst API_BASE:string = \"https://test.fmode.cn/api/apig/aigc/gpt\"\n\nexport interface FmodeChatMessage{\n role:string // user 用户 assistant AI system 系统\n content:string // 消息内容\n createdAt?:Date // 创建时间\n complete?:Boolean // Stream流式加载完成\n /**AI回复消息字段 */\n cid?:string // AI补全内容,包含cid,指向数据库 chatcmpl-uDfGFOwIHyi4vM9LkB6kVxcg4i1DZ\n}\n\n\nexport class FmodeChat{\n\n chatId:string\n chat:Parse.Object\n mask:any\n messageList:FmodeChatMessage[] = [{role:\"system\",content:\"系统提示:AI仅供参考\"}]\n constructor(chatId:string,mask?:any,chat?:Parse.Object){\n this.mask = mask\n this.chatId = chatId\n this.chat = chat\n }\n sendMessage(message:string=\"FmodeAiTest测试问题\"){\n // 用户输入消息,添加到历史消息清单中\n this.messageList.push({\n role:\"user\",\n content:message,\n createdAt:new Date()\n })\n // 创建并发起一条新的消息补全\n let completion = new FmodeChatCompletion(this.fixMessageList(this.messageList))\n // 持续更新事件推送的消息体内容至消息列表\n completion.sendCompletion().pipe(finalize(()=>{ // 管道finalize替代了旧版的(complete)=>{}\n this.messageList[completion.indexOfList].complete = true\n })).subscribe(message=>{\n this.messageList[completion.indexOfList] = message;\n // console.log(message)\n })\n }\n fixMessageList(messages:FmodeChatMessage[]){\n return messages.map(msg=>{return {role:msg.role,content:msg.content}})\n }\n\n nowStr(){\n let now = new Date();\n return `${now.getFullYear()}/${now.getMonth()+1}/${now.getDate()} ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`\n }\n \n}\n\nexport class FmodeChatCompletion{\n indexOfList:number\n messages:FmodeChatMessage[] // 补全前提示词列表\n content:string = \"\" // 本次接收消息结果\n contentBuffer:string[] = []\n contentPusher:NodeJS.Timeout\n isCompleted:boolean = false;\n constructor(messages:FmodeChatMessage[]){\n this.indexOfList = Number(messages.length)\n this.messages = messages\n }\n sendCompletion():Observable<FmodeChatMessage>{\n let that = this;\n let opts = {\n \"messages\":this.messages,\n \"stream\":true,\n \"model\":\"gpt-3.5-turbo\",\n \"temperature\":0.5,\n \"presence_penalty\":0,\n \"frequency_penalty\":0\n }\n\n let $messageReceiver = new Observable((observer: Observer<FmodeChatMessage>) => {\n let subscription = RequestFmodeChatApi(\"/v1/chat/completions\", opts)\n .subscribe(data => {\n // Handle each chunk of data\n /** Chunk文本数据格式如下:\n 正常消息:\n 'data: {\"id\":\"chatcmpl-y2PLKqPDnwAFJIj2L5aqdH5TWK9Yv\",\"object\":\"chat.completion.chunk\",\"created\":1696770162,\"model\":\"gpt-3.5-turbo-0613\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"本提示词仅用于测试。\"},\"finish_reason\":null}]}',\n 终止原因:\n 'data: {\"id\":\"chatcmpl-y2PLKqPDnwAFJIj2L5aqdH5TWK9Yv\",\"object\":\"chat.completion.chunk\",\"created\":1696770162,\"model\":\"gpt-3.5-turbo-0613\",\"choices\":[{\"index\":0,\"delta\":{},\"finish_reason\":\"stop\"}]}',\n 结束消息:\n 'data: [DONE]'\n */\n let chunk = String(data);\n // console.log(chunk)\n if(chunk.indexOf(\"data:\\ {\")>-1){\n let chunkjson = chunkToJson(chunk)\n // console.log(chunk)\n // console.log(chunkjson?.choices?.[0]?.delta)\n let words = chunkjson?.choices?.[0]?.delta?.content || \"\"\n this.contentBuffer.push(words);\n\n // 方式一:直接推送\n // this.content += words // \n // 方式二:按毫秒逐个推送\n if(!this.contentPusher){\n this.contentPusher = setInterval(()=>{\n if(this.isCompleted && this.contentBuffer?.length==0){ // 推送完毕,清除计时器\n subscription.unsubscribe(); // Unsubscribe when done\n clearInterval(this.contentPusher)\n observer.complete();\n\n }\n\n if(this.contentBuffer?.length>0){\n this.content += this.contentBuffer.shift()\n observer.next({\n role:\"assistant\",\n content:this.content,\n createdAt:new Date()\n })\n }\n },100)\n }\n // console.log(this.content)\n \n }\n // Check if the completion message is received\n if (chunk === 'data: [DONE]') { \n this.isCompleted = true; // 标记完成 => 等待interval推送\n } \n });\n })\n return $messageReceiver.pipe(\n bufferTime(100), // 每100ms收集消息\n concatMap(messages => messages), // 使用 concatMap 逐个发送消息\n delay(200) // 延迟200ms输出每条消息\n )\n }\n\n}\n\nfunction chunkToJson(chunk){\n let chunkjson:any\n try{\n chunkjson = JSON.parse(chunk.replaceAll(\"data:\\ \",\"\"));\n }catch(errdj){\n console.error(errdj)\n }\n return chunkjson || {}\n}\nfunction RequestFmodeChatApi(apipath, body, method = \"POST\") {\n return new Observable((observer: Observer<any>) => {\n let url = API_BASE + apipath;\n let API_TOKEN = Parse.User.current()?.getSessionToken() || localStorage.getItem(\"FMODE_AI_TOKEN\");\n // 通过body传递token参数,避免no-cors模式下Authoriztion头部无效\n let AUTH_TOKEN = `Bearer ${API_TOKEN}`\n body.token = AUTH_TOKEN;\n if(body) body = JSON.stringify(body)\n fetch(url, {\n \"headers\": {\n // \"Authorization\": AUTH_TOKEN,\n \"Content-Type\": \"text/plain\",\n \"Cache-Control\": \"no-cache\"\n },\n \"body\": body || null,\n \"method\": method,\n \"credentials\":\"omit\",\n \"mode\": \"cors\"\n }).then(response => {\n let isStream = true || response.headers?.get(\"Content-Type\")?.indexOf(\"text/event-stream\") > -1\n let remainingData = ``;\n\n function processData(data) {\n let combinedData = remainingData + data;\n let messages = combinedData.split('\\n');\n \n if(messages?.length>1){ // 至少分割2条消息时进行处理\n // 处理每个完整的消息\n for (let i = 0; i < messages.length - 1; i++) {\n let message = messages[i];\n observer.next(message)\n }\n\n // 保存最后一个不完整的消息\n remainingData = messages[messages.length - 1];\n }\n }\n\n if (isStream) {\n let greader = response.body?.getReader();\n const decoder = new TextDecoder();\n\n let rstream = new ReadableStream({\n start(controller) {\n function read() {\n greader.read().then(({ done, value }) => {\n if (done) {\n controller.close();\n observer.complete(); // Complete the observer when stream processing is done\n return;\n }\n controller.enqueue(value);\n read();\n });\n }\n\n read();\n }\n });\n\n let reader = rstream.getReader();\n\n function processStream({ done, value }) {\n if (done) {\n return;\n }\n\n let text = decoder.decode(value)\n processData(text) // Emit each chunk of data\n reader.read().then(processStream);\n }\n\n reader.read().then(processStream);\n }\n })\n .catch(error => observer.error(error)); // Handle any errors\n\n // Return the subscription logic\n return () => {\n // Clean up logic, if needed\n };\n });\n }\n \n function JsonToFormData(json) {\n const formData = new FormData();\n \n function appendFormData(data, path = '') {\n if (Array.isArray(data)) {\n data.forEach((value, index) => {\n appendFormData(value, `${path}[${index}]`);\n });\n } else if (typeof data === 'object' && data !== null) {\n Object.keys(data).forEach(key => {\n const newPath = path ? `${path}.${key}` : key;\n appendFormData(data[key], newPath);\n });\n } else {\n formData.append(path, data);\n }\n }\n \n appendFormData(json);\n \n return formData;\n }","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MASK_LIST } from './mask-list';\nimport { FmodeChat } from './chat-class';\n@Injectable({\n providedIn: 'root'\n})\nexport class ChatService {\n\n maskList:any[] = []\n // 已加载聊天信息临时存储\n chatMap:{\n [key:string]:FmodeChat\n } = {}\n constructor(\n private router:Router\n ) { \n this.maskList = MASK_LIST\n }\n\n /**\n * 重建新对话窗口\n */\n createChatPanel(mask?:any,chat?:any){\n let chatId = chat?.id||\"new\"\n chat = new FmodeChat(chatId,mask,chat);\n this.chatMap[chatId] = chat; // new 窗口如果没有消息转换成带ID的,每次就会清空\n this.router.navigate([\"/chat/pro/chat/\"+chatId])\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient,HttpHeaders } from \"@angular/common/http\";\nimport * as Parse from \"parse\";\n@Injectable({\n providedIn: 'root'\n})\nexport class NovaCloudService {\n\n serverURL = \"https://server.fmode.cn/api\"\n // serverURL = \"http://127.0.0.1:7337/api\"\n constructor(\n private http:HttpClient,\n ) { \n localStorage.setItem(\"NOVA_APIG_SERVER\",'aHR0cHMlM0ElMkYlMkZzZXJ2ZXIuZm1vZGUuY24lMkZhcGklMkZhcGlnJTJG')\n }\n\n novaql(sql:string,params:Array<any>){\n let url = this.serverURL + '/novaql/select'\n let options:any = {sql:sql}\n if(options&&params?.length>0){\n options.params = JSON.stringify(params)\n }\n return new Promise((resolve,reject)=>{\n this.http.post(url,options,{\n headers:new HttpHeaders({\n \"Content-Type\":\"application/json\"\n }),\n withCredentials: false\n }).subscribe(result=>{\n if(result&&(result as any).code == 200){\n let data:any = (result as any).data;\n resolve(data)\n }\n },(err)=>{\n reject(err)\n })\n })\n }\n apig(url:string,body:any,method:string=\"post\"){\n localStorage.setItem(\"NOVA_APIG_SERVER\",'aHR0cHMlM0ElMkYlMkZzZXJ2ZXIuZm1vZGUuY24lMkZhcGklMkZhcGlnJTJG')\n let apigURL = localStorage.getItem(\"NOVA_APIG_SERVER\")\n apigURL = decodeURIComponent(atob(apigURL));\n url = apigURL + url\n console.log(url)\n let user = Parse.User.current();\n return new Promise((resolve,reject)=>{\n try {\n this.http.request(method,url,{\n body:body || null,\n headers:new HttpHeaders({\n \"Content-Type\":\"application/json\",\n \"Authorization\":`Bearer ${user?.getSessionToken()}`\n }),\n withCredentials: false\n }).subscribe(result=>{\n if(result&&(result as any).code == 200 || result&&(result as any).code == 1 || result&&(result as any).code == 0){\n let data:any = (result as any)?.data;\n resolve(data)\n }else{\n resolve(null)\n }\n },(err)=>{\n alert(err.mess)\n reject(err)\n })\n } catch (error) {\n return alert('请求出错')\n }\n })\n }\n api(url:string,body:any):Promise<{code:number|string,data?:any,mess?:string}>{\n url = this.serverURL + url\n return new Promise((resolve,reject)=>{\n this.http.post(url,body,{\n headers:new HttpHeaders({\n \"Content-Type\":\"application/json\"\n }),\n withCredentials: false\n }).subscribe(result=>{\n if(result&&(result as any).code == 200 || result&&(result as any).code == 1){\n let data:any = (result as any).data;\n resolve(data)\n }else{\n resolve(null)\n }\n },(err)=>{\n reject(err)\n })\n })\n }\n searchParse(search?:string):any{\n search = search || location.search;\n let resultObj = {};\n if (search && search.length > 1) {\n search = search.substring(1);\n let items = search.split(\"&\");\n for (let index = 0; index < items.length; index++) {\n if (!items[index]) {\n continue;\n }\n let kv = items[index].split(\"=\");\n resultObj[kv[0]] = typeof kv[1] === \"undefined\" ? \"\" : kv[1];\n }\n }\n return resultObj;\n }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { NovaCloudService } from '../../../nova-cloud/nova-cloud.service';\nimport * as Parse from \"parse\";\n@Injectable({\n providedIn: 'root'\n})\nexport class ImagineService {\n\n /**\n * 图片生成接口主机地址\n */\n constructor(\n private http:HttpClient,\n private ncloud:NovaCloudService\n ) { }\n\n /**\n * Huashi6专用绘图函数\n * @param reqBody \n * @see\n * 接口reqBody参数,参考:https://www.showdoc.com.cn/2307900595645609/10319675987319598\n * 密码:123456\n * @returns \n */\n async draw(reqBody:any){\n let data:any = await this.ncloud.apig(\"aigc/sdapi/v1/draw\",reqBody)\n // 正常生成taskId后,获取数据添加到列表中\n let taskId = data?.paintingSign\n if(taskId){\n setTimeout(async () => {\n let query = new Parse.Query(\"ImagineWork\")\n query.equalTo(\"taskId\",taskId);\n let work = await query.first();\n console.log(work)\n if(work?.id) this.myWorkList.unshift(work)\n }, 1000);\n }\n return data\n }\n /**\n * 已完成的直接加载,未完成的再接口更新\n * @param taskId \n * @returns \n */\n async taskDetail(taskId:string){\n let data:any = await this.ncloud.apig(\"aigc/sdapi/v1/task/detail\",{taskId:taskId})\n console.log(data)\n this.taskDetailMap[taskId] = data\n return data\n }\n taskDetailMap:any = {}\n\n /**\n * 我的绘画作品共享方法\n */\n myWorkList:Array<Parse.Object> = []\n getMyWorkQuery(){\n let user = Parse.User.current()\n if(!user?.id) return\n let query = this.getWorkQuery()\n query.equalTo(\"user\",user.toPointer());\n return query\n }\n getWorkQuery(){\n let query = new Parse.Query(\"ImagineWork\");\n query.include(\"module\",\"user\");\n query.notEqualTo(\"isDeleted\",true)\n query.addDescending(\"createdAt\");\n return query;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ChatService } from './service-chat/chat.service';\nimport { ImagineService } from './service-imagine/imagine.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FmaiService {\n\n constructor(\n private imagine:ImagineService,\n private chat:ChatService\n ) { }\n\n \n\n}\n","import hljs from 'highlight.js';\nimport MarkdownIt from \"markdown-it\";\n\n\nconst md = new MarkdownIt({\n html: true, // 在源码中启用 HTML 标签\n xhtmlOut: true, // 使用 '/' 来闭合单标签 (比如 <br />)。\n // 这个选项只对完全的 CommonMark 模式兼容。\n breaks: false, // 转换段落里的 '\\n' 到 <br>。\n // langPrefix: 'language-', // 给围栏代码块的 CSS 语言前缀。对于额外的高亮代码非常有用。\n linkify: false, // 将类似 URL 的文本自动转换为链接。\n \n // 启用一些语言中立的替换 + 引号美化\n typographer: false,\n \n // 双 + 单引号替换对,当 typographer 启用时。\n // 或者智能引号等,可以是 String 或 Array。\n //\n // 比方说,你可以支持 '«»„“' 给俄罗斯人使用, '„“‚‘' 给德国人使用。\n // 还有 ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] 给法国人使用(包括 nbsp)。\n quotes: '“”‘’',\n \n // 高亮函数,会返回转义的HTML。\n // 或 '' 如果源字符串未更改,则应在外部进行转义。\n // 如果结果以 <pre ... 开头,内部包装器则会跳过。\n // highlight: function (/*str, lang*/) { return ''; }\n highlight: function (str, lang) {\n if (lang && hljs.getLanguage(lang)) {\n try {\n let hljsCode = hljs.highlight(str, { language: lang }).value\n return `<pre style=\"position:relative;padding:10px;\" class=\"hljs lang-${lang}\"><code>${hljsCode}</code><small class=\"hljs-lang\"><span class=\"sr-only\">Language:</span>${lang}</small></pre>`;\n } catch (__) {}\n }\n \n return ''; // use external default escaping\n }\n });\n \n \n /**\n * use插件\n */\n import abbr from 'markdown-it-abbr'\n import footnote from 'markdown-it-footnote'\n import deflist from 'markdown-it-deflist'\n import mark from 'markdown-it-mark'\n import ins from 'markdown-it-ins'\n import sub from 'markdown-it-sub'\n import sup from 'markdown-it-sup'\n import mathjax from 'markdown-it-mathjax'\n // import imsize from 'markdown-it-imsize' // fs path\n import ruby from 'markdown-it-ruby'\n \n md.use(abbr)\n md.use(footnote)\n md.use(deflist)\n md.use(mark)\n md.use(ins)\n md.use(sub)\n md.use(sup)\n md.use(mathjax({\n beforeMath: '<span class=\"mathjax raw\">',\n afterMath: '</span>',\n beforeInlineMath: '<span class=\"mathjax raw\">\\\\(',\n afterInlineMath: '\\\\)</span>',\n beforeDisplayMath: '<span class=\"mathjax raw\">\\\\[',\n afterDisplayMath: '\\\\]</span>'\n }))\n // md.use(imsize)\n md.use(ruby)\n \n /**\n * PlantUML 插件\n */\n const mditConfig = {\n plantumlServer:'https://www.plantuml.com/plantuml'\n }\n \n import plantumlEncoder from 'plantuml-encoder'\n /**\n * uml代码转图片地址方法\n * @param {*} umlCode \n * @returns \n * @example\n * console.log(makePlantumlURL(`@startuml\n start\n :创建本地仓库;\n :运行git init;\n :使用git add .;\n :使用git commit -m \"xxx\";\n :使用git remote add origin xxx;\n :使用git push -u origin \"master\";\n stop\n @enduml`))\n */\n\n\n\n function makePlantumlURL(umlCode){\n const format = 'svg'\n const code = plantumlEncoder.encode(umlCode)\n return `${mditConfig.plantumlServer}/${format}/${code}`\n }\n \n\n // https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml\n md.renderer.rules['plantuml'] = (tokens, idx, options, env, self) => {\n const token = tokens[idx]\n if (token.type !== 'plantuml') {\n return tokens[idx].content\n }\n const url = makePlantumlURL(token.content)\n return `\n <img src=\"${url}\" />\n <pre style=\"position:relative;padding:10px;\" class=\"hljs lang-plantuml\"><code>${token.content}</code><small class=\"hljs-lang\"><span class=\"sr-only\">Language:</span>plantuml</small></pre>\n `\n}\n// https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml\n// 默认不支持rules['plantuml'] 需要通过ruler push\nmd.core.ruler.push('plantuml', (state) => {\n const blockTokens = state.tokens\n for (const blockToken of blockTokens) {\n if (blockToken.type === 'fence' && blockToken.info === 'plantuml') {\n blockToken.type = 'plantuml'\n }\n }\n })\n\n // regex for extra tags\n const spaceregex = /\\s*/\n const notinhtmltagregex = /(?![^<]*>|[^<>]*<\\/)/\n let coloregex = /\\[color=([#|(|)|\\s|,|\\w]*?)\\]/\ncoloregex = new RegExp(coloregex.source + notinhtmltagregex.source, 'g')\nlet nameregex = /\\[name=(.*?)\\]/\nlet timeregex = /\\[time=([:|,|+|-|(|)|\\s|\\w]*?)\\]/\nconst nameandtimeregex = new RegExp(nameregex.source + spaceregex.source + timeregex.source + notinhtmltagregex.source, 'g')\nnameregex = new RegExp(nameregex.source + notinhtmltagregex.source, 'g')\ntimeregex = new RegExp(timeregex.source + notinhtmltagregex.source, 'g')\n\nfunction replaceExtraTags (html) {\n console.log(\"replaceExtraTags\",html)\n html = html.replace(coloregex, '<span class=\"color\" data-color=\"$1\"></span>')\n html = html.replace(nameandtimeregex, '<small><i class=\"fa fa-user\"></i> $1 <i class=\"fa fa-clock-o\"></i> $2</small>')\n html = html.replace(nameregex, '<small><i class=\"fa fa-user\"></i> $1</small>')\n html = html.replace(timeregex, '<small><i class=\"fa fa-clock-o\"></i> $1</small>')\n console.log(\"replaceExtraTags\",html)\n return html\n}\n\nimport $ from \"jquery\";\n\n// 生命周期:生成HTML后,动态修正生成内容:dynamic event or object binding here\nfunction finishView (html) {\n\n let mdDivEl = $.parseHTML(`<html><body><div id=\"topmd\">${html}</div></body></html>`)[0]\n let mdhtml$ = $(mdDivEl)\n\n /************************************************\n * 第一步:需操作DOM,进行页面修正\n */\n /**\n * BlockQuote 引用增强插件\n */\n // blockquote 修正引用标签\n let blockquote = mdhtml$.find('blockquote.raw').removeClass('raw')\n blockquote = mdhtml$.find('blockquote')\n\n let blockquoteP = $(blockquote).find('p')\n blockquoteP.each((key, value) => {\n let htmlStr = $(value).html()\n htmlStr = replaceExtraTags(htmlStr)\n value.innerHTML = htmlStr\n $(value).html(htmlStr)\n blockquoteP[key].innerHTML = htmlStr;\n $(blockquoteP[key]).html(htmlStr)\n })\n\n // 引用标签颜色渲染 color tag in blockquote will change its left border color\n let blockquoteColor = blockquote.find('.color')\n blockquoteColor.each((key, value) => {\n $(value).closest('blockquote').css('border-left-color', $(value).attr('data-color'))\n })\n\n \n let style = `\n <style>\n .markdown-section {\n color: black;\n text-align: left;\n }\n .markdown-section pre .hljs-lang{\n text-transform: uppercase;\n font-weight: 700;\n font-size: .75rem;\n line-height: 1rem;\n padding-top: .25rem;\n padding-bottom: .25rem;\n padding-left: .5rem;\n padding-right: .5rem;\n background-color: rgba(0,0,0,.3);\n border-bottom-left-radius: .375rem;\n top:0;\n right:0;\n position:absolute;\n}\n\n }\n .markdown-section pre .hljs {\n position:relative!important;\n background: #272822!important;\n padding:10px!important;\n color: #ddd;\n text-shadow: none!important;\n }\n\n .markdown-section blockquote {\n margin: 0;\n margin-bottom: 0px;\n margin-bottom: .85em;\n padding: 0 15px;\n color: #858585;\n border-left: 4px solid #e5e5e5;\n border-left-color: rgb(229, 229, 229);\n }\n .markdown-section img {\n max-width:100%;\n }\n </style>\n`\n let result = style + (mdhtml$.html() || html)\n\n /************************************************\n * 第二步:无需操作DOM,替换文本信息\n */\n /**\n * uploads 修正附件地址\n */\n result = result.replaceAll('src=\"/uploads/','src=\"https://md.fmode.cn/uploads/')\n return result\n}\n\nexport class MarkdownParse{\n constructor(){\n }\n\n parseToHTML(markdown){\n this.info(\"markdown\",markdown)\n let htmlResult = md.render(markdown);\n this.info(\"html\",htmlResult)\n htmlResult = finishView(htmlResult);\n this.info(\"html plus\",htmlResult)\n return htmlResult;\n }\n info(...args){\n // console.log(...args)\n }\n // Markdown Text to HTML\n // HTML DOM to Enhance HTML DOM\n}","import { AfterViewInit, Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport {MarkdownParse} from \"./markdown-parse\";\n@Component({\n selector: 'fm-markdown-preview',\n templateUrl: './markdown-preview.component.html',\n styleUrls: ['./markdown-preview.component.scss']\n})\nexport class MarkdownPreviewComponent implements AfterViewInit {\n @Input() content:string = ``\n safeHTML:SafeHtml\n @ViewChild('mdContent') mdContent: ElementRef;\n \n @Input() render:boolean = true // 是否开启MD渲染,默认开启\n constructor(\n private domSan:DomSanitizer,\n private renderer:Renderer2\n ){\n }\n\n ngAfterViewInit(){\n this.renderMdToHTML()\n }\n\n renderMdToHTML(){\n if(!this.render) return\n let mdparser = new MarkdownParse()\n let htmlResult = mdparser.parseToHTML(this.content)\n this.safeHTML = this.domSan.bypassSecurityTrustHtml(htmlResult)\n\n let mdDiv = this.renderer.createElement(\"div\");\n mdDiv.innerHTML = htmlResult;\n console.log(mdDiv.innerHTML)\n\n this.renderer.appendChild(this.mdContent.nativeElement,mdDiv)\n \n }\n}\n","<div class=\"message-body\">\n <div *ngIf=\"render\" #mdContent class=\"markdown-section\">\n </div>\n <div *ngIf=\"!render\">\n {{content}}\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MarkdownPreviewComponent } from './markdown-preview.component';\n\n\n@NgModule({\n declarations: [\n MarkdownPreviewComponent\n ],\n imports: [\n CommonModule,\n ],\n exports:[\n MarkdownPreviewComponent\n ]\n})\nexport class MarkdownPreviewModule { }\n","\nexport function pcmtoWav(pcmsrt, sampleRate, numChannels, bitsPerSample) {\n //参数->(base64编码的pcm流,采样频率,声道数,采样位数)\n let header = {\n // OFFS SIZE NOTES\n chunkId: [0x52, 0x49, 0x46, 0x46], // 0 4 \"RIFF\" = 0x52494646\n chunkSize: 0, // 4 4 36+SubChunk2Size = 4+(8+SubChunk1Size)+(8+SubChunk2Size)\n format: [0x57, 0x41, 0x56, 0x45], // 8 4 \"WAVE\" = 0x57415645\n subChunk1Id: [0x66, 0x6d, 0x74, 0x20], // 12 4 \"fmt \" = 0x666d7420\n subChunk1Size: 16, // 16 4 16 for PCM\n audioFormat: 1, // 20 2 PCM = 1\n numChannels: numChannels || 1, // 22 2 Mono = 1, Stereo = 2...\n sampleRate: sampleRate || 16000, // 24 4 8000, 44100...\n byteRate: 0, // 28 4 SampleRate*NumChannels*BitsPerSample/8\n blockAlign: 0, // 32 2 NumChannels*BitsPerSample/8\n bitsPerSample: bitsPerSample || 16, // 34 2 8 bits = 8, 16 bits = 16\n subChunk2Id: [0x64, 0x61, 0x74, 0x61], // 36 4 \"data\" = 0x64617461\n subChunk2Size: 0, // 40 4 data size = NumSamples*NumChannels*BitsPerSample/8\n }\n function u32ToArray(i) {\n return [i & 0xff, (i >> 8) & 0xff, (i >> 16) & 0xff, (i >> 24) & 0xff]\n }\n function u16ToArray(i) {\n return [i & 0xff, (i >> 8) & 0xff]\n }\n let pcm = new Uint8Array(pcmsrt)\n header.blockAlign = (header.numChannels * header.bitsPerSample) >> 3\n header.byteRate = header.blockAlign * header.sampleRate\n header.subChunk2Size = pcm.length * (header.bitsPerSample >> 3)\n header.chunkSize = 36 + header.subChunk2Size\n\n let wavHeader = header.chunkId.concat(\n u32ToArray(header.chunkSize),\n header.format,\n header.subChunk1Id,\n u32ToArray(header.subChunk1Size),\n u16ToArray(header.audioFormat),\n u16ToArray(header.numChannels),\n u32ToArray(header.sampleRate),\n u32ToArray(header.byteRate),\n u16ToArray(header.blockAlign),\n u16ToArray(header.bitsPerSample),\n header.subChunk2Id,\n u32ToArray(header.subChunk2Size)\n )\n let wavHeaderUnit8 = new Uint8Array(wavHeader)\n\n let mergedArray = new Uint8Array(wavHeaderUnit8.length + pcm.length)\n mergedArray.set(wavHeaderUnit8)\n mergedArray.set(pcm, wavHeaderUnit8.length)\n let blob = new Blob([mergedArray], { type: 'audio/wav' })\n let blobUrl = window.URL.createObjectURL(blob)\n return blobUrl\n}\n","export function resampleAudio(frameBuffer: number[], inputSampleRate: number, outputSampleRate: number): number[] {\n let inputLength = frameBuffer.length;\n let outputLength = Math.floor((inputLength / inputSampleRate) * outputSampleRate);\n let outputBuffer: number[] = [];\n \n for (let i = 0; i < outputLength; i++) {\n let index = Math.floor(i * (inputSampleRate / outputSampleRate));\n outputBuffer[i] = frameBuffer[index];\n }\n \n return outputBuffer;\n }\n\nexport function convertFrameBufferToBase64(frameBuffer: number[]): string {\n// 创建一个存储转换后数据的Uint8Array\nconst uint8Array = new Uint8Array(frameBuffer.length * 2); // 16位小端LE,每个样本占用2个字节\n\n// 将frameBuffer中的每个样本转换为16位小端字节序\nfor (let i = 0; i < frameBuffer.length; i++) {\n const sample = frameBuffer[i];\n uint8Array[i * 2] = sample & 0xff; // 低字节\n uint8Array[i * 2 + 1] = (sample >> 8) & 0xff; // 高字节\n}\n\n// 使用btoa函数将Uint8Array转换为base64字符串\nconst base64String = btoa(String.fromCharCode.apply(null, uint8Array));\n\nreturn base64String;\n}\n\nexport function resampleBuffer(buffer: Int16Array, fromRate: number, toRate: number): Int16Array {\n const ratio = fromRate / toRate;\n const length = Math.round(buffer.length / ratio);\n const result = new Int16Array(length);\n\n for (let i = 0; i < length; i++) {\n const j = Math.floor(i * ratio);\n result[i] = buffer[j];\n }\n\n return result;\n}","/**\n * 英文语音唤醒\n */\ndeclare var webkitSpeechRecognition:any\nconst SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition\nconst SpeechGrammarList = (window as any).SpeechGrammarList || (window as any).webkitSpeechGrammarList\nexport class WebSpeech{\n constructor(){}\n /**\n * 语音识别\n * @desc\n * 注意:需要校验说话开始和结束时间2-3秒后,自动结束语音听取\n * @see\n * https://www.jianshu.com/p/e42638839475\n * @param word \n */\n recognition:any\n startRecognition(words=\"Nihao | Hello\"){\n if(!SpeechRecognition) return\n if(this.recognition)this.recognition.stop();\n console.log(\"startRecognition\")\n this.recognition = new SpeechRecognition();\n if(!this.recognition) return\n // this.recognition.lang = \"zh-CH\";\n this.recognition.continuous = true; // 持续识别不间断\n let grammar =\n `#JSGF V1.0; grammar words; public <word> = ${words} ;`;\n this.recognition = new SpeechRecognition();\n let speechRecognitionList = new SpeechGrammarList();\n speechRecognitionList.addFromString(grammar, 1);\n this.recognition.grammars = speechRecognitionList;\n this.recognition.start();\n this.recognition.onresult = (event)=>{ \n let results = event.results || []\n console.log(results)\n console.log(results[0]?.[0])\n if(results[0]?.[0]?.transcript?.indexOf(\"Nihao\")>-1){\n console.log(\"Nihao成功唤醒\")\n }\n if(results[0]?.[0]?.transcript?.indexOf(\"Hello\")>-1){\n console.log(\"Hello成功唤醒\")\n }\n this.startRecognition(); // 单词唤醒后,持续唤醒\n }\n this.recognition.onend = (event)=>{\n console.log(event)\n // this.startRecognition()\n }\n this.recognition.onerror = (err)=>{\n console.error(err)\n // this.startRecognition()\n }\n }\n\n /**\n * TTS合成\n * @param sentence:要说的句子\n * @param pitch: 音调,取值范围(0 - 2) 默认值:1\n * @param rate: 语速,取值范围(0.1 - 10) 默认值:1\n * @param volume: 音量,取值范围(0 - 1) 默认值:0.5\n * @see\n * https://zhuanlan.zhihu.com/p/141582231\n */\n speak(sentence, pitch=1,rate=1.2,volume=0.5) {\n // window.speechSynthesis.pause();\n let utterance = new SpeechSynthesisUtterance(sentence)\n let voice = this.getVoiceByName(\"Yaoyao\");\n console.log(voice)\n if(voice) {\n utterance.voice = voice\n }\n utterance.rate = rate\n utterance.pitch = pitch\n utterance.volume = volume\n \n window.speechSynthesis.speak(utterance)\n }\n getVoiceByName(name){\n let voices = window.speechSynthesis.getVoices()\n let voice = voices.find(v=>v.name.indexOf(name)>-1)\n return voice\n }\n}","import { Injectable } from '@angular/core';\n// import RecorderManager from \"./lib/xunfei-recorder\"\n// import {RecorderManager} from \"./lib/recorder/recorder-manager\"\nimport Recorder from 'recorder-core'\nimport 'recorder-core/src/engine/pcm'\nimport 'recorder-core/src/engine/wav'\nimport 'recorder-core/src/extensions/waveview'\nimport CryptoJS from \"crypto-js\"\nimport { pcmtoWav } from './lib/pcm2wav';\nimport { convertFrameBufferToBase64, resampleAudio, resampleBuffer } from './lib/resample';\nimport { WebSpeech } from './class-asr';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FmodeVoiceService {\n\n /**\n * 关闭ASR:用于测试其他功能时,可关闭ASR节省语音接口消耗\n */\n disableASR:false;\n\n /**\n * WebSpeech 语音库\n */\n webSpeech = WebSpeech\n constructor() { \n // this.recorder.on(\"start\",() => {\n // })\n\n // this.recorder.on(\"frameRecorded\", ({ isLastFrame, frameBuffer }) => {\n // if (this.iatWS.readyState === this.iatWS.OPEN) {\n // this.iatWS.send(\n // JSON.stringify({\n // data: {\n // status: isLastFrame ? 2 : 1,\n // format: \"audio/L16;rate=16000\",\n // encoding: this.encodingType,\n // audio: this.toBase64(frameBuffer),\n // },\n // })\n // );\n // if (isLastFrame) {\n // this.changeBtnStatus(\"CLOSING\");\n // }\n // }\n // })\n\n // this.recorder.on(\"stop\",() => {\n // })\n\n\n }\n\n onRecordButtonClick(){\n console.log(this.btnStatus)\n if (this.btnStatus === \"UNDEFINED\" || this.btnStatus === \"CLOSED\") {\n this.connectWebSocket();\n } else if (this.btnStatus === \"CONNECTING\" || this.btnStatus === \"OPEN\") {\n // 结束录音\n this.recordStop();\n }\n }\n async recordStart(){\n this.createRecorder();\n await this.openWithPriviledge()\n this.recorder.start();\n this.changeBtnStatus(\"OPEN\");\n }\n recordStop(){\n // console.log(\"record Stop trigger\")\n this.recorder?.stop((blob:Blob,duration:number)=>{\n\n //录音结束后,发送录音结束帧\n this.iatWS.send(\n JSON.stringify({\"data\":{\"status\":2,\"format\":\"audio/L16;rate=16000\",\"encoding\":this.encodingType,\"audio\":\"\"}})\n );\n\n //简单利用URL生成本地文件地址,注意不用了时需要revokeObjectURL,否则霸占内存\n //此地址只能本地使用,比如赋值给audio.src进行播放,赋值给a.href然后a.click()进行下载(a需提供download=\"xxx.mp3\"属性)\n let localUrl=(window.URL||webkitURL).createObjectURL(blob);\n console.log(blob,localUrl,\"时长:\"+duration+\"ms\");\n this.recordPcmBlob = blob\n this.recorder.close();//释放录音资源,当然可以不释放,后面可以连续调用start;但不释放时系统或浏览器会一直提示在录音,最佳操作是录完就close掉\n this.recorder=null;\n \n //已经拿到blob文件对象想干嘛就干嘛:立即播放、上传、下载保存\n \n /*** 【立即播放例子】 ***/\n // this.audioPlayer= new Audio();\n // this.audioPlayer.controls=true;\n // this.audioPlayer.src=localUrl;\n console.log(\"localUrl\",localUrl)\n },(msg)=>{\n console.log(\"录音失败:\"+msg);\n this.recorder.close();//可以通过stop方法的第3个参数来自动调用close\n this.recorder=null;\n })\n clearInterval(this.countdownInterval);\n this.changeBtnStatus(\"CLOSED\");\n }\n recordPcmBlob:Blob = null\n playRecord(){\n this.playPCM(this.recordPcmBlob,44100)\n }\n playPCM(pcmBlob, sampleRate) {\n let fileReader = new FileReader();\n \n // 读取Blob数据\n fileReader.onload = function(event) {\n let pcmData:any = event.target.result;\n // Convert PCM data to WAV format\n let wavUrl = pcmtoWav(pcmData, sampleRate,1,16);\n let audio = new Audio();\n audio.src = wavUrl;\n audio.play();\n };\n \n // 将Blob转换为ArrayBuffer\n fileReader.readAsArrayBuffer(pcmBlob);\n }\n buffers:Array<any>\n async playBuffers(){\n // let audioBuffer = []\n // this.buffers.forEach(buffer=>{\n // audioBuffer.push(buffer)\n // })\n let audioBlob = await this.BuffersToBlob(this.buffers)\n this.playPCM(audioBlob,44100)\n }\n BuffersToBlob(buffers) {\n let audioBuffer:any = []\n buffers.forEach(buffer=>{\n buffer.forEach(int16=>{\n audioBuffer.push(int16)\n })\n })\n return new Blob([audioBuffer], { type: 'audio/pcm' });\n }\n // 将录音数据分割为每次发送的音频片段 1280字节\n splitAudioData(audioData) {\n const segmentSize = 1280; // 目标切片大小,单位为字节\n const segmentCount = Math.ceil(audioData.length / segmentSize); // 切片数量\n const segments = [];\n \n for (let i = 0; i < segmentCount; i++) {\n const start = i * segmentSize;\n const end = start + segmentSize;\n const segment = audioData.slice(start, end);\n \n segments.push(segment);\n }\n \n return segments;\n }\n BufferToBlob(buffer) {\n return new Blob([buffer], { type: 'audio/pcm' });\n }\n recordType = \"pcm\"\n encodingType = \"raw\"\n createRecorder(){\n if(this.recorder) return\n this.recorder = Recorder({ //本配置参数请参考下面的文档,有详细介绍\n type:this.recordType,sampleRate:44100,bitRate:16 //pcm格式,指定采样率hz、比特率kbps,其他参数使用默认配置;注意:是数字的参数必须提供数字,不要用字符串;需要使用的type类型,需提前把格式支持文件加载进来,比如使用wav格式需要提前加载wav.js编码引擎\n ,onProcess:(buffers,powerLevel,bufferDuration,bufferSampleRate,newBufferIdx,asyncEnd)=>{\n //录音实时回调,大约1秒调用12次本回调,buffers为开始到现在的所有录音pcm数据块(16位小端LE)\n //可利用extensions/sonic.js插件实时变速变调,此插件计算量巨大,onProcess需要返回true开启异步模式\n //可实时上传(发送)数据,配合Recorder.SampleData方法,将buffers中的新数据连续的转换成pcm上传,或使用mock方法将新数据连续的转码成其他格式上传,可以参考文档里面的:Demo片段列表 -> 实时转码并上传-通用版;基于本功能可以做到:实时转发数据、实时保存数据、实时语音识别(ASR)等\n // 实时发送录音至接口\n // console.log(\"asyncEnd:\",asyncEnd)\n // console.log(buffers.length,bufferDuration,bufferSampleRate,newBufferIdx)\n let isLastFrame = false && this.btnStatus==\"CLOSED\"; // 主动关闭作为最后帧\n // 录音默认为 44100 采样率 pcm不支持再process中实时转换\n // 需要压缩为 16000 上传\n let frameBuffer = buffers.length&&buffers[buffers.length-1];\n this.buffers = buffers\n frameBuffer = resampleBuffer(frameBuffer,44100,16000);\n // this.playPCM(this.BufferToBlob(frameBuffer),16000) // 切片数据播放,采样率测试\n\n if (this.iatWS.readyState === this.iatWS.OPEN) {\n if(this.disableASR) return\n this.iatWS.send(\n JSON.stringify({\n data: {\n status: isLastFrame ? 2 : 1,\n format: \"audio/L16;rate=16000\",\n encoding: this.encodingType,\n audio: convertFrameBufferToBase64(frameBuffer)// this.toBase64(audioData),\n },\n })\n );\n \n if (isLastFrame) {\n this.changeBtnStatus(\"CLOSING\");\n }\n }\n //可实时绘制波形(extensions目录内的waveview.js、wavesurfer.view.js、frequency.histogram.view.js插件功能)\n this.waveClient?.input(buffers[buffers.length-1],powerLevel,bufferSampleRate);\n }\n });\n }\n \n openWithPriviledge(){\n console.log(this.btnStatus)\n\n this.createRecorder();\n if(Recorder.IsOpen()) return true\n return new Promise(resolve=>{\n //var dialog=createDelayDialog(); 我们可以选择性的弹一个对话框:为了防止移动端浏览器存在第三种情况:用户忽略,并且(或者国产系统UC系)浏览器没有任何回调,此处demo省略了弹窗的代码\n this.recorder.open(()=>{//打开麦克风授权获得相关资源\n //dialog&&dialog.Cancel(); 如果开启了弹框,此处需要取消\n //rec.start() 此处可以立即开始录音,但不建议这样编写,因为open是一个延迟漫长的操作,通过两次用户操作来分别调用open和start是推荐的最佳流程\n //创建可视化,指定一个要显示的div\n if(Recorder.WaveView)this.waveClient=Recorder.WaveView({elem:\".record-wave\"});\n resolve(true);\n },(msg,isUserNotAllow)=>{//用户拒绝未授权或不支持\n //dialog&&dialog.Cancel(); 如果开启了弹框,此处需要取消\n console.log((isUserNotAllow?\"UserNotAllow,\":\"\")+\"无法录音:\"+msg);\n });\n })\n\n }\n\n connStatus = \"\" // 录音中 建立连接中 关闭连接中\n\n btnStatus = \"UNDEFINED\"; // \"UNDEFINED\" \"CONNECTING\" \"OPEN\" \"CLOSING\" \"CLOSED\"\n\n waveClient:any // 用户波形\n recorder:any\n // recorder = new RecorderManager();\n // recorder = new RecorderManager(\"./lib/xunfei-recorder\");\n \n iatWS;\n resultText = \"\";\n resultTextTemp = \"\";\n countdownInterval;\n\n /**\n * 获取websocket url\n * 该接口需要后端提供,这里为了方便前端处理\n */\n APPID = \"23265215\";\n API_SECRET = \"YzMzMWUzMmFkYjU2ZjE5OTc4M2Q1NjE1\";\n API_KEY = \"8c58aa034946e1de30f2b145cf0cc3c3\";\n getWebSocketUrl() {\n // 请求地址根据语种不同变化\n let url = \"wss://iat-api.xfyun.cn/v2/iat\";\n let host = \"iat-api.xfyun.cn\";\n \n let apiKey = this.API_KEY;\n let apiSecret = this.API_SECRET;\n let date = new Date().toUTCString();\n let algorithm = \"hmac-sha256\";\n let headers = \"host date request-line\";\n let signatureOrigin = `host: ${host}\\ndate: ${date}\\nGET /v2/iat HTTP/1.1`;\n let signatureSha = CryptoJS.HmacSHA256(signatureOrigin, apiSecret);\n let signature = CryptoJS.enc.Base64.stringify(signatureSha);\n let authorizationOrigin = `api_key=\"${apiKey}\", algorithm=\"${algorithm}\", headers=\"${headers}\", signature=\"${signature}\"`;\n let authorization = btoa(authorizationOrigin);\n url = `${url}?authorization=${authorization}&date=${date}&host=${host}`;\n return url;\n }\n\n toBase64(buffer) {\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n for (var i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n\n countdown() {\n let seconds = 60;\n this.connStatus = `录音中(${seconds}s)`;\n this.countdownInterval = setInterval(() => {\n seconds = seconds - 1;\n console.log(seconds);\n if (seconds <= 0) {\n clearInterval(this.countdownInterval);\n this.recordStop();\n } else {\n this.connStatus = `录音中(${seconds}s)`;\n }\n }, 1000);\n }\n\n changeBtnStatus(status) {\n this.btnStatus = status;\n if (status === \"CONNECTING\") {\n this.connStatus = \"建立连接中\";\n this.resultText = \"\";\n this.resultTextTemp = \"\";\n } else if (status === \"OPEN\") {\n this.countdown();\n } else if (status === \"CLOSING\") {\n this.connStatus = \"关闭连接中\";\n } else if (status === \"CLOSED\") {\n this.connStatus = \"开始录音\";\n }\n }\n\n renderResult(resultData) {\n // 识别结束\n let jsonData = JSON.parse(resultData);\n console.log(jsonData)\n console.log(jsonData.data)\n console.log(jsonData.data.result)\n if (jsonData.data && jsonData.data.result) {\n let data = jsonData.data.result;\n let str = \"\";\n let ws = data.ws;\n for (let i = 0; i < ws.length; i++) {\n str = str + ws[i].cw[0].w;\n console.log(str)\n }\n // 开启wpgs会有此字段(前提:在控制台开通动态修正功能)\n // 取值为 \"apd\"时表示该片结果是追加到前面的最终结果;取值为\"rpl\" 时表示替换前面的部分结果,替换范围为rg字段\n if (data.pgs) {\n if (data.pgs === \"apd\") {\n // 将this.resultTextTemp同步给this.resultText\n this.resultText = this.resultTextTemp;\n }\n // 将结果存储在this.resultTextTemp中\n this.resultTextTemp = this.resultText + str;\n } else {\n this.resultText = this.resultText + str;\n }\n this.resultTextTemp || this.resultText || \"\";\n }\n if (jsonData.code === 0 && jsonData.data.status === 2) {\n this.iatWS.close();\n }\n if (jsonData.code !== 0) {\n this.iatWS.close();\n console.error(jsonData);\n }\n }\n\n connectWebSocket() {\n console.log(\"connectWebSocket\");\n const websocketUrl = this.getWebSocketUrl();\n if (\"WebSocket\" in window) {\n this.iatWS = new WebSocket(websocketUrl);\n } else if (\"MozWebSocket\" in window) {\n // this.iatWS = new MozWebSocket(websocketUrl); // Moz兼容\n } else {\n alert(\"浏览器不支持WebSocket\");\n return;\n }\n console.log(\"connectWebSocket\",this.btnStatus);\n this.changeBtnStatus(\"CONNECTING\");\n this.iatWS.onopen = (e) => {\n // 开始录音\n this.recordStart();\n var params = {\n common: {\n app_id: this.APPID,\n },\n business: {\n language: \"zh_cn\",\n domain: \"iat\",\n accent: \"mandarin\",\n vad_eos: 5000,\n dwa: \"wpgs\",\n },\n data: {\n status: 0,\n format: \"audio/L16;rate=16000\",\n encoding: this.encodingType,\n // encoding: \"speex-wb\",\n },\n };\n this.iatWS.send(JSON.stringify(params));\n };\n this.iatWS.onmessage = (e) => {\n this.renderResult(e.data);\n };\n this.iatWS.onerror = (e) => {\n console.error(\"error\",e);\n this.recordStop();\n this.changeBtnStatus(\"CLOSED\");\n };\n this.iatWS.onclose = (e) => {\n console.error(\"close\",e)\n this.recordStop();\n this.changeBtnStatus(\"CLOSED\");\n };\n }\n\n}\n","import { Component,AfterViewInit } from '@angular/core';\nimport * as AMapLoader from \"@amap/amap-jsapi-loader\"\n(window as any)._AMapSecurityConfig = {\n securityJsCode:'32aa3f4ab0fa0061de03edd4eafdd50a',\n}\n// import \"@amap/amap-jsapi-types\"\n\ninterface MapPlace{\n name:string,\n location:Array<number>,\n marker?: any // AMap.Marker\n}\n\n@Component({\n selector: 'app-page-map.start',\n templateUrl: './page-map.start.component.html',\n styleUrls: ['./page-map.start.component.scss']\n})\nexport class PageMapStartComponent implements AfterViewInit {\n AMap:any\n map: any // AMap.Map\n placeList:Array<MapPlace> = [\n {name:\"江财蛟桥校区\",location:[115.855125,28.744335]},\n {name:\"江财枫林校区\",location:[115.835639,28.734119]},\n {name:\"江财麦庐校区\",location:[115.816717,28.728899]},\n ]\n ngAfterViewInit(): void {\n this.initMap();\n }\n async initMap(){\n await this.createMap()\n this.goAndMarkPlace(this.placeList[1])\n }\n async createMap(){\n this.AMap = await AMapLoader.load({\n key: \"473b52010df7d3a32db0a2f5db245c8e\", // 申请好的Web端开发者Key,首次调用 load 时必填\n version: \"2.0\", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15\n })\n this.map = new this.AMap.Map('container');\n }\n /**\n * 添加点标记 Marker\n */\n async addMarks(){\n // JS API 提供了在地图之上绘制覆盖物的能力,现在我们添加add()一个默认的点标记Marker。\n let marker = new this.AMap.Marker({\n position:[115.835639,28.734119] //位置\n })\n this.map.add(marker); //添加到地图\n }\n goAndMarkPlace(place:any){\n this.map.setCenter(place.location)\n this.map.setZoom(18)\n console.log(this.placeList)\n if(place.marker) return\n place.marker = new this.AMap.Marker({\n position:place.location\n })\n this.map.add(place.marker);\n }\n clearMark(place:any){\n place?.marker?.remove()\n }\n /**\n * 路线规划 地点1 => 地点2\n */\n planRoute(p1,p2){\n let transfer;\n this.map.plugin([\"AMap.Transfer\"], () => { //加载公交换乘插件\n let transOptions = {\n map: this.map,\n city: '南昌市',\n panel: 'panel',\n // cityd:'经开区',\n policy: this.AMap.TransferPolicy.LEAST_TIME\n };\n console.log(this.AMap)\n console.log(this.AMap.TransferPolicy)\n //构造公交换乘类\n transfer = new this.AMap.Transfer(transOptions);\n //根据起、终点坐标查询公交换乘路线\n transfer.search(new this.AMap.LngLat(p1.location[0], p1.location[1]), new this.AMap.LngLat(p2.location[0], p2.location[1]), (status, result) => {\n // result即是对应的公交路线数据信息,相关数据结构文档请参考 https://lbs.amap.com/api/javascript-api/reference/route-search#m_TransferResult\n if (status === 'complete') {\n console.log('绘制公交路线完成:')\n console.log(result)\n } else {\n console.error('公交路线数据查询失败' + result)\n }\n });\n // transOptions = {\n // city: '北京市', //公交城市\n // policy: AMap.TransferPolicy.LEAST_TRANSFER //乘车策略\n // };\n // trans = new AMap.Transfer (transOptions); //构造公交换乘类\n // AMap.Event.addListener(trans, \"complete\", trans_CallBack); //返回导航查询结果\n // AMap.Event.addListener(trans, \"error\", function(e){alert(e.info);}); //返回错误信息\n // //根据起、终点坐标查询公交换乘路线\n // trans.search(new AMap.LngLat(116.379018, 39.865026), new AMap.LngLat(116.42732, 39.903752));\n });\n\n\n }\n}\n","<!-- 全屏地图 -->\n<div id=\"container\"></div>\n\n<!-- 右侧地点 -->\n<div class=\"place-list\">\n <ng-container *ngFor=\"let place of placeList\">\n <div class=\"place-item\" (click)=\"goAndMarkPlace(place)\">\n {{place.name}}\n <button (click)=\"clearMark(place)\">清除标记</button>\n </div>\n </ng-container>\n\n <button (click)=\"planRoute(placeList[0],placeList[1])\">从蛟桥到枫林</button>\n \n</div>","import { Component, Input, Output, EventEmitter, ViewChild, AfterViewInit, ElementRef } from '@angular/core';\nimport * as Parse from \"parse\";\n// 弹窗依赖\nimport { IonModal } from '@ionic/angular';\nimport { OverlayEventDetail } from '@ionic/core';\n\n// 高德依赖\nimport * as AMapLoader from \"@amap/amap-jsapi-loader\"\n(window as any)._AMapSecurityConfig = {\n securityJsCode:'32aa3f4ab0fa0061de03edd4eafdd50a',\n}\n\n@Component({\n selector: 'fm-map-poi-picker',\n templateUrl: './comp-poi-picker.component.html',\n styleUrls: ['./comp-poi-picker.component.scss']\n})\nexport class CompPoiPickerComponent implements AfterViewInit{\n @ViewChild(\"container\") container:ElementRef\n @ViewChild(\"panel\") panel:ElementRef\n @Input(\"name\") _name:string // 地标名称\n get name(){\n return this._name\n }\n set name(v){\n this._name = v;\n this.nameChange.emit(v)\n }\n @Output() nameChange:EventEmitter<string> = new EventEmitter()\n\n\n @Input(\"address\") _address:string // 详细地址\n get address(){\n return this._address\n }\n set address(v){\n this._address = v;\n this.addressChange.emit(v)\n }\n @Output() addressChange:EventEmitter<string> = new EventEmitter()\n\n @Input(\"location\") _location:Parse.GeoPoint // 经纬度数组\n get location(){\n return this._location\n }\n set location(v){\n this._location = v;\n this.locationChange.emit(v)\n }\n @Output() locationChange:EventEmitter<Parse.GeoPoint> = new EventEmitter()\n constructor(){\n }\n /**\n * 弹窗效果区域\n */\n isModalOpen:boolean = false;\n @ViewChild(IonModal) modal: IonModal;\n\n cancel() {\n this.isModalOpen = false;\n this.modal.dismiss(null, 'cancel');\n }\n\n confirm() {\n this.isModalOpen = false;\n this.modal.dismiss(this.address, 'confirm');\n }\n\n onWillDismiss(event: Event) {\n const ev = event as CustomEvent<OverlayEventDetail<string>>;\n if (ev.detail.role === 'confirm') {\n console.log(\"确认\")\n }\n }\n openModal(){\n this.isModalOpen=true\n setTimeout(() => {\n this.initMap()\n }, 800);\n }\n /**\n * 高德地图插件区域\n */\n AMap:any;\n map:any;\n ngAfterViewInit(): void {\n }\n initMap(){\n this.createMap();\n }\n async createMap(){\n this.AMap = await AMapLoader.load({\n key: \"473b52010df7d3a32db0a2f5db245c8e\", // 申请好的Web端开发者Key,首次调用 load 时必填\n version: \"2.0\", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15\n })\n let containerEl = this.container.nativeElement\n this.map = new this.AMap.Map(containerEl);\n this.goCurrentCenter()\n }\n goCurrentCenter(){\n this.AMap.plugin([\"AMap.Geolocation\"], () => {\n // 创建定位对象\n let geolocation = new this.AMap.Geolocation({\n enableHighAccuracy: true, // 是否使用高精度定位,默认为true\n timeout: 10000, // 超过10秒后停止定位,默认:无穷大\n maximumAge: 0, // 定位结果缓存0毫秒,默认:0\n convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true\n showButton: true, // 显示定位按钮,默认:true\n buttonPosition: 'RB', // 定位按钮停靠位置,默认:'LB',左下角\n buttonOffset: new this.AMap.Pixel(10, 10), // 定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)\n showMarker: false, // 定位成功后在定位到的位置显示点标记,默认:true\n showCircle: false, // 定位成功后用圆圈表示定位精度范围,默认:true\n panToLocation: true, // 定位成功后将定位到的位置作为地图中心点,默认:true\n zoomToAccuracy: false // 定位成功后将定位精度范围显示在地图上,默认:true\n });\n\n // 添加定位插件\n this.map.addControl(geolocation);\n\n // 获取当前位置信息\n geolocation.getCurrentPosition(function (status, result) {\n if (status === 'complete') {\n // 定位成功\n console.log('当前位置经度:' + result.position.getLng());\n console.log('当前位置纬度:' + result.position.getLat());\n } else {\n // 定位失败\n console.log('定位失败:' + result.message);\n }\n });\n})\n }\n searchByAddress(){\n let panelEl = this.panel.nativeElement\n this.AMap.plugin([\"AMap.PlaceSearch\"], () => {\n //构造地点查询类\n let placeSearch = new this.AMap.PlaceSearch({\n pageSize: 3, // 单页显示结果条数\n pageIndex: 1, // 页码\n // city: \"010\", // 兴趣点城市\n // citylimit: true, //是否强制限制在设置的城市内搜索\n map: this.map, // 展现结果的地图实例\n panel: panelEl, // 结果列表将在此容器中进行展示。\n autoFitView: true // 是否自动调整地图视野使绘制的 Marker点都处于视口的可见范围\n });\n // 预设地点选择后事件\n placeSearch.on('selectChanged', (event) => {\n // 在这里处理选择的点的具体值\n this.name = event.selected.data.name\n this.address = event.selected.data.address\n this.location = new Parse.GeoPoint({latitude:event.selected.data.location.lat,longitude:event.selected.data.location.lng})\n this.createCenterMarker();\n })\n // this.AMap.event.addListener(placeSearch, 'selectChanged', (event) => {\n // // 在这里处理选择的点的具体值\n // console.log(event);\n // });\n \n // 关键字查询\n placeSearch.search(this.address);\n });\n }\n centerMarker:any\n createCenterMarker(){\n if(this.centerMarker) { // 避免多次创建\n return\n }\n this.centerMarker = new this.AMap.Marker({\n position: this.map.getCenter(), // Marker标记的初始位置为地图中心点\n offset: new this.AMap.Pixel(-15, -15), // 设置Marker标记的偏移量,使其在地图中心显示\n // content: '<div class=\"marker\"></div>', // 自定义Marker标记的样式,可以是一个HTML元素\n // map: this.map // 将Marker标记添加到地图上\n });\n this.map.add(this.centerMarker)\n this.map.on('dragging', () => { // 地图拖动中:自动更新中央标点位置\n this.centerMarker.setPosition(this.map.getCenter());\n });\n this.map.on('dragend', () => { // 拖动结束后:设置中央位置为经纬度\n let pos = this.centerMarker.getPosition()\n this.location = new Parse.GeoPoint({latitude:pos.lat,longitude:pos.lng})\n });\n }\n}\n","<!-- 未选点 -->\n<ion-button (click)=\"openModal()\" expand=\"block\">开始选点</ion-button>\n\n<!-- 已选点 -->\n\n<ion-modal [isOpen]=\"isModalOpen\" (willDismiss)=\"onWillDismiss($event)\">\n<ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"cancel()\">Cancel</ion-button>\n </ion-buttons>\n <ion-title>地图选点<ng-container *ngIf=\"location\">({{location.latitude}},{{location.longitude}})</ng-container></ion-title>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"confirm()\" [strong]=\"true\">Confirm</ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\" style=\"height:100%\">\n <!-- 详细地址 -->\n <ion-item>\n <ion-input\n label=\"请输入详细地址\"\n labelPlacement=\"stacked\"\n type=\"text\"\n placeholder=\"精确到门牌号\"\n [(ngModel)]=\"address\"\n ></ion-input>\n <ion-button slot=\"end\" (click)=\"searchByAddress()\">搜索</ion-button>\n </ion-item>\n \n <!-- 地图选点 -->\n <div #container class=\"container\"></div>\n <div #panel class=\"panel\"></div>\n\n </ion-content>\n</ng-template>\n</ion-modal>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CompPoiPickerComponent } from './comp-poi-picker.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\n\n\n@NgModule({\n declarations: [CompPoiPickerComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n IonicModule.forRoot({mode:\"ios\"})\n ],\n exports:[\n CompPoiPickerComponent\n ]\n})\nexport class CompPoiPickerModule { }\n","import { Component } from '@angular/core';\nimport * as Parse from \"parse\";\nimport * as AMapLoader from \"@amap/amap-jsapi-loader\"\n(window as any)._AMapSecurityConfig = {\n securityJsCode:'32aa3f4ab0fa0061de03edd4eafdd50a',\n}\n\n@Component({\n selector: 'app-page-plan-route',\n templateUrl: './page-plan-route.component.html',\n styleUrls: ['./page-plan-route.component.scss']\n})\nexport class PagePlanRouteComponent {\n AMap:any\n map: any // AMap.Map\n placeList:Array<any> = [\n ]\n currentTab:string = \"place\"\n constructor(){\n this.addNewPlace()\n this.addNewPlace()\n this.currentTab = \"plan\"\n }\n addNewPlace(){\n if(this.placeList?.length>=1){\n this.placeList.push({\n name:\"秋水广场\",\n address:\"南昌市秋水广场\",\n location:new Parse.GeoPoint({latitude:28.682634,longitude:115.86273})\n })\n }else{\n this.placeList.push({\n name:\"八一广场\",\n address:\"南昌市八一广场\",\n location:new Parse.GeoPoint({latitude:28.673856,longitude:115.904477})\n })\n }\n\n }\n ngAfterViewInit(): void {\n }\n async initMap(){\n await this.createMap()\n this.goAndMarkPlace(this.placeList[0])\n }\n async createMap(){\n this.AMap = await AMapLoader.load({\n key: \"473b52010df7d3a32db0a2f5db245c8e\", // 申请好的Web端开发者Key,首次调用 load 时必填\n version: \"2.0\", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15\n })\n this.map = new this.AMap.Map('container-plan');\n }\n \n goAndMarkPlace(place:any){\n this.map.setCenter([place.location.latitude,place.location.longitude])\n this.map.setZoom(18)\n if(place.marker) return\n place.marker = new this.AMap.Marker({\n position:[place.location.latitude,place.location.longitude]\n })\n this.map.add(place.marker);\n }\n clearMark(place:any){\n place?.marker?.remove()\n }\n /**\n * 路线规划 地点1 => 地点2\n */\n planRoute(p1,p2){\n let transfer;\n this.map.plugin([\"AMap.Transfer\"], () => { //加载公交换乘插件\n let transOptions = {\n map: this.map,\n city: '南昌市',\n panel: 'panel',\n // cityd:'经开区',\n policy: this.AMap.TransferPolicy.LEAST_TIME\n };\n //构造公交换乘类\n transfer = new this.AMap.Transfer(transOptions);\n //根据起、终点坐标查询公交换乘路线\n let p1pos = new this.AMap.LngLat(p1.location.longitude, p1.location.latitude)\n let p2pos = new this.AMap.LngLat(p2.location.longitude, p2.location.latitude)\n transfer.search(p1pos, p2pos, (status, result) => {\n // result即是对应的公交路线数据信息,相关数据结构文档请参考 https://lbs.amap.com/api/javascript-api/reference/route-search#m_TransferResult\n if (status === 'complete') {\n console.log('绘制公交路线完成:')\n console.log(result)\n } else {\n console.error('公交路线数据查询失败' + result)\n }\n });\n });\n\n\n }\n async createPlan(){\n await this.initMap();\n this.planRoute(this.placeList[0],this.placeList[1]);\n }\n}\n","<ion-segment value=\"place\">\n <ion-segment-button (click)=\"currentTab='place'\" value=\"place\">\n <ion-label>景点选择</ion-label>\n </ion-segment-button>\n <ion-segment-button (click)=\"currentTab='plan'\" value=\"plan\">\n <ion-label>路线规划</ion-label>\n </ion-segment-button>\n </ion-segment>\n \n\n<ng-container *ngIf=\"currentTab=='place'\">\n <h1>选择旅游计划景点</h1>\n\n <ng-container *ngFor=\"let place of placeList\">\n <ion-card>\n <h2>{{place?.name}}</h2>\n <span *ngIf=\"place.address\">详细地址:{{place.address}}</span>\n <span *ngIf=\"place.location\">地图坐标:{{place.location.latitude}},{{place.location.longitude}}</span>\n <fm-map-poi-picker [(name)]=\"place.name\" [(address)]=\"place.address\" [(location)]=\"place.location\"></fm-map-poi-picker>\n </ion-card>\n </ng-container>\n <ion-button (click)=\"addNewPlace()\" expand=\"block\">添加新景点</ion-button>\n</ng-container>\n\n<ng-container *ngIf=\"currentTab=='plan'\">\n <ion-button (click)=\"createPlan()\" expand=\"block\">创建规划路线</ion-button>\n\n <div id=\"container-plan\"></div>\n <div id=\"panel\"></div>\n</ng-container>\n\n","import { AfterViewInit, Component } from '@angular/core';\nimport * as AMapLoader from \"@amap/amap-jsapi-loader\";\ndeclare const Loca:any;\n(window as any)._AMapSecurityConfig = {\n securityJsCode:'32aa3f4ab0fa0061de03edd4eafdd50a',\n}\n@Component({\n selector: 'app-page-loca-scatter',\n templateUrl: './page-loca-scatter.component.html',\n styleUrls: ['./page-loca-scatter.component.scss']\n})\nexport class PageLocaScatterComponent implements AfterViewInit{\n AMap:any\n map: any // AMap.Map\n ngAfterViewInit(): void {\n this.initMap();\n }\n async initMap(){\n await this.createMap()\n await this.createLoca()\n }\n async createLoca(){\n let loca = (window as any).loca = new Loca.Container({\n map:this.map,\n });\n\n // 蓝色普通点\n let geo = new Loca.GeoJSONSource({\n url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/sz_road.json',\n });\n let scatter = new Loca.ScatterLayer({\n zIndex: 111,\n opacity: 1,\n visible: true,\n zooms: [2, 22],\n });\n scatter.setSource(geo);\n scatter.setStyle({\n color: 'rgba(43,156,75,1)',\n unit: 'meter',\n size: [150, 150],\n borderWidth: 0,\n });\n loca.add(scatter);\n\n // 红色呼吸点\n let geoLevelF = new Loca.GeoJSONSource({\n // data: [],\n url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/sz_road_F.json',\n });\n let breathRed = new Loca.ScatterLayer({\n loca,\n zIndex: 113,\n opacity: 1,\n visible: true,\n zooms: [2, 22],\n });\n breathRed.setSource(geoLevelF);\n breathRed.setStyle({\n unit: 'meter',\n size: [2600, 2600],\n borderWidth: 0,\n texture: 'https://a.amap.com/Loca/static/loca-v2/demos/images/breath_red.png',\n duration: 500,\n animate: true,\n });\n\n // 黄色呼吸点\n let geoLevelE = new Loca.GeoJSONSource({\n // data: [],\n url: 'https://a.amap.com/Loca/static/loca-v2/demos/mock_data/sz_road_E.json',\n });\n let breathYellow = new Loca.ScatterLayer({\n loca,\n zIndex: 112,\n opacity: 1,\n visible: true,\n zooms: [2, 22],\n });\n breathYellow.setSource(geoLevelE);\n breathYellow.setStyle({\n unit: 'meter',\n size: [1000, 1000],\n borderWidth: 0,\n texture: 'https://a.amap.com/Loca/static/loca-v2/demos/images/breath_yellow.png',\n duration: 1000,\n animate: true,\n });\n\n // 启动渲染动画\n loca.animate.start();\n\n let dat = new Loca.Dat();\n dat.addLayer(scatter, ' 贴地');\n dat.addLayer(breathRed, '红色');\n dat.addLayer(breathYellow, '黄色');\n }\n async createMap(){\n this.AMap = await AMapLoader.load({\n key: \"473b52010df7d3a32db0a2f5db245c8e\", // 申请好的Web端开发者Key,首次调用 load 时必填\n version: \"2.0\", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15\n \"Loca\":{ // 是否加载 Loca, 缺省不加载\n \"version\": '2.0.0' // Loca 版本,缺省 1.3.2\n },\n })\n\n this.map = new this.AMap.Map('container',{\n zoom: 11.7,\n center: [113.97199630737305, 22.5807295363949],\n pitch: 40,\n showLabel: false,\n mapStyle: 'amap://styles/dark',\n viewMode: '3D',\n });\n }\n}\n","<div id=\"container\"></div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule, Routes } from '@angular/router';\n// import { EditAmapPositionPickerModule } from './edit-amap-position-picker';\nimport { PageMapStartComponent } from './page-map.start/page-map.start.component';\nimport { CompPoiPickerModule } from './comp-poi-picker/comp-poi-picker.module';\nimport { PagePlanRouteComponent } from './page-plan-route/page-plan-route.component';\nimport { IonicModule } from '@ionic/angular';\nimport { PageLocaScatterComponent } from './page-loca-scatter/page-loca-scatter.component';\n\nconst routes: Routes = [\n {\n path:\"start\", component:PageMapStartComponent\n },\n {\n path:\"plan/route\", component:PagePlanRouteComponent\n },\n {\n path:\"loca/scatter\", component:PageLocaScatterComponent\n }\n];\n@NgModule({\n declarations: [\n PageMapStartComponent,\n PagePlanRouteComponent,\n PageLocaScatterComponent\n ],\n imports: [\n CommonModule,\n // EditAmapPositionPickerModule,\n RouterModule.forChild(routes),\n // \n IonicModule.forRoot({mode:\"ios\"}),\n // 引用自定义独立组件模块\n CompPoiPickerModule\n ],\n exports:[\n CompPoiPickerModule\n ]\n})\nexport class FmodeMapModule { }\n","import { Injectable } from '@angular/core';\nimport ObsClient from \"esdk-obs-browserjs\"\nimport * as Parse from \"parse\";\n\nexport interface HwobsDir{\n Prefix:string // \"storage/2023/\"\n\n}\nexport interface HwobsFile{\n ETag: \"\\\"f0ec968fe51ab48348307e06476122eb\\\"\"\n Key:string //\"storage/3mkf41033623275.png\"\n LastModified:string //\"2023-11-08T12:03:13.008Z\"\n Owner:object // {ID: '09971a1979800fb60fbbc00ada51f7e0'}\n Size:string //\"25839\"\n StorageClass:string //\"STANDARD\"\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HwobsService {\n obsClient:ObsClient\n bucketName:string\n host:string\n constructor() {\n this.host = \"https://web3-test.obs.cn-south-1.myhuaweicloud.com/\"\n this.bucketName = \"web3-test\"\n this.obsClient = new ObsClient({\n access_key_id: '6UIET20WHUI5TLXWOVNA', \n secret_access_key: 'YaoY8Kj3TeGZHEcBzplTMZiPGNL13Y3frEavC1kF',\n // 这里以华南-广州为例,其他地区请按实际情况填写\n server: 'https://obs.cn-south-1.myhuaweicloud.com'\n });\n }\n\n /**\n * 目录及检索相关函数\n */\n listDir(prefix):Promise<{\n dirs:Array<HwobsDir>,\n files:Array<HwobsFile>\n }>{\n return new Promise((resolve,reject)=>{\n this.obsClient.listObjects({\n Bucket : this.bucketName,\n Prefix : prefix,\n Delimiter: '/'\n }, (err, result) => {\n if(err){ \n console.error('Error-->' + err); \n reject(err) \n }else{ \n console.log('Status-->' + result.CommonMsg.Status);\n console.log(result)\n if(result.CommonMsg.Status < 300 && result.InterfaceResult){\n for(var j in result.InterfaceResult.Contents){\n console.log('Contents[' + j + ']:');\n console.log('Key-->' + result.InterfaceResult.Contents[j]['Key']);\n console.log('Owner[ID]-->' + result.InterfaceResult.Contents[j]['Owner']['ID']);\n }\n } \n let dirs:HwobsDir[] = result.InterfaceResult.CommonPrefixes\n let files:HwobsFile[] = result.InterfaceResult.Contents\n resolve({dirs:dirs,files:files}) \n }\n });\n })\n\n }\n\n /**\n * 文件上传相关函数\n * @param file \n * @param key \n * @returns \n */\n async uploadFile(file:File,key:string):Promise<Parse.Object>{\n // key 文件上传后的全部路径\n // /storage/<公司账套>/<应用名称>/年月日/<文件名>.<文件后缀>\n // /storage/web2023/<学号>/年月日/<文件名>.<文件后缀>\n let attach = await this.checkFileExists(file);\n if(attach?.id) return attach\n return new Promise((resolve,reject)=>{\n this.obsClient.putObject({\n Bucket : this.bucketName,\n Key : key,\n SourceFile : file\n }, async (err, result) => {\n if(err){\n console.error('Error-->' + err);\n reject(err)\n }else{\n console.log('Status-->' + result.CommonMsg.Status);\n let attach = await this.saveAttachment(file,key)\n resolve(attach)\n }\n });\n })\n }\n Attachment = Parse.Object.extend(\"Attachment\")\n\n async checkFileExists(file):Promise<Parse.Object>{\n let hash = await this.getFileHash(file)\n // 文件HASH查重,避免重复上传\n let attach:Parse.Object\n let query = new Parse.Query(\"Attachment\")\n query.equalTo(\"hash\",hash);\n query.equalTo(\"size\",file.size);\n let exists:any = await query.first();\n if(!exists?.id) exists = new this.Attachment()\n attach = exists\n return attach\n }\n async saveAttachment(file:File,key:string){\n let hash = await this.getFileHash(file)\n let attach = await this.checkFileExists(file)\n attach.set(\"name\",file.name)\n attach.set(\"size\",file.size)\n attach.set(\"mime\",file.type)\n attach.set(\"url\",this.host + key)\n attach.set(\"hash\",hash)\n attach = await attach.save()\n return attach\n }\n\n async getFileHash(file:File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = async (event:any) => {\n const buffer = event.target.result;\n const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(byte => byte.toString(16).padStart(2, '0')).join('');\n resolve(hashHex);\n };\n reader.onerror = (event:any) => {\n reject(event.target.error);\n };\n reader.readAsArrayBuffer(file);\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { IonicModule } from '@ionic/angular';\nimport { HwobsDir, HwobsFile, HwobsService } from '../service-hwobs/hwobs.service';\n\n@Component({\n standalone:true,\n imports:[\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n IonicModule\n ],\n selector: 'fm-storage-hwobs-manager',\n templateUrl: './hwobs-manager.component.html',\n styleUrls: ['./hwobs-manager.component.scss']\n})\nexport class HwobsManagerComponent {\n dirs: HwobsDir[] = [];\n files: HwobsFile[] = [];\n prefix: string = \"storage/\"\n openFile(file: any) {\n console.log('Opening file:', file);\n // Add your logic to open the file details here\n }\n openDir(dir?:HwobsDir|null,type:string=\"pre\"){\n if(dir){\n this.prefix = dir.Prefix\n this.listDir(dir.Prefix)\n }else{\n if(type==\"pre\"){\n let list = this.prefix.split(\"/\")\n if(list.length>1){\n let prefix = list.splice(0,list.length-1).join(\"/\")\n console.log(prefix)\n this.prefix = prefix\n this.listDir(prefix)\n }\n }\n }\n }\n showName(name:string){\n return name.replaceAll(this.prefix,\"\")\n }\n constructor(\n private hwobs:HwobsService\n ){\n this.listDir(this.prefix)\n }\n\n async listDir(prefix:string){\n let {dirs,files} = await this.hwobs.listDir(prefix)\n this.dirs = dirs\n this.files = files\n }\n}\n","<ion-header>\n <ion-toolbar>\n <ion-title>\n File Manager\n </ion-title>\n </ion-toolbar>\n </ion-header>\n \n <ion-content>\n <ion-list>\n <ion-item (click)=\"openDir(null,'pre')\">\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\n <ion-label>../</ion-label>\n </ion-item>\n <ion-item *ngFor=\"let item of dirs\" (click)=\"openDir(item)\">\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\n <ion-label>{{ showName(item.Prefix) }}</ion-label>\n </ion-item>\n <ion-item *ngFor=\"let item of files\" (click)=\"openFile(item)\">\n <ion-icon [name]=\"'document'\" slot=\"start\"></ion-icon>\n <ion-label>{{ showName(item.Key) }}</ion-label>\n </ion-item>\n </ion-list>\n </ion-content>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HwobsManagerComponent } from './comp-hwobs-manager/hwobs-manager.component';\nimport { IonicModule } from '@ionic/angular';\n\n\n@NgModule({\n declarations: [\n ],\n imports: [\n CommonModule,\n IonicModule.forRoot({mode:\"ios\"}),\n // 独立组件\n HwobsManagerComponent,\n ],\n exports:[\n HwobsManagerComponent\n ]\n})\nexport class FmodeStorgeModule { }\n","/*\n * Public API Surface of fmode-ng\n */\n\nexport * from './lib/aigc';\nexport * from './lib/map';\nexport * from './lib/storage';\n\nexport * from \"./lib/nova-cloud\"","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.NovaCloudService","i1.ImagineService","i2.ChatService","i2","i3.CompPoiPickerComponent","i1.HwobsService"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
3
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
4
+ * 保留所有权利 All Rights Reserved.
5
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/index.d.ts
6
+ */
7
+ export*from"./public-api";var MODULE_PATH_NEED="6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9pbmRleC5kLnRz";
8
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9pbmRleC5kLnRz`
9
+
@@ -0,0 +1,5 @@
1
+ export declare class MarkdownParse {
2
+ constructor();
3
+ parseToHTML(markdown: any): string;
4
+ info(...args: any[]): void;
5
+ }
@@ -0,0 +1,16 @@
1
+ import { AfterViewInit, ElementRef, Renderer2 } from '@angular/core';
2
+ import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ export declare class MarkdownPreviewComponent implements AfterViewInit {
5
+ private domSan;
6
+ private renderer;
7
+ content: string;
8
+ safeHTML: SafeHtml;
9
+ mdContent: ElementRef;
10
+ render: boolean;
11
+ constructor(domSan: DomSanitizer, renderer: Renderer2);
12
+ ngAfterViewInit(): void;
13
+ renderMdToHTML(): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownPreviewComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<MarkdownPreviewComponent, "fm-markdown-preview", never, { "content": "content"; "render": "render"; }, {}, never, never, false, never>;
16
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./markdown-preview.component";
3
+ import * as i2 from "@angular/common";
4
+ export declare class MarkdownPreviewModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkdownPreviewModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MarkdownPreviewModule, [typeof i1.MarkdownPreviewComponent], [typeof i2.CommonModule], [typeof i1.MarkdownPreviewComponent]>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<MarkdownPreviewModule>;
8
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
3
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
4
+ * 保留所有权利 All Rights Reserved.
5
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/lib/aigc/index.d.ts
6
+ */
7
+ export*from"./service-fmai/fmai.service";export*from"./service-fmai/service-imagine";export*from"./service-fmai/service-chat";export*from"./comp-markdown-preview/markdown-preview.module";export*from"./comp-markdown-preview/markdown-preview.component";export*from"./voice";var MODULE_PATH_NEED="6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9saWIvYWlnYy9pbmRleC5kLnRz";
8
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9saWIvYWlnYy9pbmRleC5kLnRz`
9
+
@@ -0,0 +1,10 @@
1
+ import { ChatService } from './service-chat/chat.service';
2
+ import { ImagineService } from './service-imagine/imagine.service';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FmaiService {
5
+ private imagine;
6
+ private chat;
7
+ constructor(imagine: ImagineService, chat: ChatService);
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<FmaiService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<FmaiService>;
10
+ }
@@ -0,0 +1,34 @@
1
+ /// <reference types="node" />
2
+ import { Observable } from "rxjs";
3
+ import * as Parse from "parse";
4
+ export interface FmodeChatMessage {
5
+ role: string;
6
+ content: string;
7
+ createdAt?: Date;
8
+ complete?: Boolean;
9
+ /**AI回复消息字段 */
10
+ cid?: string;
11
+ }
12
+ export declare class FmodeChat {
13
+ chatId: string;
14
+ chat: Parse.Object;
15
+ mask: any;
16
+ messageList: FmodeChatMessage[];
17
+ constructor(chatId: string, mask?: any, chat?: Parse.Object);
18
+ sendMessage(message?: string): void;
19
+ fixMessageList(messages: FmodeChatMessage[]): {
20
+ role: string;
21
+ content: string;
22
+ }[];
23
+ nowStr(): string;
24
+ }
25
+ export declare class FmodeChatCompletion {
26
+ indexOfList: number;
27
+ messages: FmodeChatMessage[];
28
+ content: string;
29
+ contentBuffer: string[];
30
+ contentPusher: NodeJS.Timeout;
31
+ isCompleted: boolean;
32
+ constructor(messages: FmodeChatMessage[]);
33
+ sendCompletion(): Observable<FmodeChatMessage>;
34
+ }
@@ -0,0 +1,17 @@
1
+ import { Router } from '@angular/router';
2
+ import { FmodeChat } from './chat-class';
3
+ import * as i0 from "@angular/core";
4
+ export declare class ChatService {
5
+ private router;
6
+ maskList: any[];
7
+ chatMap: {
8
+ [key: string]: FmodeChat;
9
+ };
10
+ constructor(router: Router);
11
+ /**
12
+ * 重建新对话窗口
13
+ */
14
+ createChatPanel(mask?: any, chat?: any): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatService, never>;
16
+ static ɵprov: i0.ɵɵInjectableDeclaration<ChatService>;
17
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
3
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
4
+ * 保留所有权利 All Rights Reserved.
5
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/lib/aigc/service-fmai/service-chat/index.d.ts
6
+ */
7
+ export*from"./chat.service";export*from"./chat-class";export*from"./mask-list";var MODULE_PATH_NEED="6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9saWIvYWlnYy9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0L2luZGV4LmQudHM=";
8
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9saWIvYWlnYy9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0L2luZGV4LmQudHM=`
9
+