@forwardslashns/taskit-validation-messages 1.10.51 → 1.10.52

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/CLAUDE.md ADDED
@@ -0,0 +1,132 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Repository role
6
+
7
+ This is **taskit-validation-messages**, published as `@forwardslashns/taskit-validation-messages` (currently `1.10.51`). It's a small, single-purpose shared npm package: a centralized, type-safe catalog of validation error message strings, keyed by feature and error code, consumed by both **taskit-app** (frontend) and **taskit-api** (backend) so both sides show/throw identical error text. It contains **no zod schemas, no runtime input-validation logic (no length/regex/type rules), and no i18n** — purely a message dictionary plus a small lookup/interpolation formatter. Both consumer repos currently pin the exact same `^1.10.51` range, so keep versions in sync when bumping — message keys/shapes have changed across versions without a deprecation window in the past.
8
+
9
+ **⚠️ `README.md` in this repo is significantly out of date — do not trust it.** It documents an old `VALIDATION_FEATURES` export and a two-argument `getValidationMessage(feature, key, params)` call signature. Neither exists in the current source (`grep -rn "VALIDATION_FEATURES" src/` returns zero matches). The actual current API is a single `VALIDATION` export with combined `"FEATURE.KEY"` string keys and a one-argument-plus-params call signature — see below. The README also references `MIGRATION_GUIDE.md`, `IMPLEMENTATION_SUMMARY.md`, `BACKEND_UPDATE_CHECKLIST.md`, and `example-usage.ts`, none of which exist in the repo. Always read `src/index.ts` directly for the true API surface rather than the README.
10
+
11
+ ## Commands
12
+
13
+ ```bash
14
+ npm run build # rimraf ./dist && tsc
15
+ npm run format:fix # prettier --write --ignore-path .gitignore .
16
+ npm run publish:token # node ./publish.js — bumps patch version, npm install, pnpm build, pnpm publish (needs local .env with NPM_TOKEN)
17
+ ```
18
+
19
+ There is **no lint script and no test script/framework** configured in this repo (no ESLint config, no Jest/Vitest config, no `*.test.ts` files anywhere). `strict: true` TypeScript via `tsc` (part of `build`) is effectively the only automated correctness gate.
20
+
21
+ Note the mixed package-manager tooling: the repo's own lockfile is `package-lock.json` (npm), CI (`.github/.workflows/npm-publish.yml` — note the stray extra leading dot on `.workflows`, which means GitHub Actions likely does **not** actually discover this workflow, since it only auto-scans `.github/workflows/` without the leading dot) runs `npm ci`/`npm publish` on push to `master`, while `publish.js` itself shells out to `pnpm build`/`pnpm publish`. If publishing seems to have no effect via CI, this path mismatch is the first thing to check; `publish.js` (the manual/local route) is likely the actually-used publish mechanism in practice.
22
+
23
+ ## Full structure
24
+
25
+ ```
26
+ taskit-validation-messages/
27
+ ├── .env / .env.example # NPM_TOKEN for publish.js (real .env is gitignored, never committed)
28
+ ├── .github/.workflows/npm-publish.yml # note the extra dot — likely non-functional, see above
29
+ ├── .npmrc # scoped registry auth: @forwardslashns → npmjs, token via NPM_TOKEN
30
+ ├── .prettierrc # trailingComma es5, tabWidth 2, semi true, singleQuote true, printWidth 120
31
+ ├── package.json # main: dist/index.js, types: dist/index.d.ts, type: commonjs
32
+ ├── publish.js # custom publish script (patch-only bump, no minor/major control, no changesets)
33
+ ├── tsconfig.json # target ESNext, module/moduleResolution Node16, strict, declaration+declarationMap
34
+ ├── dist/ # tsc build output (CJS only — no ESM/dual-package build, no "exports" map)
35
+ └── src/
36
+ ├── index.ts # single public entry point / barrel export — read this first for the real API
37
+ └── validation/
38
+ ├── validation-messages.ts # aggregates all 29 feature message objects into VALIDATION_MESSAGES
39
+ ├── validation-message.types.ts # ValidationSeverity, ValidationMessageDefinition, ValidationIssue,
40
+ │ # ManualValidationIssueInput, ValidationIssueInput types +
41
+ │ # defineValidationFeatureMessages() (identity fn, purely for type inference —
42
+ │ # does nothing at runtime, despite the name)
43
+ ├── validation-message.formatter.ts # getValidationMessage() — the core lookup/interpolation function
44
+ ├── validation-constants.ts # VALIDATION (auto-derived FEATURE.KEY constants) + related-client helpers
45
+ └── features/ # 29 files, one per domain feature, ~2400 lines, ~437 message entries total
46
+ (account-categories, account-ids, business-activities, client-current-entity-statuses,
47
+ client-records-addresses/banks/commission-details/contacts/credit-cards/
48
+ entity-states-histories/entity-types-histories/filing-statuses-histories/outside-providers,
49
+ client-relationships-common/income-sources/owners, client-template-assignments,
50
+ client-templates (largest, 54 messages), data-filters, filing-categories, income-accounts,
51
+ roles-and-permissions, states, template-assignments, template-information (62 messages, 2nd largest),
52
+ template-recurrence-settings, template-states, user-preferences, users)
53
+ ```
54
+
55
+ No `AGENTS.md`, `.cursorrules`, or Copilot instructions file exist anywhere in this repo.
56
+
57
+ ## API / architecture
58
+
59
+ **Message definition shape** (`src/validation/validation-message.types.ts`):
60
+
61
+ ```typescript
62
+ export type ValidationMessageDefinition = {
63
+ severity: ValidationSeverity; // 'error' | 'warning' — in practice 423/426 entries are 'error', only 3 use 'warning'
64
+ message: string; // supports `{param}` interpolation
65
+ params?: readonly string[];
66
+ affectedFields?: readonly string[];
67
+ };
68
+ ```
69
+
70
+ Each feature file wraps its object literal in `defineValidationFeatureMessages(...)` — purely an identity function for TypeScript literal-type inference, not a runtime registration/validation step. Example (`src/validation/features/client-records-commission-details.validation-messages.ts`):
71
+
72
+ ```typescript
73
+ export const CLIENT_RECORDS_COMMISSION_DETAILS = defineValidationFeatureMessages({
74
+ SALES_REPRESENTATIVE_DOES_NOT_EXIST: {
75
+ severity: VALIDATION_SEVERITY.ERROR,
76
+ message: `Sales representative does not exist`,
77
+ params: ['id'],
78
+ affectedFields: ['salesRepresentative'],
79
+ },
80
+ COMISSION_RATE_TOO_LOW: { // NOTE: this key is misspelled ("COMISSION") — see "known issues" below
81
+ severity: VALIDATION_SEVERITY.ERROR,
82
+ message: `Enter a commission value greater than 0.0`,
83
+ affectedFields: ['commissionRate'],
84
+ },
85
+ ...
86
+ });
87
+ ```
88
+
89
+ **`src/index.ts`** (the only public entry point) exports:
90
+
91
+ - `VALIDATION` — nested constant auto-derived from all message definitions: `VALIDATION.CLIENT_RECORDS_COMMISSION_DETAILS.COMISSION_RATE_TOO_LOW === 'CLIENT_RECORDS_COMMISSION_DETAILS.COMISSION_RATE_TOO_LOW'`.
92
+ - `getValidationMessage(combinedKey, params?)` — template-literal-typed: `<F extends Features, E extends ErrorType<F>>(combinedKey: \`${F}.${E & string}\`, params?: MessageParams<...>) => ValidationMessageResult`. Calling with a wrong feature/error combination, or missing/extra params, is a **compile-time** TypeScript error for consumers. At runtime it also throws if: message config is missing, params are passed but none are expected, a required param is missing, or the message text contains a `{placeholder}`not declared in`params` (a "typo guard"). It interpolates params by HTML-escaping them (`escapeHtml`) and wrapping in `<b>...</b>` — messages are apparently rendered as raw HTML on the frontend, so this escaping matters for XSS-safety; don't remove it.
93
+ - `ValidationMessageResult` type: `{content: string; affectedFields: string[]; feature: string; severity: ValidationSeverity}`.
94
+ - Types: `ValidationSeverity`, `ValidationMessageDefinition`, `ValidationIssue` (`{feature, severity, message, affectedFields, code: string}` — `code` is always a `string`, not an object), `ManualValidationIssueInput`, `ValidationIssueInput`, `VALIDATION_SEVERITY`.
95
+ - Related-client helpers: `RELATED_CLIENT_PREFIX`, `RELATED_CLIENT_SUFFIX`, `RELATED_CLIENT_REGEX`, `getRelatedClientMessagePrefix()`, `extractRelatedClientName()` — a convention for tagging messages that pertain to a _related_ client rather than the one currently being edited (format: `[RELATED CLIENT "<name>"] `), used by taskit-api's client-relationships validators and consumed by taskit-app's `handleRelatedClientError.ts`.
96
+
97
+ **Message keying**: two-level `FEATURE.ERROR_CODE` string, auto-derived from object structure — no numeric error codes, no i18n/locale support (all strings hardcoded English).
98
+
99
+ ## How consumers actually use this package (verified against real call sites, not the README)
100
+
101
+ **taskit-api** (`src/features/**/validators/*.validator.ts`, `src/common/validators/`, `src/plugins/parallel-validation-plugin.ts`) — the primary/heavy consumer, using the real current API:
102
+
103
+ ```typescript
104
+ import { getValidationMessage, ValidationMessageResult, VALIDATION } from '@forwardslashns/taskit-validation-messages';
105
+
106
+ const validation: ValidationMessageResult = getValidationMessage(
107
+ VALIDATION.CLIENT_RECORDS_COMMISSION_DETAILS.SALES_REPRESENTATIVE_DOES_NOT_EXIST,
108
+ { id: commissionDetails.salesRepresentative.toString() }
109
+ );
110
+ request.addValidationIssue(validation, new EntityConflictError().codeDetails);
111
+ ```
112
+
113
+ **taskit-app** mostly _displays_ messages already produced by the backend rather than calling `getValidationMessage` itself; it directly imports the smaller helper exports, e.g. `src/utils/handleRelatedClientError.ts`:
114
+
115
+ ```typescript
116
+ import { extractRelatedClientName } from '@forwardslashns/taskit-validation-messages';
117
+ const relatedClientName = extractRelatedClientName(message);
118
+ ```
119
+
120
+ Also referenced from `src/pages/EditClient/EditClientUtils.ts`, `src/pages/EditClient/ClientRecords/ClientRecords.tsx`, `src/pages/EditClient/Relationships/Relationships.tsx`, `src/pages/TemplateCenter/CreateNewTemplate/Assignments/Dialog/AssignmentDialog.tsx`, `src/pages/TemplateCenter/CreateNewTemplate/NewTemplateUtils.ts`, `src/components/SummaryErrors/SummaryErrors.tsx`, `src/pages/EditClient/EditClient.tsx`.
121
+
122
+ If you add a new message here, both consumer repos need the version bump before they can reference the new `VALIDATION.<FEATURE>.<KEY>` — there's no fallback/default message behavior; an unrecognized key throws at runtime in the caller.
123
+
124
+ ## Known issues (by impact — useful to know before extending this package)
125
+
126
+ 1. **`README.md` is stale/misleading** — see the warning at the top of this file. If updating this package, consider fixing or removing the README (and the phantom doc references) rather than letting a future contributor trust it.
127
+ 2. **Misspelled public API keys**: `COMISSION_RATE_TOO_LOW`/`COMISSION_RATE_TOO_HIGH` (missing an "M") in `src/validation/features/client-records-commission-details.validation-messages.ts`, while the sibling `client-templates.validation-messages.ts`/`template-information.validation-messages.ts` correctly use `COMMISSION_*`. These typo'd keys are now part of the public contract both consumer repos reference verbatim (`VALIDATION.CLIENT_RECORDS_COMMISSION_DETAILS.COMISSION_RATE_TOO_LOW`) — renaming is a breaking change requiring a coordinated bump across both `taskit-app` and `taskit-api`. Don't "fix" the typo without updating both consumers in the same release window.
128
+ 3. **Dead `params: ['id']` on ~10 "X_DOES_NOT_EXIST" messages** (e.g. `account-ids.validation-messages.ts`, `account-categories.validation-messages.ts`) — the message text never actually contains `{id}` (zero matches for `"{id}"` across `src/validation/features/`), yet `getValidationMessage`'s runtime check forces every caller to pass an `id` value that's silently discarded. Either wire `{id}` into the message text or drop the declared param.
129
+ 4. **No automated tests** for `getValidationMessage`'s interpolation/escaping/typo-guard logic, despite it being real logic (not just static data) — a regression in `escapeHtml` or the placeholder-typo regex would only surface via a consuming repo's own tests, if at all. Worth adding a minimal Vitest/Jest suite here if you touch `validation-message.formatter.ts`.
130
+ 5. **Two parallel, inconsistent publish paths** (CI workflow using npm, `publish.js` using pnpm; the CI workflow may not even trigger due to the `.workflows` path typo) — see "Commands" above. Don't assume a `master` push alone publishes a new version; confirm via `npm view @forwardslashns/taskit-validation-messages version` if it matters for your task.
131
+ 6. **`severity: 'warning'` is essentially unused** (3 of 426 entries) — the field is fully plumbed through the type system but almost never exercised; don't assume warning-severity is a well-trodden path if you're about to add one.
132
+ 7. No `CHANGELOG.md` despite frequent patch-only version bumps across two dependent repos — check `git log` for actual change history when trying to understand what changed between versions.
@@ -270,5 +270,21 @@ export declare const CLIENT_TEMPLATES: {
270
270
  message: string;
271
271
  affectedFields: string[];
272
272
  };
273
+ TAX_PAYMENT_FILING_CLIENT_TEMPLATE_NOT_FOUND: {
274
+ severity: "error";
275
+ message: string;
276
+ affectedFields: string[];
277
+ };
278
+ TAX_PAYMENT_STARTING_BEFORE_FILING: {
279
+ severity: "error";
280
+ message: string;
281
+ params: string[];
282
+ affectedFields: string[];
283
+ };
284
+ TAX_PAYMENT_STARTING_NOT_ALIGNED_WITH_RECURRENCE: {
285
+ severity: "error";
286
+ message: string;
287
+ affectedFields: string[];
288
+ };
273
289
  };
274
290
  //# sourceMappingURL=client-templates.validation-messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-templates.validation-messages.d.ts","sourceRoot":"","sources":["../../../src/validation/features/client-templates.validation-messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoR3B,CAAC"}
1
+ {"version":3,"file":"client-templates.validation-messages.d.ts","sourceRoot":"","sources":["../../../src/validation/features/client-templates.validation-messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoS3B,CAAC"}
@@ -274,4 +274,20 @@ exports.CLIENT_TEMPLATES = (0, validation_message_types_1.defineValidationFeatur
274
274
  message: 'Selected client template is ended or deleted.',
275
275
  affectedFields: ['clientFilingTemplateId'],
276
276
  },
277
+ TAX_PAYMENT_FILING_CLIENT_TEMPLATE_NOT_FOUND: {
278
+ severity: validation_message_types_1.VALIDATION_SEVERITY.ERROR,
279
+ message: 'The associated filing template has not been added for this client.',
280
+ affectedFields: ['templateInfo.templateId'],
281
+ },
282
+ TAX_PAYMENT_STARTING_BEFORE_FILING: {
283
+ severity: validation_message_types_1.VALIDATION_SEVERITY.ERROR,
284
+ message: 'The tax payment starting date must be at or after the associated filing starting date ({filingDate}).',
285
+ params: ['filingDate'],
286
+ affectedFields: ['templateInfo.startingDate'],
287
+ },
288
+ TAX_PAYMENT_STARTING_NOT_ALIGNED_WITH_RECURRENCE: {
289
+ severity: validation_message_types_1.VALIDATION_SEVERITY.ERROR,
290
+ message: 'The starting date must align with the dates of the recurrence settings.',
291
+ affectedFields: ['templateInfo.startingDate'],
292
+ },
277
293
  });
@@ -2253,6 +2253,22 @@ export declare const VALIDATION_MESSAGES: {
2253
2253
  message: string;
2254
2254
  affectedFields: string[];
2255
2255
  };
2256
+ TAX_PAYMENT_FILING_CLIENT_TEMPLATE_NOT_FOUND: {
2257
+ severity: "error";
2258
+ message: string;
2259
+ affectedFields: string[];
2260
+ };
2261
+ TAX_PAYMENT_STARTING_BEFORE_FILING: {
2262
+ severity: "error";
2263
+ message: string;
2264
+ params: string[];
2265
+ affectedFields: string[];
2266
+ };
2267
+ TAX_PAYMENT_STARTING_NOT_ALIGNED_WITH_RECURRENCE: {
2268
+ severity: "error";
2269
+ message: string;
2270
+ affectedFields: string[];
2271
+ };
2256
2272
  };
2257
2273
  readonly CLIENT_TEMPLATE_ASSIGNMENTS: {
2258
2274
  NAME_ALREADY_EXISTS_ON_CLIENT_TEMPLATE: {
@@ -1 +1 @@
1
- {"version":3,"file":"validation-messages.d.ts","sourceRoot":"","sources":["../../src/validation/validation-messages.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtB,CAAC"}
1
+ {"version":3,"file":"validation-messages.d.ts","sourceRoot":"","sources":["../../src/validation/validation-messages.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forwardslashns/taskit-validation-messages",
3
- "version": "1.10.51",
3
+ "version": "1.10.52",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "commonjs",
@@ -276,4 +276,20 @@ export const CLIENT_TEMPLATES = defineValidationFeatureMessages({
276
276
  message: 'Selected client template is ended or deleted.',
277
277
  affectedFields: ['clientFilingTemplateId'],
278
278
  },
279
+ TAX_PAYMENT_FILING_CLIENT_TEMPLATE_NOT_FOUND: {
280
+ severity: VALIDATION_SEVERITY.ERROR,
281
+ message: 'The associated filing template has not been added for this client.',
282
+ affectedFields: ['templateInfo.templateId'],
283
+ },
284
+ TAX_PAYMENT_STARTING_BEFORE_FILING: {
285
+ severity: VALIDATION_SEVERITY.ERROR,
286
+ message: 'The tax payment starting date must be at or after the associated filing starting date ({filingDate}).',
287
+ params: ['filingDate'],
288
+ affectedFields: ['templateInfo.startingDate'],
289
+ },
290
+ TAX_PAYMENT_STARTING_NOT_ALIGNED_WITH_RECURRENCE: {
291
+ severity: VALIDATION_SEVERITY.ERROR,
292
+ message: 'The starting date must align with the dates of the recurrence settings.',
293
+ affectedFields: ['templateInfo.startingDate'],
294
+ },
279
295
  });