giime 0.6.0-dev.1 → 0.6.0-dev.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.
Files changed (127) hide show
  1. package/dist/index.css +46 -31
  2. package/es/api/guardBasic/request.mjs.map +1 -1
  3. package/es/api/materialApi/cross/getAliOssConfigIds.d.ts +14 -0
  4. package/es/api/materialApi/cross/getAliOssConfigIds.mjs +8 -0
  5. package/es/api/materialApi/cross/getAliOssConfigIds.mjs.map +1 -0
  6. package/es/api/materialApi/cross/getOssAccessToken.d.ts +4 -1
  7. package/es/api/materialApi/cross/getOssAccessToken.mjs +2 -2
  8. package/es/api/materialApi/cross/getOssAccessToken.mjs.map +1 -1
  9. package/es/api/materialApi/cross/index.d.ts +1 -0
  10. package/es/api/materialApi/cross/index.mjs +1 -0
  11. package/es/api/materialApi/cross/index.mjs.map +1 -1
  12. package/es/api/materialApi/cross/postSaveFileResources.mjs +0 -1
  13. package/es/api/materialApi/cross/postSaveFileResources.mjs.map +1 -1
  14. package/es/api/materialApi/index.mjs +1 -0
  15. package/es/api/materialApi/index.mjs.map +1 -1
  16. package/es/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +8 -2
  17. package/es/components/src/business/uploadMaterial/index.d.ts +8 -2
  18. package/es/components/src/business/uploadMaterial/uploadMaterial.d.ts +4 -1
  19. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs +7 -6
  20. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs.map +1 -1
  21. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +1 -1
  22. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
  23. package/es/components/src/composite/previewFile/previewFile.mjs +1 -1
  24. package/es/components/src/composite/previewFile/previewFile.mjs.map +1 -1
  25. package/es/components/src/composite/uploadFile/UploadFile.vue.d.ts +8 -2
  26. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
  27. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +141 -115
  28. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
  29. package/es/components/src/composite/uploadFile/index.d.ts +16 -4
  30. package/es/components/src/composite/uploadFile/uploadFile.d.ts +5 -3
  31. package/es/components/src/composite/uploadFile/uploadFile.mjs +4 -0
  32. package/es/components/src/composite/uploadFile/uploadFile.mjs.map +1 -1
  33. package/es/giime/component.mjs +4 -0
  34. package/es/giime/component.mjs.map +1 -1
  35. package/es/giime/index.mjs +1 -0
  36. package/es/giime/index.mjs.map +1 -1
  37. package/es/giime/version.d.ts +1 -1
  38. package/es/giime/version.mjs +1 -1
  39. package/es/giime/version.mjs.map +1 -1
  40. package/es/hooks/index.mjs +1 -0
  41. package/es/hooks/index.mjs.map +1 -1
  42. package/es/hooks/store/index.d.ts +1 -0
  43. package/es/hooks/store/index.mjs +1 -0
  44. package/es/hooks/store/index.mjs.map +1 -1
  45. package/es/hooks/store/useAliOssConfigIds/index.d.ts +20 -0
  46. package/es/hooks/store/useAliOssConfigIds/index.mjs +31 -0
  47. package/es/hooks/store/useAliOssConfigIds/index.mjs.map +1 -0
  48. package/es/index.css +46 -31
  49. package/es/utils/src/alioss/aliossPutHook.mjs +1 -1
  50. package/es/utils/src/alioss/aliossPutHook.mjs.map +1 -1
  51. package/es/utils/src/alioss/aliossToken.d.ts +9 -3
  52. package/es/utils/src/alioss/aliossToken.mjs +4 -4
  53. package/es/utils/src/alioss/aliossToken.mjs.map +1 -1
  54. package/es/utils/src/http/createAxios.d.ts +1 -0
  55. package/es/utils/src/http/createAxios.mjs +6 -3
  56. package/es/utils/src/http/createAxios.mjs.map +1 -1
  57. package/es/utils/src/http/devProxy.mjs.map +1 -1
  58. package/global.d.ts +2 -0
  59. package/lib/api/guardBasic/request.js.map +1 -1
  60. package/lib/api/materialApi/cross/getAliOssConfigIds.d.ts +14 -0
  61. package/lib/api/materialApi/cross/getAliOssConfigIds.js +10 -0
  62. package/lib/api/materialApi/cross/getAliOssConfigIds.js.map +1 -0
  63. package/lib/api/materialApi/cross/getOssAccessToken.d.ts +4 -1
  64. package/lib/api/materialApi/cross/getOssAccessToken.js +2 -2
  65. package/lib/api/materialApi/cross/getOssAccessToken.js.map +1 -1
  66. package/lib/api/materialApi/cross/index.d.ts +1 -0
  67. package/lib/api/materialApi/cross/index.js +2 -0
  68. package/lib/api/materialApi/cross/index.js.map +1 -1
  69. package/lib/api/materialApi/cross/postSaveFileResources.js +0 -1
  70. package/lib/api/materialApi/cross/postSaveFileResources.js.map +1 -1
  71. package/lib/api/materialApi/index.js +2 -0
  72. package/lib/api/materialApi/index.js.map +1 -1
  73. package/lib/components/src/business/uploadMaterial/UploadMaterial.vue.d.ts +8 -2
  74. package/lib/components/src/business/uploadMaterial/index.d.ts +8 -2
  75. package/lib/components/src/business/uploadMaterial/uploadMaterial.d.ts +4 -1
  76. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js +7 -6
  77. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js.map +1 -1
  78. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +1 -1
  79. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
  80. package/lib/components/src/composite/previewFile/previewFile.js +1 -1
  81. package/lib/components/src/composite/previewFile/previewFile.js.map +1 -1
  82. package/lib/components/src/composite/uploadFile/UploadFile.vue.d.ts +8 -2
  83. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
  84. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +140 -114
  85. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
  86. package/lib/components/src/composite/uploadFile/index.d.ts +16 -4
  87. package/lib/components/src/composite/uploadFile/uploadFile.d.ts +5 -3
  88. package/lib/components/src/composite/uploadFile/uploadFile.js +4 -0
  89. package/lib/components/src/composite/uploadFile/uploadFile.js.map +1 -1
  90. package/lib/giime/component.js +24 -20
  91. package/lib/giime/component.js.map +1 -1
  92. package/lib/giime/index.js +2 -0
  93. package/lib/giime/index.js.map +1 -1
  94. package/lib/giime/version.d.ts +1 -1
  95. package/lib/giime/version.js +1 -1
  96. package/lib/giime/version.js.map +1 -1
  97. package/lib/hooks/index.js +2 -0
  98. package/lib/hooks/index.js.map +1 -1
  99. package/lib/hooks/store/index.d.ts +1 -0
  100. package/lib/hooks/store/index.js +2 -0
  101. package/lib/hooks/store/index.js.map +1 -1
  102. package/lib/hooks/store/useAliOssConfigIds/index.d.ts +20 -0
  103. package/lib/hooks/store/useAliOssConfigIds/index.js +33 -0
  104. package/lib/hooks/store/useAliOssConfigIds/index.js.map +1 -0
  105. package/lib/index.css +46 -31
  106. package/lib/utils/src/alioss/aliossPutHook.js +1 -1
  107. package/lib/utils/src/alioss/aliossPutHook.js.map +1 -1
  108. package/lib/utils/src/alioss/aliossToken.d.ts +9 -3
  109. package/lib/utils/src/alioss/aliossToken.js +4 -4
  110. package/lib/utils/src/alioss/aliossToken.js.map +1 -1
  111. package/lib/utils/src/http/createAxios.d.ts +1 -0
  112. package/lib/utils/src/http/createAxios.js +6 -3
  113. package/lib/utils/src/http/createAxios.js.map +1 -1
  114. package/lib/utils/src/http/devProxy.js.map +1 -1
  115. package/package.json +1 -1
  116. package/es/hooks/store/useAliossStsToken/index.d.ts +0 -16
  117. package/es/hooks/store/useAliossStsToken/index.mjs +0 -53
  118. package/es/hooks/store/useAliossStsToken/index.mjs.map +0 -1
  119. package/es/utils/src/alioss.d.ts +0 -32
  120. package/es/utils/src/alioss.mjs +0 -110
  121. package/es/utils/src/alioss.mjs.map +0 -1
  122. package/lib/hooks/store/useAliossStsToken/index.d.ts +0 -16
  123. package/lib/hooks/store/useAliossStsToken/index.js +0 -55
  124. package/lib/hooks/store/useAliossStsToken/index.js.map +0 -1
  125. package/lib/utils/src/alioss.d.ts +0 -32
  126. package/lib/utils/src/alioss.js +0 -113
  127. package/lib/utils/src/alioss.js.map +0 -1
@@ -1,113 +0,0 @@
1
- 'use strict';
2
-
3
- var AliOss = require('ali-oss');
4
- var index = require('../../hooks/store/useAliossStsToken/index.js');
5
- require('../../api/materialApi/index.js');
6
- var index$1 = require('../../components/src/plugins/message/index.js');
7
- var md5 = require('./crypto/md5.js');
8
- var getAdFileExist = require('../../api/materialApi/cross/getAdFileExist.js');
9
-
10
- const getParallelPartSize = (size) => {
11
- const SM = size / 1024 / 1024;
12
- let parallel = 1;
13
- let partSize = 1024 * 1024;
14
- if (SM <= 5) {
15
- partSize *= 5;
16
- }
17
- if (SM > 5 && SM <= 10) {
18
- parallel = 2;
19
- partSize *= 4;
20
- }
21
- if (SM > 10 && SM <= 30) {
22
- parallel = 4;
23
- partSize *= 5;
24
- }
25
- if (SM > 30 && SM <= 50) {
26
- parallel = 6;
27
- partSize *= 6;
28
- }
29
- if (SM > 50) {
30
- parallel = 8;
31
- partSize *= 8;
32
- }
33
- return {
34
- parallel,
35
- partSize
36
- };
37
- };
38
- const getFileExist = async (md5Code, ext) => {
39
- const { data } = await getAdFileExist.getAdFileExist({ md5Code, ext });
40
- if (data.code !== 0) {
41
- return false;
42
- }
43
- if (!data.data.count) {
44
- return false;
45
- }
46
- return data.data.url;
47
- };
48
- const aliossPutFile = async ({ file, fileName, seat, options }) => {
49
- const md5$1 = await md5.ts_md5_file(file);
50
- let { name, lastModified, size } = file;
51
- const ext = name.match(/\.(\w+)$/)?.[0] || "";
52
- const url = await getFileExist(md5$1, ext.replaceAll(".", ""));
53
- name = (fileName || name).slice(0, name.lastIndexOf("."));
54
- if (url) {
55
- return {
56
- name: name + ext,
57
- url,
58
- lastModified,
59
- md5: md5$1,
60
- size,
61
- type: ext.replaceAll(".", ""),
62
- isExist: true
63
- };
64
- }
65
- const aliossStsTokenStore = index.useAliossStsTokenStore();
66
- const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();
67
- const timestr = Date.now();
68
- const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;
69
- if (!options) {
70
- const { parallel, partSize } = getParallelPartSize(size);
71
- options = options ?? {
72
- parallel,
73
- partSize,
74
- ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`
75
- };
76
- }
77
- const ossClient = new AliOss({
78
- // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
79
- region: "oss-cn-shenzhen",
80
- // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。
81
- accessKeyId: AccessKeyId,
82
- accessKeySecret: AccessKeySecret,
83
- stsToken: SecurityToken,
84
- // 刷新临时访问凭证的时间间隔,单位为毫秒。
85
- refreshSTSTokenInterval: 3e5,
86
- // 填写Bucket名称。
87
- bucket: "giikin-material"
88
- });
89
- return new Promise((resolve, reject) => {
90
- try {
91
- const upload = options.parallel === 1 ? "put" : "multipartUpload";
92
- ossClient[upload](aliossPath, file, options).then(() => {
93
- const url2 = `https://sucai.giikin.cn/${aliossPath}`;
94
- resolve({
95
- name: name + ext,
96
- url: url2,
97
- lastModified,
98
- md5: md5$1,
99
- type: ext.replaceAll(".", ""),
100
- size,
101
- isExist: false
102
- });
103
- });
104
- } catch (error) {
105
- index$1.GmMessage.error(error || "\u4E0A\u4F20\u5931\u8D25");
106
- reject(error);
107
- }
108
- });
109
- };
110
-
111
- exports.aliossPutFile = aliossPutFile;
112
- exports.getFileExist = getFileExist;
113
- //# sourceMappingURL=alioss.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alioss.js","sources":["../../../../../packages/utils/src/alioss.ts"],"sourcesContent":["import AliOss from 'ali-oss';\r\nimport { useAliossStsTokenStore } from '@giime/hooks/store/useAliossStsToken';\r\nimport { getAdFileExist } from '@giime/api/materialApi';\r\nimport { GmMessage } from '@giime/components/src/plugins/message';\r\nimport { ts_md5_file } from './crypto/md5';\r\n\r\n/** 上传文件到阿里云 */\r\nexport type AliOssParams = {\r\n /** 资源文件 */\r\n file: File;\r\n /** 文件名 */\r\n fileName?: string;\r\n /** 文件存储位置 */\r\n seat?: string;\r\n /** 上传到oss的设置 */\r\n options?: any;\r\n};\r\n\r\n/** 返回数据 */\r\nexport type AliOssResponse = {\r\n /** 文件地址 */\r\n url: string;\r\n /** 文件名 */\r\n name: string;\r\n /** 文件最后修改时间 */\r\n lastModified: number;\r\n /** 文件md5 */\r\n md5: string;\r\n /** 文件大小 */\r\n size: number;\r\n /** 文件后缀 */\r\n type: string;\r\n /** 文件库是否存在 */\r\n isExist: boolean;\r\n};\r\n\r\n/** 文件分片 */\r\nconst getParallelPartSize = (size: number) => {\r\n const SM = size / 1024 / 1024;\r\n let parallel = 1;\r\n let partSize = 1024 * 1024;\r\n if (SM <= 5) {\r\n partSize *= 5;\r\n }\r\n if (SM > 5 && SM <= 10) {\r\n parallel = 2;\r\n partSize *= 4;\r\n }\r\n if (SM > 10 && SM <= 30) {\r\n parallel = 4;\r\n partSize *= 5;\r\n }\r\n if (SM > 30 && SM <= 50) {\r\n parallel = 6;\r\n partSize *= 6;\r\n }\r\n if (SM > 50) {\r\n parallel = 8;\r\n partSize *= 8;\r\n }\r\n\r\n return {\r\n parallel,\r\n partSize,\r\n };\r\n};\r\n\r\n/** 检测广告素材是否已存在 */\r\nexport const getFileExist = async (md5Code: string, ext: string) => {\r\n const { data } = await getAdFileExist({ md5Code, ext });\r\n if (data.code !== 0) {\r\n return false;\r\n }\r\n if (!data.data.count) {\r\n return false;\r\n }\r\n return data.data.url;\r\n};\r\n\r\n/** 上传文件 */\r\nexport const aliossPutFile = async ({ file, fileName, seat, options }: AliOssParams): Promise<AliOssResponse> => {\r\n const md5 = await ts_md5_file(file);\r\n let { name, lastModified, size } = file;\r\n // 截取文件后缀名\r\n const ext = name.match(/\\.(\\w+)$/)?.[0] || '';\r\n const url = await getFileExist(md5, ext.replaceAll('.', ''));\r\n name = (fileName || name).slice(0, name.lastIndexOf('.'));\r\n // 文件已存在直接返回路径\r\n if (url) {\r\n return {\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n size,\r\n type: ext.replaceAll('.', ''),\r\n isExist: true,\r\n };\r\n }\r\n // 阿里上传权限\r\n const aliossStsTokenStore = useAliossStsTokenStore();\r\n const { AccessKeyId, AccessKeySecret, SecurityToken } = await aliossStsTokenStore.getAliossStsTokenAsync();\r\n\r\n // 文件存储路径\r\n const timestr = Date.now();\r\n const aliossPath = `material/${seat}/material-file-${timestr}-${size}-${lastModified}${ext}`;\r\n\r\n // 根据文件大小设置并发数和分片大小\r\n if (!options) {\r\n const { parallel, partSize } = getParallelPartSize(size);\r\n options = options ?? {\r\n parallel,\r\n partSize,\r\n ContentDisposition: `attachment;filename=${encodeURIComponent(name)}${ext};filename*=${encodeURIComponent(name)}${ext}`,\r\n };\r\n }\r\n\r\n const ossClient = new AliOss({\r\n // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。\r\n region: 'oss-cn-shenzhen',\r\n // 从STS服务获取的临时访问密钥(AccessKey ID、AccessKey Secret、StsToken)。\r\n accessKeyId: AccessKeyId,\r\n accessKeySecret: AccessKeySecret,\r\n stsToken: SecurityToken,\r\n // 刷新临时访问凭证的时间间隔,单位为毫秒。\r\n refreshSTSTokenInterval: 300000,\r\n // 填写Bucket名称。\r\n bucket: 'giikin-material',\r\n });\r\n return new Promise((resolve, reject) => {\r\n try {\r\n // 分片数量大于1,使用 multipartUpload 方法\r\n const upload = options.parallel === 1 ? 'put' : 'multipartUpload';\r\n ossClient[upload](aliossPath, file, options).then(() => {\r\n const url = `https://sucai.giikin.cn/${aliossPath}`;\r\n resolve({\r\n name: name + ext,\r\n url,\r\n lastModified,\r\n md5,\r\n type: ext.replaceAll('.', ''),\r\n size,\r\n isExist: false,\r\n });\r\n });\r\n } catch (error) {\r\n GmMessage.error(error || '上传失败');\r\n reject(error);\r\n }\r\n });\r\n};\r\n"],"names":["getAdFileExist","md5","ts_md5_file","useAliossStsTokenStore","url","GmMessage"],"mappings":"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"}