@memberjunction/core-entities-server 5.49.0 → 5.50.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/MJListDetailEntityServer.server.d.ts +31 -0
- package/dist/custom/MJListDetailEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJListDetailEntityServer.server.js +85 -0
- package/dist/custom/MJListDetailEntityServer.server.js.map +1 -0
- package/dist/custom/MJListEntityServer.server.d.ts +18 -0
- package/dist/custom/MJListEntityServer.server.d.ts.map +1 -0
- package/dist/custom/MJListEntityServer.server.js +42 -0
- package/dist/custom/MJListEntityServer.server.js.map +1 -0
- 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 +26 -26
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { EntityDeleteOptions } from '@memberjunction/core';
|
|
2
|
+
import { MJListDetailEntityExtended } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side List Details entity. Enforces the SAME row-level DELETE authorization as
|
|
5
|
+
* {@link MJListEntityServer}, but scoped through the parent List's owner: a user may delete a
|
|
6
|
+
* List Detail only if they own the List it belongs to, UNLESS they hold the Developer or Integration
|
|
7
|
+
* role (who may delete any). The rule itself lives once in {@link MJListEntityExtended.UserCanDelete}
|
|
8
|
+
* and is shared with the Lists entity and the UI — a single source of truth for "who can delete".
|
|
9
|
+
*
|
|
10
|
+
* Why this is needed: the `EntityPermission` migration grants the UI role entity-wide Delete on BOTH
|
|
11
|
+
* Lists AND List Details (so users can manage their own lists). Lists get owner-scoping in
|
|
12
|
+
* `MJListEntityServer`; without this parallel override a UI user could delete the membership rows of
|
|
13
|
+
* lists they DON'T own, because a List Detail carries no owner of its own — only a `ListID`.
|
|
14
|
+
*
|
|
15
|
+
* The owner is resolved by looking up the parent List's `UserID`. If the parent List can't be found
|
|
16
|
+
* (an orphaned detail, or the parent already deleted during list teardown — `spDeleteList` does not
|
|
17
|
+
* cascade, so details are removed while the parent still exists in the normal path) the rule
|
|
18
|
+
* fails OPEN: there is no owner to protect and the coarse entity permission still applies. Enforcement
|
|
19
|
+
* only bites when a parent List genuinely exists and is owned by someone else.
|
|
20
|
+
*/
|
|
21
|
+
export declare class MJListDetailEntityServer extends MJListDetailEntityExtended {
|
|
22
|
+
Delete(options?: EntityDeleteOptions): Promise<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Looks up the `UserID` (owner) of this detail's parent List. Returns `null` when it can't be
|
|
25
|
+
* positively determined (no `ListID`, parent not found, or the lookup failed) so the caller can
|
|
26
|
+
* fail open rather than block a legitimate/cascade delete. A read-only `simple` RunView limited to
|
|
27
|
+
* the single `UserID` field keeps this cheap.
|
|
28
|
+
*/
|
|
29
|
+
private resolveParentListOwnerUserID;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=MJListDetailEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListDetailEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJListDetailEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,mBAAmB,EAAY,MAAM,sBAAsB,CAAC;AAEnG,OAAO,EAAE,0BAA0B,EAAwB,MAAM,+BAA+B,CAAC;AAEjG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBACa,wBAAyB,SAAQ,0BAA0B;IAC9C,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB7E;;;;;OAKG;YACW,4BAA4B;CA2B7C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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, BaseEntityResult, LogError } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { MJListDetailEntityExtended, MJListEntityExtended } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side List Details entity. Enforces the SAME row-level DELETE authorization as
|
|
12
|
+
* {@link MJListEntityServer}, but scoped through the parent List's owner: a user may delete a
|
|
13
|
+
* List Detail only if they own the List it belongs to, UNLESS they hold the Developer or Integration
|
|
14
|
+
* role (who may delete any). The rule itself lives once in {@link MJListEntityExtended.UserCanDelete}
|
|
15
|
+
* and is shared with the Lists entity and the UI — a single source of truth for "who can delete".
|
|
16
|
+
*
|
|
17
|
+
* Why this is needed: the `EntityPermission` migration grants the UI role entity-wide Delete on BOTH
|
|
18
|
+
* Lists AND List Details (so users can manage their own lists). Lists get owner-scoping in
|
|
19
|
+
* `MJListEntityServer`; without this parallel override a UI user could delete the membership rows of
|
|
20
|
+
* lists they DON'T own, because a List Detail carries no owner of its own — only a `ListID`.
|
|
21
|
+
*
|
|
22
|
+
* The owner is resolved by looking up the parent List's `UserID`. If the parent List can't be found
|
|
23
|
+
* (an orphaned detail, or the parent already deleted during list teardown — `spDeleteList` does not
|
|
24
|
+
* cascade, so details are removed while the parent still exists in the normal path) the rule
|
|
25
|
+
* fails OPEN: there is no owner to protect and the coarse entity permission still applies. Enforcement
|
|
26
|
+
* only bites when a parent List genuinely exists and is owned by someone else.
|
|
27
|
+
*/
|
|
28
|
+
let MJListDetailEntityServer = class MJListDetailEntityServer extends MJListDetailEntityExtended {
|
|
29
|
+
async Delete(options) {
|
|
30
|
+
const ownerUserID = await this.resolveParentListOwnerUserID();
|
|
31
|
+
// Only enforce when we could positively identify the owning user. A null owner means the
|
|
32
|
+
// parent List wasn't found (orphan / already-deleted parent) — nothing to protect, fall open.
|
|
33
|
+
if (ownerUserID != null &&
|
|
34
|
+
!MJListEntityExtended.UserCanDelete(ownerUserID, this.ContextCurrentUser)) {
|
|
35
|
+
const result = new BaseEntityResult();
|
|
36
|
+
result.StartedAt = new Date();
|
|
37
|
+
result.Success = false;
|
|
38
|
+
result.Type = 'delete';
|
|
39
|
+
result.Message = 'You do not have permission to delete this List item. Only the owner of ' +
|
|
40
|
+
'the parent List, or a user in the Developer or Integration role, may delete it.';
|
|
41
|
+
result.EndedAt = new Date();
|
|
42
|
+
this.RegisterResultHistoryEntry(result);
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return super.Delete(options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Looks up the `UserID` (owner) of this detail's parent List. Returns `null` when it can't be
|
|
49
|
+
* positively determined (no `ListID`, parent not found, or the lookup failed) so the caller can
|
|
50
|
+
* fail open rather than block a legitimate/cascade delete. A read-only `simple` RunView limited to
|
|
51
|
+
* the single `UserID` field keeps this cheap.
|
|
52
|
+
*/
|
|
53
|
+
async resolveParentListOwnerUserID() {
|
|
54
|
+
if (!this.ListID) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
// Use the provider bound to THIS entity instance (not the global default) so the lookup
|
|
59
|
+
// targets the correct server/tenant in multi-provider setups — mirrors the sibling
|
|
60
|
+
// MJListDetailEntityExtended.Save() and CLAUDE.md's per-provider rule.
|
|
61
|
+
const rv = this.RunViewProviderToUse;
|
|
62
|
+
const result = await rv.RunView({
|
|
63
|
+
EntityName: 'MJ: Lists',
|
|
64
|
+
ExtraFilter: `ID = '${this.ListID}'`,
|
|
65
|
+
Fields: ['ID', 'UserID'],
|
|
66
|
+
MaxRows: 1,
|
|
67
|
+
ResultType: 'simple'
|
|
68
|
+
}, this.ContextCurrentUser);
|
|
69
|
+
if (result.Success && result.Results && result.Results.length > 0) {
|
|
70
|
+
return result.Results[0].UserID ?? null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
// Fail open on a lookup error — don't block deletes on a transient read failure. The
|
|
75
|
+
// security-relevant case (parent exists, owned by someone else) resolves normally.
|
|
76
|
+
LogError(`MJListDetailEntityServer: failed to resolve parent List owner for ListID '${this.ListID}': ${e}`);
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
MJListDetailEntityServer = __decorate([
|
|
82
|
+
RegisterClass(BaseEntity, 'MJ: List Details')
|
|
83
|
+
], MJListDetailEntityServer);
|
|
84
|
+
export { MJListDetailEntityServer };
|
|
85
|
+
//# sourceMappingURL=MJListDetailEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListDetailEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJListDetailEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAEjG;;;;;;;;;;;;;;;;;GAiBG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,0BAA0B;IACpD,KAAK,CAAC,MAAM,CAAC,OAA6B;QACtD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAE9D,yFAAyF;QACzF,8FAA8F;QAC9F,IAAI,WAAW,IAAI,IAAI;YACnB,CAAC,oBAAoB,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,yEAAyE;gBACtF,iFAAiF,CAAC;YACtF,MAAM,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,4BAA4B;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACD,wFAAwF;YACxF,mFAAmF;YACnF,uEAAuE;YACvE,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAiC;gBAC5D,UAAU,EAAE,WAAW;gBACvB,WAAW,EAAE,SAAS,IAAI,CAAC,MAAM,GAAG;gBACpC,MAAM,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;gBACxB,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,QAAQ;aACvB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAC5C,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,qFAAqF;YACrF,mFAAmF;YACnF,QAAQ,CAAC,6EAA6E,IAAI,CAAC,MAAM,MAAM,CAAC,EAAE,CAAC,CAAC;QAChH,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AAtDY,wBAAwB;IADpC,aAAa,CAAC,UAAU,EAAE,kBAAkB,CAAC;GACjC,wBAAwB,CAsDpC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { EntityDeleteOptions } from '@memberjunction/core';
|
|
2
|
+
import { MJListEntityExtended } from '@memberjunction/core-entities';
|
|
3
|
+
/**
|
|
4
|
+
* Server-side Lists entity. Enforces row-level DELETE authorization: a user may delete a List only
|
|
5
|
+
* if they own it, UNLESS they hold the Developer or Integration role (who may delete any List). The
|
|
6
|
+
* rule itself lives once in {@link MJListEntityExtended.UserCanDelete} and is shared with the UI.
|
|
7
|
+
*
|
|
8
|
+
* This is the security-critical enforcement point. The `EntityPermission` migration grants the UI
|
|
9
|
+
* role entity-wide Delete permission on Lists (so standard users can delete their own); this override
|
|
10
|
+
* narrows that back down to owner-or-privileged at the application layer, since coarse entity
|
|
11
|
+
* permissions can't express row-level ownership. On denial it returns `false` and records a
|
|
12
|
+
* `BaseEntityResult` so callers get `LatestResult.CompleteMessage` (Delete does not throw on a
|
|
13
|
+
* logical rejection — see the CLAUDE.md Save/Delete error-handling contract).
|
|
14
|
+
*/
|
|
15
|
+
export declare class MJListEntityServer extends MJListEntityExtended {
|
|
16
|
+
Delete(options?: EntityDeleteOptions): Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=MJListEntityServer.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJListEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;;;;;;GAWG;AACH,qBACa,kBAAmB,SAAQ,oBAAoB;IAClC,MAAM,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;CAchF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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, BaseEntityResult } from '@memberjunction/core';
|
|
8
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
9
|
+
import { MJListEntityExtended } from '@memberjunction/core-entities';
|
|
10
|
+
/**
|
|
11
|
+
* Server-side Lists entity. Enforces row-level DELETE authorization: a user may delete a List only
|
|
12
|
+
* if they own it, UNLESS they hold the Developer or Integration role (who may delete any List). The
|
|
13
|
+
* rule itself lives once in {@link MJListEntityExtended.UserCanDelete} and is shared with the UI.
|
|
14
|
+
*
|
|
15
|
+
* This is the security-critical enforcement point. The `EntityPermission` migration grants the UI
|
|
16
|
+
* role entity-wide Delete permission on Lists (so standard users can delete their own); this override
|
|
17
|
+
* narrows that back down to owner-or-privileged at the application layer, since coarse entity
|
|
18
|
+
* permissions can't express row-level ownership. On denial it returns `false` and records a
|
|
19
|
+
* `BaseEntityResult` so callers get `LatestResult.CompleteMessage` (Delete does not throw on a
|
|
20
|
+
* logical rejection — see the CLAUDE.md Save/Delete error-handling contract).
|
|
21
|
+
*/
|
|
22
|
+
let MJListEntityServer = class MJListEntityServer extends MJListEntityExtended {
|
|
23
|
+
async Delete(options) {
|
|
24
|
+
if (!MJListEntityExtended.UserCanDelete(this.UserID, this.ContextCurrentUser)) {
|
|
25
|
+
const result = new BaseEntityResult();
|
|
26
|
+
result.StartedAt = new Date();
|
|
27
|
+
result.Success = false;
|
|
28
|
+
result.Type = 'delete';
|
|
29
|
+
result.Message = 'You do not have permission to delete this List. Only the List owner, ' +
|
|
30
|
+
'or a user in the Developer or Integration role, may delete it.';
|
|
31
|
+
result.EndedAt = new Date();
|
|
32
|
+
this.RegisterResultHistoryEntry(result);
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
return super.Delete(options);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
MJListEntityServer = __decorate([
|
|
39
|
+
RegisterClass(BaseEntity, 'MJ: Lists')
|
|
40
|
+
], MJListEntityServer);
|
|
41
|
+
export { MJListEntityServer };
|
|
42
|
+
//# sourceMappingURL=MJListEntityServer.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MJListEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJListEntityServer.server.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE;;;;;;;;;;;GAWG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,oBAAoB;IACxC,KAAK,CAAC,MAAM,CAAC,OAA6B;QACtD,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,uEAAuE;gBACpF,gEAAgE,CAAC;YACrE,MAAM,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;CACJ,CAAA;AAfY,kBAAkB;IAD9B,aAAa,CAAC,UAAU,EAAE,WAAW,CAAC;GAC1B,kBAAkB,CAe9B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export * from './custom/MJQueryEntityServer.server.js';
|
|
|
8
8
|
export * from './custom/MJQuerySQLEntityServer.server.js';
|
|
9
9
|
export * from './custom/MJTemplateContentEntityServer.server.js';
|
|
10
10
|
export * from './custom/MJUserViewEntityServer.server.js';
|
|
11
|
+
export * from './custom/MJListEntityServer.server.js';
|
|
12
|
+
export * from './custom/MJListDetailEntityServer.server.js';
|
|
11
13
|
export * from './custom/MJActionEntityServer.server.js';
|
|
12
14
|
export * from './custom/MJApplicationEntityServer.server.js';
|
|
13
15
|
export * from './custom/MJComponentEntityServer.server.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export * from './custom/MJQueryEntityServer.server.js';
|
|
|
8
8
|
export * from './custom/MJQuerySQLEntityServer.server.js';
|
|
9
9
|
export * from './custom/MJTemplateContentEntityServer.server.js';
|
|
10
10
|
export * from './custom/MJUserViewEntityServer.server.js';
|
|
11
|
+
export * from './custom/MJListEntityServer.server.js';
|
|
12
|
+
export * from './custom/MJListDetailEntityServer.server.js';
|
|
11
13
|
export * from './custom/MJActionEntityServer.server.js';
|
|
12
14
|
export * from './custom/MJApplicationEntityServer.server.js';
|
|
13
15
|
export * from './custom/MJComponentEntityServer.server.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wCAAwC,CAAC;AACvD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kDAAkD,CAAC;AACjE,cAAc,4DAA4D,CAAC;AAC3E,cAAc,4CAA4C,CAAC;AAC3D,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,wCAAwC,CAAC;AACvD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,sCAAsC,CAAC;AACrD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kDAAkD,CAAC;AACjE,cAAc,uCAAuC,CAAC;AACtD,cAAc,8CAA8C,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,qDAAqD,CAAC;AACpE,cAAc,uDAAuD,CAAC;AACtE,cAAc,oDAAoD,CAAC;AACnE,cAAc,+DAA+D,CAAC;AAC9E,cAAc,uDAAuD,CAAC;AACtE,cAAc,iDAAiD,CAAC;AAChE,cAAc,uCAAuC,CAAC;AACtD,cAAc,kDAAkD,CAAC;AACjE,cAAc,2CAA2C,CAAC;AAC1D,cAAc,oDAAoD,CAAC;AACnE,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,eAAe,CAAC;AAE9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yCAAyC,CAAC;AAAA,cAAc,+CAA+C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-entities-server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.50.0",
|
|
5
5
|
"description": "Entity subclasses for the metadata layer of MemberJunction that are only used on server side applications like MJAPI, distributed as part of each release of MemberJunction",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -21,33 +21,33 @@
|
|
|
21
21
|
"typescript": "^5.9.3"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@memberjunction/actions-base": "5.
|
|
25
|
-
"@memberjunction/ai": "5.
|
|
26
|
-
"@memberjunction/ai-core-plus": "5.
|
|
27
|
-
"@memberjunction/ai-engine-base": "5.
|
|
28
|
-
"@memberjunction/ai-prompts": "5.
|
|
29
|
-
"@memberjunction/ai-provider-bundle": "5.
|
|
30
|
-
"@memberjunction/ai-vector-dupe": "5.
|
|
31
|
-
"@memberjunction/ai-vectordb": "5.
|
|
32
|
-
"@memberjunction/ai-vectors-memory": "5.
|
|
33
|
-
"@memberjunction/aiengine": "5.
|
|
34
|
-
"@memberjunction/core": "5.
|
|
35
|
-
"@memberjunction/core-entities": "5.
|
|
36
|
-
"@memberjunction/predictive-studio-core": "5.
|
|
37
|
-
"@memberjunction/doc-utils": "5.
|
|
38
|
-
"@memberjunction/generic-database-provider": "5.
|
|
39
|
-
"@memberjunction/global": "5.
|
|
40
|
-
"@memberjunction/integration-engine": "5.
|
|
41
|
-
"@memberjunction/integration-pk-classifier": "5.
|
|
42
|
-
"@memberjunction/scheduling-engine": "5.
|
|
43
|
-
"@memberjunction/sql-converter": "5.
|
|
44
|
-
"@memberjunction/sql-dialect": "5.
|
|
45
|
-
"@memberjunction/sql-parser": "5.
|
|
46
|
-
"@memberjunction/sqlserver-dataprovider": "5.
|
|
47
|
-
"@memberjunction/tag-engine": "5.
|
|
24
|
+
"@memberjunction/actions-base": "5.50.0",
|
|
25
|
+
"@memberjunction/ai": "5.50.0",
|
|
26
|
+
"@memberjunction/ai-core-plus": "5.50.0",
|
|
27
|
+
"@memberjunction/ai-engine-base": "5.50.0",
|
|
28
|
+
"@memberjunction/ai-prompts": "5.50.0",
|
|
29
|
+
"@memberjunction/ai-provider-bundle": "5.50.0",
|
|
30
|
+
"@memberjunction/ai-vector-dupe": "5.50.0",
|
|
31
|
+
"@memberjunction/ai-vectordb": "5.50.0",
|
|
32
|
+
"@memberjunction/ai-vectors-memory": "5.50.0",
|
|
33
|
+
"@memberjunction/aiengine": "5.50.0",
|
|
34
|
+
"@memberjunction/core": "5.50.0",
|
|
35
|
+
"@memberjunction/core-entities": "5.50.0",
|
|
36
|
+
"@memberjunction/predictive-studio-core": "5.50.0",
|
|
37
|
+
"@memberjunction/doc-utils": "5.50.0",
|
|
38
|
+
"@memberjunction/generic-database-provider": "5.50.0",
|
|
39
|
+
"@memberjunction/global": "5.50.0",
|
|
40
|
+
"@memberjunction/integration-engine": "5.50.0",
|
|
41
|
+
"@memberjunction/integration-pk-classifier": "5.50.0",
|
|
42
|
+
"@memberjunction/scheduling-engine": "5.50.0",
|
|
43
|
+
"@memberjunction/sql-converter": "5.50.0",
|
|
44
|
+
"@memberjunction/sql-dialect": "5.50.0",
|
|
45
|
+
"@memberjunction/sql-parser": "5.50.0",
|
|
46
|
+
"@memberjunction/sqlserver-dataprovider": "5.50.0",
|
|
47
|
+
"@memberjunction/tag-engine": "5.50.0",
|
|
48
48
|
"nunjucks": "3.2.4",
|
|
49
49
|
"rxjs": "~7.8.1",
|
|
50
|
-
"zod": "
|
|
50
|
+
"zod": "^3.25.0"
|
|
51
51
|
},
|
|
52
52
|
"repository": {
|
|
53
53
|
"type": "git",
|