velocious 1.0.494 → 1.0.496

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 (60) hide show
  1. package/build/database/record/index.js +2 -0
  2. package/build/database/record/validation-messages.js +50 -0
  3. package/build/database/record/validators/length.js +52 -0
  4. package/build/database/record/validators/presence.js +4 -1
  5. package/build/database/record/validators/uniqueness.js +4 -1
  6. package/build/frontend-model-resource/base-resource.js +175 -5
  7. package/build/frontend-models/resource-definition.js +49 -1
  8. package/build/src/database/record/index.d.ts.map +1 -1
  9. package/build/src/database/record/index.js +3 -1
  10. package/build/src/database/record/validation-messages.d.ts +38 -0
  11. package/build/src/database/record/validation-messages.d.ts.map +1 -0
  12. package/build/src/database/record/validation-messages.js +45 -0
  13. package/build/src/database/record/validators/length.d.ts +12 -0
  14. package/build/src/database/record/validators/length.d.ts.map +1 -0
  15. package/build/src/database/record/validators/length.js +45 -0
  16. package/build/src/database/record/validators/presence.d.ts.map +1 -1
  17. package/build/src/database/record/validators/presence.js +4 -2
  18. package/build/src/database/record/validators/uniqueness.d.ts.map +1 -1
  19. package/build/src/database/record/validators/uniqueness.js +4 -2
  20. package/build/src/frontend-model-resource/base-resource.d.ts +184 -5
  21. package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
  22. package/build/src/frontend-model-resource/base-resource.js +155 -6
  23. package/build/src/frontend-models/resource-definition.d.ts +41 -0
  24. package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
  25. package/build/src/frontend-models/resource-definition.js +45 -2
  26. package/build/src/sync/sync-envelope-replay-service.d.ts +166 -3
  27. package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
  28. package/build/src/sync/sync-envelope-replay-service.js +304 -12
  29. package/build/src/sync/sync-replay-upsert-applier.d.ts +1 -0
  30. package/build/src/sync/sync-replay-upsert-applier.d.ts.map +1 -1
  31. package/build/src/sync/sync-replay-upsert-applier.js +2 -1
  32. package/build/src/sync/sync-resource-base.d.ts +16 -32
  33. package/build/src/sync/sync-resource-base.d.ts.map +1 -1
  34. package/build/src/sync/sync-resource-base.js +31 -43
  35. package/build/src/testing/test-runner.d.ts +24 -0
  36. package/build/src/testing/test-runner.d.ts.map +1 -1
  37. package/build/src/testing/test-runner.js +99 -9
  38. package/build/sync/sync-envelope-replay-service.js +350 -10
  39. package/build/sync/sync-replay-upsert-applier.js +1 -0
  40. package/build/sync/sync-resource-base.js +32 -45
  41. package/build/testing/test-runner.js +104 -8
  42. package/build/tsconfig.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/scripts/run-tests.js +6 -0
  45. package/src/database/record/index.js +2 -0
  46. package/src/database/record/validation-messages.js +50 -0
  47. package/src/database/record/validators/length.js +52 -0
  48. package/src/database/record/validators/presence.js +4 -1
  49. package/src/database/record/validators/uniqueness.js +4 -1
  50. package/src/frontend-model-resource/base-resource.js +175 -5
  51. package/src/frontend-models/resource-definition.js +49 -1
  52. package/src/sync/sync-envelope-replay-service.js +350 -10
  53. package/src/sync/sync-replay-upsert-applier.js +1 -0
  54. package/src/sync/sync-resource-base.js +32 -45
  55. package/src/testing/test-runner.js +104 -8
  56. package/build/src/sync/sync-attribute-normalizer.d.ts +0 -105
  57. package/build/src/sync/sync-attribute-normalizer.d.ts.map +0 -1
  58. package/build/src/sync/sync-attribute-normalizer.js +0 -172
  59. package/build/sync/sync-attribute-normalizer.js +0 -186
  60. package/src/sync/sync-attribute-normalizer.js +0 -186
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Builds a validation message predicate through the framework's translation
3
+ * layer. The message is looked up under `velocious.errors.messages.<type>`
4
+ * with the English default as fallback; `%{variable}` placeholders are
5
+ * interpolated from the given variables. Without a translator the English
6
+ * default is interpolated directly.
7
+ * @param {object} args - Options.
8
+ * @param {ValidationMessageTranslator | null} [args.translator] - Translator resolving message IDs (usually `configuration.getTranslator()`).
9
+ * @param {string} args.type - Message type key in {@link VALIDATION_MESSAGE_DEFAULTS}.
10
+ * @param {Record<string, string | number>} [args.variables] - Interpolation variables.
11
+ * @returns {string} Localized message predicate.
12
+ */
13
+ export default function validationMessage({ translator, type, variables }: {
14
+ translator?: ValidationMessageTranslator | null | undefined;
15
+ type: string;
16
+ variables?: Record<string, string | number> | undefined;
17
+ }): string;
18
+ /**
19
+ * Translates a validation message ID into a localized message.
20
+ * @callback ValidationMessageTranslator
21
+ * @param {string} msgID - Stable message ID (e.g. "velocious.errors.messages.blank").
22
+ * @param {Record<string, string | number> & {defaultValue?: string}} [args] - Interpolation variables plus the English default message.
23
+ * @returns {string} Localized message.
24
+ */
25
+ /**
26
+ * English default validation message predicates keyed by message type,
27
+ * matching Rails' `errors.messages.*` where an equivalent exists. Values may
28
+ * contain `%{variable}` placeholders.
29
+ * @type {Record<string, string>}
30
+ */
31
+ export const VALIDATION_MESSAGE_DEFAULTS: Record<string, string>;
32
+ /**
33
+ * Translates a validation message ID into a localized message.
34
+ */
35
+ export type ValidationMessageTranslator = (msgID: string, args?: (Record<string, string | number> & {
36
+ defaultValue?: string;
37
+ }) | undefined) => string;
38
+ //# sourceMappingURL=validation-messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-messages.d.ts","sourceRoot":"","sources":["../../../../src/database/record/validation-messages.js"],"names":[],"mappings":"AAuBA;;;;;;;;;;;GAWG;AACH,2EALG;IAAkD,UAAU;IACvC,IAAI,EAAjB,MAAM;IACiC,SAAS;CACxD,GAAU,MAAM,CAgBlB;AA/CD;;;;;;GAMG;AAEH;;;;;GAKG;AACH,0CAFU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/B;;;;kDAhBU,MAAM;mBAC4C,MAAM;mBACtD,MAAM"}
@@ -0,0 +1,45 @@
1
+ // @ts-check
2
+ /**
3
+ * Translates a validation message ID into a localized message.
4
+ * @callback ValidationMessageTranslator
5
+ * @param {string} msgID - Stable message ID (e.g. "velocious.errors.messages.blank").
6
+ * @param {Record<string, string | number> & {defaultValue?: string}} [args] - Interpolation variables plus the English default message.
7
+ * @returns {string} Localized message.
8
+ */
9
+ /**
10
+ * English default validation message predicates keyed by message type,
11
+ * matching Rails' `errors.messages.*` where an equivalent exists. Values may
12
+ * contain `%{variable}` placeholders.
13
+ * @type {Record<string, string>}
14
+ */
15
+ export const VALIDATION_MESSAGE_DEFAULTS = {
16
+ blank: "can't be blank",
17
+ taken: "has already been taken",
18
+ too_long: "is too long (maximum is %{count} characters)",
19
+ too_short: "is too short (minimum is %{count} characters)"
20
+ };
21
+ /**
22
+ * Builds a validation message predicate through the framework's translation
23
+ * layer. The message is looked up under `velocious.errors.messages.<type>`
24
+ * with the English default as fallback; `%{variable}` placeholders are
25
+ * interpolated from the given variables. Without a translator the English
26
+ * default is interpolated directly.
27
+ * @param {object} args - Options.
28
+ * @param {ValidationMessageTranslator | null} [args.translator] - Translator resolving message IDs (usually `configuration.getTranslator()`).
29
+ * @param {string} args.type - Message type key in {@link VALIDATION_MESSAGE_DEFAULTS}.
30
+ * @param {Record<string, string | number>} [args.variables] - Interpolation variables.
31
+ * @returns {string} Localized message predicate.
32
+ */
33
+ export default function validationMessage({ translator, type, variables }) {
34
+ const defaultMessage = VALIDATION_MESSAGE_DEFAULTS[type];
35
+ if (!defaultMessage)
36
+ throw new Error(`Unknown validation message type: ${String(type)}`);
37
+ if (translator)
38
+ return translator(`velocious.errors.messages.${type}`, { ...variables, defaultValue: defaultMessage });
39
+ let message = defaultMessage;
40
+ for (const [variableName, variableValue] of Object.entries(variables ?? {})) {
41
+ message = message.replaceAll(`%{${variableName}}`, String(variableValue));
42
+ }
43
+ return message;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvdmFsaWRhdGlvbi1tZXNzYWdlcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7Ozs7OztHQU1HO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLEtBQUssRUFBRSx3QkFBd0I7SUFDL0IsUUFBUSxFQUFFLDhDQUE4QztJQUN4RCxTQUFTLEVBQUUsK0NBQStDO0NBQzNELENBQUE7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxPQUFPLFVBQVUsaUJBQWlCLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQztJQUNyRSxNQUFNLGNBQWMsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUV4RCxJQUFJLENBQUMsY0FBYztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFeEYsSUFBSSxVQUFVO1FBQUUsT0FBTyxVQUFVLENBQUMsNkJBQTZCLElBQUksRUFBRSxFQUFFLEVBQUMsR0FBRyxTQUFTLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUE7SUFFcEgsSUFBSSxPQUFPLEdBQUcsY0FBYyxDQUFBO0lBRTVCLEtBQUssTUFBTSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzVFLE9BQU8sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssWUFBWSxHQUFHLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBUcmFuc2xhdGVzIGEgdmFsaWRhdGlvbiBtZXNzYWdlIElEIGludG8gYSBsb2NhbGl6ZWQgbWVzc2FnZS5cbiAqIEBjYWxsYmFjayBWYWxpZGF0aW9uTWVzc2FnZVRyYW5zbGF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dJRCAtIFN0YWJsZSBtZXNzYWdlIElEIChlLmcuIFwidmVsb2Npb3VzLmVycm9ycy5tZXNzYWdlcy5ibGFua1wiKS5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiAmIHtkZWZhdWx0VmFsdWU/OiBzdHJpbmd9fSBbYXJnc10gLSBJbnRlcnBvbGF0aW9uIHZhcmlhYmxlcyBwbHVzIHRoZSBFbmdsaXNoIGRlZmF1bHQgbWVzc2FnZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IExvY2FsaXplZCBtZXNzYWdlLlxuICovXG5cbi8qKlxuICogRW5nbGlzaCBkZWZhdWx0IHZhbGlkYXRpb24gbWVzc2FnZSBwcmVkaWNhdGVzIGtleWVkIGJ5IG1lc3NhZ2UgdHlwZSxcbiAqIG1hdGNoaW5nIFJhaWxzJyBgZXJyb3JzLm1lc3NhZ2VzLipgIHdoZXJlIGFuIGVxdWl2YWxlbnQgZXhpc3RzLiBWYWx1ZXMgbWF5XG4gKiBjb250YWluIGAle3ZhcmlhYmxlfWAgcGxhY2Vob2xkZXJzLlxuICogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZz59XG4gKi9cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX01FU1NBR0VfREVGQVVMVFMgPSB7XG4gIGJsYW5rOiBcImNhbid0IGJlIGJsYW5rXCIsXG4gIHRha2VuOiBcImhhcyBhbHJlYWR5IGJlZW4gdGFrZW5cIixcbiAgdG9vX2xvbmc6IFwiaXMgdG9vIGxvbmcgKG1heGltdW0gaXMgJXtjb3VudH0gY2hhcmFjdGVycylcIixcbiAgdG9vX3Nob3J0OiBcImlzIHRvbyBzaG9ydCAobWluaW11bSBpcyAle2NvdW50fSBjaGFyYWN0ZXJzKVwiXG59XG5cbi8qKlxuICogQnVpbGRzIGEgdmFsaWRhdGlvbiBtZXNzYWdlIHByZWRpY2F0ZSB0aHJvdWdoIHRoZSBmcmFtZXdvcmsncyB0cmFuc2xhdGlvblxuICogbGF5ZXIuIFRoZSBtZXNzYWdlIGlzIGxvb2tlZCB1cCB1bmRlciBgdmVsb2Npb3VzLmVycm9ycy5tZXNzYWdlcy48dHlwZT5gXG4gKiB3aXRoIHRoZSBFbmdsaXNoIGRlZmF1bHQgYXMgZmFsbGJhY2s7IGAle3ZhcmlhYmxlfWAgcGxhY2Vob2xkZXJzIGFyZVxuICogaW50ZXJwb2xhdGVkIGZyb20gdGhlIGdpdmVuIHZhcmlhYmxlcy4gV2l0aG91dCBhIHRyYW5zbGF0b3IgdGhlIEVuZ2xpc2hcbiAqIGRlZmF1bHQgaXMgaW50ZXJwb2xhdGVkIGRpcmVjdGx5LlxuICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBPcHRpb25zLlxuICogQHBhcmFtIHtWYWxpZGF0aW9uTWVzc2FnZVRyYW5zbGF0b3IgfCBudWxsfSBbYXJncy50cmFuc2xhdG9yXSAtIFRyYW5zbGF0b3IgcmVzb2x2aW5nIG1lc3NhZ2UgSURzICh1c3VhbGx5IGBjb25maWd1cmF0aW9uLmdldFRyYW5zbGF0b3IoKWApLlxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudHlwZSAtIE1lc3NhZ2UgdHlwZSBrZXkgaW4ge0BsaW5rIFZBTElEQVRJT05fTUVTU0FHRV9ERUZBVUxUU30uXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bWJlcj59IFthcmdzLnZhcmlhYmxlc10gLSBJbnRlcnBvbGF0aW9uIHZhcmlhYmxlcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IExvY2FsaXplZCBtZXNzYWdlIHByZWRpY2F0ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmFsaWRhdGlvbk1lc3NhZ2Uoe3RyYW5zbGF0b3IsIHR5cGUsIHZhcmlhYmxlc30pIHtcbiAgY29uc3QgZGVmYXVsdE1lc3NhZ2UgPSBWQUxJREFUSU9OX01FU1NBR0VfREVGQVVMVFNbdHlwZV1cblxuICBpZiAoIWRlZmF1bHRNZXNzYWdlKSB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdmFsaWRhdGlvbiBtZXNzYWdlIHR5cGU6ICR7U3RyaW5nKHR5cGUpfWApXG5cbiAgaWYgKHRyYW5zbGF0b3IpIHJldHVybiB0cmFuc2xhdG9yKGB2ZWxvY2lvdXMuZXJyb3JzLm1lc3NhZ2VzLiR7dHlwZX1gLCB7Li4udmFyaWFibGVzLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRNZXNzYWdlfSlcblxuICBsZXQgbWVzc2FnZSA9IGRlZmF1bHRNZXNzYWdlXG5cbiAgZm9yIChjb25zdCBbdmFyaWFibGVOYW1lLCB2YXJpYWJsZVZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YXJpYWJsZXMgPz8ge30pKSB7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZUFsbChgJXske3ZhcmlhYmxlTmFtZX19YCwgU3RyaW5nKHZhcmlhYmxlVmFsdWUpKVxuICB9XG5cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export default class VelociousDatabaseRecordValidatorsLength extends Base {
2
+ /**
3
+ * Adds a length validation error to the model.
4
+ * @param {import("../index.js").default} model - Model instance.
5
+ * @param {string} attributeName - Attribute name.
6
+ * @param {string} message - Translated message predicate.
7
+ * @returns {void}
8
+ */
9
+ _addError(model: import("../index.js").default, attributeName: string, message: string): void;
10
+ }
11
+ import Base from "./base.js";
12
+ //# sourceMappingURL=length.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"length.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/validators/length.js"],"names":[],"mappings":"AAKA;IAkCE;;;;;;OAMG;IACH,iBALW,OAAO,aAAa,EAAE,OAAO,iBAC7B,MAAM,WACN,MAAM,GACJ,IAAI,CAMhB;CACF;iBAjDgB,WAAW"}
@@ -0,0 +1,45 @@
1
+ // @ts-check
2
+ import Base from "./base.js";
3
+ import validationMessage from "../validation-messages.js";
4
+ export default class VelociousDatabaseRecordValidatorsLength extends Base {
5
+ /**
6
+ * Runs validate: bounds the value's string length by the `maximum` and/or
7
+ * `minimum` options. Absent values (null/undefined/"") are skipped — they
8
+ * are the presence validator's concern.
9
+ * @param {object} args - Options object.
10
+ * @param {import("../index.js").default} args.model - Model instance.
11
+ * @param {string} args.attributeName - Attribute name.
12
+ * @returns {Promise<void>} - Resolves when complete.
13
+ */
14
+ async validate({ model, attributeName }) {
15
+ const maximum = this.args?.maximum;
16
+ const minimum = this.args?.minimum;
17
+ if (typeof maximum != "number" && typeof minimum != "number") {
18
+ throw new Error("length validator requires a maximum and/or minimum option");
19
+ }
20
+ const rawValue = model.readAttribute(attributeName);
21
+ if (rawValue === null || rawValue === undefined || rawValue === "")
22
+ return;
23
+ const valueLength = String(rawValue).length;
24
+ const translator = model.getModelClass()._getConfiguration().getTranslator();
25
+ if (typeof maximum == "number" && valueLength > maximum) {
26
+ this._addError(model, attributeName, validationMessage({ translator, type: "too_long", variables: { count: maximum } }));
27
+ }
28
+ if (typeof minimum == "number" && valueLength < minimum) {
29
+ this._addError(model, attributeName, validationMessage({ translator, type: "too_short", variables: { count: minimum } }));
30
+ }
31
+ }
32
+ /**
33
+ * Adds a length validation error to the model.
34
+ * @param {import("../index.js").default} model - Model instance.
35
+ * @param {string} attributeName - Attribute name.
36
+ * @param {string} message - Translated message predicate.
37
+ * @returns {void}
38
+ */
39
+ _addError(model, attributeName, message) {
40
+ if (!(attributeName in model._validationErrors))
41
+ model._validationErrors[attributeName] = [];
42
+ model._validationErrors[attributeName].push({ type: "length", message });
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVuZ3RoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RhdGFiYXNlL3JlY29yZC92YWxpZGF0b3JzL2xlbmd0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8saUJBQWlCLE1BQU0sMkJBQTJCLENBQUE7QUFFekQsTUFBTSxDQUFDLE9BQU8sT0FBTyx1Q0FBd0MsU0FBUSxJQUFJO0lBQ3ZFOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUE7UUFDbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUE7UUFFbEMsSUFBSSxPQUFPLE9BQU8sSUFBSSxRQUFRLElBQUksT0FBTyxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFBO1FBQzlFLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRW5ELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLFFBQVEsS0FBSyxFQUFFO1lBQUUsT0FBTTtRQUUxRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBQzNDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBRTVFLElBQUksT0FBTyxPQUFPLElBQUksUUFBUSxJQUFJLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdEgsQ0FBQztRQUVELElBQUksT0FBTyxPQUFPLElBQUksUUFBUSxJQUFJLFdBQVcsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsaUJBQWlCLENBQUMsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsRUFBQyxLQUFLLEVBQUUsT0FBTyxFQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkgsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxPQUFPO1FBQ3JDLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUM7WUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBRTVGLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUE7SUFDeEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuaW1wb3J0IHZhbGlkYXRpb25NZXNzYWdlIGZyb20gXCIuLi92YWxpZGF0aW9uLW1lc3NhZ2VzLmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzRGF0YWJhc2VSZWNvcmRWYWxpZGF0b3JzTGVuZ3RoIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIHZhbGlkYXRlOiBib3VuZHMgdGhlIHZhbHVlJ3Mgc3RyaW5nIGxlbmd0aCBieSB0aGUgYG1heGltdW1gIGFuZC9vclxuICAgKiBgbWluaW11bWAgb3B0aW9ucy4gQWJzZW50IHZhbHVlcyAobnVsbC91bmRlZmluZWQvXCJcIikgYXJlIHNraXBwZWQg4oCUIHRoZXlcbiAgICogYXJlIHRoZSBwcmVzZW5jZSB2YWxpZGF0b3IncyBjb25jZXJuLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGUoe21vZGVsLCBhdHRyaWJ1dGVOYW1lfSkge1xuICAgIGNvbnN0IG1heGltdW0gPSB0aGlzLmFyZ3M/Lm1heGltdW1cbiAgICBjb25zdCBtaW5pbXVtID0gdGhpcy5hcmdzPy5taW5pbXVtXG5cbiAgICBpZiAodHlwZW9mIG1heGltdW0gIT0gXCJudW1iZXJcIiAmJiB0eXBlb2YgbWluaW11bSAhPSBcIm51bWJlclwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsZW5ndGggdmFsaWRhdG9yIHJlcXVpcmVzIGEgbWF4aW11bSBhbmQvb3IgbWluaW11bSBvcHRpb25cIilcbiAgICB9XG5cbiAgICBjb25zdCByYXdWYWx1ZSA9IG1vZGVsLnJlYWRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSlcblxuICAgIGlmIChyYXdWYWx1ZSA9PT0gbnVsbCB8fCByYXdWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHJhd1ZhbHVlID09PSBcIlwiKSByZXR1cm5cblxuICAgIGNvbnN0IHZhbHVlTGVuZ3RoID0gU3RyaW5nKHJhd1ZhbHVlKS5sZW5ndGhcbiAgICBjb25zdCB0cmFuc2xhdG9yID0gbW9kZWwuZ2V0TW9kZWxDbGFzcygpLl9nZXRDb25maWd1cmF0aW9uKCkuZ2V0VHJhbnNsYXRvcigpXG5cbiAgICBpZiAodHlwZW9mIG1heGltdW0gPT0gXCJudW1iZXJcIiAmJiB2YWx1ZUxlbmd0aCA+IG1heGltdW0pIHtcbiAgICAgIHRoaXMuX2FkZEVycm9yKG1vZGVsLCBhdHRyaWJ1dGVOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSh7dHJhbnNsYXRvciwgdHlwZTogXCJ0b29fbG9uZ1wiLCB2YXJpYWJsZXM6IHtjb3VudDogbWF4aW11bX19KSlcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG1pbmltdW0gPT0gXCJudW1iZXJcIiAmJiB2YWx1ZUxlbmd0aCA8IG1pbmltdW0pIHtcbiAgICAgIHRoaXMuX2FkZEVycm9yKG1vZGVsLCBhdHRyaWJ1dGVOYW1lLCB2YWxpZGF0aW9uTWVzc2FnZSh7dHJhbnNsYXRvciwgdHlwZTogXCJ0b29fc2hvcnRcIiwgdmFyaWFibGVzOiB7Y291bnQ6IG1pbmltdW19fSkpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsZW5ndGggdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgbW9kZWwuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vaW5kZXguanNcIikuZGVmYXVsdH0gbW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYnV0ZU5hbWUgLSBBdHRyaWJ1dGUgbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgLSBUcmFuc2xhdGVkIG1lc3NhZ2UgcHJlZGljYXRlLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIF9hZGRFcnJvcihtb2RlbCwgYXR0cmlidXRlTmFtZSwgbWVzc2FnZSkge1xuICAgIGlmICghKGF0dHJpYnV0ZU5hbWUgaW4gbW9kZWwuX3ZhbGlkYXRpb25FcnJvcnMpKSBtb2RlbC5fdmFsaWRhdGlvbkVycm9yc1thdHRyaWJ1dGVOYW1lXSA9IFtdXG5cbiAgICBtb2RlbC5fdmFsaWRhdGlvbkVycm9yc1thdHRyaWJ1dGVOYW1lXS5wdXNoKHt0eXBlOiBcImxlbmd0aFwiLCBtZXNzYWdlfSlcbiAgfVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/validators/presence.js"],"names":[],"mappings":"AAIA;CAiBC;iBAnBgB,WAAW"}
1
+ {"version":3,"file":"presence.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/validators/presence.js"],"names":[],"mappings":"AAKA;CAmBC;iBAtBgB,WAAW"}
@@ -1,5 +1,6 @@
1
1
  // @ts-check
2
2
  import Base from "./base.js";
3
+ import validationMessage from "../validation-messages.js";
3
4
  export default class VelociousDatabaseRecordValidatorsPresence extends Base {
4
5
  /**
5
6
  * Runs validate.
@@ -13,8 +14,9 @@ export default class VelociousDatabaseRecordValidatorsPresence extends Base {
13
14
  if (!attributeValue) {
14
15
  if (!(attributeName in model._validationErrors))
15
16
  model._validationErrors[attributeName] = [];
16
- model._validationErrors[attributeName].push({ type: "presence", message: "can't be blank" });
17
+ const translator = model.getModelClass()._getConfiguration().getTranslator();
18
+ model._validationErrors[attributeName].push({ type: "presence", message: validationMessage({ translator, type: "blank" }) });
17
19
  }
18
20
  }
19
21
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcmVjb3JkL3ZhbGlkYXRvcnMvcHJlc2VuY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUU1QixNQUFNLENBQUMsT0FBTyxPQUFPLHlDQUEwQyxTQUFRLElBQUk7SUFDekU7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBQztRQUNuQyxNQUFNLFFBQVEsR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUN2RixNQUFNLGNBQWMsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUE7UUFFdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxDQUFDLGFBQWEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUM7Z0JBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtZQUU1RixLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFBO1FBQzVGLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vYmFzZS5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkVmFsaWRhdG9yc1ByZXNlbmNlIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGUoe21vZGVsLCBhdHRyaWJ1dGVOYW1lfSkge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKVxuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gcmF3VmFsdWU/LnRyaW0oKVxuXG4gICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgaWYgKCEoYXR0cmlidXRlTmFtZSBpbiBtb2RlbC5fdmFsaWRhdGlvbkVycm9ycykpIG1vZGVsLl92YWxpZGF0aW9uRXJyb3JzW2F0dHJpYnV0ZU5hbWVdID0gW11cblxuICAgICAgbW9kZWwuX3ZhbGlkYXRpb25FcnJvcnNbYXR0cmlidXRlTmFtZV0ucHVzaCh7dHlwZTogXCJwcmVzZW5jZVwiLCBtZXNzYWdlOiBcImNhbid0IGJlIGJsYW5rXCJ9KVxuICAgIH1cbiAgfVxufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGF0YWJhc2UvcmVjb3JkL3ZhbGlkYXRvcnMvcHJlc2VuY2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUM1QixPQUFPLGlCQUFpQixNQUFNLDJCQUEyQixDQUFBO0FBRXpELE1BQU0sQ0FBQyxPQUFPLE9BQU8seUNBQTBDLFNBQVEsSUFBSTtJQUN6RTs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDO1FBQ25DLE1BQU0sUUFBUSxHQUFHLGlDQUFpQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFBO1FBQ3ZGLE1BQU0sY0FBYyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtRQUV2QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztnQkFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBRTVGLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBRTVFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7UUFDMUgsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlLmpzXCJcbmltcG9ydCB2YWxpZGF0aW9uTWVzc2FnZSBmcm9tIFwiLi4vdmFsaWRhdGlvbi1tZXNzYWdlcy5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlbG9jaW91c0RhdGFiYXNlUmVjb3JkVmFsaWRhdG9yc1ByZXNlbmNlIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGUoe21vZGVsLCBhdHRyaWJ1dGVOYW1lfSkge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovIChtb2RlbC5yZWFkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKVxuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gcmF3VmFsdWU/LnRyaW0oKVxuXG4gICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgaWYgKCEoYXR0cmlidXRlTmFtZSBpbiBtb2RlbC5fdmFsaWRhdGlvbkVycm9ycykpIG1vZGVsLl92YWxpZGF0aW9uRXJyb3JzW2F0dHJpYnV0ZU5hbWVdID0gW11cblxuICAgICAgY29uc3QgdHJhbnNsYXRvciA9IG1vZGVsLmdldE1vZGVsQ2xhc3MoKS5fZ2V0Q29uZmlndXJhdGlvbigpLmdldFRyYW5zbGF0b3IoKVxuXG4gICAgICBtb2RlbC5fdmFsaWRhdGlvbkVycm9yc1thdHRyaWJ1dGVOYW1lXS5wdXNoKHt0eXBlOiBcInByZXNlbmNlXCIsIG1lc3NhZ2U6IHZhbGlkYXRpb25NZXNzYWdlKHt0cmFuc2xhdG9yLCB0eXBlOiBcImJsYW5rXCJ9KX0pXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"uniqueness.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/validators/uniqueness.js"],"names":[],"mappings":"AAKA;IA8DE;;;;;;;;;OASG;IACH,0CAJW,OAAO,aAAa,EAAE,OAAO,eAC7B,MAAM,GACJ,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBlC;IAED;;;;;OAKG;IACH,0BAFa,MAAM,EAAE,CASpB;CACF;iBAjHgB,WAAW"}
1
+ {"version":3,"file":"uniqueness.d.ts","sourceRoot":"","sources":["../../../../../src/database/record/validators/uniqueness.js"],"names":[],"mappings":"AAMA;IAgEE;;;;;;;;;OASG;IACH,0CAJW,OAAO,aAAa,EAAE,OAAO,eAC7B,MAAM,GACJ,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBlC;IAED;;;;;OAKG;IACH,0BAFa,MAAM,EAAE,CASpB;CACF;iBApHgB,WAAW"}
@@ -1,6 +1,7 @@
1
1
  // @ts-check
2
2
  import Base from "./base.js";
3
3
  import * as inflection from "inflection";
4
+ import validationMessage from "../validation-messages.js";
4
5
  export default class VelociousDatabaseRecordValidatorsUniqueness extends Base {
5
6
  /**
6
7
  * Runs validate.
@@ -48,7 +49,8 @@ export default class VelociousDatabaseRecordValidatorsUniqueness extends Base {
48
49
  if (existingRecord) {
49
50
  if (!(attributeName in model._validationErrors))
50
51
  model._validationErrors[attributeName] = [];
51
- model._validationErrors[attributeName].push({ type: "uniqueness", message: "has already been taken" });
52
+ const translator = modelClass._getConfiguration().getTranslator();
53
+ model._validationErrors[attributeName].push({ type: "uniqueness", message: validationMessage({ translator, type: "taken" }) });
52
54
  }
53
55
  }
54
56
  /**
@@ -94,4 +96,4 @@ export default class VelociousDatabaseRecordValidatorsUniqueness extends Base {
94
96
  return [String(scope)];
95
97
  }
96
98
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlbmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvdmFsaWRhdG9ycy91bmlxdWVuZXNzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFFeEMsTUFBTSxDQUFDLE9BQU8sT0FBTywyQ0FBNEMsU0FBUSxJQUFJO0lBQzNFOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLG1EQUFtRCxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBRTFGLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUMxQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDbEQsTUFBTSxjQUFjLEdBQUcsOEJBQThCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUE7UUFDMUYsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBRXBFOztxREFFNkM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBRXBCLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLGNBQWMsQ0FBQTtRQUVuRCxvRUFBb0U7UUFDcEUsb0VBQW9FO1FBQ3BFLDREQUE0RDtRQUM1RCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtRQUVsRCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsV0FB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QUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQTtRQUNyQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFFdEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQmFzZSBmcm9tIFwiLi9iYXNlLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZFZhbGlkYXRvcnNVbmlxdWVuZXNzIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGUoe21vZGVsLCBhdHRyaWJ1dGVOYW1lfSkge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWwuY29uc3RydWN0b3IpXG5cbiAgICBjb25zdCBjb25uZWN0aW9uID0gbW9kZWxDbGFzcy5jb25uZWN0aW9uKClcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBtb2RlbENsYXNzLl9nZXRUYWJsZSgpLmdldE5hbWUoKVxuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKVxuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpXG5cbiAgICAvKipcbiAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+fSAqL1xuICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICB3aGVyZUFyZ3NbYXR0cmlidXRlTmFtZVVuZGVyc2NvcmVdID0gYXR0cmlidXRlVmFsdWVcblxuICAgIC8vIFJhaWxzIHBhcml0eTogYHZhbGlkYXRlcyA6YXR0ciwgdW5pcXVlbmVzczoge3Njb3BlOiA6b3RoZXJ9YCBhZGRzXG4gICAgLy8gdGhlIHNjb3BlZCBjb2x1bW4ocykgdG8gdGhlIFdIRVJFIGNsYXVzZSBzbyB1bmlxdWVuZXNzIGlzIGNoZWNrZWRcbiAgICAvLyB3aXRoaW4gdGhlIGdpdmVuIHNjb3BlIChlLmcuIGByb2xlYCB1bmlxdWUgcGVyIGB1c2VySWRgKS5cbiAgICBjb25zdCBzY29wZUNvbHVtbnMgPSB0aGlzLl9ub3JtYWxpemVTY29wZUNvbHVtbnMoKVxuXG4gICAgZm9yIChjb25zdCBzY29wZUNvbHVtbiBvZiBzY29wZUNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IHNjb3BlVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShzY29wZUNvbHVtbilcbiAgICAgIGxldCBzY29wZVZhbHVlID0gbW9kZWwucmVhZEF0dHJpYnV0ZShzY29wZUNvbHVtbilcblxuICAgICAgLy8gV2hlbiB0aGUgRksgaGFzbid0IGJlZW4gZmx1c2hlZCBmcm9tIHRoZSByZWxhdGlvbnNoaXAgb2JqZWN0XG4gICAgICAvLyBvbnRvIHRoZSBhdHRyaWJ1dGUgc3RvcmUgeWV0IChlLmcuIGBuZXcgVGFzayh7cHJvamVjdH0pYCB3aGVyZVxuICAgICAgLy8gYHByb2plY3RJZGAgaXMgc3RpbGwgdW5kZWZpbmVkKSwgdHJ5IHJlc29sdmluZyBpdCBmcm9tIHRoZVxuICAgICAgLy8gbG9hZGVkIGJlbG9uZ3NUbyByZWxhdGlvbnNoaXAgaW5zdGVhZC5cbiAgICAgIGlmIChzY29wZVZhbHVlID09IG51bGwpIHtcbiAgICAgICAgc2NvcGVWYWx1ZSA9IHRoaXMuX3Jlc29sdmVTY29wZVZhbHVlRnJvbVJlbGF0aW9uc2hpcChtb2RlbCwgc2NvcGVDb2x1bW4pXG4gICAgICB9XG5cbiAgICAgIGlmIChzY29wZVZhbHVlID09IG51bGwpIHJldHVyblxuXG4gICAgICB3aGVyZUFyZ3Nbc2NvcGVVbmRlcnNjb3JlXSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAoc2NvcGVWYWx1ZSlcbiAgICB9XG5cbiAgICBsZXQgZXhpc3RpbmdSZWNvcmRRdWVyeSA9IG1vZGVsQ2xhc3NcbiAgICAgIC5zZWxlY3QobW9kZWxDbGFzcy5wcmltYXJ5S2V5KCkpXG4gICAgICAud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgaWYgKG1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIGV4aXN0aW5nUmVjb3JkUXVlcnkud2hlcmUoYCR7Y29ubmVjdGlvbi5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9LiR7Y29ubmVjdGlvbi5xdW90ZUNvbHVtbihtb2RlbENsYXNzLnByaW1hcnlLZXkoKSl9ICE9ICR7Y29ubmVjdGlvbi5xdW90ZShtb2RlbC5pZCgpKX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nUmVjb3JkID0gYXdhaXQgZXhpc3RpbmdSZWNvcmRRdWVyeS5maXJzdCgpXG5cbiAgICBpZiAoZXhpc3RpbmdSZWNvcmQpIHtcbiAgICAgIGlmICghKGF0dHJpYnV0ZU5hbWUgaW4gbW9kZWwuX3ZhbGlkYXRpb25FcnJvcnMpKSBtb2RlbC5fdmFsaWRhdGlvbkVycm9yc1thdHRyaWJ1dGVOYW1lXSA9IFtdXG5cbiAgICAgIG1vZGVsLl92YWxpZGF0aW9uRXJyb3JzW2F0dHJpYnV0ZU5hbWVdLnB1c2goe3R5cGU6IFwidW5pcXVlbmVzc1wiLCBtZXNzYWdlOiBcImhhcyBhbHJlYWR5IGJlZW4gdGFrZW5cIn0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byByZXNvbHZlIGEgc2NvcGUgY29sdW1uIHZhbHVlIGZyb20gYSBsb2FkZWQgYmVsb25nc1RvXG4gICAqIHJlbGF0aW9uc2hpcCBvbiB0aGUgbW9kZWwuIFdoZW4gYSBUYXNrIGlzIGNyZWF0ZWQgdmlhXG4gICAqIGBuZXcgVGFzayh7cHJvamVjdH0pYCwgdGhlIEZLIChgcHJvamVjdElkYCkgaXMgb25seSBmbHVzaGVkIG9udG9cbiAgICogdGhlIGF0dHJpYnV0ZSBzdG9yZSBkdXJpbmcgc2F2ZSDigJQgYnV0IHRoZSByZWxhdGlvbnNoaXAgb2JqZWN0IGlzXG4gICAqIGFscmVhZHkgbG9hZGVkIGFuZCBjYXJyaWVzIHRoZSBpZCB3ZSBuZWVkIGZvciB0aGUgV0hFUkUgY2xhdXNlLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IG1vZGVsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY29wZUNvbHVtbiAtIGNhbWVsQ2FzZSBhdHRyaWJ1dGUgbmFtZSAoZS5nLiBgXCJwcm9qZWN0SWRcImApLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVtYmVyIHwgbnVsbH1cbiAgICovXG4gIF9yZXNvbHZlU2NvcGVWYWx1ZUZyb21SZWxhdGlvbnNoaXAobW9kZWwsIHNjb3BlQ29sdW1uKSB7XG4gICAgY29uc3QgbW9kZWxDbGFzcyA9IC8qKiBAdHlwZSB7dHlwZW9mIGltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9ICovIChtb2RlbC5jb25zdHJ1Y3RvcilcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbnNoaXBzTWFwKClcblxuICAgIGZvciAoY29uc3QgcmVsYXRpb25zaGlwTmFtZSBpbiByZWxhdGlvbnNoaXBzKSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcE5hbWVdXG5cbiAgICAgIGlmIChyZWxhdGlvbnNoaXAuZ2V0VHlwZT8uKCkgIT09IFwiYmVsb25nc1RvXCIpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGZvcmVpZ25LZXkgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHJlbGF0aW9uc2hpcC5nZXRGb3JlaWduS2V5KCksIHRydWUpXG5cbiAgICAgIGlmIChmb3JlaWduS2V5ICE9PSBzY29wZUNvbHVtbikgY29udGludWVcblxuICAgICAgY29uc3QgaW5zdGFuY2VSZWxhdGlvbnNoaXAgPSBtb2RlbC5nZXRSZWxhdGlvbnNoaXBCeU5hbWUocmVsYXRpb25zaGlwTmFtZSlcbiAgICAgIGNvbnN0IGxvYWRlZCA9IGluc3RhbmNlUmVsYXRpb25zaGlwLmxvYWRlZCgpXG5cbiAgICAgIGlmIChsb2FkZWQgJiYgIUFycmF5LmlzQXJyYXkobG9hZGVkKSAmJiB0eXBlb2YgbG9hZGVkLmlkID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGxvYWRlZC5pZCgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemUgdGhlIGBzY29wZWAgb3B0aW9uIGludG8gYW4gYXJyYXkgb2YgYXR0cmlidXRlIG5hbWVzLlxuICAgKiBTdXBwb3J0cyBzdHJpbmcgKGBcInVzZXJJZFwiYCksIGFycmF5IG9mIHN0cmluZ3MgKGBbXCJ1c2VySWRcIiwgXCJwcm9qZWN0SWRcIl1gKSxcbiAgICogb3IgYWJzZW50IChlbXB0eSBhcnJheSDigJQgbm8gc2NvcGUsIG9yaWdpbmFsIHNpbmdsZS1jb2x1bW4gYmVoYXZpb3IpLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nW119XG4gICAqL1xuICBfbm9ybWFsaXplU2NvcGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IHNjb3BlID0gdGhpcy5hcmdzPy5zY29wZVxuXG4gICAgaWYgKCFzY29wZSkgcmV0dXJuIFtdXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2NvcGUpKSByZXR1cm4gc2NvcGVcblxuICAgIHJldHVybiBbU3RyaW5nKHNjb3BlKV1cbiAgfVxufVxuIl19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlbmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9kYXRhYmFzZS9yZWNvcmQvdmFsaWRhdG9ycy91bmlxdWVuZXNzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLElBQUksTUFBTSxXQUFXLENBQUE7QUFDNUIsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxpQkFBaUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUV6RCxNQUFNLENBQUMsT0FBTyxPQUFPLDJDQUE0QyxTQUFRLElBQUk7SUFDM0U7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsbURBQW1ELENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFMUYsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQzFDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsRCxNQUFNLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUMxRixNQUFNLHVCQUF1QixHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7UUFFcEU7O3FEQUU2QztRQUM3QyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUE7UUFFcEIsU0FBUyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsY0FBYyxDQUFBO1FBRW5ELG9FQUFvRTtRQUNwRSxvRUFBb0U7UUFDcEUsNERBQTREO1FBQzVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1FBRWxELEtBQUssTUFBTSxXQUFXLElBQUksWUFBWSxFQUFFLENBQUM7WUFDdkMsTUFB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QUE7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNCQUFzQjtRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQTtRQUU5QixJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBQ3JCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtRQUV0QyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCYXNlIGZyb20gXCIuL2Jhc2UuanNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgdmFsaWRhdGlvbk1lc3NhZ2UgZnJvbSBcIi4uL3ZhbGlkYXRpb24tbWVzc2FnZXMuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNEYXRhYmFzZVJlY29yZFZhbGlkYXRvcnNVbmlxdWVuZXNzIGV4dGVuZHMgQmFzZSB7XG4gIC8qKlxuICAgKiBSdW5zIHZhbGlkYXRlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4LmpzXCIpLmRlZmF1bHR9IGFyZ3MubW9kZWwgLSBNb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MuYXR0cmlidXRlTmFtZSAtIEF0dHJpYnV0ZSBuYW1lLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGUoe21vZGVsLCBhdHRyaWJ1dGVOYW1lfSkge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWwuY29uc3RydWN0b3IpXG5cbiAgICBjb25zdCBjb25uZWN0aW9uID0gbW9kZWxDbGFzcy5jb25uZWN0aW9uKClcbiAgICBjb25zdCB0YWJsZU5hbWUgPSBtb2RlbENsYXNzLl9nZXRUYWJsZSgpLmdldE5hbWUoKVxuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gLyoqIEB0eXBlIHtzdHJpbmcgfCBudW1iZXJ9ICovIChtb2RlbC5yZWFkQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpKVxuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpXG5cbiAgICAvKipcbiAgICAgKiBXaGVyZSBhcmdzLlxuICAgICAqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+fSAqL1xuICAgIGNvbnN0IHdoZXJlQXJncyA9IHt9XG5cbiAgICB3aGVyZUFyZ3NbYXR0cmlidXRlTmFtZVVuZGVyc2NvcmVdID0gYXR0cmlidXRlVmFsdWVcblxuICAgIC8vIFJhaWxzIHBhcml0eTogYHZhbGlkYXRlcyA6YXR0ciwgdW5pcXVlbmVzczoge3Njb3BlOiA6b3RoZXJ9YCBhZGRzXG4gICAgLy8gdGhlIHNjb3BlZCBjb2x1bW4ocykgdG8gdGhlIFdIRVJFIGNsYXVzZSBzbyB1bmlxdWVuZXNzIGlzIGNoZWNrZWRcbiAgICAvLyB3aXRoaW4gdGhlIGdpdmVuIHNjb3BlIChlLmcuIGByb2xlYCB1bmlxdWUgcGVyIGB1c2VySWRgKS5cbiAgICBjb25zdCBzY29wZUNvbHVtbnMgPSB0aGlzLl9ub3JtYWxpemVTY29wZUNvbHVtbnMoKVxuXG4gICAgZm9yIChjb25zdCBzY29wZUNvbHVtbiBvZiBzY29wZUNvbHVtbnMpIHtcbiAgICAgIGNvbnN0IHNjb3BlVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShzY29wZUNvbHVtbilcbiAgICAgIGxldCBzY29wZVZhbHVlID0gbW9kZWwucmVhZEF0dHJpYnV0ZShzY29wZUNvbHVtbilcblxuICAgICAgLy8gV2hlbiB0aGUgRksgaGFzbid0IGJlZW4gZmx1c2hlZCBmcm9tIHRoZSByZWxhdGlvbnNoaXAgb2JqZWN0XG4gICAgICAvLyBvbnRvIHRoZSBhdHRyaWJ1dGUgc3RvcmUgeWV0IChlLmcuIGBuZXcgVGFzayh7cHJvamVjdH0pYCB3aGVyZVxuICAgICAgLy8gYHByb2plY3RJZGAgaXMgc3RpbGwgdW5kZWZpbmVkKSwgdHJ5IHJlc29sdmluZyBpdCBmcm9tIHRoZVxuICAgICAgLy8gbG9hZGVkIGJlbG9uZ3NUbyByZWxhdGlvbnNoaXAgaW5zdGVhZC5cbiAgICAgIGlmIChzY29wZVZhbHVlID09IG51bGwpIHtcbiAgICAgICAgc2NvcGVWYWx1ZSA9IHRoaXMuX3Jlc29sdmVTY29wZVZhbHVlRnJvbVJlbGF0aW9uc2hpcChtb2RlbCwgc2NvcGVDb2x1bW4pXG4gICAgICB9XG5cbiAgICAgIGlmIChzY29wZVZhbHVlID09IG51bGwpIHJldHVyblxuXG4gICAgICB3aGVyZUFyZ3Nbc2NvcGVVbmRlcnNjb3JlXSA9IC8qKiBAdHlwZSB7c3RyaW5nIHwgbnVtYmVyfSAqLyAoc2NvcGVWYWx1ZSlcbiAgICB9XG5cbiAgICBsZXQgZXhpc3RpbmdSZWNvcmRRdWVyeSA9IG1vZGVsQ2xhc3NcbiAgICAgIC5zZWxlY3QobW9kZWxDbGFzcy5wcmltYXJ5S2V5KCkpXG4gICAgICAud2hlcmUod2hlcmVBcmdzKVxuXG4gICAgaWYgKG1vZGVsLmlzUGVyc2lzdGVkKCkpIHtcbiAgICAgIGV4aXN0aW5nUmVjb3JkUXVlcnkud2hlcmUoYCR7Y29ubmVjdGlvbi5xdW90ZVRhYmxlKHRhYmxlTmFtZSl9LiR7Y29ubmVjdGlvbi5xdW90ZUNvbHVtbihtb2RlbENsYXNzLnByaW1hcnlLZXkoKSl9ICE9ICR7Y29ubmVjdGlvbi5xdW90ZShtb2RlbC5pZCgpKX1gKVxuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nUmVjb3JkID0gYXdhaXQgZXhpc3RpbmdSZWNvcmRRdWVyeS5maXJzdCgpXG5cbiAgICBpZiAoZXhpc3RpbmdSZWNvcmQpIHtcbiAgICAgIGlmICghKGF0dHJpYnV0ZU5hbWUgaW4gbW9kZWwuX3ZhbGlkYXRpb25FcnJvcnMpKSBtb2RlbC5fdmFsaWRhdGlvbkVycm9yc1thdHRyaWJ1dGVOYW1lXSA9IFtdXG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0b3IgPSBtb2RlbENsYXNzLl9nZXRDb25maWd1cmF0aW9uKCkuZ2V0VHJhbnNsYXRvcigpXG5cbiAgICAgIG1vZGVsLl92YWxpZGF0aW9uRXJyb3JzW2F0dHJpYnV0ZU5hbWVdLnB1c2goe3R5cGU6IFwidW5pcXVlbmVzc1wiLCBtZXNzYWdlOiB2YWxpZGF0aW9uTWVzc2FnZSh7dHJhbnNsYXRvciwgdHlwZTogXCJ0YWtlblwifSl9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcnkgdG8gcmVzb2x2ZSBhIHNjb3BlIGNvbHVtbiB2YWx1ZSBmcm9tIGEgbG9hZGVkIGJlbG9uZ3NUb1xuICAgKiByZWxhdGlvbnNoaXAgb24gdGhlIG1vZGVsLiBXaGVuIGEgVGFzayBpcyBjcmVhdGVkIHZpYVxuICAgKiBgbmV3IFRhc2soe3Byb2plY3R9KWAsIHRoZSBGSyAoYHByb2plY3RJZGApIGlzIG9ubHkgZmx1c2hlZCBvbnRvXG4gICAqIHRoZSBhdHRyaWJ1dGUgc3RvcmUgZHVyaW5nIHNhdmUg4oCUIGJ1dCB0aGUgcmVsYXRpb25zaGlwIG9iamVjdCBpc1xuICAgKiBhbHJlYWR5IGxvYWRlZCBhbmQgY2FycmllcyB0aGUgaWQgd2UgbmVlZCBmb3IgdGhlIFdIRVJFIGNsYXVzZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSBtb2RlbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2NvcGVDb2x1bW4gLSBjYW1lbENhc2UgYXR0cmlidXRlIG5hbWUgKGUuZy4gYFwicHJvamVjdElkXCJgKS5cbiAgICogQHJldHVybnMge3N0cmluZyB8IG51bWJlciB8IG51bGx9XG4gICAqL1xuICBfcmVzb2x2ZVNjb3BlVmFsdWVGcm9tUmVsYXRpb25zaGlwKG1vZGVsLCBzY29wZUNvbHVtbikge1xuICAgIGNvbnN0IG1vZGVsQ2xhc3MgPSAvKiogQHR5cGUge3R5cGVvZiBpbXBvcnQoXCIuLi9pbmRleC5qc1wiKS5kZWZhdWx0fSAqLyAobW9kZWwuY29uc3RydWN0b3IpXG4gICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IG1vZGVsQ2xhc3MuZ2V0UmVsYXRpb25zaGlwc01hcCgpXG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgaW4gcmVsYXRpb25zaGlwcykge1xuICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBOYW1lXVxuXG4gICAgICBpZiAocmVsYXRpb25zaGlwLmdldFR5cGU/LigpICE9PSBcImJlbG9uZ3NUb1wiKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBmb3JlaWduS2V5ID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShyZWxhdGlvbnNoaXAuZ2V0Rm9yZWlnbktleSgpLCB0cnVlKVxuXG4gICAgICBpZiAoZm9yZWlnbktleSAhPT0gc2NvcGVDb2x1bW4pIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGluc3RhbmNlUmVsYXRpb25zaGlwID0gbW9kZWwuZ2V0UmVsYXRpb25zaGlwQnlOYW1lKHJlbGF0aW9uc2hpcE5hbWUpXG4gICAgICBjb25zdCBsb2FkZWQgPSBpbnN0YW5jZVJlbGF0aW9uc2hpcC5sb2FkZWQoKVxuXG4gICAgICBpZiAobG9hZGVkICYmICFBcnJheS5pc0FycmF5KGxvYWRlZCkgJiYgdHlwZW9mIGxvYWRlZC5pZCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBsb2FkZWQuaWQoKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplIHRoZSBgc2NvcGVgIG9wdGlvbiBpbnRvIGFuIGFycmF5IG9mIGF0dHJpYnV0ZSBuYW1lcy5cbiAgICogU3VwcG9ydHMgc3RyaW5nIChgXCJ1c2VySWRcImApLCBhcnJheSBvZiBzdHJpbmdzIChgW1widXNlcklkXCIsIFwicHJvamVjdElkXCJdYCksXG4gICAqIG9yIGFic2VudCAoZW1wdHkgYXJyYXkg4oCUIG5vIHNjb3BlLCBvcmlnaW5hbCBzaW5nbGUtY29sdW1uIGJlaGF2aW9yKS5cbiAgICogQHJldHVybnMge3N0cmluZ1tdfVxuICAgKi9cbiAgX25vcm1hbGl6ZVNjb3BlQ29sdW1ucygpIHtcbiAgICBjb25zdCBzY29wZSA9IHRoaXMuYXJncz8uc2NvcGVcblxuICAgIGlmICghc2NvcGUpIHJldHVybiBbXVxuICAgIGlmIChBcnJheS5pc0FycmF5KHNjb3BlKSkgcmV0dXJuIHNjb3BlXG5cbiAgICByZXR1cm4gW1N0cmluZyhzY29wZSldXG4gIH1cbn1cbiJdfQ==
@@ -72,6 +72,30 @@
72
72
  * @property {import("../configuration-types.js").VelociousParams} [params] - Optional params override.
73
73
  * @property {import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | import("../configuration-types.js").FrontendModelResourceConfiguration} [resourceConfiguration] - Optional normalized resource configuration.
74
74
  */
75
+ /**
76
+ * Normalized sync replay mutation passed to the resource sync hooks.
77
+ * @typedef {import("../sync/sync-envelope-replay-service.js").SyncReplayMutation} FrontendModelSyncMutation
78
+ */
79
+ /**
80
+ * Sync mutation authorization result.
81
+ * @typedef {object} FrontendModelSyncAuthorization
82
+ * @property {boolean} allowed - Whether the mutation may be applied.
83
+ * @property {string} [reason] - Stable failure reason code when denied.
84
+ */
85
+ /**
86
+ * Arguments for the applySync full-escape-hatch hook.
87
+ * @typedef {object} FrontendModelApplySyncArgs
88
+ * @property {Record<string, ?>} context - Replay context.
89
+ * @property {import("../database/record/index.js").default | null} existingSync - Existing sync row or null.
90
+ * @property {FrontendModelSyncMutation} mutation - Normalized replay mutation.
91
+ */
92
+ /**
93
+ * Apply result produced by routed sync mutation application.
94
+ * @typedef {object} FrontendModelSyncApplyResult
95
+ * @property {boolean} created - Whether a record was created.
96
+ * @property {boolean} [deleted] - Whether a record was deleted.
97
+ * @property {import("../database/record/index.js").default | null} record - Applied record or null.
98
+ */
75
99
  /**
76
100
  * Resolved frontend-model resource registration.
77
101
  * @typedef {object} FrontendModelResolvedResourceConfiguration
@@ -146,6 +170,15 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
146
170
  static translatedAttributes: string[] | undefined;
147
171
  /** @type {?} */
148
172
  static SharedResource: unknown;
173
+ /**
174
+ * Declarative writable-attribute permit list (camelCase attribute names)
175
+ * used as the default {@link FrontendModelBaseResource#permittedParams} and
176
+ * as the routed sync replay permit. Resolved through the shared resource
177
+ * like the other static resource config: an undeclared environment list
178
+ * falls back to the shared resource's list, while an explicit declaration
179
+ * (including `null`) wins.
180
+ * @type {string[] | null | undefined} */
181
+ static writableAttributes: string[] | null | undefined;
149
182
  /**
150
183
  * Returns the configured shared resource class.
151
184
  * @returns {?} - Shared resource class.
@@ -154,10 +187,10 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
154
187
  /**
155
188
  * Reads a static resource config value from the environment resource first,
156
189
  * then from the shared resource.
157
- * @param {"abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "relationships" | "server" | "sync" | "translatedAttributes"} name - Static config property name.
190
+ * @param {"abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "relationships" | "server" | "sync" | "translatedAttributes" | "writableAttributes"} name - Static config property name.
158
191
  * @returns {?} - Resolved config value.
159
192
  */
160
- static sharedResourceStaticValue(name: "abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "relationships" | "server" | "sync" | "translatedAttributes"): unknown;
193
+ static sharedResourceStaticValue(name: "abilities" | "attachments" | "attributes" | "builtInCollectionCommands" | "builtInMemberCommands" | "collectionCommands" | "commands" | "memberCommands" | "modelName" | "primaryKey" | "relationships" | "server" | "sync" | "translatedAttributes" | "writableAttributes"): unknown;
161
194
  /**
162
195
  * Resolves translated attributes from environment and shared resources.
163
196
  * @returns {string[] | undefined} - Translated attribute names.
@@ -280,9 +313,10 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
280
313
  * }
281
314
  * }
282
315
  *
283
- * Default implementation returns `[]` — nothing permitted. Subclasses
284
- * must override to enable writes. A resource that does not declare
285
- * `permittedParams` cannot accept any write.
316
+ * Default implementation returns the declared
317
+ * {@link FrontendModelBaseResource.writableAttributes} permit list, or `[]`
318
+ * nothing permitted without a declared list. Subclasses override to
319
+ * customize; an explicit override always wins.
286
320
  * @param {{action?: "create" | "update", params?: Record<string, ?>, ability?: import("../authorization/ability.js").default, locals?: Record<string, ?>}} [arg] - Request context.
287
321
  * @returns {Array<string | Record<string, ?>>} - Permit spec.
288
322
  */
@@ -292,6 +326,100 @@ export default class FrontendModelBaseResource<TModelClass extends typeof import
292
326
  ability?: import("../authorization/ability.js").default;
293
327
  locals?: Record<string, unknown>;
294
328
  }): Array<string | Record<string, unknown>>;
329
+ /**
330
+ * Resolves the declared writable-attribute permit list from the environment
331
+ * resource first, then the shared resource — mirroring how the other
332
+ * static resource config resolves. An explicit environment declaration
333
+ * (including `null`) wins over the shared resource's list.
334
+ * @returns {string[] | null} Declared permit list or null when undeclared.
335
+ */
336
+ declaredWritableAttributes(): string[] | null;
337
+ /**
338
+ * Builds the client-safe error thrown for a failed writable-attribute validation.
339
+ * @param {string} message - Human-readable validation message.
340
+ * @param {{cause?: Error, code: string}} details - Stable machine-readable code and optional cause.
341
+ * @returns {Error} Client-safe error.
342
+ */
343
+ writableAttributeError(message: string, { cause, code }: {
344
+ cause?: Error;
345
+ code: string;
346
+ }): Error;
347
+ /**
348
+ * Authorizes one routed sync replay mutation before it is applied.
349
+ * Defaults to allowing every mutation; record-level authorization still
350
+ * applies through {@link FrontendModelBaseResource#findSyncRecord} scoping
351
+ * and the create membership check.
352
+ * @param {object} args - Options.
353
+ * @param {Record<string, ?>} args.context - Replay context.
354
+ * @param {FrontendModelSyncMutation} args.mutation - Normalized replay mutation.
355
+ * @returns {FrontendModelSyncAuthorization | Promise<FrontendModelSyncAuthorization>} Authorization result.
356
+ */
357
+ authorizeSyncMutation({ context, mutation }: {
358
+ context: Record<string, unknown>;
359
+ mutation: FrontendModelSyncMutation;
360
+ }): FrontendModelSyncAuthorization | Promise<FrontendModelSyncAuthorization>;
361
+ /**
362
+ * Returns the per-sync failure reason reported when a routed sync mutation
363
+ * fails record-level authorization. Defaults to null, which reports the
364
+ * generic "access-denied" reason.
365
+ * @param {object} args - Options.
366
+ * @param {"create" | "destroy" | "update"} args.action - Denied action.
367
+ * @param {FrontendModelSyncMutation} args.mutation - Normalized replay mutation.
368
+ * @returns {string | null} Stable failure reason code or null for the generic default.
369
+ */
370
+ syncAuthorizationFailureReason({ action, mutation }: {
371
+ action: "create" | "destroy" | "update";
372
+ mutation: FrontendModelSyncMutation;
373
+ }): string | null;
374
+ /**
375
+ * Finds the existing record targeted by a routed sync replay mutation.
376
+ * Defaults to an `accessibleFor` lookup by primary key through the
377
+ * resource's normalized ability action for update (or destroy for delete
378
+ * mutations), falling back to an unscoped lookup without an ability.
379
+ * @param {object} args - Options.
380
+ * @param {import("../authorization/ability.js").default} [args.ability] - Ability override. Defaults to the resource ability.
381
+ * @param {boolean} [args.forDelete] - Whether the lookup is for a delete mutation.
382
+ * @param {FrontendModelSyncMutation} args.mutation - Normalized replay mutation.
383
+ * @returns {Promise<import("../database/record/index.js").default | null>} Existing record or null.
384
+ */
385
+ findSyncRecord({ ability, forDelete, mutation }: {
386
+ ability?: import("../authorization/ability.js").default | undefined;
387
+ forDelete?: boolean | undefined;
388
+ mutation: FrontendModelSyncMutation;
389
+ }): Promise<import("../database/record/index.js").default | null>;
390
+ /**
391
+ * Maps a raw sync action to the resource's normalized ability action when
392
+ * the resource configuration declares an abilities mapping, otherwise the
393
+ * raw action name is used directly.
394
+ * @param {"create" | "destroy" | "update"} action - Raw sync action.
395
+ * @returns {string} Ability action.
396
+ */
397
+ syncAbilityAction(action: "create" | "destroy" | "update"): string;
398
+ /**
399
+ * Full escape hatch for routed sync mutation application. Returning a
400
+ * non-null result replaces the whole default apply flow (authorization,
401
+ * record lookup, normalization and save) with the returned apply result.
402
+ * @param {FrontendModelApplySyncArgs} args - Apply args.
403
+ * @returns {FrontendModelSyncApplyResult | null | Promise<FrontendModelSyncApplyResult | null>} Apply result or null for the default flow.
404
+ */
405
+ applySync(args: FrontendModelApplySyncArgs): FrontendModelSyncApplyResult | null | Promise<FrontendModelSyncApplyResult | null>;
406
+ /**
407
+ * Runs after a routed sync mutation was applied. Returned entries are
408
+ * merged into the apply result, reaching persistExtraAttributes and
409
+ * broadcasts.
410
+ * @param {object} args - Options.
411
+ * @param {Record<string, ?>} args.context - Replay context.
412
+ * @param {boolean} args.created - Whether the record was created.
413
+ * @param {FrontendModelSyncMutation} args.mutation - Normalized replay mutation.
414
+ * @param {import("../database/record/index.js").default | null} args.record - Applied record or null.
415
+ * @returns {Record<string, ?> | Promise<Record<string, ?>>} Extra apply-result entries.
416
+ */
417
+ afterSyncApply({ context, created, mutation, record }: {
418
+ context: Record<string, unknown>;
419
+ created: boolean;
420
+ mutation: FrontendModelSyncMutation;
421
+ record: import("../database/record/index.js").default | null;
422
+ }): Record<string, unknown> | Promise<Record<string, unknown>>;
295
423
  /**
296
424
  * Normalizes create attributes before permission filtering and saving.
297
425
  * @param {FrontendModelResourceAttributePayload} attributes - Incoming create attributes.
@@ -933,6 +1061,57 @@ export type FrontendModelResourceAbilityArgs = {
933
1061
  */
934
1062
  resourceConfiguration?: import("../configuration-types.js").FrontendModelResourceConfiguration | import("../configuration-types.js").NormalizedFrontendModelResourceConfiguration | undefined;
935
1063
  };
1064
+ /**
1065
+ * Normalized sync replay mutation passed to the resource sync hooks.
1066
+ */
1067
+ export type FrontendModelSyncMutation = import("../sync/sync-envelope-replay-service.js").SyncReplayMutation;
1068
+ /**
1069
+ * Sync mutation authorization result.
1070
+ */
1071
+ export type FrontendModelSyncAuthorization = {
1072
+ /**
1073
+ * - Whether the mutation may be applied.
1074
+ */
1075
+ allowed: boolean;
1076
+ /**
1077
+ * - Stable failure reason code when denied.
1078
+ */
1079
+ reason?: string | undefined;
1080
+ };
1081
+ /**
1082
+ * Arguments for the applySync full-escape-hatch hook.
1083
+ */
1084
+ export type FrontendModelApplySyncArgs = {
1085
+ /**
1086
+ * - Replay context.
1087
+ */
1088
+ context: Record<string, unknown>;
1089
+ /**
1090
+ * - Existing sync row or null.
1091
+ */
1092
+ existingSync: import("../database/record/index.js").default | null;
1093
+ /**
1094
+ * - Normalized replay mutation.
1095
+ */
1096
+ mutation: FrontendModelSyncMutation;
1097
+ };
1098
+ /**
1099
+ * Apply result produced by routed sync mutation application.
1100
+ */
1101
+ export type FrontendModelSyncApplyResult = {
1102
+ /**
1103
+ * - Whether a record was created.
1104
+ */
1105
+ created: boolean;
1106
+ /**
1107
+ * - Whether a record was deleted.
1108
+ */
1109
+ deleted?: boolean | undefined;
1110
+ /**
1111
+ * - Applied record or null.
1112
+ */
1113
+ record: import("../database/record/index.js").default | null;
1114
+ };
936
1115
  /**
937
1116
  * Resolved frontend-model resource registration.
938
1117
  */
@@ -1 +1 @@
1
- {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/frontend-model-resource/base-resource.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../../../src/frontend-model-resource/base-resource.js"],"names":[],"mappings":"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"}