@juzi/wechaty 1.0.83 → 1.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/src/package-json.d.ts.map +1 -1
- package/dist/cjs/src/package-json.js +3 -2
- package/dist/cjs/src/package-json.js.map +1 -1
- package/dist/cjs/src/pure-functions/retry-policy.d.ts +2 -1
- package/dist/cjs/src/pure-functions/retry-policy.d.ts.map +1 -1
- package/dist/cjs/src/pure-functions/retry-policy.js +12 -1
- package/dist/cjs/src/pure-functions/retry-policy.js.map +1 -1
- package/dist/cjs/src/schemas/contact-events.d.ts +1 -4
- package/dist/cjs/src/schemas/contact-events.d.ts.map +1 -1
- package/dist/cjs/src/schemas/contact-events.js.map +1 -1
- package/dist/cjs/src/schemas/room-events.d.ts +1 -5
- package/dist/cjs/src/schemas/room-events.d.ts.map +1 -1
- package/dist/cjs/src/schemas/room-events.js +0 -1
- package/dist/cjs/src/schemas/room-events.js.map +1 -1
- package/dist/cjs/src/schemas/wechaty-events.d.ts +1 -5
- package/dist/cjs/src/schemas/wechaty-events.d.ts.map +1 -1
- package/dist/cjs/src/schemas/wechaty-events.js +0 -1
- package/dist/cjs/src/schemas/wechaty-events.js.map +1 -1
- package/dist/cjs/src/wechaty/wechaty-base.d.ts +7 -7
- package/dist/cjs/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
- package/dist/cjs/src/wechaty-mixins/io-mixin.d.ts +2 -2
- package/dist/cjs/src/wechaty-mixins/login-mixin.d.ts +5 -5
- package/dist/cjs/src/wechaty-mixins/misc-mixin.d.ts +5 -5
- package/dist/cjs/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts +4 -4
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.js +3 -103
- package/dist/cjs/src/wechaty-mixins/puppet-mixin.js.map +1 -1
- package/dist/cjs/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
- package/dist/esm/src/package-json.d.ts.map +1 -1
- package/dist/esm/src/package-json.js +3 -2
- package/dist/esm/src/package-json.js.map +1 -1
- package/dist/esm/src/pure-functions/retry-policy.d.ts +2 -1
- package/dist/esm/src/pure-functions/retry-policy.d.ts.map +1 -1
- package/dist/esm/src/pure-functions/retry-policy.js +11 -1
- package/dist/esm/src/pure-functions/retry-policy.js.map +1 -1
- package/dist/esm/src/schemas/contact-events.d.ts +1 -4
- package/dist/esm/src/schemas/contact-events.d.ts.map +1 -1
- package/dist/esm/src/schemas/contact-events.js.map +1 -1
- package/dist/esm/src/schemas/room-events.d.ts +1 -5
- package/dist/esm/src/schemas/room-events.d.ts.map +1 -1
- package/dist/esm/src/schemas/room-events.js +0 -1
- package/dist/esm/src/schemas/room-events.js.map +1 -1
- package/dist/esm/src/schemas/wechaty-events.d.ts +1 -5
- package/dist/esm/src/schemas/wechaty-events.d.ts.map +1 -1
- package/dist/esm/src/schemas/wechaty-events.js +0 -1
- package/dist/esm/src/schemas/wechaty-events.js.map +1 -1
- package/dist/esm/src/wechaty/wechaty-base.d.ts +7 -7
- package/dist/esm/src/wechaty-mixins/gerror-mixin.d.ts +1 -1
- package/dist/esm/src/wechaty-mixins/io-mixin.d.ts +2 -2
- package/dist/esm/src/wechaty-mixins/login-mixin.d.ts +5 -5
- package/dist/esm/src/wechaty-mixins/misc-mixin.d.ts +5 -5
- package/dist/esm/src/wechaty-mixins/plugin-mixin.d.ts +6 -6
- package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts +4 -4
- package/dist/esm/src/wechaty-mixins/puppet-mixin.d.ts.map +1 -1
- package/dist/esm/src/wechaty-mixins/puppet-mixin.js +1 -101
- package/dist/esm/src/wechaty-mixins/puppet-mixin.js.map +1 -1
- package/dist/esm/src/wechaty-mixins/wechatify-user-module-mixin.d.ts +1 -1
- package/package.json +2 -1
- package/src/package-json.ts +3 -2
- package/src/pure-functions/retry-policy.ts +12 -0
- package/src/schemas/contact-events.ts +0 -4
- package/src/schemas/room-events.ts +0 -5
- package/src/schemas/wechaty-events.ts +0 -5
- package/src/wechaty-mixins/puppet-mixin.ts +1 -106
- package/dist/cjs/src/pure-functions/update.d.ts +0 -10
- package/dist/cjs/src/pure-functions/update.d.ts.map +0 -1
- package/dist/cjs/src/pure-functions/update.js +0 -85
- package/dist/cjs/src/pure-functions/update.js.map +0 -1
- package/dist/cjs/src/schemas/update.d.ts +0 -31
- package/dist/cjs/src/schemas/update.d.ts.map +0 -1
- package/dist/cjs/src/schemas/update.js +0 -35
- package/dist/cjs/src/schemas/update.js.map +0 -1
- package/dist/esm/src/pure-functions/update.d.ts +0 -10
- package/dist/esm/src/pure-functions/update.d.ts.map +0 -1
- package/dist/esm/src/pure-functions/update.js +0 -80
- package/dist/esm/src/pure-functions/update.js.map +0 -1
- package/dist/esm/src/schemas/update.d.ts +0 -31
- package/dist/esm/src/schemas/update.d.ts.map +0 -1
- package/dist/esm/src/schemas/update.js +0 -9
- package/dist/esm/src/schemas/update.js.map +0 -1
- package/src/pure-functions/update.ts +0 -80
- package/src/schemas/update.ts +0 -43
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkUntilChanged = exports.diffPayload = void 0;
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
* No need to go recursive on payload diff becasue
|
|
7
|
-
* 1. most fields of payloads are primitive values
|
|
8
|
-
* 2. users does not want to compare array items, they just need to know this field has changed. And we don't offer methods to get a subObject value
|
|
9
|
-
*/
|
|
10
|
-
const diffPayload = (objectOld, objectNew) => {
|
|
11
|
-
const keys = new Set([...Object.keys(objectOld || {}), ...Object.keys(objectNew || {})]);
|
|
12
|
-
const result = [];
|
|
13
|
-
for (const item of keys) {
|
|
14
|
-
const key = item;
|
|
15
|
-
const subObjectOld = objectOld[key];
|
|
16
|
-
const subObjectNew = objectNew[key];
|
|
17
|
-
if (typeof subObjectOld !== typeof subObjectNew) {
|
|
18
|
-
result.push({
|
|
19
|
-
key,
|
|
20
|
-
oldValue: subObjectOld,
|
|
21
|
-
newValue: subObjectNew,
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
if (typeof subObjectOld !== 'object') {
|
|
26
|
-
if (subObjectOld === subObjectNew) {
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
result.push({
|
|
31
|
-
key,
|
|
32
|
-
oldValue: subObjectOld,
|
|
33
|
-
newValue: subObjectNew,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
// for objects, we just judge if they were same or not, but do not record every different value
|
|
39
|
-
if (objectDeepDiff(subObjectOld, subObjectNew)) {
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
result.push({
|
|
44
|
-
key,
|
|
45
|
-
oldValue: subObjectOld,
|
|
46
|
-
newValue: subObjectNew,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
};
|
|
54
|
-
exports.diffPayload = diffPayload;
|
|
55
|
-
const objectDeepDiff = (objectA, objectB) => {
|
|
56
|
-
const keys = new Set([...Object.keys(objectA), ...Object.keys(objectB)]);
|
|
57
|
-
for (const key of keys) {
|
|
58
|
-
if (typeof objectA[key] !== typeof objectB[key]) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
if (typeof objectA[key] !== 'object') {
|
|
62
|
-
if (objectA[key] !== objectB[key]) {
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
if (!objectDeepDiff(objectA[key], objectB[key])) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
return true;
|
|
73
|
-
};
|
|
74
|
-
const checkUntilChanged = async (gapMilliseconds, maxRetry, judgement) => {
|
|
75
|
-
let changed = await judgement();
|
|
76
|
-
let currentTry = 1;
|
|
77
|
-
while (!changed && (currentTry < maxRetry)) {
|
|
78
|
-
await new Promise(resolve => setTimeout(resolve, gapMilliseconds));
|
|
79
|
-
changed = await judgement();
|
|
80
|
-
currentTry++;
|
|
81
|
-
}
|
|
82
|
-
return changed;
|
|
83
|
-
};
|
|
84
|
-
exports.checkUntilChanged = checkUntilChanged;
|
|
85
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/pure-functions/update.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAI,SAAc,EAAE,SAAc,EAA4B,EAAE;IACzF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAE,CAAC,CAAA;IAC1F,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,MAAM,GAAG,GAAG,IAAe,CAAA;QAC3B,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAkB,CAAA;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAkB,CAAA;QAEpD,IAAI,OAAO,YAAY,KAAK,OAAO,YAAY,EAAE;YAC/C,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG;gBACH,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAA;SACH;aAAM;YACL,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;gBACpC,IAAI,YAAY,KAAK,YAAY,EAAE;oBACjC,SAAQ;iBACT;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC;wBACV,GAAG;wBACH,QAAQ,EAAE,YAAY;wBACtB,QAAQ,EAAE,YAAY;qBACvB,CAAC,CAAA;iBACH;aACF;iBAAM;gBACL,+FAA+F;gBAC/F,IAAI,cAAc,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;oBAC9C,SAAQ;iBACT;qBAAM;oBACL,MAAM,CAAC,IAAI,CAAC;wBACV,GAAG;wBACH,QAAQ,EAAE,YAAY;wBACtB,QAAQ,EAAE,YAAY;qBACvB,CAAC,CAAA;iBACH;aACF;SACF;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAzCY,QAAA,WAAW,eAyCvB;AAED,MAAM,cAAc,GAAG,CAAC,OAAY,EAAE,OAAY,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAE,CAAC,CAAA;IAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE;YAC/C,OAAO,KAAK,CAAA;SACb;QACD,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;YACpC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjC,OAAO,KAAK,CAAA;aACb;SACF;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC/C,OAAO,KAAK,CAAA;aACb;SACF;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAEM,MAAM,iBAAiB,GAAG,KAAK,EAAE,eAAuB,EAAE,QAAgB,EAAE,SAA2C,EAAoB,EAAE;IAClJ,IAAI,OAAO,GAAG,MAAM,SAAS,EAAE,CAAA;IAC/B,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,OAAO,CAAC,OAAO,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,EAAE;QAC1C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;QAClE,OAAO,GAAG,MAAM,SAAS,EAAE,CAAA;QAC3B,UAAU,EAAE,CAAA;KACb;IACD,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AATY,QAAA,iBAAiB,qBAS7B"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as PUPPET from '@juzi/wechaty-puppet';
|
|
2
|
-
export declare const ContactImportantFields: readonly ["name", "tags", "alias", "phone", "description", "corporation"];
|
|
3
|
-
export declare const RoomImportantFields: readonly ["topic", "memberIdList", "ownerId"];
|
|
4
|
-
declare type ContactImportantKeys = typeof ContactImportantFields[number];
|
|
5
|
-
declare type RoomImportantKeys = typeof RoomImportantFields[number];
|
|
6
|
-
declare type ContactUpdatableKeys = Omit<PUPPET.payloads.Contact, ContactImportantKeys>;
|
|
7
|
-
declare type RoomUpdateableKeys = Omit<PUPPET.payloads.Room, RoomImportantKeys>;
|
|
8
|
-
declare type PayloadTypeToUpdateInterface<U> = {
|
|
9
|
-
[SubType in keyof U]: {
|
|
10
|
-
type: SubType;
|
|
11
|
-
id: string;
|
|
12
|
-
updates: InfoUpdateValuePair<U[SubType]>[];
|
|
13
|
-
};
|
|
14
|
-
}[keyof U];
|
|
15
|
-
export declare type InfoUpdateValuePair<U> = {
|
|
16
|
-
[SubType in keyof U]: {
|
|
17
|
-
key: SubType;
|
|
18
|
-
oldValue?: U[SubType];
|
|
19
|
-
newValue?: U[SubType];
|
|
20
|
-
};
|
|
21
|
-
}[keyof U];
|
|
22
|
-
export declare type InfoUpdateInterface = PayloadTypeToUpdateInterface<{
|
|
23
|
-
[PUPPET.types.Payload.Contact]: ContactUpdatableKeys;
|
|
24
|
-
[PUPPET.types.Payload.Room]: RoomUpdateableKeys;
|
|
25
|
-
}>;
|
|
26
|
-
export declare type ContactUpdatableValuePair = InfoUpdateValuePair<ContactUpdatableKeys>;
|
|
27
|
-
export declare type RoomUpdatableValuePair = InfoUpdateValuePair<RoomUpdateableKeys>;
|
|
28
|
-
export declare type ContactValuePair = InfoUpdateValuePair<PUPPET.payloads.Contact>;
|
|
29
|
-
export declare type RoomValuePair = InfoUpdateValuePair<PUPPET.payloads.Room>;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/schemas/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAE9C,eAAO,MAAM,sBAAsB,2EAEzB,CAAA;AAEV,eAAO,MAAM,mBAAmB,+CAEtB,CAAA;AAEV,aAAK,oBAAoB,GAAG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACjE,aAAK,iBAAiB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;AAE3D,aAAK,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;AAC/E,aAAK,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;AAEvE,aAAK,4BAA4B,CAAC,CAAC,IAAI;KACpC,OAAO,IAAI,MAAM,CAAC,GAAG;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;KAC5C;CACF,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,oBAAY,mBAAmB,CAAC,CAAC,IAAI;KAClC,OAAO,IAAI,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,OAAO,CAAC;QACb,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;KACvB;CACF,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,oBAAY,mBAAmB,GAAG,4BAA4B,CAAC;IAC7D,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACrD,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CACjD,CAAC,CAAA;AAEF,oBAAY,yBAAyB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAA;AACjF,oBAAY,sBAAsB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAA;AAE5E,oBAAY,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC3E,oBAAY,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.RoomImportantFields = exports.ContactImportantFields = void 0;
|
|
27
|
-
/* eslint-disable valid-typeof */
|
|
28
|
-
const PUPPET = __importStar(require("@juzi/wechaty-puppet"));
|
|
29
|
-
exports.ContactImportantFields = [
|
|
30
|
-
'name', 'tags', 'alias', 'phone', 'description', 'corporation',
|
|
31
|
-
];
|
|
32
|
-
exports.RoomImportantFields = [
|
|
33
|
-
'topic', 'memberIdList', 'ownerId',
|
|
34
|
-
];
|
|
35
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/schemas/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,6DAA8C;AAEjC,QAAA,sBAAsB,GAAG;IACpC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa;CACtD,CAAA;AAEG,QAAA,mBAAmB,GAAG;IACjC,OAAO,EAAE,cAAc,EAAE,SAAS;CAC1B,CAAA"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { InfoUpdateValuePair } from '../schemas/update';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* No need to go recursive on payload diff becasue
|
|
5
|
-
* 1. most fields of payloads are primitive values
|
|
6
|
-
* 2. users does not want to compare array items, they just need to know this field has changed. And we don't offer methods to get a subObject value
|
|
7
|
-
*/
|
|
8
|
-
export declare const diffPayload: <T>(objectOld: any, objectNew: any) => InfoUpdateValuePair<T>[];
|
|
9
|
-
export declare const checkUntilChanged: (gapMilliseconds: number, maxRetry: number, judgement: () => Promise<boolean> | boolean) => Promise<boolean>;
|
|
10
|
-
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/pure-functions/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,iBAAkB,GAAG,aAAa,GAAG,6BAyC5D,CAAA;AAqBD,eAAO,MAAM,iBAAiB,oBAA2B,MAAM,YAAY,MAAM,aAAa,MAAM,QAAQ,OAAO,CAAC,GAAG,OAAO,KAAG,QAAQ,OAAO,CAS/I,CAAA"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* No need to go recursive on payload diff becasue
|
|
4
|
-
* 1. most fields of payloads are primitive values
|
|
5
|
-
* 2. users does not want to compare array items, they just need to know this field has changed. And we don't offer methods to get a subObject value
|
|
6
|
-
*/
|
|
7
|
-
export const diffPayload = (objectOld, objectNew) => {
|
|
8
|
-
const keys = new Set([...Object.keys(objectOld || {}), ...Object.keys(objectNew || {})]);
|
|
9
|
-
const result = [];
|
|
10
|
-
for (const item of keys) {
|
|
11
|
-
const key = item;
|
|
12
|
-
const subObjectOld = objectOld[key];
|
|
13
|
-
const subObjectNew = objectNew[key];
|
|
14
|
-
if (typeof subObjectOld !== typeof subObjectNew) {
|
|
15
|
-
result.push({
|
|
16
|
-
key,
|
|
17
|
-
oldValue: subObjectOld,
|
|
18
|
-
newValue: subObjectNew,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
if (typeof subObjectOld !== 'object') {
|
|
23
|
-
if (subObjectOld === subObjectNew) {
|
|
24
|
-
continue;
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
result.push({
|
|
28
|
-
key,
|
|
29
|
-
oldValue: subObjectOld,
|
|
30
|
-
newValue: subObjectNew,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
// for objects, we just judge if they were same or not, but do not record every different value
|
|
36
|
-
if (objectDeepDiff(subObjectOld, subObjectNew)) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
result.push({
|
|
41
|
-
key,
|
|
42
|
-
oldValue: subObjectOld,
|
|
43
|
-
newValue: subObjectNew,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
};
|
|
51
|
-
const objectDeepDiff = (objectA, objectB) => {
|
|
52
|
-
const keys = new Set([...Object.keys(objectA), ...Object.keys(objectB)]);
|
|
53
|
-
for (const key of keys) {
|
|
54
|
-
if (typeof objectA[key] !== typeof objectB[key]) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
if (typeof objectA[key] !== 'object') {
|
|
58
|
-
if (objectA[key] !== objectB[key]) {
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
if (!objectDeepDiff(objectA[key], objectB[key])) {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return true;
|
|
69
|
-
};
|
|
70
|
-
export const checkUntilChanged = async (gapMilliseconds, maxRetry, judgement) => {
|
|
71
|
-
let changed = await judgement();
|
|
72
|
-
let currentTry = 1;
|
|
73
|
-
while (!changed && (currentTry < maxRetry)) {
|
|
74
|
-
await new Promise(resolve => setTimeout(resolve, gapMilliseconds));
|
|
75
|
-
changed = await judgement();
|
|
76
|
-
currentTry++;
|
|
77
|
-
}
|
|
78
|
-
return changed;
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/pure-functions/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as PUPPET from '@juzi/wechaty-puppet';
|
|
2
|
-
export declare const ContactImportantFields: readonly ["name", "tags", "alias", "phone", "description", "corporation"];
|
|
3
|
-
export declare const RoomImportantFields: readonly ["topic", "memberIdList", "ownerId"];
|
|
4
|
-
declare type ContactImportantKeys = typeof ContactImportantFields[number];
|
|
5
|
-
declare type RoomImportantKeys = typeof RoomImportantFields[number];
|
|
6
|
-
declare type ContactUpdatableKeys = Omit<PUPPET.payloads.Contact, ContactImportantKeys>;
|
|
7
|
-
declare type RoomUpdateableKeys = Omit<PUPPET.payloads.Room, RoomImportantKeys>;
|
|
8
|
-
declare type PayloadTypeToUpdateInterface<U> = {
|
|
9
|
-
[SubType in keyof U]: {
|
|
10
|
-
type: SubType;
|
|
11
|
-
id: string;
|
|
12
|
-
updates: InfoUpdateValuePair<U[SubType]>[];
|
|
13
|
-
};
|
|
14
|
-
}[keyof U];
|
|
15
|
-
export declare type InfoUpdateValuePair<U> = {
|
|
16
|
-
[SubType in keyof U]: {
|
|
17
|
-
key: SubType;
|
|
18
|
-
oldValue?: U[SubType];
|
|
19
|
-
newValue?: U[SubType];
|
|
20
|
-
};
|
|
21
|
-
}[keyof U];
|
|
22
|
-
export declare type InfoUpdateInterface = PayloadTypeToUpdateInterface<{
|
|
23
|
-
[PUPPET.types.Payload.Contact]: ContactUpdatableKeys;
|
|
24
|
-
[PUPPET.types.Payload.Room]: RoomUpdateableKeys;
|
|
25
|
-
}>;
|
|
26
|
-
export declare type ContactUpdatableValuePair = InfoUpdateValuePair<ContactUpdatableKeys>;
|
|
27
|
-
export declare type RoomUpdatableValuePair = InfoUpdateValuePair<RoomUpdateableKeys>;
|
|
28
|
-
export declare type ContactValuePair = InfoUpdateValuePair<PUPPET.payloads.Contact>;
|
|
29
|
-
export declare type RoomValuePair = InfoUpdateValuePair<PUPPET.payloads.Room>;
|
|
30
|
-
export {};
|
|
31
|
-
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/schemas/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAE9C,eAAO,MAAM,sBAAsB,2EAEzB,CAAA;AAEV,eAAO,MAAM,mBAAmB,+CAEtB,CAAA;AAEV,aAAK,oBAAoB,GAAG,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;AACjE,aAAK,iBAAiB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;AAE3D,aAAK,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAA;AAC/E,aAAK,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;AAEvE,aAAK,4BAA4B,CAAC,CAAC,IAAI;KACpC,OAAO,IAAI,MAAM,CAAC,GAAG;QACpB,IAAI,EAAE,OAAO,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;KAC5C;CACF,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,oBAAY,mBAAmB,CAAC,CAAC,IAAI;KAClC,OAAO,IAAI,MAAM,CAAC,GAAG;QACpB,GAAG,EAAE,OAAO,CAAC;QACb,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtB,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;KACvB;CACF,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,oBAAY,mBAAmB,GAAG,4BAA4B,CAAC;IAC7D,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACrD,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CACjD,CAAC,CAAA;AAEF,oBAAY,yBAAyB,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAA;AACjF,oBAAY,sBAAsB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAA;AAE5E,oBAAY,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC3E,oBAAY,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/* eslint-disable valid-typeof */
|
|
2
|
-
import * as PUPPET from '@juzi/wechaty-puppet';
|
|
3
|
-
export const ContactImportantFields = [
|
|
4
|
-
'name', 'tags', 'alias', 'phone', 'description', 'corporation',
|
|
5
|
-
];
|
|
6
|
-
export const RoomImportantFields = [
|
|
7
|
-
'topic', 'memberIdList', 'ownerId',
|
|
8
|
-
];
|
|
9
|
-
//# sourceMappingURL=update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/schemas/update.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAE9C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa;CACtD,CAAA;AAEV,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,cAAc,EAAE,SAAS;CAC1B,CAAA"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import type { InfoUpdateValuePair } from '../schemas/update'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* No need to go recursive on payload diff becasue
|
|
6
|
-
* 1. most fields of payloads are primitive values
|
|
7
|
-
* 2. users does not want to compare array items, they just need to know this field has changed. And we don't offer methods to get a subObject value
|
|
8
|
-
*/
|
|
9
|
-
export const diffPayload = <T>(objectOld: any, objectNew: any): InfoUpdateValuePair<T>[] => {
|
|
10
|
-
const keys = new Set([ ...Object.keys(objectOld || {}), ...Object.keys(objectNew || {}) ])
|
|
11
|
-
const result = []
|
|
12
|
-
for (const item of keys) {
|
|
13
|
-
const key = item as keyof T
|
|
14
|
-
const subObjectOld = objectOld[key] as T[typeof key]
|
|
15
|
-
const subObjectNew = objectNew[key] as T[typeof key]
|
|
16
|
-
|
|
17
|
-
if (typeof subObjectOld !== typeof subObjectNew) {
|
|
18
|
-
result.push({
|
|
19
|
-
key,
|
|
20
|
-
oldValue: subObjectOld,
|
|
21
|
-
newValue: subObjectNew,
|
|
22
|
-
})
|
|
23
|
-
} else {
|
|
24
|
-
if (typeof subObjectOld !== 'object') {
|
|
25
|
-
if (subObjectOld === subObjectNew) {
|
|
26
|
-
continue
|
|
27
|
-
} else {
|
|
28
|
-
result.push({
|
|
29
|
-
key,
|
|
30
|
-
oldValue: subObjectOld,
|
|
31
|
-
newValue: subObjectNew,
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
} else {
|
|
35
|
-
// for objects, we just judge if they were same or not, but do not record every different value
|
|
36
|
-
if (objectDeepDiff(subObjectOld, subObjectNew)) {
|
|
37
|
-
continue
|
|
38
|
-
} else {
|
|
39
|
-
result.push({
|
|
40
|
-
key,
|
|
41
|
-
oldValue: subObjectOld,
|
|
42
|
-
newValue: subObjectNew,
|
|
43
|
-
})
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return result
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const objectDeepDiff = (objectA: any, objectB: any) => {
|
|
53
|
-
const keys = new Set([ ...Object.keys(objectA), ...Object.keys(objectB) ])
|
|
54
|
-
for (const key of keys) {
|
|
55
|
-
if (typeof objectA[key] !== typeof objectB[key]) {
|
|
56
|
-
return false
|
|
57
|
-
}
|
|
58
|
-
if (typeof objectA[key] !== 'object') {
|
|
59
|
-
if (objectA[key] !== objectB[key]) {
|
|
60
|
-
return false
|
|
61
|
-
}
|
|
62
|
-
} else {
|
|
63
|
-
if (!objectDeepDiff(objectA[key], objectB[key])) {
|
|
64
|
-
return false
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return true
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export const checkUntilChanged = async (gapMilliseconds: number, maxRetry: number, judgement: () => Promise<boolean> | boolean): Promise<boolean> => {
|
|
72
|
-
let changed = await judgement()
|
|
73
|
-
let currentTry = 1
|
|
74
|
-
while (!changed && (currentTry < maxRetry)) {
|
|
75
|
-
await new Promise(resolve => setTimeout(resolve, gapMilliseconds))
|
|
76
|
-
changed = await judgement()
|
|
77
|
-
currentTry++
|
|
78
|
-
}
|
|
79
|
-
return changed
|
|
80
|
-
}
|
package/src/schemas/update.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/* eslint-disable valid-typeof */
|
|
2
|
-
import * as PUPPET from '@juzi/wechaty-puppet'
|
|
3
|
-
|
|
4
|
-
export const ContactImportantFields = [
|
|
5
|
-
'name', 'tags', 'alias', 'phone', 'description', 'corporation',
|
|
6
|
-
] as const
|
|
7
|
-
|
|
8
|
-
export const RoomImportantFields = [
|
|
9
|
-
'topic', 'memberIdList', 'ownerId',
|
|
10
|
-
] as const
|
|
11
|
-
|
|
12
|
-
type ContactImportantKeys = typeof ContactImportantFields[number]
|
|
13
|
-
type RoomImportantKeys = typeof RoomImportantFields[number]
|
|
14
|
-
|
|
15
|
-
type ContactUpdatableKeys = Omit<PUPPET.payloads.Contact, ContactImportantKeys>
|
|
16
|
-
type RoomUpdateableKeys = Omit<PUPPET.payloads.Room, RoomImportantKeys>
|
|
17
|
-
|
|
18
|
-
type PayloadTypeToUpdateInterface<U> = {
|
|
19
|
-
[SubType in keyof U]: {
|
|
20
|
-
type: SubType,
|
|
21
|
-
id: string,
|
|
22
|
-
updates: InfoUpdateValuePair<U[SubType]>[],
|
|
23
|
-
}
|
|
24
|
-
}[keyof U]
|
|
25
|
-
|
|
26
|
-
export type InfoUpdateValuePair<U> = {
|
|
27
|
-
[SubType in keyof U]: {
|
|
28
|
-
key: SubType,
|
|
29
|
-
oldValue?: U[SubType],
|
|
30
|
-
newValue?: U[SubType],
|
|
31
|
-
}
|
|
32
|
-
}[keyof U]
|
|
33
|
-
|
|
34
|
-
export type InfoUpdateInterface = PayloadTypeToUpdateInterface<{
|
|
35
|
-
[PUPPET.types.Payload.Contact]: ContactUpdatableKeys,
|
|
36
|
-
[PUPPET.types.Payload.Room]: RoomUpdateableKeys,
|
|
37
|
-
}>
|
|
38
|
-
|
|
39
|
-
export type ContactUpdatableValuePair = InfoUpdateValuePair<ContactUpdatableKeys>
|
|
40
|
-
export type RoomUpdatableValuePair = InfoUpdateValuePair<RoomUpdateableKeys>
|
|
41
|
-
|
|
42
|
-
export type ContactValuePair = InfoUpdateValuePair<PUPPET.payloads.Contact>
|
|
43
|
-
export type RoomValuePair = InfoUpdateValuePair<PUPPET.payloads.Room>
|