@memberjunction/core-entities 5.37.0 → 5.39.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.
- package/dist/custom/MJQueryEntityExtended.d.ts +73 -0
- package/dist/custom/MJQueryEntityExtended.d.ts.map +1 -0
- package/dist/custom/MJQueryEntityExtended.js +195 -0
- package/dist/custom/MJQueryEntityExtended.js.map +1 -0
- package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js +2 -2
- package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js.map +1 -1
- package/dist/engines/QueryEngine.d.ts +28 -7
- package/dist/engines/QueryEngine.d.ts.map +1 -1
- package/dist/engines/QueryEngine.js +40 -1
- package/dist/engines/QueryEngine.js.map +1 -1
- package/dist/engines/UserInfoEngine.d.ts +9 -0
- package/dist/engines/UserInfoEngine.d.ts.map +1 -1
- package/dist/engines/UserInfoEngine.js +12 -0
- package/dist/engines/UserInfoEngine.js.map +1 -1
- package/dist/engines/conversations.d.ts +42 -2
- package/dist/engines/conversations.d.ts.map +1 -1
- package/dist/engines/conversations.js +49 -6
- package/dist/engines/conversations.js.map +1 -1
- package/dist/engines/interactive-forms.d.ts +132 -0
- package/dist/engines/interactive-forms.d.ts.map +1 -0
- package/dist/engines/interactive-forms.js +212 -0
- package/dist/engines/interactive-forms.js.map +1 -0
- package/dist/generated/entity_subclasses.d.ts +843 -104
- package/dist/generated/entity_subclasses.d.ts.map +1 -1
- package/dist/generated/entity_subclasses.js +1257 -138
- package/dist/generated/entity_subclasses.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/readme.md +3 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { UserInfo, QueryCacheConfig } from "@memberjunction/core";
|
|
2
|
+
import { MJQueryEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryEntityEntity, MJQueryPermissionEntity, MJQueryDependencyEntity, MJQueryCategoryEntity } from "../generated/entity_subclasses.js";
|
|
3
|
+
import type { DatabasePlatform } from "@memberjunction/core";
|
|
4
|
+
/**
|
|
5
|
+
* Extended query entity with child-relationship getters and business logic.
|
|
6
|
+
* All child data reads through `QueryEngine`'s event-driven cache — always
|
|
7
|
+
* fresh, no `provider.Refresh()` needed.
|
|
8
|
+
*
|
|
9
|
+
* Available on both client and server. Server-specific logic (embedding,
|
|
10
|
+
* extraction pipeline, dialect conversion) lives in `MJQueryEntityServer`.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MJQueryEntityExtended extends MJQueryEntity {
|
|
13
|
+
/** All field definitions for this query */
|
|
14
|
+
get QueryFields(): MJQueryFieldEntity[];
|
|
15
|
+
/** All parameter definitions for this query */
|
|
16
|
+
get QueryParameters(): MJQueryParameterEntity[];
|
|
17
|
+
/** All entity associations for this query */
|
|
18
|
+
get QueryEntities(): MJQueryEntityEntity[];
|
|
19
|
+
/** All permission records for this query */
|
|
20
|
+
get QueryPermissions(): MJQueryPermissionEntity[];
|
|
21
|
+
/** All composition dependency records (queries this query references via {{query:"..."}} syntax) */
|
|
22
|
+
get QueryDependencies(): MJQueryDependencyEntity[];
|
|
23
|
+
/** Queries that depend on (reference) this query via {{query:"..."}} syntax */
|
|
24
|
+
get QueryDependents(): MJQueryDependencyEntity[];
|
|
25
|
+
/** Gets the category entity for this query, or undefined if uncategorized */
|
|
26
|
+
get CategoryEntity(): MJQueryCategoryEntity | undefined;
|
|
27
|
+
private _categoryPath;
|
|
28
|
+
/**
|
|
29
|
+
* Gets the full hierarchical path of this query's category (e.g., "Ground-Truth-Queries/Sales").
|
|
30
|
+
* Returns empty string if the query is not categorized.
|
|
31
|
+
*/
|
|
32
|
+
get CategoryPath(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Builds a category path string from a CategoryID by walking up the category hierarchy.
|
|
35
|
+
*/
|
|
36
|
+
BuildCategoryPath(categoryID: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a user has permission to run this query based on their roles.
|
|
39
|
+
* A user can run a query if:
|
|
40
|
+
* 1. The query has no permissions defined (open to all)
|
|
41
|
+
* 2. The user has at least one role that is granted permission
|
|
42
|
+
*/
|
|
43
|
+
UserHasRunPermissions(user: UserInfo): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if a user can run this query based on permissions.
|
|
46
|
+
* Non-approved queries are allowed to execute (with a server-side warning)
|
|
47
|
+
* to enable testing before formal approval.
|
|
48
|
+
*/
|
|
49
|
+
UserCanRun(user: UserInfo): boolean;
|
|
50
|
+
/** Whether this query has been formally approved for production use */
|
|
51
|
+
get IsApproved(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Whether this query can be referenced by other queries via composition syntax.
|
|
54
|
+
* A query is composable only when both Reusable=true and Status='Approved'.
|
|
55
|
+
*/
|
|
56
|
+
get IsComposable(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Resolves the SQL for a given database platform.
|
|
59
|
+
* Resolution order:
|
|
60
|
+
* 1. QuerySQL child table entry matching this query + platform's dialect
|
|
61
|
+
* 2. Base SQL property (the query's primary SQL)
|
|
62
|
+
*/
|
|
63
|
+
GetPlatformSQL(platform: DatabasePlatform): string;
|
|
64
|
+
private _cacheConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Gets the cache configuration for this query.
|
|
67
|
+
* If the query has no explicit cache config but category inheritance is enabled,
|
|
68
|
+
* walks up the category tree to find inherited cache settings.
|
|
69
|
+
*/
|
|
70
|
+
get CacheConfig(): QueryCacheConfig;
|
|
71
|
+
private getInheritedCacheConfig;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=MJQueryEntityExtended.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJQueryEntityExtended.d.ts","sourceRoot":"","sources":["../../src/custom/MJQueryEntityExtended.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EACH,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACxB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;;;;;;GAOG;AACH,qBACa,qBAAsB,SAAQ,aAAa;IAIpD,2CAA2C;IAC3C,IAAW,WAAW,IAAI,kBAAkB,EAAE,CAE7C;IAED,+CAA+C;IAC/C,IAAW,eAAe,IAAI,sBAAsB,EAAE,CAErD;IAED,6CAA6C;IAC7C,IAAW,aAAa,IAAI,mBAAmB,EAAE,CAEhD;IAED,4CAA4C;IAC5C,IAAW,gBAAgB,IAAI,uBAAuB,EAAE,CAEvD;IAED,oGAAoG;IACpG,IAAW,iBAAiB,IAAI,uBAAuB,EAAE,CAExD;IAED,+EAA+E;IAC/E,IAAW,eAAe,IAAI,uBAAuB,EAAE,CAEtD;IAID,6EAA6E;IAC7E,IAAW,cAAc,IAAI,qBAAqB,GAAG,SAAS,CAG7D;IAED,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;OAGG;IACH,IAAW,YAAY,IAAI,MAAM,CAKhC;IAED;;OAEG;IACI,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAmBpD;;;;;OAKG;IACI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAkBrD;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAM1C,uEAAuE;IACvE,IAAW,UAAU,IAAI,OAAO,CAE/B;IAED;;;OAGG;IACH,IAAW,YAAY,IAAI,OAAO,CAEjC;IAID;;;;;OAKG;IACI,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAgBzD,OAAO,CAAC,YAAY,CAAiC;IAErD;;;;OAIG;IACH,IAAW,WAAW,IAAI,gBAAgB,CAuBzC;IAED,OAAO,CAAC,uBAAuB;CAqBlC"}
|
|
@@ -0,0 +1,195 @@
|
|
|
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 { BaseEntity } from "@memberjunction/core";
|
|
8
|
+
import { RegisterClass, UUIDsEqual } from "@memberjunction/global";
|
|
9
|
+
import { MJQueryEntity } from "../generated/entity_subclasses.js";
|
|
10
|
+
import { QueryEngine } from "../engines/QueryEngine.js";
|
|
11
|
+
/**
|
|
12
|
+
* Extended query entity with child-relationship getters and business logic.
|
|
13
|
+
* All child data reads through `QueryEngine`'s event-driven cache — always
|
|
14
|
+
* fresh, no `provider.Refresh()` needed.
|
|
15
|
+
*
|
|
16
|
+
* Available on both client and server. Server-specific logic (embedding,
|
|
17
|
+
* extraction pipeline, dialect conversion) lives in `MJQueryEntityServer`.
|
|
18
|
+
*/
|
|
19
|
+
let MJQueryEntityExtended = class MJQueryEntityExtended extends MJQueryEntity {
|
|
20
|
+
constructor() {
|
|
21
|
+
// ─── Child Relationship Getters (read-through from QueryEngine) ─────────────
|
|
22
|
+
super(...arguments);
|
|
23
|
+
this._categoryPath = null;
|
|
24
|
+
// ─── Cache Configuration ────────────────────────────────────────────────────
|
|
25
|
+
this._cacheConfig = null;
|
|
26
|
+
}
|
|
27
|
+
/** All field definitions for this query */
|
|
28
|
+
get QueryFields() {
|
|
29
|
+
return QueryEngine.Instance.GetQueryFields(this.ID);
|
|
30
|
+
}
|
|
31
|
+
/** All parameter definitions for this query */
|
|
32
|
+
get QueryParameters() {
|
|
33
|
+
return QueryEngine.Instance.GetQueryParameters(this.ID);
|
|
34
|
+
}
|
|
35
|
+
/** All entity associations for this query */
|
|
36
|
+
get QueryEntities() {
|
|
37
|
+
return QueryEngine.Instance.QueryEntities.filter(e => UUIDsEqual(e.QueryID, this.ID));
|
|
38
|
+
}
|
|
39
|
+
/** All permission records for this query */
|
|
40
|
+
get QueryPermissions() {
|
|
41
|
+
return QueryEngine.Instance.GetQueryPermissions(this.ID);
|
|
42
|
+
}
|
|
43
|
+
/** All composition dependency records (queries this query references via {{query:"..."}} syntax) */
|
|
44
|
+
get QueryDependencies() {
|
|
45
|
+
return QueryEngine.Instance.Dependencies.filter(d => UUIDsEqual(d.QueryID, this.ID));
|
|
46
|
+
}
|
|
47
|
+
/** Queries that depend on (reference) this query via {{query:"..."}} syntax */
|
|
48
|
+
get QueryDependents() {
|
|
49
|
+
return QueryEngine.Instance.Dependencies.filter(d => UUIDsEqual(d.DependsOnQueryID, this.ID));
|
|
50
|
+
}
|
|
51
|
+
// ─── Category Navigation ────────────────────────────────────────────────────
|
|
52
|
+
/** Gets the category entity for this query, or undefined if uncategorized */
|
|
53
|
+
get CategoryEntity() {
|
|
54
|
+
if (!this.CategoryID)
|
|
55
|
+
return undefined;
|
|
56
|
+
return QueryEngine.Instance.Categories.find(c => UUIDsEqual(c.ID, this.CategoryID));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Gets the full hierarchical path of this query's category (e.g., "Ground-Truth-Queries/Sales").
|
|
60
|
+
* Returns empty string if the query is not categorized.
|
|
61
|
+
*/
|
|
62
|
+
get CategoryPath() {
|
|
63
|
+
if (this._categoryPath === null) {
|
|
64
|
+
this._categoryPath = this.BuildCategoryPath(this.CategoryID);
|
|
65
|
+
}
|
|
66
|
+
return this._categoryPath;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Builds a category path string from a CategoryID by walking up the category hierarchy.
|
|
70
|
+
*/
|
|
71
|
+
BuildCategoryPath(categoryID) {
|
|
72
|
+
if (!categoryID)
|
|
73
|
+
return '';
|
|
74
|
+
const categories = QueryEngine.Instance.Categories;
|
|
75
|
+
const segments = [];
|
|
76
|
+
let currentID = categoryID;
|
|
77
|
+
while (currentID) {
|
|
78
|
+
const cat = categories.find(c => UUIDsEqual(c.ID, currentID));
|
|
79
|
+
if (!cat)
|
|
80
|
+
break;
|
|
81
|
+
segments.unshift(cat.Name);
|
|
82
|
+
currentID = cat.ParentID;
|
|
83
|
+
}
|
|
84
|
+
return segments.join('/');
|
|
85
|
+
}
|
|
86
|
+
// ─── Permission Checks ──────────────────────────────────────────────────────
|
|
87
|
+
/**
|
|
88
|
+
* Checks if a user has permission to run this query based on their roles.
|
|
89
|
+
* A user can run a query if:
|
|
90
|
+
* 1. The query has no permissions defined (open to all)
|
|
91
|
+
* 2. The user has at least one role that is granted permission
|
|
92
|
+
*/
|
|
93
|
+
UserHasRunPermissions(user) {
|
|
94
|
+
const permissions = this.QueryPermissions;
|
|
95
|
+
if (!permissions || permissions.length === 0) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
if (user && user.UserRoles) {
|
|
99
|
+
for (const userRole of user.UserRoles) {
|
|
100
|
+
if (permissions.some(p => p.Role.trim().toLowerCase() === userRole.Role.trim().toLowerCase())) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Checks if a user can run this query based on permissions.
|
|
109
|
+
* Non-approved queries are allowed to execute (with a server-side warning)
|
|
110
|
+
* to enable testing before formal approval.
|
|
111
|
+
*/
|
|
112
|
+
UserCanRun(user) {
|
|
113
|
+
return this.UserHasRunPermissions(user);
|
|
114
|
+
}
|
|
115
|
+
// ─── Status Checks ──────────────────────────────────────────────────────────
|
|
116
|
+
/** Whether this query has been formally approved for production use */
|
|
117
|
+
get IsApproved() {
|
|
118
|
+
return this.Status === 'Approved';
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Whether this query can be referenced by other queries via composition syntax.
|
|
122
|
+
* A query is composable only when both Reusable=true and Status='Approved'.
|
|
123
|
+
*/
|
|
124
|
+
get IsComposable() {
|
|
125
|
+
return this.Reusable && this.IsApproved;
|
|
126
|
+
}
|
|
127
|
+
// ─── Platform SQL Resolution ────────────────────────────────────────────────
|
|
128
|
+
/**
|
|
129
|
+
* Resolves the SQL for a given database platform.
|
|
130
|
+
* Resolution order:
|
|
131
|
+
* 1. QuerySQL child table entry matching this query + platform's dialect
|
|
132
|
+
* 2. Base SQL property (the query's primary SQL)
|
|
133
|
+
*/
|
|
134
|
+
GetPlatformSQL(platform) {
|
|
135
|
+
const qe = QueryEngine.Instance;
|
|
136
|
+
const dialect = qe.SQLDialects.find(d => d.PlatformKey === platform);
|
|
137
|
+
if (dialect) {
|
|
138
|
+
const entry = qe.QuerySQLs.find(qs => UUIDsEqual(qs.QueryID, this.ID) && UUIDsEqual(qs.SQLDialectID, dialect.ID));
|
|
139
|
+
if (entry?.SQL)
|
|
140
|
+
return entry.SQL;
|
|
141
|
+
}
|
|
142
|
+
return this.SQL;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Gets the cache configuration for this query.
|
|
146
|
+
* If the query has no explicit cache config but category inheritance is enabled,
|
|
147
|
+
* walks up the category tree to find inherited cache settings.
|
|
148
|
+
*/
|
|
149
|
+
get CacheConfig() {
|
|
150
|
+
if (this._cacheConfig !== null) {
|
|
151
|
+
return this._cacheConfig;
|
|
152
|
+
}
|
|
153
|
+
if (this.CacheEnabled) {
|
|
154
|
+
this._cacheConfig = {
|
|
155
|
+
enabled: true,
|
|
156
|
+
ttlMinutes: this.CacheTTLMinutes || 60,
|
|
157
|
+
maxCacheSize: this.CacheMaxSize || undefined,
|
|
158
|
+
cacheKey: 'exact'
|
|
159
|
+
};
|
|
160
|
+
return this._cacheConfig;
|
|
161
|
+
}
|
|
162
|
+
const inherited = this.getInheritedCacheConfig();
|
|
163
|
+
if (inherited) {
|
|
164
|
+
this._cacheConfig = inherited;
|
|
165
|
+
return this._cacheConfig;
|
|
166
|
+
}
|
|
167
|
+
this._cacheConfig = { enabled: false, ttlMinutes: 0 };
|
|
168
|
+
return this._cacheConfig;
|
|
169
|
+
}
|
|
170
|
+
getInheritedCacheConfig() {
|
|
171
|
+
const categories = QueryEngine.Instance.Categories;
|
|
172
|
+
let catID = this.CategoryID;
|
|
173
|
+
while (catID) {
|
|
174
|
+
const cat = categories.find(c => UUIDsEqual(c.ID, catID));
|
|
175
|
+
if (!cat)
|
|
176
|
+
break;
|
|
177
|
+
if (cat.DefaultCacheEnabled && cat.CacheInheritanceEnabled) {
|
|
178
|
+
return {
|
|
179
|
+
enabled: true,
|
|
180
|
+
ttlMinutes: cat.DefaultCacheTTLMinutes || 60,
|
|
181
|
+
maxCacheSize: cat.DefaultCacheMaxSize || undefined,
|
|
182
|
+
cacheKey: 'exact',
|
|
183
|
+
inheritFromCategory: true
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
catID = cat.ParentID;
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
MJQueryEntityExtended = __decorate([
|
|
192
|
+
RegisterClass(BaseEntity, 'MJ: Queries')
|
|
193
|
+
], MJQueryEntityExtended);
|
|
194
|
+
export { MJQueryEntityExtended };
|
|
195
|
+
//# sourceMappingURL=MJQueryEntityExtended.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJQueryEntityExtended.js","sourceRoot":"","sources":["../../src/custom/MJQueryEntityExtended.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,10 @@ let ResourcePermissionEngine = class ResourcePermissionEngine extends BaseEngine
|
|
|
34
34
|
await super.Load(c, provider, forceRefresh, contextUser);
|
|
35
35
|
}
|
|
36
36
|
get ResourceTypes() {
|
|
37
|
-
return this._ResourceTypes
|
|
37
|
+
return this._ResourceTypes?.ResourceTypes ?? [];
|
|
38
38
|
}
|
|
39
39
|
get Permissions() {
|
|
40
|
-
return this._Permissions;
|
|
40
|
+
return this._Permissions ?? [];
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Case-insensitive name → ID lookup against the cached `MJ: Resource Types`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcePermissionEngine.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAA6D,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAC3I,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD;;GAEG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAoC;IAC9E;;OAEG;IACI,MAAM,KAAK,QAAQ;QACvB,OAAO,KAAK,CAAC,WAAW,EAA4B,CAAC;IACxD,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,YAAsB,EAAE,WAAsB,EAAE,QAA4B;QAC5F,MAAM,CAAC,GAAwC;YAC3C;gBACI,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,0BAA0B;gBACtC,YAAY,EAAE,cAAc;gBAC5B,UAAU,EAAE,IAAI;aACnB;YACD;gBACI,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,eAAe;gBAC5B,YAAY,EAAE,gBAAgB;gBAC9B,qBAAqB,EAAE,iBAAiB;aAC3C;SACJ,CAAA;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"ResourcePermissionEngine.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { BaseEngine, IMetadataProvider, UserInfo } from "@memberjunction/core";
|
|
2
|
-
import {
|
|
2
|
+
import { MJQueryCategoryEntity, MJQueryFieldEntity, MJQueryParameterEntity, MJQueryEntityEntity, MJQueryPermissionEntity, MJQueryDependencyEntity, MJQuerySQLEntity, MJSQLDialectEntity } from "../generated/entity_subclasses.js";
|
|
3
|
+
import { MJQueryEntityExtended } from "../custom/MJQueryEntityExtended.js";
|
|
3
4
|
/**
|
|
4
5
|
* Caching of metadata for queries and related data, with auto-refresh on entity changes.
|
|
5
|
-
*
|
|
6
|
+
* Returns `MJQueryEntityExtended` instances which include child-relationship getters
|
|
7
|
+
* (QueryFields, QueryParameters, etc.) and business logic (UserCanRun, CategoryPath, etc.).
|
|
6
8
|
*/
|
|
7
9
|
export declare class QueryEngine extends BaseEngine<QueryEngine> {
|
|
8
10
|
/**
|
|
@@ -16,25 +18,44 @@ export declare class QueryEngine extends BaseEngine<QueryEngine> {
|
|
|
16
18
|
private _parameters;
|
|
17
19
|
private _queryEntities;
|
|
18
20
|
private _permissions;
|
|
21
|
+
private _dependencies;
|
|
22
|
+
private _querySQLs;
|
|
23
|
+
private _sqlDialects;
|
|
19
24
|
Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
|
|
20
25
|
/** All queries in the system */
|
|
21
|
-
get Queries():
|
|
26
|
+
get Queries(): MJQueryEntityExtended[];
|
|
22
27
|
/** All query categories */
|
|
23
28
|
get Categories(): MJQueryCategoryEntity[];
|
|
29
|
+
/** Alias for `Categories` — matches IMetadataProvider naming convention */
|
|
30
|
+
get QueryCategories(): MJQueryCategoryEntity[];
|
|
24
31
|
/** All query field definitions */
|
|
25
32
|
get Fields(): MJQueryFieldEntity[];
|
|
33
|
+
/** Alias for `Fields` — matches IMetadataProvider naming convention */
|
|
34
|
+
get QueryFields(): MJQueryFieldEntity[];
|
|
26
35
|
/** All query parameter definitions */
|
|
27
36
|
get Parameters(): MJQueryParameterEntity[];
|
|
37
|
+
/** Alias for `Parameters` — matches IMetadataProvider naming convention */
|
|
38
|
+
get QueryParameters(): MJQueryParameterEntity[];
|
|
28
39
|
/** All query-to-entity relationship mappings */
|
|
29
40
|
get QueryEntities(): MJQueryEntityEntity[];
|
|
30
41
|
/** All query permission records */
|
|
31
42
|
get Permissions(): MJQueryPermissionEntity[];
|
|
43
|
+
/** Alias for `Permissions` — matches IMetadataProvider naming convention */
|
|
44
|
+
get QueryPermissions(): MJQueryPermissionEntity[];
|
|
45
|
+
/** All query dependency records (composition references) */
|
|
46
|
+
get Dependencies(): MJQueryDependencyEntity[];
|
|
47
|
+
/** Alias for `Dependencies` — matches IMetadataProvider naming convention */
|
|
48
|
+
get QueryDependencies(): MJQueryDependencyEntity[];
|
|
49
|
+
/** All query SQL dialect-specific entries */
|
|
50
|
+
get QuerySQLs(): MJQuerySQLEntity[];
|
|
51
|
+
/** All SQL dialect definitions */
|
|
52
|
+
get SQLDialects(): MJSQLDialectEntity[];
|
|
32
53
|
/** Returns only queries with Status === 'Approved' */
|
|
33
|
-
get ApprovedQueries():
|
|
54
|
+
get ApprovedQueries(): MJQueryEntityExtended[];
|
|
34
55
|
/** Find a query by its ID */
|
|
35
|
-
FindQueryByID(id: string):
|
|
56
|
+
FindQueryByID(id: string): MJQueryEntityExtended | undefined;
|
|
36
57
|
/** Find a query by name, optionally scoped to a category */
|
|
37
|
-
FindQueryByName(name: string, categoryId?: string):
|
|
58
|
+
FindQueryByName(name: string, categoryId?: string): MJQueryEntityExtended | undefined;
|
|
38
59
|
/** Get all field definitions for a specific query */
|
|
39
60
|
GetQueryFields(queryId: string): MJQueryFieldEntity[];
|
|
40
61
|
/** Get all parameter definitions for a specific query */
|
|
@@ -42,7 +63,7 @@ export declare class QueryEngine extends BaseEngine<QueryEngine> {
|
|
|
42
63
|
/** Get all permission records for a specific query */
|
|
43
64
|
GetQueryPermissions(queryId: string): MJQueryPermissionEntity[];
|
|
44
65
|
/** Get all queries belonging to a specific category */
|
|
45
|
-
GetQueriesByCategory(categoryId: string):
|
|
66
|
+
GetQueriesByCategory(categoryId: string): MJQueryEntityExtended[];
|
|
46
67
|
/** Find a category by name (case-insensitive) */
|
|
47
68
|
FindCategory(name: string): MJQueryCategoryEntity | undefined;
|
|
48
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEngine.d.ts","sourceRoot":"","sources":["../../src/engines/QueryEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7H,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"QueryEngine.d.ts","sourceRoot":"","sources":["../../src/engines/QueryEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAsB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7H,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE;;;;GAIG;AACH,qBACa,WAAY,SAAQ,UAAU,CAAC,WAAW,CAAC;IACpD;;;OAGG;IACH,WAAkB,QAAQ,IAAI,WAAW,CAExC;IAED,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,YAAY,CAA4B;IAEnC,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAiBhG,gCAAgC;IAChC,IAAW,OAAO,IAAI,qBAAqB,EAAE,CAE5C;IAED,2BAA2B;IAC3B,IAAW,UAAU,IAAI,qBAAqB,EAAE,CAE/C;IAED,2EAA2E;IAC3E,IAAW,eAAe,IAAI,qBAAqB,EAAE,CAEpD;IAED,kCAAkC;IAClC,IAAW,MAAM,IAAI,kBAAkB,EAAE,CAExC;IAED,uEAAuE;IACvE,IAAW,WAAW,IAAI,kBAAkB,EAAE,CAE7C;IAED,sCAAsC;IACtC,IAAW,UAAU,IAAI,sBAAsB,EAAE,CAEhD;IAED,2EAA2E;IAC3E,IAAW,eAAe,IAAI,sBAAsB,EAAE,CAErD;IAED,gDAAgD;IAChD,IAAW,aAAa,IAAI,mBAAmB,EAAE,CAEhD;IAED,mCAAmC;IACnC,IAAW,WAAW,IAAI,uBAAuB,EAAE,CAElD;IAED,4EAA4E;IAC5E,IAAW,gBAAgB,IAAI,uBAAuB,EAAE,CAEvD;IAED,4DAA4D;IAC5D,IAAW,YAAY,IAAI,uBAAuB,EAAE,CAEnD;IAED,6EAA6E;IAC7E,IAAW,iBAAiB,IAAI,uBAAuB,EAAE,CAExD;IAED,6CAA6C;IAC7C,IAAW,SAAS,IAAI,gBAAgB,EAAE,CAEzC;IAED,kCAAkC;IAClC,IAAW,WAAW,IAAI,kBAAkB,EAAE,CAE7C;IAID,sDAAsD;IACtD,IAAW,eAAe,IAAI,qBAAqB,EAAE,CAEpD;IAED,6BAA6B;IACtB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMnE,4DAA4D;IACrD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAW5F,qDAAqD;IAC9C,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAI5D,yDAAyD;IAClD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIpE,sDAAsD;IAC/C,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,EAAE;IAItE,uDAAuD;IAChD,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAIxE,iDAAiD;IAC1C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;CAKvE"}
|
|
@@ -8,7 +8,8 @@ import { BaseEngine, RegisterForStartup } from "@memberjunction/core";
|
|
|
8
8
|
import { UUIDsEqual } from "@memberjunction/global";
|
|
9
9
|
/**
|
|
10
10
|
* Caching of metadata for queries and related data, with auto-refresh on entity changes.
|
|
11
|
-
*
|
|
11
|
+
* Returns `MJQueryEntityExtended` instances which include child-relationship getters
|
|
12
|
+
* (QueryFields, QueryParameters, etc.) and business logic (UserCanRun, CategoryPath, etc.).
|
|
12
13
|
*/
|
|
13
14
|
let QueryEngine = class QueryEngine extends BaseEngine {
|
|
14
15
|
constructor() {
|
|
@@ -19,6 +20,9 @@ let QueryEngine = class QueryEngine extends BaseEngine {
|
|
|
19
20
|
this._parameters = [];
|
|
20
21
|
this._queryEntities = [];
|
|
21
22
|
this._permissions = [];
|
|
23
|
+
this._dependencies = [];
|
|
24
|
+
this._querySQLs = [];
|
|
25
|
+
this._sqlDialects = [];
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
24
28
|
* Returns the global instance of the class. This is a singleton class, so there is only one instance of it in the application.
|
|
@@ -35,6 +39,9 @@ let QueryEngine = class QueryEngine extends BaseEngine {
|
|
|
35
39
|
{ Type: 'entity', EntityName: 'MJ: Query Parameters', PropertyName: '_parameters', CacheLocal: true },
|
|
36
40
|
{ Type: 'entity', EntityName: 'MJ: Query Entities', PropertyName: '_queryEntities', CacheLocal: true },
|
|
37
41
|
{ Type: 'entity', EntityName: 'MJ: Query Permissions', PropertyName: '_permissions', CacheLocal: true },
|
|
42
|
+
{ Type: 'entity', EntityName: 'MJ: Query Dependencies', PropertyName: '_dependencies', CacheLocal: true },
|
|
43
|
+
{ Type: 'entity', EntityName: 'MJ: Query SQLs', PropertyName: '_querySQLs', CacheLocal: true },
|
|
44
|
+
{ Type: 'entity', EntityName: 'MJ: SQL Dialects', PropertyName: '_sqlDialects', CacheLocal: true },
|
|
38
45
|
];
|
|
39
46
|
await this.Load(configs, provider, forceRefresh, contextUser);
|
|
40
47
|
}
|
|
@@ -47,14 +54,26 @@ let QueryEngine = class QueryEngine extends BaseEngine {
|
|
|
47
54
|
get Categories() {
|
|
48
55
|
return this._categories;
|
|
49
56
|
}
|
|
57
|
+
/** Alias for `Categories` — matches IMetadataProvider naming convention */
|
|
58
|
+
get QueryCategories() {
|
|
59
|
+
return this._categories;
|
|
60
|
+
}
|
|
50
61
|
/** All query field definitions */
|
|
51
62
|
get Fields() {
|
|
52
63
|
return this._fields;
|
|
53
64
|
}
|
|
65
|
+
/** Alias for `Fields` — matches IMetadataProvider naming convention */
|
|
66
|
+
get QueryFields() {
|
|
67
|
+
return this._fields;
|
|
68
|
+
}
|
|
54
69
|
/** All query parameter definitions */
|
|
55
70
|
get Parameters() {
|
|
56
71
|
return this._parameters;
|
|
57
72
|
}
|
|
73
|
+
/** Alias for `Parameters` — matches IMetadataProvider naming convention */
|
|
74
|
+
get QueryParameters() {
|
|
75
|
+
return this._parameters;
|
|
76
|
+
}
|
|
58
77
|
/** All query-to-entity relationship mappings */
|
|
59
78
|
get QueryEntities() {
|
|
60
79
|
return this._queryEntities;
|
|
@@ -63,6 +82,26 @@ let QueryEngine = class QueryEngine extends BaseEngine {
|
|
|
63
82
|
get Permissions() {
|
|
64
83
|
return this._permissions;
|
|
65
84
|
}
|
|
85
|
+
/** Alias for `Permissions` — matches IMetadataProvider naming convention */
|
|
86
|
+
get QueryPermissions() {
|
|
87
|
+
return this._permissions;
|
|
88
|
+
}
|
|
89
|
+
/** All query dependency records (composition references) */
|
|
90
|
+
get Dependencies() {
|
|
91
|
+
return this._dependencies;
|
|
92
|
+
}
|
|
93
|
+
/** Alias for `Dependencies` — matches IMetadataProvider naming convention */
|
|
94
|
+
get QueryDependencies() {
|
|
95
|
+
return this._dependencies;
|
|
96
|
+
}
|
|
97
|
+
/** All query SQL dialect-specific entries */
|
|
98
|
+
get QuerySQLs() {
|
|
99
|
+
return this._querySQLs;
|
|
100
|
+
}
|
|
101
|
+
/** All SQL dialect definitions */
|
|
102
|
+
get SQLDialects() {
|
|
103
|
+
return this._sqlDialects;
|
|
104
|
+
}
|
|
66
105
|
// --- Convenience helpers ---
|
|
67
106
|
/** Returns only queries with Status === 'Approved' */
|
|
68
107
|
get ApprovedQueries() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryEngine.js","sourceRoot":"","sources":["../../src/engines/QueryEngine.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAA+C,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AAC7H,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryEngine.js","sourceRoot":"","sources":["../../src/engines/QueryEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -103,6 +103,15 @@ export declare class UserInfoEngine extends BaseEngine<UserInfoEngine> {
|
|
|
103
103
|
get UserSettings(): MJUserSettingEntity[];
|
|
104
104
|
/**
|
|
105
105
|
* Get a user setting value by key.
|
|
106
|
+
*
|
|
107
|
+
* **Read-after-write semantics**: this consults the in-memory pending-
|
|
108
|
+
* debounced-writes map FIRST. Without that, a `SetSettingDebounced`
|
|
109
|
+
* followed immediately by `GetSetting` would return the old DB-cached
|
|
110
|
+
* value because the debounce timer hasn't fired yet and the entity
|
|
111
|
+
* hasn't been saved. Callers that update a preference and re-render
|
|
112
|
+
* synchronously (e.g. form-variant picker → form reload) depend on
|
|
113
|
+
* this freshness guarantee.
|
|
114
|
+
*
|
|
106
115
|
* @param settingKey - The setting key to find (e.g., "default-view-setting/Contacts")
|
|
107
116
|
* @returns The setting value string, or undefined if not found
|
|
108
117
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserInfoEngine.d.ts","sourceRoot":"","sources":["../../src/engines/UserInfoEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,UAAU,EAEV,iBAAiB,EAIjB,QAAQ,EACT,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,GAAG,oBAAoB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAEzH,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EACnC,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,cAAe,SAAQ,UAAU,CAAC,cAAc,CAAC;IAC5D;;;OAGG;IACH,WAAkB,QAAQ,IAAI,cAAc,CAE3C;IAGD,OAAO,CAAC,kBAAkB,CAAkC;IAC5D,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,iBAAiB,CAAiC;IAC1D,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,aAAa,CAA6B;IAGlD,OAAO,CAAC,kBAAkB,CAAsC;IAEhE,OAAO,CAAC,4BAA4B,CAA4C;IAEhF,OAAO,CAAC,iBAAiB,CAAiC;IAG1D,OAAO,CAAC,gBAAgB,CAAuB;IAG/C,OAAO,CAAC,yBAAyB,CAAmD;IAMpF;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAe;IAE1C;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAwF;IAEhH;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAA8C;IAE5E;;;OAGG;IACH,OAAO,CAAC,aAAa,CAA8B;IAEnD;;;;;;;OAOG;IACU,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8FhH;;;;;;OAMG;IACH,IAAW,kBAAkB,IAAI,UAAU,CAAC,wBAAwB,EAAE,CAAC,CAEtE;IAED;;;OAGG;IACH,IAAW,cAAc,IAAI,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAE9D;IAED;;;OAGG;IACH,IAAW,iBAAiB,IAAI,UAAU,CAAC,uBAAuB,EAAE,CAAC,CAEpE;IAMD;;OAEG;IACH,IAAW,iBAAiB,IAAI,wBAAwB,EAAE,CAKzD;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,mBAAmB,EAAE,CAG/C;IAED
|
|
1
|
+
{"version":3,"file":"UserInfoEngine.d.ts","sourceRoot":"","sources":["../../src/engines/UserInfoEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -219,10 +219,22 @@ let UserInfoEngine = class UserInfoEngine extends BaseEngine {
|
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* Get a user setting value by key.
|
|
222
|
+
*
|
|
223
|
+
* **Read-after-write semantics**: this consults the in-memory pending-
|
|
224
|
+
* debounced-writes map FIRST. Without that, a `SetSettingDebounced`
|
|
225
|
+
* followed immediately by `GetSetting` would return the old DB-cached
|
|
226
|
+
* value because the debounce timer hasn't fired yet and the entity
|
|
227
|
+
* hasn't been saved. Callers that update a preference and re-render
|
|
228
|
+
* synchronously (e.g. form-variant picker → form reload) depend on
|
|
229
|
+
* this freshness guarantee.
|
|
230
|
+
*
|
|
222
231
|
* @param settingKey - The setting key to find (e.g., "default-view-setting/Contacts")
|
|
223
232
|
* @returns The setting value string, or undefined if not found
|
|
224
233
|
*/
|
|
225
234
|
GetSetting(settingKey) {
|
|
235
|
+
const pending = this._pendingSettings.get(settingKey);
|
|
236
|
+
if (pending !== undefined)
|
|
237
|
+
return pending.value;
|
|
226
238
|
const setting = this.UserSettings.find((s) => s.Setting === settingKey);
|
|
227
239
|
return setting?.Value ?? undefined;
|
|
228
240
|
}
|