wechaty-puppet-matrix 0.0.9 → 0.0.12

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 (39) hide show
  1. package/dist/cjs/src/matrix/cache-manager.js +1 -1
  2. package/dist/cjs/src/matrix/service/request.d.ts +63 -0
  3. package/dist/cjs/src/matrix/service/request.d.ts.map +1 -1
  4. package/dist/cjs/src/matrix/service/request.js +407 -4
  5. package/dist/cjs/src/matrix/utils/index.d.ts +3 -0
  6. package/dist/cjs/src/matrix/utils/index.d.ts.map +1 -1
  7. package/dist/cjs/src/matrix/utils/index.js +31 -0
  8. package/dist/cjs/src/puppet-matrix.d.ts +6 -0
  9. package/dist/cjs/src/puppet-matrix.d.ts.map +1 -1
  10. package/dist/cjs/src/puppet-matrix.js +84 -0
  11. package/dist/cjs/src/utils/normalize-filebox.d.ts +6 -0
  12. package/dist/cjs/src/utils/normalize-filebox.d.ts.map +1 -0
  13. package/dist/cjs/src/utils/normalize-filebox.js +46 -0
  14. package/dist/cjs/src/utils/sns-xml-generator.d.ts +19 -0
  15. package/dist/cjs/src/utils/sns-xml-generator.d.ts.map +1 -0
  16. package/dist/cjs/src/utils/sns-xml-generator.js +171 -0
  17. package/dist/esm/src/matrix/cache-manager.js +1 -1
  18. package/dist/esm/src/matrix/service/request.d.ts +63 -0
  19. package/dist/esm/src/matrix/service/request.d.ts.map +1 -1
  20. package/dist/esm/src/matrix/service/request.js +407 -4
  21. package/dist/esm/src/matrix/utils/index.d.ts +3 -0
  22. package/dist/esm/src/matrix/utils/index.d.ts.map +1 -1
  23. package/dist/esm/src/matrix/utils/index.js +28 -0
  24. package/dist/esm/src/puppet-matrix.d.ts +6 -0
  25. package/dist/esm/src/puppet-matrix.d.ts.map +1 -1
  26. package/dist/esm/src/puppet-matrix.js +85 -1
  27. package/dist/esm/src/utils/normalize-filebox.d.ts +6 -0
  28. package/dist/esm/src/utils/normalize-filebox.d.ts.map +1 -0
  29. package/dist/esm/src/utils/normalize-filebox.js +42 -0
  30. package/dist/esm/src/utils/sns-xml-generator.d.ts +19 -0
  31. package/dist/esm/src/utils/sns-xml-generator.d.ts.map +1 -0
  32. package/dist/esm/src/utils/sns-xml-generator.js +165 -0
  33. package/package.json +6 -5
  34. package/src/matrix/cache-manager.ts +1 -1
  35. package/src/matrix/service/request.ts +523 -8
  36. package/src/matrix/utils/index.ts +62 -0
  37. package/src/puppet-matrix.ts +112 -1
  38. package/src/utils/normalize-filebox.ts +90 -0
  39. package/src/utils/sns-xml-generator.ts +184 -0
@@ -0,0 +1,42 @@
1
+ import { FileBoxType, } from 'file-box';
2
+ const PASS_THROUGH_THRESHOLD_BYTES = 20 * 1024;
3
+ const greenFileBoxTypes = [
4
+ FileBoxType.Url,
5
+ FileBoxType.Uuid,
6
+ FileBoxType.QRCode,
7
+ ];
8
+ const yellowFileBoxTypes = [];
9
+ const canPassthrough = (fileBox) => {
10
+ if (greenFileBoxTypes.includes(fileBox.type)) {
11
+ return true;
12
+ }
13
+ if (!yellowFileBoxTypes.includes(fileBox.type)) {
14
+ return false;
15
+ }
16
+ const size = fileBox.size;
17
+ if (size < 0) {
18
+ return false;
19
+ }
20
+ else if (size > PASS_THROUGH_THRESHOLD_BYTES) {
21
+ return false;
22
+ }
23
+ else {
24
+ return true;
25
+ }
26
+ };
27
+ const normalizeFileBoxUuid = (FileBoxUuid) => async (fileBox) => {
28
+ if (canPassthrough(fileBox)) {
29
+ return fileBox;
30
+ }
31
+ const stream = await fileBox.toStream();
32
+ const uuid = await FileBoxUuid
33
+ .fromStream(stream, fileBox.name)
34
+ .toUuid();
35
+ const uuidFileBox = FileBoxUuid.fromUuid(uuid, {
36
+ md5: fileBox.md5,
37
+ name: fileBox.name,
38
+ size: fileBox.size,
39
+ });
40
+ return uuidFileBox;
41
+ };
42
+ export { canPassthrough, normalizeFileBoxUuid, };
@@ -0,0 +1,19 @@
1
+ type Media = {
2
+ fileId: string;
3
+ fileSize: number;
4
+ fileType: number;
5
+ videoDuration: number;
6
+ url: string;
7
+ width: number;
8
+ height: number;
9
+ fileUrl: string;
10
+ fileKey: string;
11
+ thumbUrl: string;
12
+ thumbWidth: number;
13
+ thumbHeight: number;
14
+ };
15
+ export declare const genTextSnsXml: (wxid: string, content: string) => string;
16
+ export declare const genVideoSnsXml: (wxid: string, content: string, media: Media) => string;
17
+ export declare const genImageSnsXml: (wxid: string, contentDesc: string, mediaList: Media[]) => string;
18
+ export {};
19
+ //# sourceMappingURL=sns-xml-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sns-xml-generator.d.ts","sourceRoot":"","sources":["../../../../src/utils/sns-xml-generator.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,aAAa,SAAU,MAAM,WAAW,MAAM,KAAG,MAkD7D,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,MAAM,WAAW,MAAM,SAAS,KAAK,KAAG,MAgD5E,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,MAAM,eAAe,MAAM,aAAa,KAAK,EAAE,KAAG,MAkEtF,CAAA"}
@@ -0,0 +1,165 @@
1
+ export const genTextSnsXml = (wxid, content) => {
2
+ const xmlTemplate = `
3
+ <TimelineObject>
4
+ <id><![CDATA[0]]></id>
5
+ <username><![CDATA[${wxid}]]></username>
6
+ <createTime><![CDATA[${Math.floor(Date.now() / 1000)}]]></createTime>
7
+ <contentDescShowType>0</contentDescShowType>
8
+ <contentDescScene>0</contentDescScene>
9
+ <private><![CDATA[0]]></private>
10
+ <contentDesc><![CDATA[${content}]]></contentDesc>
11
+ <contentattr><![CDATA[0]]></contentattr>
12
+ <sourceUserName></sourceUserName>
13
+ <sourceNickName></sourceNickName>
14
+ <statisticsData></statisticsData>
15
+ <weappInfo>
16
+ <appUserName></appUserName>
17
+ <pagePath></pagePath>
18
+ <version><![CDATA[0]]></version>
19
+ <isHidden>0</isHidden>
20
+ <debugMode><![CDATA[0]]></debugMode>
21
+ <shareActionId></shareActionId>
22
+ <isGame><![CDATA[0]]></isGame>
23
+ <messageExtraData></messageExtraData>
24
+ <subType><![CDATA[0]]></subType>
25
+ <preloadResources></preloadResources>
26
+ </weappInfo>
27
+ <canvasInfoXml></canvasInfoXml>
28
+ <ContentObject>
29
+ <contentStyle><![CDATA[2]]></contentStyle>
30
+ <contentSubStyle><![CDATA[0]]></contentSubStyle>
31
+ <title></title>
32
+ <description></description>
33
+ <contentUrl></contentUrl>
34
+ </ContentObject>
35
+ <actionInfo>
36
+ <appMsg>
37
+ <mediaTagName></mediaTagName>
38
+ <messageExt></messageExt>
39
+ <messageAction></messageAction>
40
+ </appMsg>
41
+ </actionInfo>
42
+ <appInfo><id></id></appInfo>
43
+ <publicUserName></publicUserName>
44
+ <streamvideo>
45
+ <streamvideourl></streamvideourl>
46
+ <streamvideothumburl></streamvideothumburl>
47
+ <streamvideoweburl></streamvideoweburl>
48
+ </streamvideo>
49
+ </TimelineObject>`.replace(/\s+/g, '');
50
+ return xmlTemplate;
51
+ };
52
+ export const genVideoSnsXml = (wxid, content, media) => {
53
+ const xmlTemplate = `
54
+ <TimelineObject>
55
+ <id>0</id>
56
+ <username>${wxid}</username>
57
+ <createTime>${Math.floor(Date.now() / 1000)}</createTime>
58
+ <contentDesc>${content}</contentDesc>
59
+ <contentDescShowType>0</contentDescShowType>
60
+ <contentDescScene>0</contentDescScene>
61
+ <private>0</private>
62
+ <sightFolded>0</sightFolded>
63
+ <showFlag>0</showFlag>
64
+ <appInfo>
65
+ <id></id>
66
+ <version></version>
67
+ <appName></appName>
68
+ <installUrl></installUrl>
69
+ <fromUrl></fromUrl>
70
+ <isForceUpdate>0</isForceUpdate>
71
+ <isHidden>0</isHidden>
72
+ </appInfo>
73
+ <sourceUserName></sourceUserName>
74
+ <sourceNickName></sourceNickName>
75
+ <statisticsData></statisticsData>
76
+ <statExtStr></statExtStr>
77
+ <ContentObject>
78
+ <contentStyle>15</contentStyle>
79
+ <title></title>
80
+ <description>Sight</description>
81
+ <mediaList>
82
+ <media>
83
+ <id>0</id>
84
+ <type>6</type>
85
+ <title></title>
86
+ <description>测试</description>
87
+ <private>0</private>
88
+ <userData></userData>
89
+ <subType>0</subType>
90
+ <videoSize width="${media.width}" height="${media.height}"/>
91
+ <url type="1" md5="951a7d7864d685a92fd2624155794bf9" videomd5="577f55635faf44f595a69ded26d87bcc">${media.fileUrl}</url>
92
+ <thumb type="1">${media.thumbUrl}</thumb>
93
+ <size width="${media.thumbWidth}.000000" height="${media.thumbHeight}.000000" totalSize="${media.fileSize}"/>
94
+ <videoDuration>${media.videoDuration}.000000</videoDuration>
95
+ </media>
96
+ </mediaList>
97
+ </ContentObject>
98
+ </TimelineObject>`.replace(/\s+/g, '');
99
+ return xmlTemplate;
100
+ };
101
+ export const genImageSnsXml = (wxid, contentDesc, mediaList) => {
102
+ const mediaTemplate = (media) => `
103
+ <media>
104
+ <id><![CDATA[0]]></id>
105
+ <type><![CDATA[2]]></type>
106
+ <title></title>
107
+ <description></description>
108
+ <private><![CDATA[0]]></private>
109
+ <url type="1" md5="951a7d7864d685a92fd2624155794bf9"><![CDATA[${media.fileUrl}]]></url>
110
+ <thumb type="1"><![CDATA[${media.thumbUrl}]]></thumb>
111
+ <videoDuration><![CDATA[0.0]]></videoDuration>
112
+ <size totalSize="${media.fileSize}" width="${media.width}" height="${media.height}"></size>
113
+ </media>`.replace(/\s+/g, '');
114
+ const mediaString = mediaList.map(media => mediaTemplate(media)).join('');
115
+ const xmlTemplate = `
116
+ <TimelineObject>
117
+ <id><![CDATA[0]]></id>
118
+ <username><![CDATA[${wxid}]]></username>
119
+ <createTime><![CDATA[${Math.floor(Date.now() / 1000)}]]></createTime>
120
+ <contentDescShowType>0</contentDescShowType>
121
+ <contentDescScene>0</contentDescScene>
122
+ <private><![CDATA[0]]></private>
123
+ <contentDesc><![CDATA[${contentDesc}]]></contentDesc>
124
+ <contentattr><![CDATA[0]]></contentattr>
125
+ <sourceUserName></sourceUserName>
126
+ <sourceNickName></sourceNickName>
127
+ <statisticsData></statisticsData>
128
+ <weappInfo>
129
+ <appUserName></appUserName>
130
+ <pagePath></pagePath>
131
+ <version><![CDATA[0]]></version>
132
+ <isHidden>0</isHidden>
133
+ <debugMode><![CDATA[0]]></debugMode>
134
+ <shareActionId></shareActionId>
135
+ <isGame><![CDATA[0]]></isGame>
136
+ <messageExtraData></messageExtraData>
137
+ <subType><![CDATA[0]]></subType>
138
+ <preloadResources></preloadResources>
139
+ </weappInfo>
140
+ <canvasInfoXml></canvasInfoXml>
141
+ <ContentObject>
142
+ <contentStyle><![CDATA[1]]></contentStyle>
143
+ <contentSubStyle><![CDATA[0]]></contentSubStyle>
144
+ <title></title>
145
+ <description></description>
146
+ <contentUrl></contentUrl>
147
+ <mediaList>${mediaString}</mediaList>
148
+ </ContentObject>
149
+ <actionInfo>
150
+ <appMsg>
151
+ <mediaTagName></mediaTagName>
152
+ <messageExt></messageExt>
153
+ <messageAction></messageAction>
154
+ </appMsg>
155
+ </actionInfo>
156
+ <appInfo><id></id></appInfo>
157
+ <publicUserName></publicUserName>
158
+ <streamvideo>
159
+ <streamvideourl></streamvideourl>
160
+ <streamvideothumburl></streamvideothumburl>
161
+ <streamvideoweburl></streamvideoweburl>
162
+ </streamvideo>
163
+ </TimelineObject>`.replace(/\s+/g, '');
164
+ return xmlTemplate;
165
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wechaty-puppet-matrix",
3
- "version": "0.0.9",
3
+ "version": "0.0.12",
4
4
  "description": "Puppet matrix for Wechaty",
5
5
  "type": "module",
6
6
  "typings": "./dist/esm/src/mod.d.ts",
@@ -44,8 +44,8 @@
44
44
  "@chatie/git-scripts": "^0.6.2",
45
45
  "@chatie/semver": "^0.4.7",
46
46
  "@grpc/grpc-js": "1.9.14",
47
- "@juzi/wechaty": "^1.0.99",
48
- "@juzi/wechaty-puppet": "^1.0.91",
47
+ "@juzi/wechaty": "^1.0.104",
48
+ "@juzi/wechaty-puppet": "^1.0.98",
49
49
  "@swc/core": "^1.3.41",
50
50
  "@types/body-parser": "^1.19.0",
51
51
  "@types/express": "^4.17.11",
@@ -65,8 +65,8 @@
65
65
  "typescript": "^5.6.2"
66
66
  },
67
67
  "peerDependencies": {
68
- "@juzi/wechaty": "^1.0.99",
69
- "@juzi/wechaty-puppet": "^1.0.91"
68
+ "@juzi/wechaty": "^1.0.104",
69
+ "@juzi/wechaty-puppet": "^1.0.98"
70
70
  },
71
71
  "dependencies": {
72
72
  "axios": "^1.6.0",
@@ -75,6 +75,7 @@
75
75
  "date-fns": "^3.6.0",
76
76
  "file-box": "^1.4.15",
77
77
  "fs-extra": "^10.1.0",
78
+ "image-size": "^1.1.1",
78
79
  "lru-cache": "^6.0.0",
79
80
  "node-cleanup": "^2.1.2",
80
81
  "wechaty-web-panel": "^1.6.64",
@@ -41,7 +41,7 @@ export class CacheManager {
41
41
  os.homedir(),
42
42
  path.sep,
43
43
  '.wechaty',
44
- 'puppet-engine-cache',
44
+ 'puppet-matrix-cache',
45
45
  path.sep,
46
46
  this._userName,
47
47
  path.sep,