@mj-biz-apps/common-entities 5.46.2 → 5.47.0

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.
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Field-length limits of the external systems BizApps writes to, read from integration metadata.
3
+ *
4
+ * A value longer than the external field is rejected by that system when it syncs, days after it
5
+ * was typed, so apps check it on save and again before each send. The limits are the `Length` MJ
6
+ * already stores on `MJ: Integration Object Fields`, seeded from each connector's own metadata —
7
+ * one place, maintained by the connector, never a number copied into an app.
8
+ *
9
+ * Apps say which external fields a value feeds; the smallest of their lengths is the limit. A
10
+ * value over it is reported, never truncated: a truncated name no longer matches across systems.
11
+ *
12
+ * Fail loud. A target this instance has no length for is an error, not a pass, because a
13
+ * silently skipped check is the failure this exists to prevent. Apps decide whether a target
14
+ * applies (for example, only when the record is sent to that system) before asking.
15
+ */
16
+ import { BaseEngine, IMetadataProvider, UserInfo } from '@memberjunction/core';
17
+ export declare const INTEGRATION_OBJECTS_ENTITY = "MJ: Integration Objects";
18
+ export declare const INTEGRATION_OBJECT_FIELDS_ENTITY = "MJ: Integration Object Fields";
19
+ /** One field of an external system, named as its connector's metadata names it. */
20
+ export interface ExternalFieldTarget {
21
+ /** `MJ: Integrations` Name, e.g. `business-central` or `Bill.com`. */
22
+ Integration: string;
23
+ /** `MJ: Integration Objects` Name, e.g. `journalLines`. */
24
+ Object: string;
25
+ /** `MJ: Integration Object Fields` Name, e.g. `accountNumber`. */
26
+ Field: string;
27
+ }
28
+ export interface IntegrationObjectRow {
29
+ ID: string;
30
+ Name: string;
31
+ Integration: string;
32
+ }
33
+ export interface IntegrationObjectFieldRow {
34
+ IntegrationObjectID: string;
35
+ Name: string;
36
+ Length: number | null;
37
+ }
38
+ /** The limit for a value, and the target that sets it. */
39
+ export interface ExternalFieldLimit {
40
+ Length: number;
41
+ Target: ExternalFieldTarget;
42
+ }
43
+ export type ExternalFieldLimitResult = {
44
+ Limit: ExternalFieldLimit;
45
+ Missing?: undefined;
46
+ } | {
47
+ Limit?: undefined;
48
+ Missing: ExternalFieldTarget[];
49
+ };
50
+ /**
51
+ * The smallest length across `targets`, or the targets this metadata has no length for. Pure, for
52
+ * tests; the engine calls it with its cached rows.
53
+ */
54
+ export declare function ResolveExternalFieldLimit(targets: ReadonlyArray<ExternalFieldTarget>, objects: ReadonlyArray<IntegrationObjectRow>, fields: ReadonlyArray<IntegrationObjectFieldRow>): ExternalFieldLimitResult;
55
+ /**
56
+ * The message for `value` against `targets`, or null when it fits. `label` is the field's display
57
+ * name. Blank values fit; whether a field is required is the entity's own rule.
58
+ */
59
+ export declare function CheckExternalFieldLength(label: string, value: string | null | undefined, targets: ReadonlyArray<ExternalFieldTarget>, objects: ReadonlyArray<IntegrationObjectRow>, fields: ReadonlyArray<IntegrationObjectFieldRow>): string | null;
60
+ /** Why a check could not run when the configuring user cannot read integration metadata. */
61
+ export declare const INTEGRATION_METADATA_UNREADABLE = "the user this server checks limits with cannot read MJ: Integration Objects and MJ: Integration Object Fields";
62
+ /**
63
+ * The cached integration field lengths, one per process.
64
+ *
65
+ * Configure it with a user who can read `MJ: Integration Objects` and `MJ: Integration Object
66
+ * Fields` — on a server, the system user, not the user whose save is being checked. The lengths
67
+ * are catalog data; the saving user's permissions should not decide whether they can be read.
68
+ *
69
+ * A user without read access loads nothing. MJ still marks the engine loaded, so the next
70
+ * `Config` here reloads rather than keeping the empty lists, and until a reload succeeds every
71
+ * check reports that it could not run instead of throwing out of a save.
72
+ *
73
+ * Installed metadata changes reach a running server only when MJ's `LocalCacheManager` is
74
+ * initialized; otherwise they apply after a restart or `Config(true)`.
75
+ */
76
+ export declare class ExternalFieldLimitEngine extends BaseEngine<ExternalFieldLimitEngine> {
77
+ private _objects;
78
+ private _fields;
79
+ static get Instance(): ExternalFieldLimitEngine;
80
+ Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<unknown>;
81
+ /** The limit for `targets`; throws when the engine is not configured, cannot read metadata, or a target has no length. */
82
+ GetLimit(targets: ReadonlyArray<ExternalFieldTarget>): ExternalFieldLimit;
83
+ /** The message for `value` against `targets`, or null when it fits. See {@link CheckExternalFieldLength}. */
84
+ Check(label: string, value: string | null | undefined, targets: ReadonlyArray<ExternalFieldTarget>): string | null;
85
+ private get objects();
86
+ private get fields();
87
+ private assertLoaded;
88
+ }
89
+ //# sourceMappingURL=external-field-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-field-limits.d.ts","sourceRoot":"","sources":["../src/external-field-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzG,eAAO,MAAM,0BAA0B,4BAA4B,CAAC;AACpE,eAAO,MAAM,gCAAgC,kCAAkC,CAAC;AAEhF,mFAAmF;AACnF,MAAM,WAAW,mBAAmB;IAChC,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAAE,CAAC;AAiBlJ;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,MAAM,EAAE,aAAa,CAAC,yBAAyB,CAAC,GACjD,wBAAwB,CAU1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC3C,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,MAAM,EAAE,aAAa,CAAC,yBAAyB,CAAC,GACjD,MAAM,GAAG,IAAI,CAQf;AAED,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,kHACmF,CAAC;AAEhI;;;;;;;;;;;;;GAaG;AACH,qBAAa,wBAAyB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IAC9E,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,OAAO,CAAmC;IAElD,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAEY,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnH,0HAA0H;IACnH,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,kBAAkB;IAQhF,6GAA6G;IACtG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAAG,MAAM,GAAG,IAAI;IAMzH,OAAO,KAAK,OAAO,GAGlB;IAED,OAAO,KAAK,MAAM,GAGjB;IAED,OAAO,CAAC,YAAY;CAGvB"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Field-length limits of the external systems BizApps writes to, read from integration metadata.
3
+ *
4
+ * A value longer than the external field is rejected by that system when it syncs, days after it
5
+ * was typed, so apps check it on save and again before each send. The limits are the `Length` MJ
6
+ * already stores on `MJ: Integration Object Fields`, seeded from each connector's own metadata —
7
+ * one place, maintained by the connector, never a number copied into an app.
8
+ *
9
+ * Apps say which external fields a value feeds; the smallest of their lengths is the limit. A
10
+ * value over it is reported, never truncated: a truncated name no longer matches across systems.
11
+ *
12
+ * Fail loud. A target this instance has no length for is an error, not a pass, because a
13
+ * silently skipped check is the failure this exists to prevent. Apps decide whether a target
14
+ * applies (for example, only when the record is sent to that system) before asking.
15
+ */
16
+ import { BaseEngine } from '@memberjunction/core';
17
+ export const INTEGRATION_OBJECTS_ENTITY = 'MJ: Integration Objects';
18
+ export const INTEGRATION_OBJECT_FIELDS_ENTITY = 'MJ: Integration Object Fields';
19
+ function describeTarget(target) {
20
+ return `${target.Integration} ${target.Object}.${target.Field}`;
21
+ }
22
+ function sameName(a, b) {
23
+ return a.trim().toLowerCase() === b.trim().toLowerCase();
24
+ }
25
+ function lengthOf(target, objects, fields) {
26
+ const obj = objects.find((o) => sameName(o.Integration, target.Integration) && sameName(o.Name, target.Object));
27
+ if (!obj)
28
+ return null;
29
+ const field = fields.find((f) => f.IntegrationObjectID.toLowerCase() === obj.ID.toLowerCase() && sameName(f.Name, target.Field));
30
+ return field?.Length && field.Length > 0 ? field.Length : null;
31
+ }
32
+ /**
33
+ * The smallest length across `targets`, or the targets this metadata has no length for. Pure, for
34
+ * tests; the engine calls it with its cached rows.
35
+ */
36
+ export function ResolveExternalFieldLimit(targets, objects, fields) {
37
+ if (targets.length === 0)
38
+ throw new Error('ResolveExternalFieldLimit needs at least one target');
39
+ const missing = [];
40
+ let limit;
41
+ for (const target of targets) {
42
+ const length = lengthOf(target, objects, fields);
43
+ if (length === null)
44
+ missing.push(target);
45
+ else if (!limit || length < limit.Length)
46
+ limit = { Length: length, Target: target };
47
+ }
48
+ return missing.length > 0 || !limit ? { Missing: missing } : { Limit: limit };
49
+ }
50
+ /**
51
+ * The message for `value` against `targets`, or null when it fits. `label` is the field's display
52
+ * name. Blank values fit; whether a field is required is the entity's own rule.
53
+ */
54
+ export function CheckExternalFieldLength(label, value, targets, objects, fields) {
55
+ const resolved = ResolveExternalFieldLimit(targets, objects, fields);
56
+ if (resolved.Missing) {
57
+ return `${label} cannot be checked: no field length is recorded for ${resolved.Missing.map(describeTarget).join(', ')}.`;
58
+ }
59
+ const length = value?.length ?? 0;
60
+ if (length <= resolved.Limit.Length)
61
+ return null;
62
+ return `${label} is ${length} characters; ${describeTarget(resolved.Limit.Target)} allows ${resolved.Limit.Length}. Shorten it.`;
63
+ }
64
+ /** Why a check could not run when the configuring user cannot read integration metadata. */
65
+ export const INTEGRATION_METADATA_UNREADABLE = `the user this server checks limits with cannot read ${INTEGRATION_OBJECTS_ENTITY} and ${INTEGRATION_OBJECT_FIELDS_ENTITY}`;
66
+ /**
67
+ * The cached integration field lengths, one per process.
68
+ *
69
+ * Configure it with a user who can read `MJ: Integration Objects` and `MJ: Integration Object
70
+ * Fields` — on a server, the system user, not the user whose save is being checked. The lengths
71
+ * are catalog data; the saving user's permissions should not decide whether they can be read.
72
+ *
73
+ * A user without read access loads nothing. MJ still marks the engine loaded, so the next
74
+ * `Config` here reloads rather than keeping the empty lists, and until a reload succeeds every
75
+ * check reports that it could not run instead of throwing out of a save.
76
+ *
77
+ * Installed metadata changes reach a running server only when MJ's `LocalCacheManager` is
78
+ * initialized; otherwise they apply after a restart or `Config(true)`.
79
+ */
80
+ export class ExternalFieldLimitEngine extends BaseEngine {
81
+ constructor() {
82
+ super(...arguments);
83
+ this._objects = [];
84
+ this._fields = [];
85
+ }
86
+ static get Instance() {
87
+ return super.getInstance();
88
+ }
89
+ async Config(forceRefresh, contextUser, provider) {
90
+ const params = [
91
+ { PropertyName: '_objects', EntityName: INTEGRATION_OBJECTS_ENTITY, ResultType: 'simple' },
92
+ { PropertyName: '_fields', EntityName: INTEGRATION_OBJECT_FIELDS_ENTITY, Filter: 'Length > 0', ResultType: 'simple' },
93
+ ];
94
+ // A load that was skipped for lack of permission is retried, not kept: one limited user must
95
+ // not leave the check unable to run for every user in the process.
96
+ return await this.Load(params, provider, (forceRefresh ?? false) || this.IsPermissionConstrained, contextUser);
97
+ }
98
+ /** The limit for `targets`; throws when the engine is not configured, cannot read metadata, or a target has no length. */
99
+ GetLimit(targets) {
100
+ this.assertLoaded();
101
+ if (this.IsPermissionConstrained)
102
+ throw new Error(`Field lengths cannot be read: ${INTEGRATION_METADATA_UNREADABLE}`);
103
+ const resolved = ResolveExternalFieldLimit(targets, this.objects, this.fields);
104
+ if (resolved.Missing)
105
+ throw new Error(`No field length is recorded for ${resolved.Missing.map(describeTarget).join(', ')}`);
106
+ return resolved.Limit;
107
+ }
108
+ /** The message for `value` against `targets`, or null when it fits. See {@link CheckExternalFieldLength}. */
109
+ Check(label, value, targets) {
110
+ this.assertLoaded();
111
+ if (this.IsPermissionConstrained)
112
+ return `${label} cannot be checked: ${INTEGRATION_METADATA_UNREADABLE}.`;
113
+ return CheckExternalFieldLength(label, value, targets, this.objects, this.fields);
114
+ }
115
+ get objects() {
116
+ this.assertLoaded();
117
+ return this.GetConfigData('_objects');
118
+ }
119
+ get fields() {
120
+ this.assertLoaded();
121
+ return this.GetConfigData('_fields');
122
+ }
123
+ assertLoaded() {
124
+ if (!this.Loaded)
125
+ throw new Error('ExternalFieldLimitEngine is not configured — await ExternalFieldLimitEngine.Instance.Config(false, contextUser) first');
126
+ }
127
+ }
128
+ //# sourceMappingURL=external-field-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-field-limits.js","sourceRoot":"","sources":["../src/external-field-limits.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export type { ActivityDetails, ActivitySyncConnectionSettings, ActivitySyncRuleF
3
3
  export * from './business-day.js';
4
4
  export * from './party-signals.js';
5
5
  export * from './business-time-zone-engine.js';
6
+ export * from './external-field-limits.js';
6
7
  /**
7
8
  * This function is used to force the generated entities to be loaded. This is necessary because of the way that tree shaking works in webpack.
8
9
  * If you don't import this function and execute it, then the generated entities will not be included in the build. This is because the entities are not directly
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,YAAY,EACR,eAAe,EACf,8BAA8B,EAC9B,sBAAsB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,SACpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,YAAY,EACR,eAAe,EACf,8BAA8B,EAC9B,sBAAsB,GACzB,MAAM,uBAAuB,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,SACpC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ export * from './generated/entity_subclasses.js';
2
2
  export * from './business-day.js';
3
3
  export * from './party-signals.js';
4
4
  export * from './business-time-zone-engine.js';
5
+ export * from './external-field-limits.js';
5
6
  /**
6
7
  * This function is used to force the generated entities to be loaded. This is necessary because of the way that tree shaking works in webpack.
7
8
  * If you don't import this function and execute it, then the generated entities will not be included in the build. This is because the entities are not directly
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAO7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB;AACrC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAO7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB;AACrC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mj-biz-apps/common-entities",
3
3
  "type": "module",
4
- "version": "5.46.2",
4
+ "version": "5.47.0",
5
5
  "description": "MJ BizApps Common Entity Subclasses",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",