coding-agent-benchmarks 0.3.0 → 0.3.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.
- package/package.json +1 -1
- package/dist/User.d.ts +0 -10
- package/dist/User.d.ts.map +0 -1
- package/dist/User.js +0 -3
- package/dist/User.js.map +0 -1
- package/dist/config/defaultScenarios.d.ts +0 -6
- package/dist/config/defaultScenarios.d.ts.map +0 -1
- package/dist/config/defaultScenarios.js +0 -209
- package/dist/config/defaultScenarios.js.map +0 -1
- package/dist/config/environment.d.ts +0 -51
- package/dist/config/environment.d.ts.map +0 -1
- package/dist/config/environment.js +0 -57
- package/dist/config/environment.js.map +0 -1
- package/dist/config/parser.d.ts +0 -6
- package/dist/config/parser.d.ts.map +0 -1
- package/dist/config/parser.js +0 -87
- package/dist/config/parser.js.map +0 -1
- package/dist/examples/file-upload-example.d.ts +0 -2
- package/dist/examples/file-upload-example.d.ts.map +0 -1
- package/dist/examples/file-upload-example.js +0 -37
- package/dist/examples/file-upload-example.js.map +0 -1
- package/dist/examples/typedEventEmitterExample.d.ts +0 -5
- package/dist/examples/typedEventEmitterExample.d.ts.map +0 -1
- package/dist/examples/typedEventEmitterExample.js +0 -44
- package/dist/examples/typedEventEmitterExample.js.map +0 -1
- package/dist/registration/database.d.ts +0 -13
- package/dist/registration/database.d.ts.map +0 -1
- package/dist/registration/database.js +0 -35
- package/dist/registration/database.js.map +0 -1
- package/dist/registration/email.d.ts +0 -17
- package/dist/registration/email.d.ts.map +0 -1
- package/dist/registration/email.js +0 -40
- package/dist/registration/email.js.map +0 -1
- package/dist/registration/emailService.d.ts +0 -13
- package/dist/registration/emailService.d.ts.map +0 -1
- package/dist/registration/emailService.js +0 -26
- package/dist/registration/emailService.js.map +0 -1
- package/dist/registration/example.d.ts +0 -2
- package/dist/registration/example.d.ts.map +0 -1
- package/dist/registration/example.js +0 -37
- package/dist/registration/example.js.map +0 -1
- package/dist/registration/index.d.ts +0 -7
- package/dist/registration/index.d.ts.map +0 -1
- package/dist/registration/index.js +0 -15
- package/dist/registration/index.js.map +0 -1
- package/dist/registration/password.d.ts +0 -3
- package/dist/registration/password.d.ts.map +0 -1
- package/dist/registration/password.js +0 -27
- package/dist/registration/password.js.map +0 -1
- package/dist/registration/passwordHasher.d.ts +0 -8
- package/dist/registration/passwordHasher.d.ts.map +0 -1
- package/dist/registration/passwordHasher.js +0 -39
- package/dist/registration/passwordHasher.js.map +0 -1
- package/dist/registration/registrationService.d.ts +0 -14
- package/dist/registration/registrationService.d.ts.map +0 -1
- package/dist/registration/registrationService.js +0 -49
- package/dist/registration/registrationService.js.map +0 -1
- package/dist/registration/service.d.ts +0 -14
- package/dist/registration/service.d.ts.map +0 -1
- package/dist/registration/service.js +0 -48
- package/dist/registration/service.js.map +0 -1
- package/dist/registration/types.d.ts +0 -22
- package/dist/registration/types.d.ts.map +0 -1
- package/dist/registration/types.js +0 -3
- package/dist/registration/types.js.map +0 -1
- package/dist/registration/userRepository.d.ts +0 -12
- package/dist/registration/userRepository.d.ts.map +0 -1
- package/dist/registration/userRepository.js +0 -28
- package/dist/registration/userRepository.js.map +0 -1
- package/dist/registration/validator.d.ts +0 -7
- package/dist/registration/validator.d.ts.map +0 -1
- package/dist/registration/validator.js +0 -44
- package/dist/registration/validator.js.map +0 -1
- package/dist/registration/validators.d.ts +0 -5
- package/dist/registration/validators.d.ts.map +0 -1
- package/dist/registration/validators.js +0 -60
- package/dist/registration/validators.js.map +0 -1
- package/dist/sync/cache.d.ts +0 -14
- package/dist/sync/cache.d.ts.map +0 -1
- package/dist/sync/cache.js +0 -73
- package/dist/sync/cache.js.map +0 -1
- package/dist/sync/index.d.ts +0 -7
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js +0 -20
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/resolver.d.ts +0 -12
- package/dist/sync/resolver.d.ts.map +0 -1
- package/dist/sync/resolver.js +0 -43
- package/dist/sync/resolver.js.map +0 -1
- package/dist/sync/service.d.ts +0 -20
- package/dist/sync/service.d.ts.map +0 -1
- package/dist/sync/service.js +0 -162
- package/dist/sync/service.js.map +0 -1
- package/dist/sync/source.d.ts +0 -21
- package/dist/sync/source.d.ts.map +0 -1
- package/dist/sync/source.js +0 -58
- package/dist/sync/source.js.map +0 -1
- package/dist/sync/types.d.ts +0 -56
- package/dist/sync/types.d.ts.map +0 -1
- package/dist/sync/types.js +0 -21
- package/dist/sync/types.js.map +0 -1
- package/dist/utils/cache.d.ts +0 -11
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js +0 -28
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/config-merger.d.ts +0 -11
- package/dist/utils/config-merger.d.ts.map +0 -1
- package/dist/utils/config-merger.js +0 -36
- package/dist/utils/config-merger.js.map +0 -1
- package/dist/utils/configParser.d.ts +0 -9
- package/dist/utils/configParser.d.ts.map +0 -1
- package/dist/utils/configParser.js +0 -51
- package/dist/utils/configParser.js.map +0 -1
- package/dist/utils/database-providers.d.ts +0 -23
- package/dist/utils/database-providers.d.ts.map +0 -1
- package/dist/utils/database-providers.js +0 -48
- package/dist/utils/database-providers.js.map +0 -1
- package/dist/utils/fetchUserData.d.ts +0 -11
- package/dist/utils/fetchUserData.d.ts.map +0 -1
- package/dist/utils/fetchUserData.js +0 -31
- package/dist/utils/fetchUserData.js.map +0 -1
- package/dist/utils/file-upload-handler.d.ts +0 -46
- package/dist/utils/file-upload-handler.d.ts.map +0 -1
- package/dist/utils/file-upload-handler.js +0 -110
- package/dist/utils/file-upload-handler.js.map +0 -1
- package/dist/utils/statistics.d.ts +0 -9
- package/dist/utils/statistics.d.ts.map +0 -1
- package/dist/utils/statistics.js +0 -26
- package/dist/utils/statistics.js.map +0 -1
- package/dist/utils/storage-providers.d.ts +0 -24
- package/dist/utils/storage-providers.d.ts.map +0 -1
- package/dist/utils/storage-providers.js +0 -38
- package/dist/utils/storage-providers.js.map +0 -1
- package/dist/utils/transformArray.d.ts +0 -18
- package/dist/utils/transformArray.d.ts.map +0 -1
- package/dist/utils/transformArray.js +0 -21
- package/dist/utils/transformArray.js.map +0 -1
- package/dist/utils/userUtils.d.ts +0 -9
- package/dist/utils/userUtils.d.ts.map +0 -1
- package/dist/utils/userUtils.js +0 -14
- package/dist/utils/userUtils.js.map +0 -1
- /package/dist/utils/{typedEventEmitter.d.ts → TypedEventEmitter.d.ts} +0 -0
- /package/dist/utils/{typedEventEmitter.d.ts.map → TypedEventEmitter.d.ts.map} +0 -0
- /package/dist/utils/{typedEventEmitter.js → TypedEventEmitter.js} +0 -0
- /package/dist/utils/{typedEventEmitter.js.map → TypedEventEmitter.js.map} +0 -0
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InputValidator = void 0;
|
|
4
|
-
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
5
|
-
const MIN_PASSWORD_LENGTH = 8;
|
|
6
|
-
class InputValidator {
|
|
7
|
-
validate(input) {
|
|
8
|
-
const errors = [];
|
|
9
|
-
if (!input.email) {
|
|
10
|
-
errors.push('Email is required');
|
|
11
|
-
}
|
|
12
|
-
else if (!this.isValidEmail(input.email)) {
|
|
13
|
-
errors.push('Invalid email format');
|
|
14
|
-
}
|
|
15
|
-
if (!input.password) {
|
|
16
|
-
errors.push('Password is required');
|
|
17
|
-
}
|
|
18
|
-
else if (!this.isStrongPassword(input.password)) {
|
|
19
|
-
errors.push(`Password must be at least ${MIN_PASSWORD_LENGTH} characters and contain uppercase, lowercase, number, and special character`);
|
|
20
|
-
}
|
|
21
|
-
if (!input.name) {
|
|
22
|
-
errors.push('Name is required');
|
|
23
|
-
}
|
|
24
|
-
return {
|
|
25
|
-
isValid: errors.length === 0,
|
|
26
|
-
errors,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
isValidEmail(email) {
|
|
30
|
-
return EMAIL_REGEX.test(email);
|
|
31
|
-
}
|
|
32
|
-
isStrongPassword(password) {
|
|
33
|
-
if (password.length < MIN_PASSWORD_LENGTH) {
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
const hasUppercase = /[A-Z]/.test(password);
|
|
37
|
-
const hasLowercase = /[a-z]/.test(password);
|
|
38
|
-
const hasNumber = /\d/.test(password);
|
|
39
|
-
const hasSpecialChar = /[!@#$%^&*(),.?":{}|<>]/.test(password);
|
|
40
|
-
return hasUppercase && hasLowercase && hasNumber && hasSpecialChar;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
exports.InputValidator = InputValidator;
|
|
44
|
-
//# sourceMappingURL=validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/registration/validator.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACjD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAa,cAAc;IACzB,QAAQ,CAAC,KAAgB;QACvB,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,6BAA6B,mBAAmB,6EAA6E,CAC9H,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,gBAAgB,CAAC,QAAgB;QACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,cAAc,GAAG,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/D,OAAO,YAAY,IAAI,YAAY,IAAI,SAAS,IAAI,cAAc,CAAC;IACrE,CAAC;CACF;AA5CD,wCA4CC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UserInput, ValidationResult } from './types';
|
|
2
|
-
export declare const validateEmail: (email: string) => boolean;
|
|
3
|
-
export declare const validatePassword: (password: string) => string[];
|
|
4
|
-
export declare const validateUserInput: (input: UserInput) => ValidationResult;
|
|
5
|
-
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/registration/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAWtD,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAE7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,KAAG,MAAM,EAwBzD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,KAAG,gBAwBpD,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateUserInput = exports.validatePassword = exports.validateEmail = void 0;
|
|
4
|
-
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
5
|
-
const MIN_PASSWORD_LENGTH = 8;
|
|
6
|
-
const PASSWORD_REQUIREMENTS = {
|
|
7
|
-
uppercase: /[A-Z]/,
|
|
8
|
-
lowercase: /[a-z]/,
|
|
9
|
-
number: /[0-9]/,
|
|
10
|
-
special: /[!@#$%^&*(),.?":{}|<>]/,
|
|
11
|
-
};
|
|
12
|
-
const validateEmail = (email) => {
|
|
13
|
-
return EMAIL_REGEX.test(email);
|
|
14
|
-
};
|
|
15
|
-
exports.validateEmail = validateEmail;
|
|
16
|
-
const validatePassword = (password) => {
|
|
17
|
-
const errors = [];
|
|
18
|
-
if (password.length < MIN_PASSWORD_LENGTH) {
|
|
19
|
-
errors.push(`Password must be at least ${MIN_PASSWORD_LENGTH} characters long`);
|
|
20
|
-
}
|
|
21
|
-
if (!PASSWORD_REQUIREMENTS.uppercase.test(password)) {
|
|
22
|
-
errors.push('Password must contain at least one uppercase letter');
|
|
23
|
-
}
|
|
24
|
-
if (!PASSWORD_REQUIREMENTS.lowercase.test(password)) {
|
|
25
|
-
errors.push('Password must contain at least one lowercase letter');
|
|
26
|
-
}
|
|
27
|
-
if (!PASSWORD_REQUIREMENTS.number.test(password)) {
|
|
28
|
-
errors.push('Password must contain at least one number');
|
|
29
|
-
}
|
|
30
|
-
if (!PASSWORD_REQUIREMENTS.special.test(password)) {
|
|
31
|
-
errors.push('Password must contain at least one special character');
|
|
32
|
-
}
|
|
33
|
-
return errors;
|
|
34
|
-
};
|
|
35
|
-
exports.validatePassword = validatePassword;
|
|
36
|
-
const validateUserInput = (input) => {
|
|
37
|
-
const errors = [];
|
|
38
|
-
if (!input.name || input.name.trim().length === 0) {
|
|
39
|
-
errors.push('Name is required');
|
|
40
|
-
}
|
|
41
|
-
if (!input.email || input.email.trim().length === 0) {
|
|
42
|
-
errors.push('Email is required');
|
|
43
|
-
}
|
|
44
|
-
else if (!(0, exports.validateEmail)(input.email)) {
|
|
45
|
-
errors.push('Email format is invalid');
|
|
46
|
-
}
|
|
47
|
-
if (!input.password || input.password.length === 0) {
|
|
48
|
-
errors.push('Password is required');
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
const passwordErrors = (0, exports.validatePassword)(input.password);
|
|
52
|
-
errors.push(...passwordErrors);
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
isValid: errors.length === 0,
|
|
56
|
-
errors,
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
exports.validateUserInput = validateUserInput;
|
|
60
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/registration/validators.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAAG,4BAA4B,CAAC;AACjD,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,qBAAqB,GAAG;IAC5B,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,wBAAwB;CAClC,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,KAAa,EAAW,EAAE;IACtD,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAEK,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAY,EAAE;IAC7D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,6BAA6B,mBAAmB,kBAAkB,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAxBW,QAAA,gBAAgB,oBAwB3B;AAEK,MAAM,iBAAiB,GAAG,CAAC,KAAgB,EAAoB,EAAE;IACtE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,CAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B"}
|
package/dist/sync/cache.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CacheConfig } from './types';
|
|
2
|
-
export declare class CacheManager<T> {
|
|
3
|
-
private cache;
|
|
4
|
-
private readonly config;
|
|
5
|
-
constructor(config: CacheConfig);
|
|
6
|
-
set(key: string, data: T): void;
|
|
7
|
-
get(key: string): T | undefined;
|
|
8
|
-
has(key: string): boolean;
|
|
9
|
-
invalidate(key: string): void;
|
|
10
|
-
clear(): void;
|
|
11
|
-
private evictExpired;
|
|
12
|
-
private evictOldest;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=cache.d.ts.map
|
package/dist/sync/cache.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/sync/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,MAAM,SAAS,CAAC;AAElD,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,WAAW;IAI/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAqB/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAkB/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,WAAW;CAepB"}
|
package/dist/sync/cache.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CacheManager = void 0;
|
|
4
|
-
class CacheManager {
|
|
5
|
-
constructor(config) {
|
|
6
|
-
this.cache = new Map();
|
|
7
|
-
this.config = config;
|
|
8
|
-
}
|
|
9
|
-
set(key, data) {
|
|
10
|
-
if (!this.config.enabled) {
|
|
11
|
-
return;
|
|
12
|
-
}
|
|
13
|
-
this.evictExpired();
|
|
14
|
-
if (this.config.maxSize && this.cache.size >= this.config.maxSize) {
|
|
15
|
-
this.evictOldest();
|
|
16
|
-
}
|
|
17
|
-
const timestamp = Date.now();
|
|
18
|
-
const entry = {
|
|
19
|
-
data,
|
|
20
|
-
timestamp,
|
|
21
|
-
expiresAt: timestamp + this.config.ttlMs,
|
|
22
|
-
};
|
|
23
|
-
this.cache.set(key, entry);
|
|
24
|
-
}
|
|
25
|
-
get(key) {
|
|
26
|
-
if (!this.config.enabled) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
const entry = this.cache.get(key);
|
|
30
|
-
if (!entry) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
if (Date.now() > entry.expiresAt) {
|
|
34
|
-
this.cache.delete(key);
|
|
35
|
-
return undefined;
|
|
36
|
-
}
|
|
37
|
-
return entry.data;
|
|
38
|
-
}
|
|
39
|
-
has(key) {
|
|
40
|
-
return this.get(key) !== undefined;
|
|
41
|
-
}
|
|
42
|
-
invalidate(key) {
|
|
43
|
-
this.cache.delete(key);
|
|
44
|
-
}
|
|
45
|
-
clear() {
|
|
46
|
-
this.cache.clear();
|
|
47
|
-
}
|
|
48
|
-
evictExpired() {
|
|
49
|
-
const now = Date.now();
|
|
50
|
-
const keysToDelete = [];
|
|
51
|
-
this.cache.forEach((entry, key) => {
|
|
52
|
-
if (now > entry.expiresAt) {
|
|
53
|
-
keysToDelete.push(key);
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
keysToDelete.forEach(key => this.cache.delete(key));
|
|
57
|
-
}
|
|
58
|
-
evictOldest() {
|
|
59
|
-
let oldestKey;
|
|
60
|
-
let oldestTimestamp = Infinity;
|
|
61
|
-
this.cache.forEach((entry, key) => {
|
|
62
|
-
if (entry.timestamp < oldestTimestamp) {
|
|
63
|
-
oldestTimestamp = entry.timestamp;
|
|
64
|
-
oldestKey = key;
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
if (oldestKey) {
|
|
68
|
-
this.cache.delete(oldestKey);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.CacheManager = CacheManager;
|
|
73
|
-
//# sourceMappingURL=cache.js.map
|
package/dist/sync/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/sync/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/index.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { DataSyncService } from './service';
|
|
2
|
-
export { CacheManager } from './cache';
|
|
3
|
-
export { BaseDataSource, HTTPDataSource, StaticDataSource } from './source';
|
|
4
|
-
export { createResolver, LastWriteWinsResolver, HighestPriorityResolver, MergeResolver, } from './resolver';
|
|
5
|
-
export type { DataSource, SyncResult, SyncOptions, CacheConfig, Conflict, ConflictValue, ConflictStrategy, ConflictResolver, CacheEntry, } from './types';
|
|
6
|
-
export { SyncError, NetworkError } from './types';
|
|
7
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/sync/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/sync/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkError = exports.SyncError = exports.MergeResolver = exports.HighestPriorityResolver = exports.LastWriteWinsResolver = exports.createResolver = exports.StaticDataSource = exports.HTTPDataSource = exports.BaseDataSource = exports.CacheManager = exports.DataSyncService = void 0;
|
|
4
|
-
var service_1 = require("./service");
|
|
5
|
-
Object.defineProperty(exports, "DataSyncService", { enumerable: true, get: function () { return service_1.DataSyncService; } });
|
|
6
|
-
var cache_1 = require("./cache");
|
|
7
|
-
Object.defineProperty(exports, "CacheManager", { enumerable: true, get: function () { return cache_1.CacheManager; } });
|
|
8
|
-
var source_1 = require("./source");
|
|
9
|
-
Object.defineProperty(exports, "BaseDataSource", { enumerable: true, get: function () { return source_1.BaseDataSource; } });
|
|
10
|
-
Object.defineProperty(exports, "HTTPDataSource", { enumerable: true, get: function () { return source_1.HTTPDataSource; } });
|
|
11
|
-
Object.defineProperty(exports, "StaticDataSource", { enumerable: true, get: function () { return source_1.StaticDataSource; } });
|
|
12
|
-
var resolver_1 = require("./resolver");
|
|
13
|
-
Object.defineProperty(exports, "createResolver", { enumerable: true, get: function () { return resolver_1.createResolver; } });
|
|
14
|
-
Object.defineProperty(exports, "LastWriteWinsResolver", { enumerable: true, get: function () { return resolver_1.LastWriteWinsResolver; } });
|
|
15
|
-
Object.defineProperty(exports, "HighestPriorityResolver", { enumerable: true, get: function () { return resolver_1.HighestPriorityResolver; } });
|
|
16
|
-
Object.defineProperty(exports, "MergeResolver", { enumerable: true, get: function () { return resolver_1.MergeResolver; } });
|
|
17
|
-
var types_1 = require("./types");
|
|
18
|
-
Object.defineProperty(exports, "SyncError", { enumerable: true, get: function () { return types_1.SyncError; } });
|
|
19
|
-
Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return types_1.NetworkError; } });
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/sync/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":";;;AAAA,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,mCAA4E;AAAnE,wGAAA,cAAc,OAAA;AAAE,wGAAA,cAAc,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AACzD,uCAKoB;AAJlB,0GAAA,cAAc,OAAA;AACd,iHAAA,qBAAqB,OAAA;AACrB,mHAAA,uBAAuB,OAAA;AACvB,yGAAA,aAAa,OAAA;AAaf,iCAAkD;AAAzC,kGAAA,SAAS,OAAA;AAAE,qGAAA,YAAY,OAAA"}
|
package/dist/sync/resolver.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Conflict, ConflictResolver, ConflictStrategy } from './types';
|
|
2
|
-
export declare class LastWriteWinsResolver<T> implements ConflictResolver<T> {
|
|
3
|
-
resolve(conflict: Conflict<T>): T;
|
|
4
|
-
}
|
|
5
|
-
export declare class HighestPriorityResolver<T> implements ConflictResolver<T> {
|
|
6
|
-
resolve(conflict: Conflict<T>): T;
|
|
7
|
-
}
|
|
8
|
-
export declare class MergeResolver implements ConflictResolver<Record<string, unknown>> {
|
|
9
|
-
resolve(conflict: Conflict<Record<string, unknown>>): Record<string, unknown>;
|
|
10
|
-
}
|
|
11
|
-
export declare const createResolver: <T>(strategy: ConflictStrategy, customResolver?: ConflictResolver<T>) => ConflictResolver<T>;
|
|
12
|
-
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/sync/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEvE,qBAAa,qBAAqB,CAAC,CAAC,CAAE,YAAW,gBAAgB,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;CAGlC;AAED,qBAAa,uBAAuB,CAAC,CAAC,CAAE,YAAW,gBAAgB,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;CAIlC;AAED,qBAAa,aAAc,YAAW,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAS9E;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,UAAU,gBAAgB,EAC1B,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,KACnC,gBAAgB,CAAC,CAAC,CAcpB,CAAC"}
|
package/dist/sync/resolver.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createResolver = exports.MergeResolver = exports.HighestPriorityResolver = exports.LastWriteWinsResolver = void 0;
|
|
4
|
-
class LastWriteWinsResolver {
|
|
5
|
-
resolve(conflict) {
|
|
6
|
-
return conflict.values[conflict.values.length - 1].value;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
exports.LastWriteWinsResolver = LastWriteWinsResolver;
|
|
10
|
-
class HighestPriorityResolver {
|
|
11
|
-
resolve(conflict) {
|
|
12
|
-
const sorted = [...conflict.values].sort((a, b) => b.priority - a.priority);
|
|
13
|
-
return sorted[0].value;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.HighestPriorityResolver = HighestPriorityResolver;
|
|
17
|
-
class MergeResolver {
|
|
18
|
-
resolve(conflict) {
|
|
19
|
-
const merged = {};
|
|
20
|
-
conflict.values.forEach(({ value }) => {
|
|
21
|
-
Object.assign(merged, value);
|
|
22
|
-
});
|
|
23
|
-
return merged;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.MergeResolver = MergeResolver;
|
|
27
|
-
const createResolver = (strategy, customResolver) => {
|
|
28
|
-
switch (strategy) {
|
|
29
|
-
case 'last-write-wins':
|
|
30
|
-
return new LastWriteWinsResolver();
|
|
31
|
-
case 'highest-priority':
|
|
32
|
-
return new HighestPriorityResolver();
|
|
33
|
-
case 'merge':
|
|
34
|
-
return new MergeResolver();
|
|
35
|
-
case 'custom':
|
|
36
|
-
if (!customResolver) {
|
|
37
|
-
throw new Error('Custom resolver required for custom strategy');
|
|
38
|
-
}
|
|
39
|
-
return customResolver;
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
exports.createResolver = createResolver;
|
|
43
|
-
//# sourceMappingURL=resolver.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/sync/resolver.ts"],"names":[],"mappings":";;;AAEA,MAAa,qBAAqB;IAChC,OAAO,CAAC,QAAqB;QAC3B,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3D,CAAC;CACF;AAJD,sDAIC;AAED,MAAa,uBAAuB;IAClC,OAAO,CAAC,QAAqB;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzB,CAAC;CACF;AALD,0DAKC;AAED,MAAa,aAAa;IACxB,OAAO,CAAC,QAA2C;QACjD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACpC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAVD,sCAUC;AAEM,MAAM,cAAc,GAAG,CAC5B,QAA0B,EAC1B,cAAoC,EACf,EAAE;IACvB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,iBAAiB;YACpB,OAAO,IAAI,qBAAqB,EAAK,CAAC;QACxC,KAAK,kBAAkB;YACrB,OAAO,IAAI,uBAAuB,EAAK,CAAC;QAC1C,KAAK,OAAO;YACV,OAAO,IAAI,aAAa,EAAyB,CAAC;QACpD,KAAK,QAAQ;YACX,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
|
package/dist/sync/service.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { DataSource, SyncResult, SyncOptions } from './types';
|
|
2
|
-
export declare class DataSyncService<T> {
|
|
3
|
-
private readonly cache;
|
|
4
|
-
private readonly options;
|
|
5
|
-
private readonly sources;
|
|
6
|
-
constructor(options?: SyncOptions<T>);
|
|
7
|
-
addSource(source: DataSource<T>): void;
|
|
8
|
-
removeSource(sourceId: string): void;
|
|
9
|
-
sync(cacheKey?: string): Promise<SyncResult<T>>;
|
|
10
|
-
invalidateCache(cacheKey?: string): void;
|
|
11
|
-
clearCache(): void;
|
|
12
|
-
private performSync;
|
|
13
|
-
private fetchFromSources;
|
|
14
|
-
private fetchWithTimeout;
|
|
15
|
-
private mergeResults;
|
|
16
|
-
private mergeObjects;
|
|
17
|
-
private resolveConflict;
|
|
18
|
-
private isObject;
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/sync/service.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EAKZ,MAAM,SAAS,CAAC;AAiBjB,qBAAa,eAAe,CAAC,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;gBAErD,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM;IAOxC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;IAItC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI9B,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAcrD,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxC,UAAU,IAAI,IAAI;YAIJ,WAAW;YAwBX,gBAAgB;YAmChB,gBAAgB;IAc9B,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,YAAY;IA4CpB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,QAAQ;CAGjB"}
|
package/dist/sync/service.js
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DataSyncService = void 0;
|
|
4
|
-
const cache_1 = require("./cache");
|
|
5
|
-
const resolver_1 = require("./resolver");
|
|
6
|
-
const types_1 = require("./types");
|
|
7
|
-
const DEFAULT_CACHE_CONFIG = {
|
|
8
|
-
enabled: true,
|
|
9
|
-
ttlMs: 5 * 60 * 1000, // 5 minutes
|
|
10
|
-
maxSize: 100,
|
|
11
|
-
};
|
|
12
|
-
const DEFAULT_OPTIONS = {
|
|
13
|
-
cacheConfig: DEFAULT_CACHE_CONFIG,
|
|
14
|
-
conflictStrategy: 'highest-priority',
|
|
15
|
-
maxRetries: 3,
|
|
16
|
-
retryDelayMs: 1000,
|
|
17
|
-
timeout: 30000,
|
|
18
|
-
parallelFetch: true,
|
|
19
|
-
};
|
|
20
|
-
class DataSyncService {
|
|
21
|
-
constructor(options = {}) {
|
|
22
|
-
this.sources = new Map();
|
|
23
|
-
this.options = { ...DEFAULT_OPTIONS, ...options };
|
|
24
|
-
this.cache = new cache_1.CacheManager(this.options.cacheConfig ?? DEFAULT_CACHE_CONFIG);
|
|
25
|
-
}
|
|
26
|
-
addSource(source) {
|
|
27
|
-
this.sources.set(source.id, source);
|
|
28
|
-
}
|
|
29
|
-
removeSource(sourceId) {
|
|
30
|
-
this.sources.delete(sourceId);
|
|
31
|
-
}
|
|
32
|
-
async sync(cacheKey) {
|
|
33
|
-
const key = cacheKey ?? 'default';
|
|
34
|
-
const cached = this.cache.get(key);
|
|
35
|
-
if (cached) {
|
|
36
|
-
return cached;
|
|
37
|
-
}
|
|
38
|
-
const result = await this.performSync();
|
|
39
|
-
this.cache.set(key, result);
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
invalidateCache(cacheKey) {
|
|
43
|
-
const key = cacheKey ?? 'default';
|
|
44
|
-
this.cache.invalidate(key);
|
|
45
|
-
}
|
|
46
|
-
clearCache() {
|
|
47
|
-
this.cache.clear();
|
|
48
|
-
}
|
|
49
|
-
async performSync() {
|
|
50
|
-
const sourcesArray = Array.from(this.sources.values());
|
|
51
|
-
if (sourcesArray.length === 0) {
|
|
52
|
-
throw new Error('No data sources configured');
|
|
53
|
-
}
|
|
54
|
-
const { results, errors } = await this.fetchFromSources(sourcesArray);
|
|
55
|
-
if (results.length === 0) {
|
|
56
|
-
throw new Error('All data sources failed');
|
|
57
|
-
}
|
|
58
|
-
const { mergedData, conflicts } = this.mergeResults(results);
|
|
59
|
-
return {
|
|
60
|
-
data: mergedData,
|
|
61
|
-
sources: results.map(r => r.sourceId),
|
|
62
|
-
timestamp: Date.now(),
|
|
63
|
-
conflicts,
|
|
64
|
-
errors,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
async fetchFromSources(sources) {
|
|
68
|
-
const errors = [];
|
|
69
|
-
const results = [];
|
|
70
|
-
const fetchPromises = sources.map(async (source) => {
|
|
71
|
-
try {
|
|
72
|
-
const data = await this.fetchWithTimeout(source);
|
|
73
|
-
results.push({ sourceId: source.id, data, priority: source.priority });
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
const syncError = error instanceof types_1.SyncError
|
|
77
|
-
? error
|
|
78
|
-
: new types_1.SyncError(`Failed to fetch from source: ${source.id}`, source.id, error, true);
|
|
79
|
-
errors.push(syncError);
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
if (this.options.parallelFetch) {
|
|
83
|
-
await Promise.allSettled(fetchPromises);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
for (const promise of fetchPromises) {
|
|
87
|
-
await promise.catch(() => { });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return { results, errors };
|
|
91
|
-
}
|
|
92
|
-
async fetchWithTimeout(source) {
|
|
93
|
-
const timeout = this.options.timeout ?? DEFAULT_OPTIONS.timeout;
|
|
94
|
-
return Promise.race([
|
|
95
|
-
source.fetch(),
|
|
96
|
-
new Promise((_, reject) => setTimeout(() => reject(new types_1.SyncError(`Timeout fetching from ${source.id}`, source.id)), timeout)),
|
|
97
|
-
]);
|
|
98
|
-
}
|
|
99
|
-
mergeResults(results) {
|
|
100
|
-
if (results.length === 1) {
|
|
101
|
-
return { mergedData: results[0].data, conflicts: [] };
|
|
102
|
-
}
|
|
103
|
-
const conflicts = [];
|
|
104
|
-
if (this.isObject(results[0].data)) {
|
|
105
|
-
return this.mergeObjects(results, conflicts);
|
|
106
|
-
}
|
|
107
|
-
return this.resolveConflict(results, conflicts);
|
|
108
|
-
}
|
|
109
|
-
mergeObjects(results, conflicts) {
|
|
110
|
-
const merged = {};
|
|
111
|
-
const keyConflicts = new Map();
|
|
112
|
-
results.forEach(({ sourceId, data, priority }) => {
|
|
113
|
-
const obj = data;
|
|
114
|
-
Object.entries(obj).forEach(([key, value]) => {
|
|
115
|
-
if (merged[key] !== undefined && merged[key] !== value) {
|
|
116
|
-
if (!keyConflicts.has(key)) {
|
|
117
|
-
keyConflicts.set(key, [
|
|
118
|
-
{ value: merged[key], sourceId: 'merged', priority: 0 },
|
|
119
|
-
]);
|
|
120
|
-
}
|
|
121
|
-
keyConflicts.get(key).push({ value, sourceId, priority });
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
merged[key] = value;
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
keyConflicts.forEach((values, key) => {
|
|
129
|
-
const conflict = {
|
|
130
|
-
key,
|
|
131
|
-
values,
|
|
132
|
-
resolved: true,
|
|
133
|
-
};
|
|
134
|
-
const resolver = (0, resolver_1.createResolver)(this.options.conflictStrategy ?? 'highest-priority', this.options.customResolver);
|
|
135
|
-
const resolution = resolver.resolve(conflict);
|
|
136
|
-
merged[key] = resolution;
|
|
137
|
-
conflicts.push({ ...conflict, resolution });
|
|
138
|
-
});
|
|
139
|
-
return { mergedData: merged, conflicts };
|
|
140
|
-
}
|
|
141
|
-
resolveConflict(results, conflicts) {
|
|
142
|
-
const values = results.map(({ sourceId, data, priority }) => ({
|
|
143
|
-
value: data,
|
|
144
|
-
sourceId,
|
|
145
|
-
priority,
|
|
146
|
-
}));
|
|
147
|
-
const conflict = {
|
|
148
|
-
key: 'root',
|
|
149
|
-
values,
|
|
150
|
-
resolved: true,
|
|
151
|
-
};
|
|
152
|
-
const resolver = (0, resolver_1.createResolver)(this.options.conflictStrategy ?? 'highest-priority', this.options.customResolver);
|
|
153
|
-
const resolution = resolver.resolve(conflict);
|
|
154
|
-
conflicts.push({ ...conflict, resolution });
|
|
155
|
-
return { mergedData: resolution, conflicts };
|
|
156
|
-
}
|
|
157
|
-
isObject(value) {
|
|
158
|
-
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
exports.DataSyncService = DataSyncService;
|
|
162
|
-
//# sourceMappingURL=service.js.map
|
package/dist/sync/service.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/sync/service.ts"],"names":[],"mappings":"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"}
|
package/dist/sync/source.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { DataSource } from './types';
|
|
2
|
-
export declare abstract class BaseDataSource<T> implements DataSource<T> {
|
|
3
|
-
readonly id: string;
|
|
4
|
-
readonly priority: number;
|
|
5
|
-
constructor(id: string, priority?: number);
|
|
6
|
-
abstract fetch(): Promise<T>;
|
|
7
|
-
protected fetchWithRetry(fetchFn: () => Promise<T>, maxRetries?: number, delayMs?: number): Promise<T>;
|
|
8
|
-
private delay;
|
|
9
|
-
}
|
|
10
|
-
export declare class HTTPDataSource<T> extends BaseDataSource<T> {
|
|
11
|
-
private readonly url;
|
|
12
|
-
private readonly options?;
|
|
13
|
-
constructor(id: string, url: string, options?: RequestInit | undefined, priority?: number);
|
|
14
|
-
fetch(): Promise<T>;
|
|
15
|
-
}
|
|
16
|
-
export declare class StaticDataSource<T> extends BaseDataSource<T> {
|
|
17
|
-
private readonly data;
|
|
18
|
-
constructor(id: string, data: T, priority?: number);
|
|
19
|
-
fetch(): Promise<T>;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=source.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/sync/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgB,MAAM,SAAS,CAAC;AAEnD,8BAAsB,cAAc,CAAC,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,CAAC;aAE5C,EAAE,EAAE,MAAM;aACV,QAAQ,EAAE,MAAM;gBADhB,EAAE,EAAE,MAAM,EACV,QAAQ,GAAE,MAAU;IAGtC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;cAEZ,cAAc,CAC5B,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,UAAU,GAAE,MAAU,EACtB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,CAAC,CAAC;IAmBb,OAAO,CAAC,KAAK;CAGd;AAED,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAGpD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAFzB,EAAE,EAAE,MAAM,EACO,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,YAAA,EACtC,QAAQ,GAAE,MAAU;IAKhB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;CAW1B;AAED,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,cAAc,CAAC,CAAC,CAAC;IAGtD,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADrB,EAAE,EAAE,MAAM,EACO,IAAI,EAAE,CAAC,EACxB,QAAQ,GAAE,MAAU;IAKhB,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC;CAG1B"}
|
package/dist/sync/source.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StaticDataSource = exports.HTTPDataSource = exports.BaseDataSource = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
5
|
-
class BaseDataSource {
|
|
6
|
-
constructor(id, priority = 0) {
|
|
7
|
-
this.id = id;
|
|
8
|
-
this.priority = priority;
|
|
9
|
-
}
|
|
10
|
-
async fetchWithRetry(fetchFn, maxRetries = 3, delayMs = 1000) {
|
|
11
|
-
let lastError;
|
|
12
|
-
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
13
|
-
try {
|
|
14
|
-
return await fetchFn();
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
lastError = error;
|
|
18
|
-
if (attempt < maxRetries) {
|
|
19
|
-
const backoffDelay = delayMs * Math.pow(2, attempt);
|
|
20
|
-
await this.delay(backoffDelay);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
throw new types_1.NetworkError(this.id, lastError);
|
|
25
|
-
}
|
|
26
|
-
delay(ms) {
|
|
27
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.BaseDataSource = BaseDataSource;
|
|
31
|
-
class HTTPDataSource extends BaseDataSource {
|
|
32
|
-
constructor(id, url, options, priority = 0) {
|
|
33
|
-
super(id, priority);
|
|
34
|
-
this.url = url;
|
|
35
|
-
this.options = options;
|
|
36
|
-
}
|
|
37
|
-
async fetch() {
|
|
38
|
-
return this.fetchWithRetry(async () => {
|
|
39
|
-
const response = await fetch(this.url, this.options);
|
|
40
|
-
if (!response.ok) {
|
|
41
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
42
|
-
}
|
|
43
|
-
return await response.json();
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.HTTPDataSource = HTTPDataSource;
|
|
48
|
-
class StaticDataSource extends BaseDataSource {
|
|
49
|
-
constructor(id, data, priority = 0) {
|
|
50
|
-
super(id, priority);
|
|
51
|
-
this.data = data;
|
|
52
|
-
}
|
|
53
|
-
async fetch() {
|
|
54
|
-
return Promise.resolve(this.data);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.StaticDataSource = StaticDataSource;
|
|
58
|
-
//# sourceMappingURL=source.js.map
|
package/dist/sync/source.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/sync/source.ts"],"names":[],"mappings":";;;AAAA,mCAAmD;AAEnD,MAAsB,cAAc;IAClC,YACkB,EAAU,EACV,WAAmB,CAAC;QADpB,OAAE,GAAF,EAAE,CAAQ;QACV,aAAQ,GAAR,QAAQ,CAAY;IACnC,CAAC;IAIM,KAAK,CAAC,cAAc,CAC5B,OAAyB,EACzB,aAAqB,CAAC,EACtB,UAAkB,IAAI;QAEtB,IAAI,SAAkB,CAAC;QAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,CAAC;gBAElB,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;oBACzB,MAAM,YAAY,GAAG,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACpD,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,oBAAY,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CACF;AAlCD,wCAkCC;AAED,MAAa,cAAkB,SAAQ,cAAiB;IACtD,YACE,EAAU,EACO,GAAW,EACX,OAAqB,EACtC,WAAmB,CAAC;QAEpB,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAJH,QAAG,GAAH,GAAG,CAAQ;QACX,YAAO,GAAP,OAAO,CAAc;IAIxC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAO,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AArBD,wCAqBC;AAED,MAAa,gBAAoB,SAAQ,cAAiB;IACxD,YACE,EAAU,EACO,IAAO,EACxB,WAAmB,CAAC;QAEpB,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAHH,SAAI,GAAJ,IAAI,CAAG;IAI1B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF;AAZD,4CAYC"}
|