@memberjunction/core 6.1.0-edge.4 → 6.1.0-edge.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generic/JSONType-interfaces/IEntitySubtypeSelectorConfig.d.ts +27 -0
- package/dist/generic/JSONType-interfaces/IEntitySubtypeSelectorConfig.d.ts.map +1 -0
- package/dist/generic/JSONType-interfaces/IEntitySubtypeSelectorConfig.js +6 -0
- package/dist/generic/JSONType-interfaces/IEntitySubtypeSelectorConfig.js.map +1 -0
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +2 -3
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEntity.d.ts +172 -0
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +622 -87
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/baseInfo.d.ts +6 -0
- package/dist/generic/baseInfo.d.ts.map +1 -1
- package/dist/generic/baseInfo.js +19 -1
- package/dist/generic/baseInfo.js.map +1 -1
- package/dist/generic/compositeKey.d.ts +108 -0
- package/dist/generic/compositeKey.d.ts.map +1 -1
- package/dist/generic/compositeKey.js +225 -10
- package/dist/generic/compositeKey.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts +53 -2
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +92 -13
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/embeddedRecord.d.ts +2 -1
- package/dist/generic/embeddedRecord.d.ts.map +1 -1
- package/dist/generic/embeddedRecord.js +9 -2
- package/dist/generic/embeddedRecord.js.map +1 -1
- package/dist/generic/entityCompanion.d.ts +6 -1
- package/dist/generic/entityCompanion.d.ts.map +1 -1
- package/dist/generic/entityCompanion.js +7 -0
- package/dist/generic/entityCompanion.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +136 -7
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +204 -14
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/entitySubtypeResolver.d.ts +19 -0
- package/dist/generic/entitySubtypeResolver.d.ts.map +1 -0
- package/dist/generic/entitySubtypeResolver.js +24 -0
- package/dist/generic/entitySubtypeResolver.js.map +1 -0
- package/dist/generic/entityTransactionScope.d.ts +6 -3
- package/dist/generic/entityTransactionScope.d.ts.map +1 -1
- package/dist/generic/entityTransactionScope.js +6 -3
- package/dist/generic/entityTransactionScope.js.map +1 -1
- package/dist/generic/extendedTypeValue.d.ts +47 -0
- package/dist/generic/extendedTypeValue.d.ts.map +1 -0
- package/dist/generic/extendedTypeValue.js +152 -0
- package/dist/generic/extendedTypeValue.js.map +1 -0
- package/dist/generic/filters/compositeFilter.d.ts +77 -0
- package/dist/generic/filters/compositeFilter.d.ts.map +1 -0
- package/dist/generic/filters/compositeFilter.js +324 -0
- package/dist/generic/filters/compositeFilter.js.map +1 -0
- package/dist/generic/filters/filter.types.d.ts +29 -0
- package/dist/generic/filters/filter.types.d.ts.map +1 -0
- package/dist/generic/filters/filter.types.js +28 -0
- package/dist/generic/filters/filter.types.js.map +1 -0
- package/dist/generic/filters/index.d.ts +3 -0
- package/dist/generic/filters/index.d.ts.map +1 -0
- package/dist/generic/filters/index.js +3 -0
- package/dist/generic/filters/index.js.map +1 -0
- package/dist/generic/geoFields.d.ts +64 -0
- package/dist/generic/geoFields.d.ts.map +1 -0
- package/dist/generic/geoFields.js +108 -0
- package/dist/generic/geoFields.js.map +1 -0
- package/dist/generic/interfaces.d.ts +36 -2
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js +25 -0
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/localCacheManager.d.ts +4 -2
- package/dist/generic/localCacheManager.d.ts.map +1 -1
- package/dist/generic/localCacheManager.js +5 -3
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/metadata.d.ts +11 -0
- package/dist/generic/metadata.d.ts.map +1 -1
- package/dist/generic/metadata.js +29 -0
- package/dist/generic/metadata.js.map +1 -1
- package/dist/generic/providerBase.d.ts +118 -3
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +356 -70
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/relatedRecordBatchLoader.js +2 -2
- package/dist/generic/relatedRecordBatchLoader.js.map +1 -1
- package/dist/generic/relatedRecordCollection.d.ts +2 -1
- package/dist/generic/relatedRecordCollection.d.ts.map +1 -1
- package/dist/generic/relatedRecordCollection.js +16 -4
- package/dist/generic/relatedRecordCollection.js.map +1 -1
- package/dist/generic/schemaHydration.d.ts +54 -0
- package/dist/generic/schemaHydration.d.ts.map +1 -0
- package/dist/generic/schemaHydration.js +75 -0
- package/dist/generic/schemaHydration.js.map +1 -0
- package/dist/generic/transactionGroup.d.ts +18 -0
- package/dist/generic/transactionGroup.d.ts.map +1 -1
- package/dist/generic/transactionGroup.js +22 -0
- package/dist/generic/transactionGroup.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitySubtypeResolver.d.ts","sourceRoot":"","sources":["../../src/generic/entitySubtypeResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;;;GASG;AACH,8BACsB,qBAAqB;IACvC;;;OAGG;aACa,OAAO,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CACtF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { RequiresSubclass } from '@memberjunction/global';
|
|
8
|
+
/**
|
|
9
|
+
* Base class for prospective subtype resolution on an entity.
|
|
10
|
+
*
|
|
11
|
+
* Subclasses register with ClassFactory using `baseClassName: EntitySubtypeResolver`
|
|
12
|
+
* and the entity name as `key`.
|
|
13
|
+
*
|
|
14
|
+
* Used by `BaseEntity.ResolveSubtypeEntityName()` when registered.
|
|
15
|
+
*
|
|
16
|
+
* @see plans/sync-composition-axes.md
|
|
17
|
+
*/
|
|
18
|
+
let EntitySubtypeResolver = class EntitySubtypeResolver {
|
|
19
|
+
};
|
|
20
|
+
EntitySubtypeResolver = __decorate([
|
|
21
|
+
RequiresSubclass()
|
|
22
|
+
], EntitySubtypeResolver);
|
|
23
|
+
export { EntitySubtypeResolver };
|
|
24
|
+
//# sourceMappingURL=entitySubtypeResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitySubtypeResolver.js","sourceRoot":"","sources":["../../src/generic/entitySubtypeResolver.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;;;;;;;GASG;AAEI,IAAe,qBAAqB,GAApC,MAAe,qBAAqB;CAM1C,CAAA;AANqB,qBAAqB;IAD1C,gBAAgB,EAAE;GACG,qBAAqB,CAM1C"}
|
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Before this abstraction MemberJunction had **two mutually-blind transaction mechanisms**:
|
|
7
7
|
*
|
|
8
|
-
* 1. `
|
|
9
|
-
* a properly re-entrant ambient manager (depth counter,
|
|
10
|
-
* ≥ 2,
|
|
8
|
+
* 1. `GenericDatabaseProvider.BeginTransaction()` / `CommitTransaction()` / `RollbackTransaction()` —
|
|
9
|
+
* a properly re-entrant ambient manager (depth counter, dialect savepoints at depth
|
|
10
|
+
* ≥ 2, serialized by a promise mutex). Application composite-save code
|
|
11
11
|
* (order headers + lines, journal entries + lines, payments + allocations) calls this directly.
|
|
12
|
+
* A server abort (mssql `ENOTBEGUN`/`EABORT`, pg `25P01`) is **not recoverable**: nested begin
|
|
13
|
+
* throws `DoomedTransactionError`, the outer `Commit` fails, and `Save()` returns false.
|
|
14
|
+
* Concurrent nested scopes on one provider instance are unsupported.
|
|
12
15
|
* 2. `BeginISATransaction()` / `CommitISATransaction()` / `RollbackISATransaction()` — an
|
|
13
16
|
* IS-A-specific trio that opened a brand-new physical transaction on the pool with **no depth
|
|
14
17
|
* awareness at all**.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityTransactionScope.d.ts","sourceRoot":"","sources":["../../src/generic/entityTransactionScope.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"entityTransactionScope.d.ts","sourceRoot":"","sources":["../../src/generic/entityTransactionScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAExB;;;;OAIG;IACH,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC1C,QAAQ,EAAE;IACN,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,sBAAsB,CAAC,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC9D,GAAG,IAAI,GAAG,SAAS,EACpB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
|
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Before this abstraction MemberJunction had **two mutually-blind transaction mechanisms**:
|
|
7
7
|
*
|
|
8
|
-
* 1. `
|
|
9
|
-
* a properly re-entrant ambient manager (depth counter,
|
|
10
|
-
* ≥ 2,
|
|
8
|
+
* 1. `GenericDatabaseProvider.BeginTransaction()` / `CommitTransaction()` / `RollbackTransaction()` —
|
|
9
|
+
* a properly re-entrant ambient manager (depth counter, dialect savepoints at depth
|
|
10
|
+
* ≥ 2, serialized by a promise mutex). Application composite-save code
|
|
11
11
|
* (order headers + lines, journal entries + lines, payments + allocations) calls this directly.
|
|
12
|
+
* A server abort (mssql `ENOTBEGUN`/`EABORT`, pg `25P01`) is **not recoverable**: nested begin
|
|
13
|
+
* throws `DoomedTransactionError`, the outer `Commit` fails, and `Save()` returns false.
|
|
14
|
+
* Concurrent nested scopes on one provider instance are unsupported.
|
|
12
15
|
* 2. `BeginISATransaction()` / `CommitISATransaction()` / `RollbackISATransaction()` — an
|
|
13
16
|
* IS-A-specific trio that opened a brand-new physical transaction on the pool with **no depth
|
|
14
17
|
* awareness at all**.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityTransactionScope.js","sourceRoot":"","sources":["../../src/generic/entityTransactionScope.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"entityTransactionScope.js","sourceRoot":"","sources":["../../src/generic/entityTransactionScope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAyCrC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,QAGoB,EACpB,IAAsB;IAEtB,MAAM,WAAW,GAAG,QAAQ,EAAE,0BAA0B,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IACvG,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,yFAAyF;QACzF,0FAA0F;QAC1F,qEAAqE;QACrE,OAAO,IAAI,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,sBAAuB,EAAE,CAAC;IACvD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,yFAAyF;QACzF,uFAAuF;QACvF,sFAAsF;QACtF,2EAA2E;QAC3E,IAAI,CAAC;YACD,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACrB,QAAQ,CACJ,+FAA+F;gBAC/F,qBAAqB,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CACxG,CAAC;QACN,CAAC;QACD,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for EntityField.ExtendedType values that carry structured content
|
|
3
|
+
* (Image, Color, JSON). Used by EntityField.Validate and by Angular form/grid UX.
|
|
4
|
+
*/
|
|
5
|
+
/** Practical cap for inline image payloads when the column is unlimited (nvarchar(max)). */
|
|
6
|
+
export declare const DEFAULT_MAX_INLINE_IMAGE_BYTES: number;
|
|
7
|
+
/**
|
|
8
|
+
* True when `value` is a `data:image/...` URI (base64 or utf-8 SVG).
|
|
9
|
+
*/
|
|
10
|
+
export declare function IsInlineImageDataUri(value: string): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* If `value` is raw base64 of a known image magic number (no data: prefix),
|
|
13
|
+
* return a data URI; otherwise null.
|
|
14
|
+
*/
|
|
15
|
+
export declare function CoerceRawImageBase64ToDataUri(value: string): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Normalize a stored Image-field value into something safe to put in `img src`.
|
|
18
|
+
* Accepts data URIs, raw image base64, http(s) URLs, and relative paths.
|
|
19
|
+
* Rejects javascript:/vbscript:/file: and non-image data: URIs.
|
|
20
|
+
*/
|
|
21
|
+
export declare function CoerceImageSrc(value: string): string | null;
|
|
22
|
+
export declare function IsPermittedImageFieldValue(value: string): boolean;
|
|
23
|
+
export declare function NormalizeImageHref(value: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Max characters that may be stored for an Image field. `maxLength === 0` means unlimited
|
|
26
|
+
* (nvarchar(max)); then we apply {@link DEFAULT_MAX_INLINE_IMAGE_BYTES} as a practical cap.
|
|
27
|
+
*/
|
|
28
|
+
export declare function MaxStoredImageChars(maxLength: number): number;
|
|
29
|
+
/** Decoded-byte budget implied by {@link MaxStoredImageChars} (data-URI overhead subtracted). */
|
|
30
|
+
export declare function MaxInlineImageBytes(maxLength: number): number;
|
|
31
|
+
export declare function FormatByteSize(bytes: number): string;
|
|
32
|
+
/**
|
|
33
|
+
* Normalize a hex color to `#rrggbb` for `<input type="color">`.
|
|
34
|
+
* 3-digit hex is expanded; 8-digit hex drops alpha. Returns null if not hex.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ParseCssHexColor(value: string): string | null;
|
|
37
|
+
export declare function IsValidCssColor(value: string): boolean;
|
|
38
|
+
export declare function TryParseJsonText(value: string): {
|
|
39
|
+
ok: true;
|
|
40
|
+
value: unknown;
|
|
41
|
+
} | {
|
|
42
|
+
ok: false;
|
|
43
|
+
message: string;
|
|
44
|
+
};
|
|
45
|
+
/** Pretty-print JSON when valid; otherwise return the original string. */
|
|
46
|
+
export declare function PrettyPrintJson(value: string): string;
|
|
47
|
+
//# sourceMappingURL=extendedTypeValue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendedTypeValue.d.ts","sourceRoot":"","sources":["../../src/generic/extendedTypeValue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,4FAA4F;AAC5F,eAAO,MAAM,8BAA8B,QAAc,CAAC;AAQ1D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW1E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe3D;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU7D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQtD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAO7G;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKrD"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers for EntityField.ExtendedType values that carry structured content
|
|
3
|
+
* (Image, Color, JSON). Used by EntityField.Validate and by Angular form/grid UX.
|
|
4
|
+
*/
|
|
5
|
+
/** Practical cap for inline image payloads when the column is unlimited (nvarchar(max)). */
|
|
6
|
+
export const DEFAULT_MAX_INLINE_IMAGE_BYTES = 1024 * 1024;
|
|
7
|
+
const DATA_IMAGE_RE = /^data:image\/[a-z0-9.+-]+(;[^,]*)?,/i;
|
|
8
|
+
const HEX_COLOR_RE = /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
|
|
9
|
+
const RGB_COLOR_RE = /^rgba?\(\s*[\d.]+%?\s*,\s*[\d.]+%?\s*,\s*[\d.]+%?\s*(,\s*[\d.]+\s*)?\)$/i;
|
|
10
|
+
const HSL_COLOR_RE = /^hsla?\(/i;
|
|
11
|
+
const DANGEROUS_SCHEME_RE = /^(javascript|vbscript|file):/i;
|
|
12
|
+
/**
|
|
13
|
+
* True when `value` is a `data:image/...` URI (base64 or utf-8 SVG).
|
|
14
|
+
*/
|
|
15
|
+
export function IsInlineImageDataUri(value) {
|
|
16
|
+
if (!value)
|
|
17
|
+
return false;
|
|
18
|
+
return DATA_IMAGE_RE.test(value.trim());
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* If `value` is raw base64 of a known image magic number (no data: prefix),
|
|
22
|
+
* return a data URI; otherwise null.
|
|
23
|
+
*/
|
|
24
|
+
export function CoerceRawImageBase64ToDataUri(value) {
|
|
25
|
+
if (!value)
|
|
26
|
+
return null;
|
|
27
|
+
const compact = value.trim().replace(/\s/g, '');
|
|
28
|
+
if (compact.length < 32)
|
|
29
|
+
return null;
|
|
30
|
+
if (!/^[A-Za-z0-9+/]+=*$/.test(compact))
|
|
31
|
+
return null;
|
|
32
|
+
if (compact.startsWith('/9j/'))
|
|
33
|
+
return `data:image/jpeg;base64,${compact}`;
|
|
34
|
+
if (compact.startsWith('iVBOR'))
|
|
35
|
+
return `data:image/png;base64,${compact}`;
|
|
36
|
+
if (compact.startsWith('R0lGOD'))
|
|
37
|
+
return `data:image/gif;base64,${compact}`;
|
|
38
|
+
if (compact.startsWith('UklGR'))
|
|
39
|
+
return `data:image/webp;base64,${compact}`;
|
|
40
|
+
if (compact.startsWith('PHN2Zy') || compact.startsWith('PD94bW'))
|
|
41
|
+
return `data:image/svg+xml;base64,${compact}`;
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Normalize a stored Image-field value into something safe to put in `img src`.
|
|
46
|
+
* Accepts data URIs, raw image base64, http(s) URLs, and relative paths.
|
|
47
|
+
* Rejects javascript:/vbscript:/file: and non-image data: URIs.
|
|
48
|
+
*/
|
|
49
|
+
export function CoerceImageSrc(value) {
|
|
50
|
+
if (value == null)
|
|
51
|
+
return null;
|
|
52
|
+
const v = value.trim();
|
|
53
|
+
if (!v)
|
|
54
|
+
return null;
|
|
55
|
+
if (IsInlineImageDataUri(v))
|
|
56
|
+
return v;
|
|
57
|
+
if (v.toLowerCase().startsWith('data:'))
|
|
58
|
+
return null;
|
|
59
|
+
if (DANGEROUS_SCHEME_RE.test(v))
|
|
60
|
+
return null;
|
|
61
|
+
const raw = CoerceRawImageBase64ToDataUri(v);
|
|
62
|
+
if (raw)
|
|
63
|
+
return raw;
|
|
64
|
+
if (/^https?:\/\//i.test(v) || v.startsWith('/'))
|
|
65
|
+
return v;
|
|
66
|
+
// Scheme-less relative path (e.g. "photos/me.png") — permit. Unknown schemes — reject.
|
|
67
|
+
if (/^[a-z][a-z0-9+.-]*:/i.test(v))
|
|
68
|
+
return null;
|
|
69
|
+
return v;
|
|
70
|
+
}
|
|
71
|
+
export function IsPermittedImageFieldValue(value) {
|
|
72
|
+
return CoerceImageSrc(value) != null;
|
|
73
|
+
}
|
|
74
|
+
export function NormalizeImageHref(value) {
|
|
75
|
+
const v = value.trim();
|
|
76
|
+
if (/^https?:\/\//i.test(v) || v.startsWith('data:') || v.startsWith('/'))
|
|
77
|
+
return v;
|
|
78
|
+
return 'https://' + v;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Max characters that may be stored for an Image field. `maxLength === 0` means unlimited
|
|
82
|
+
* (nvarchar(max)); then we apply {@link DEFAULT_MAX_INLINE_IMAGE_BYTES} as a practical cap.
|
|
83
|
+
*/
|
|
84
|
+
export function MaxStoredImageChars(maxLength) {
|
|
85
|
+
if (maxLength > 0)
|
|
86
|
+
return maxLength;
|
|
87
|
+
return Math.floor(DEFAULT_MAX_INLINE_IMAGE_BYTES * 4 / 3) + 64;
|
|
88
|
+
}
|
|
89
|
+
/** Decoded-byte budget implied by {@link MaxStoredImageChars} (data-URI overhead subtracted). */
|
|
90
|
+
export function MaxInlineImageBytes(maxLength) {
|
|
91
|
+
const chars = MaxStoredImageChars(maxLength);
|
|
92
|
+
return Math.max(0, Math.floor((chars - 32) * 3 / 4));
|
|
93
|
+
}
|
|
94
|
+
export function FormatByteSize(bytes) {
|
|
95
|
+
if (bytes < 1024)
|
|
96
|
+
return `${bytes} bytes`;
|
|
97
|
+
if (bytes < 1024 * 1024) {
|
|
98
|
+
const kb = bytes / 1024;
|
|
99
|
+
return `${kb < 10 ? kb.toFixed(1) : Math.round(kb)} KB`;
|
|
100
|
+
}
|
|
101
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Normalize a hex color to `#rrggbb` for `<input type="color">`.
|
|
105
|
+
* 3-digit hex is expanded; 8-digit hex drops alpha. Returns null if not hex.
|
|
106
|
+
*/
|
|
107
|
+
export function ParseCssHexColor(value) {
|
|
108
|
+
if (!value)
|
|
109
|
+
return null;
|
|
110
|
+
const v = value.trim();
|
|
111
|
+
const m = HEX_COLOR_RE.exec(v);
|
|
112
|
+
if (!m)
|
|
113
|
+
return null;
|
|
114
|
+
const hex = m[1];
|
|
115
|
+
if (hex.length === 3) {
|
|
116
|
+
return `#${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}`.toLowerCase();
|
|
117
|
+
}
|
|
118
|
+
return `#${hex.slice(0, 6)}`.toLowerCase();
|
|
119
|
+
}
|
|
120
|
+
export function IsValidCssColor(value) {
|
|
121
|
+
if (!value)
|
|
122
|
+
return false;
|
|
123
|
+
const v = value.trim();
|
|
124
|
+
if (v.toLowerCase() === 'transparent')
|
|
125
|
+
return true;
|
|
126
|
+
if (HEX_COLOR_RE.test(v))
|
|
127
|
+
return true;
|
|
128
|
+
if (RGB_COLOR_RE.test(v))
|
|
129
|
+
return true;
|
|
130
|
+
if (HSL_COLOR_RE.test(v))
|
|
131
|
+
return true;
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
export function TryParseJsonText(value) {
|
|
135
|
+
try {
|
|
136
|
+
return { ok: true, value: JSON.parse(value) };
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
const message = e instanceof Error ? e.message : 'Invalid JSON';
|
|
140
|
+
return { ok: false, message };
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/** Pretty-print JSON when valid; otherwise return the original string. */
|
|
144
|
+
export function PrettyPrintJson(value) {
|
|
145
|
+
if (value == null || value.trim() === '')
|
|
146
|
+
return value ?? '';
|
|
147
|
+
const parsed = TryParseJsonText(value);
|
|
148
|
+
if (!parsed.ok)
|
|
149
|
+
return value;
|
|
150
|
+
return JSON.stringify(parsed.value, null, 2);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=extendedTypeValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendedTypeValue.js","sourceRoot":"","sources":["../../src/generic/extendedTypeValue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OOP wrapper around {@link CompositeFilterDescriptor}.
|
|
3
|
+
*
|
|
4
|
+
* The descriptor stays the portable JSON (Kendo / User Views). This class is how you
|
|
5
|
+
* construct, evaluate, and summarize that JSON. Views still compile to SQL via
|
|
6
|
+
* `GenerateWhereClause`; `Evaluate` is for prices, processes, and anything that is
|
|
7
|
+
* not a single-table WHERE.
|
|
8
|
+
*
|
|
9
|
+
* Context is a bag of records keyed by source (`BillToOrganization`, `Order`, …).
|
|
10
|
+
* Bare field names (no dot) read from `context['']` so single-entity callers can pass `{ '': row }`.
|
|
11
|
+
*/
|
|
12
|
+
import { FormatFilterField, IsCompositeFilter, IsSimpleFilter, ParseFilterField, type CompositeFilterDescriptor, type FilterDescriptor, type FilterLogic } from './filter.types.js';
|
|
13
|
+
export type FilterEvalContext = Record<string, Record<string, unknown> | null | undefined>;
|
|
14
|
+
export interface FilterSummaryField {
|
|
15
|
+
/** Stored field (`Type` or `BillToOrganization.Type`). */
|
|
16
|
+
Name: string;
|
|
17
|
+
DisplayName: string;
|
|
18
|
+
}
|
|
19
|
+
export interface FilterSummaryOptions {
|
|
20
|
+
Fields?: FilterSummaryField[];
|
|
21
|
+
/** Lookup source key → label (`BillToOrganization` → `Bill-to organization`). */
|
|
22
|
+
SourceLabels?: Record<string, string>;
|
|
23
|
+
}
|
|
24
|
+
export declare class CompositeFilter {
|
|
25
|
+
private Descriptor;
|
|
26
|
+
/**
|
|
27
|
+
* Empty AND group, or wrap an existing descriptor / single rule.
|
|
28
|
+
* Prefer {@link FromJSON} / {@link FromDescriptor} at call sites that already have payload.
|
|
29
|
+
*/
|
|
30
|
+
constructor(source?: CompositeFilterDescriptor | FilterDescriptor | null);
|
|
31
|
+
static FromJSON(json: string | object | null | undefined): CompositeFilter;
|
|
32
|
+
static FromDescriptor(descriptor: CompositeFilterDescriptor | FilterDescriptor | null | undefined): CompositeFilter;
|
|
33
|
+
static IsCompositeFilter: typeof IsCompositeFilter;
|
|
34
|
+
static IsSimpleFilter: typeof IsSimpleFilter;
|
|
35
|
+
static ParseFilterField: typeof ParseFilterField;
|
|
36
|
+
static FormatFilterField: typeof FormatFilterField;
|
|
37
|
+
get Logic(): FilterLogic;
|
|
38
|
+
set Logic(value: FilterLogic);
|
|
39
|
+
get Filters(): (FilterDescriptor | CompositeFilterDescriptor)[];
|
|
40
|
+
/** Append a rule, a nested descriptor, or another CompositeFilter. */
|
|
41
|
+
Add(item: FilterDescriptor | CompositeFilterDescriptor | CompositeFilter): this;
|
|
42
|
+
ToDescriptor(): CompositeFilterDescriptor;
|
|
43
|
+
ToJSON(): string;
|
|
44
|
+
/**
|
|
45
|
+
* In-memory evaluation against a bag of records keyed by source.
|
|
46
|
+
* Empty filters are true (no restriction). Missing source → undefined
|
|
47
|
+
* (false unless the operator is empty/null).
|
|
48
|
+
*/
|
|
49
|
+
Evaluate(context: FilterEvalContext): boolean;
|
|
50
|
+
/** Compact one-liner for a grid cell. Empty filter → empty string. */
|
|
51
|
+
SummaryText(options?: FilterSummaryOptions): string;
|
|
52
|
+
/** Indented HTML with the same highlighting the filter-builder accordion uses. */
|
|
53
|
+
SummaryHTML(options?: FilterSummaryOptions): string;
|
|
54
|
+
GetSummary(options?: FilterSummaryOptions): {
|
|
55
|
+
Text: string;
|
|
56
|
+
HTML: string;
|
|
57
|
+
};
|
|
58
|
+
private static Normalize;
|
|
59
|
+
private static EvaluateNode;
|
|
60
|
+
private static EvaluateRule;
|
|
61
|
+
private static ReadValue;
|
|
62
|
+
private static Compare;
|
|
63
|
+
private static Equals;
|
|
64
|
+
private static Str;
|
|
65
|
+
private static Num;
|
|
66
|
+
private BuildText;
|
|
67
|
+
private BuildHtml;
|
|
68
|
+
private RuleText;
|
|
69
|
+
private RuleHtml;
|
|
70
|
+
private FieldLabel;
|
|
71
|
+
private BareFieldLabel;
|
|
72
|
+
private SourceLabel;
|
|
73
|
+
private IsNullOp;
|
|
74
|
+
private ValueText;
|
|
75
|
+
private ValueHtml;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=compositeFilter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compositeFilter.d.ts","sourceRoot":"","sources":["../../../src/generic/filters/compositeFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EACH,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAEnB,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAE3F,MAAM,WAAW,kBAAkB;IAC/B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACjC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC9B,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAmCD,qBAAa,eAAe;IACxB,OAAO,CAAC,UAAU,CAA4B;IAE9C;;;OAGG;gBACS,MAAM,CAAC,EAAE,yBAAyB,GAAG,gBAAgB,GAAG,IAAI;WAI1D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,eAAe;WAMnE,cAAc,CACxB,UAAU,EAAE,yBAAyB,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC5E,eAAe;IAIlB,OAAc,iBAAiB,2BAAqB;IACpD,OAAc,cAAc,wBAAkB;IAC9C,OAAc,gBAAgB,0BAAoB;IAClD,OAAc,iBAAiB,2BAAqB;IAEpD,IAAW,KAAK,IAAI,WAAW,CAE9B;IACD,IAAW,KAAK,CAAC,KAAK,EAAE,WAAW,EAElC;IAED,IAAW,OAAO,IAAI,CAAC,gBAAgB,GAAG,yBAAyB,CAAC,EAAE,CAErE;IAED,sEAAsE;IAC/D,GAAG,CAAC,IAAI,EAAE,gBAAgB,GAAG,yBAAyB,GAAG,eAAe,GAAG,IAAI;IAK/E,YAAY,IAAI,yBAAyB;IAIzC,MAAM,IAAI,MAAM;IAIvB;;;;OAIG;IACI,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAIpD,sEAAsE;IAC/D,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM;IAK1D,kFAAkF;IAC3E,WAAW,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,MAAM;IAOnD,UAAU,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAIjF,OAAO,CAAC,MAAM,CAAC,SAAS;IAgBxB,OAAO,CAAC,MAAM,CAAC,YAAY;IAgB3B,OAAO,CAAC,MAAM,CAAC,YAAY;IAM3B,OAAO,CAAC,MAAM,CAAC,SAAS;IAaxB,OAAO,CAAC,MAAM,CAAC,OAAO;IAiCtB,OAAO,CAAC,MAAM,CAAC,MAAM;IAWrB,OAAO,CAAC,MAAM,CAAC,GAAG;IAKlB,OAAO,CAAC,MAAM,CAAC,GAAG;IAMlB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAuBjB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;CAkBpB"}
|