@memberjunction/core-entities 5.29.0 → 5.30.1

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.
Files changed (105) hide show
  1. package/dist/custom/MJConversationDetailEntityExtended.d.ts +31 -0
  2. package/dist/custom/MJConversationDetailEntityExtended.d.ts.map +1 -0
  3. package/dist/custom/MJConversationDetailEntityExtended.js +106 -0
  4. package/dist/custom/MJConversationDetailEntityExtended.js.map +1 -0
  5. package/dist/custom/PermissionProviders/AIAgentPermissionProvider.d.ts +31 -0
  6. package/dist/custom/PermissionProviders/AIAgentPermissionProvider.d.ts.map +1 -0
  7. package/dist/custom/PermissionProviders/AIAgentPermissionProvider.js +151 -0
  8. package/dist/custom/PermissionProviders/AIAgentPermissionProvider.js.map +1 -0
  9. package/dist/custom/PermissionProviders/AccessControlRuleProvider.d.ts +45 -0
  10. package/dist/custom/PermissionProviders/AccessControlRuleProvider.d.ts.map +1 -0
  11. package/dist/custom/PermissionProviders/AccessControlRuleProvider.js +253 -0
  12. package/dist/custom/PermissionProviders/AccessControlRuleProvider.js.map +1 -0
  13. package/dist/custom/PermissionProviders/ApplicationRolePermissionProvider.d.ts +28 -0
  14. package/dist/custom/PermissionProviders/ApplicationRolePermissionProvider.d.ts.map +1 -0
  15. package/dist/custom/PermissionProviders/ApplicationRolePermissionProvider.js +144 -0
  16. package/dist/custom/PermissionProviders/ApplicationRolePermissionProvider.js.map +1 -0
  17. package/dist/custom/PermissionProviders/ArtifactPermissionProvider.d.ts +45 -0
  18. package/dist/custom/PermissionProviders/ArtifactPermissionProvider.d.ts.map +1 -0
  19. package/dist/custom/PermissionProviders/ArtifactPermissionProvider.js +169 -0
  20. package/dist/custom/PermissionProviders/ArtifactPermissionProvider.js.map +1 -0
  21. package/dist/custom/PermissionProviders/CollectionPermissionProvider.d.ts +40 -0
  22. package/dist/custom/PermissionProviders/CollectionPermissionProvider.d.ts.map +1 -0
  23. package/dist/custom/PermissionProviders/CollectionPermissionProvider.js +220 -0
  24. package/dist/custom/PermissionProviders/CollectionPermissionProvider.js.map +1 -0
  25. package/dist/custom/PermissionProviders/DashboardPermissionProvider.d.ts +47 -0
  26. package/dist/custom/PermissionProviders/DashboardPermissionProvider.d.ts.map +1 -0
  27. package/dist/custom/PermissionProviders/DashboardPermissionProvider.js +218 -0
  28. package/dist/custom/PermissionProviders/DashboardPermissionProvider.js.map +1 -0
  29. package/dist/custom/PermissionProviders/EntityPermissionProvider.d.ts +25 -0
  30. package/dist/custom/PermissionProviders/EntityPermissionProvider.d.ts.map +1 -0
  31. package/dist/custom/PermissionProviders/EntityPermissionProvider.js +129 -0
  32. package/dist/custom/PermissionProviders/EntityPermissionProvider.js.map +1 -0
  33. package/dist/custom/PermissionProviders/QueryPermissionProvider.d.ts +24 -0
  34. package/dist/custom/PermissionProviders/QueryPermissionProvider.d.ts.map +1 -0
  35. package/dist/custom/PermissionProviders/QueryPermissionProvider.js +123 -0
  36. package/dist/custom/PermissionProviders/QueryPermissionProvider.js.map +1 -0
  37. package/dist/custom/PermissionProviders/ResourcePermissionProvider.d.ts +39 -0
  38. package/dist/custom/PermissionProviders/ResourcePermissionProvider.d.ts.map +1 -0
  39. package/dist/custom/PermissionProviders/ResourcePermissionProvider.js +193 -0
  40. package/dist/custom/PermissionProviders/ResourcePermissionProvider.js.map +1 -0
  41. package/dist/custom/PermissionProviders/index.d.ts +16 -0
  42. package/dist/custom/PermissionProviders/index.d.ts.map +1 -0
  43. package/dist/custom/PermissionProviders/index.js +41 -0
  44. package/dist/custom/PermissionProviders/index.js.map +1 -0
  45. package/dist/custom/Permissions/BaseShareEntityExtended.d.ts +105 -0
  46. package/dist/custom/Permissions/BaseShareEntityExtended.d.ts.map +1 -0
  47. package/dist/custom/Permissions/BaseShareEntityExtended.js +162 -0
  48. package/dist/custom/Permissions/BaseShareEntityExtended.js.map +1 -0
  49. package/dist/custom/Permissions/MJAccessControlRuleEntityExtended.d.ts +22 -0
  50. package/dist/custom/Permissions/MJAccessControlRuleEntityExtended.d.ts.map +1 -0
  51. package/dist/custom/Permissions/MJAccessControlRuleEntityExtended.js +75 -0
  52. package/dist/custom/Permissions/MJAccessControlRuleEntityExtended.js.map +1 -0
  53. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.d.ts +22 -0
  54. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.d.ts.map +1 -0
  55. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js +114 -0
  56. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js.map +1 -0
  57. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.d.ts +25 -0
  58. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.d.ts.map +1 -0
  59. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js +101 -0
  60. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js.map +1 -0
  61. package/dist/custom/Permissions/MJDashboardPermissionEntityExtended.d.ts +32 -0
  62. package/dist/custom/Permissions/MJDashboardPermissionEntityExtended.d.ts.map +1 -0
  63. package/dist/custom/Permissions/MJDashboardPermissionEntityExtended.js +95 -0
  64. package/dist/custom/Permissions/MJDashboardPermissionEntityExtended.js.map +1 -0
  65. package/dist/custom/Permissions/index.d.ts +13 -0
  66. package/dist/custom/Permissions/index.d.ts.map +1 -0
  67. package/dist/custom/Permissions/index.js +22 -0
  68. package/dist/custom/Permissions/index.js.map +1 -0
  69. package/dist/custom/Permissions/shareNotification.d.ts +72 -0
  70. package/dist/custom/Permissions/shareNotification.d.ts.map +1 -0
  71. package/dist/custom/Permissions/shareNotification.js +98 -0
  72. package/dist/custom/Permissions/shareNotification.js.map +1 -0
  73. package/dist/custom/ResourcePermissions/MJResourcePermissionEntityExtended.d.ts +63 -1
  74. package/dist/custom/ResourcePermissions/MJResourcePermissionEntityExtended.d.ts.map +1 -1
  75. package/dist/custom/ResourcePermissions/MJResourcePermissionEntityExtended.js +244 -27
  76. package/dist/custom/ResourcePermissions/MJResourcePermissionEntityExtended.js.map +1 -1
  77. package/dist/custom/ResourcePermissions/ResourcePermissionEngine.d.ts +7 -0
  78. package/dist/custom/ResourcePermissions/ResourcePermissionEngine.d.ts.map +1 -1
  79. package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js +13 -0
  80. package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js.map +1 -1
  81. package/dist/engines/GeoDataEngine.d.ts +42 -8
  82. package/dist/engines/GeoDataEngine.d.ts.map +1 -1
  83. package/dist/engines/GeoDataEngine.js +191 -36
  84. package/dist/engines/GeoDataEngine.js.map +1 -1
  85. package/dist/engines/PermissionEngine.d.ts +142 -0
  86. package/dist/engines/PermissionEngine.d.ts.map +1 -0
  87. package/dist/engines/PermissionEngine.js +343 -0
  88. package/dist/engines/PermissionEngine.js.map +1 -0
  89. package/dist/engines/UserInfoEngine.d.ts +6 -1
  90. package/dist/engines/UserInfoEngine.d.ts.map +1 -1
  91. package/dist/engines/UserInfoEngine.js +21 -5
  92. package/dist/engines/UserInfoEngine.js.map +1 -1
  93. package/dist/engines/conversations.d.ts +35 -0
  94. package/dist/engines/conversations.d.ts.map +1 -1
  95. package/dist/engines/conversations.js +103 -16
  96. package/dist/engines/conversations.js.map +1 -1
  97. package/dist/generated/entity_subclasses.d.ts +579 -52
  98. package/dist/generated/entity_subclasses.d.ts.map +1 -1
  99. package/dist/generated/entity_subclasses.js +697 -66
  100. package/dist/generated/entity_subclasses.js.map +1 -1
  101. package/dist/index.d.ts +4 -0
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +8 -0
  104. package/dist/index.js.map +1 -1
  105. package/package.json +5 -5
@@ -4,14 +4,159 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { BaseEntity, CompositeKey } from "@memberjunction/core";
7
+ import { BaseEntity, CompositeKey, EntityPermissionType, LogError } from "@memberjunction/core";
8
8
  import { RegisterClass, UUIDsEqual } from "@memberjunction/global";
9
9
  import { MJResourcePermissionEntity } from "../../generated/entity_subclasses.js";
10
10
  import { ResourcePermissionEngine } from "./ResourcePermissionEngine.js";
11
+ import { ConversationEngine } from "../../engines/conversations.js";
12
+ import { CreateShareNotification } from "../Permissions/shareNotification.js";
13
+ import { checkShareManagePermission } from "../Permissions/BaseShareEntityExtended.js";
14
+ /** `MJ: Resource Types.ID` for Conversations. */
15
+ const CONVERSATIONS_RESOURCE_TYPE_ID = '81D4BC3D-9FEB-EF11-B01A-286B35C04427';
11
16
  /**
12
17
  * Subclass for the Resource Permissiosn entity that implements some workflow logic
13
18
  */
14
19
  let MJResourcePermissionEntityExtended = class MJResourcePermissionEntityExtended extends MJResourcePermissionEntity {
20
+ constructor() {
21
+ super(...arguments);
22
+ /**
23
+ * Set by the async `Delete`/`Save` overrides after they confirm the
24
+ * context user is authorized via resource ownership or Owner-level grant.
25
+ * Read by the (sync) `CheckPermissions` override to bypass the role-based
26
+ * gate that would otherwise block non-admin users from revoking shares.
27
+ */
28
+ this._authorizedByOwnerOverride = false;
29
+ }
30
+ /**
31
+ * Relaxes the default role-based Update/Delete gate for three parties
32
+ * who legitimately need to manage a share:
33
+ *
34
+ * 1. **Grantor** — whoever created the grant (`SharedByUserID`).
35
+ * 2. **Resource owner** — the user who owns the underlying resource.
36
+ * Checked synchronously via in-memory engine caches (currently
37
+ * `ConversationEngine` for Conversations; add other engines as
38
+ * resource types adopt this pattern).
39
+ * 3. **Owner-level grantee** — anyone else holding an `Owner` permission
40
+ * on the same resource, consulted via the cached
41
+ * `ResourcePermissionEngine.Permissions`.
42
+ *
43
+ * Without this, resource owners can't revoke shares other users created —
44
+ * the UI/Developer roles don't have `CanDelete` on `MJ: Resource Permissions`.
45
+ */
46
+ CheckPermissions(type, throwError) {
47
+ if (type === EntityPermissionType.Update || type === EntityPermissionType.Delete) {
48
+ if (this._authorizedByOwnerOverride)
49
+ return true;
50
+ const user = this.ActiveUser;
51
+ if (user && checkShareManagePermission(user, this.SharedByUserID, (userId) => this.currentUserOwnsResource(userId) || this.currentUserHasOwnerGrant(userId))) {
52
+ return true;
53
+ }
54
+ }
55
+ return super.CheckPermissions(type, throwError);
56
+ }
57
+ /**
58
+ * Async owner lookup that loads the target resource and returns `true`
59
+ * if the context user owns it. Generic — uses the resource type catalog
60
+ * to find the owner field name, so any resource type seeded in
61
+ * `MJ: Resource Types` works without per-type code here.
62
+ */
63
+ async currentUserOwnsResourceAsync() {
64
+ const user = this.ContextCurrentUser;
65
+ if (!user)
66
+ return false;
67
+ const provider = this.ProviderToUse;
68
+ if (provider?.ProviderType !== 'Database')
69
+ return false;
70
+ try {
71
+ const engine = ResourcePermissionEngine.GetProviderInstance(provider, ResourcePermissionEngine);
72
+ await engine.Config(false, user);
73
+ const rt = engine.ResourceTypes.find((t) => UUIDsEqual(t.ID, this.ResourceTypeID));
74
+ const typeFields = engine.GetResourceTypeInfoFields(this.ResourceTypeID);
75
+ if (!rt || !typeFields?.OwnerIDFieldName || !typeFields?.PrimaryKeyFieldName) {
76
+ return false;
77
+ }
78
+ const resourceRecord = await provider.GetEntityObject(rt.Entity, user);
79
+ const ck = new CompositeKey([
80
+ { FieldName: typeFields.PrimaryKeyFieldName, Value: this.ResourceRecordID }
81
+ ]);
82
+ const loaded = await resourceRecord.InnerLoad(ck);
83
+ if (!loaded)
84
+ return false;
85
+ const ownerId = resourceRecord.Get(typeFields.OwnerIDFieldName);
86
+ return !!ownerId && UUIDsEqual(ownerId, user.ID);
87
+ }
88
+ catch (error) {
89
+ LogError(`MJResourcePermissionEntityExtended.currentUserOwnsResourceAsync: ${error instanceof Error ? error.message : String(error)}`);
90
+ return false;
91
+ }
92
+ }
93
+ /**
94
+ * Compute whether the context user may Update/Delete this permission row.
95
+ * Combines the sync checks (fast path, uses engine caches) with the async
96
+ * resource-owner lookup (works on the server where caches aren't populated).
97
+ */
98
+ async callerMayManageShare() {
99
+ const user = this.ContextCurrentUser;
100
+ if (!user)
101
+ return false;
102
+ if (this.SharedByUserID && UUIDsEqual(this.SharedByUserID, user.ID))
103
+ return true;
104
+ if (this.currentUserOwnsResource(user.ID))
105
+ return true;
106
+ if (this.currentUserHasOwnerGrant(user.ID))
107
+ return true;
108
+ return this.currentUserOwnsResourceAsync();
109
+ }
110
+ /**
111
+ * Async wrapper that runs the full authorization check (including the
112
+ * async resource-owner lookup) before delegating to the base delete. Sets
113
+ * `_authorizedByOwnerOverride` so the sync `CheckPermissions` called by
114
+ * the base class will bypass the role-based gate.
115
+ */
116
+ async Delete(options) {
117
+ const provider = this.ProviderToUse;
118
+ if (provider?.ProviderType === 'Database') {
119
+ if (await this.callerMayManageShare()) {
120
+ this._authorizedByOwnerOverride = true;
121
+ try {
122
+ return await super.Delete(options);
123
+ }
124
+ finally {
125
+ this._authorizedByOwnerOverride = false;
126
+ }
127
+ }
128
+ }
129
+ return super.Delete(options);
130
+ }
131
+ /**
132
+ * Checks resource-type-specific engine caches synchronously to decide
133
+ * whether `userId` owns the record this permission row points at.
134
+ */
135
+ currentUserOwnsResource(userId) {
136
+ if (UUIDsEqual(this.ResourceTypeID, CONVERSATIONS_RESOURCE_TYPE_ID)) {
137
+ const conv = ConversationEngine.Instance.Conversations.find((c) => UUIDsEqual(c.ID, this.ResourceRecordID));
138
+ return !!conv?.UserID && UUIDsEqual(conv.UserID, userId);
139
+ }
140
+ // Additional resource-type owner lookups can be added here.
141
+ return false;
142
+ }
143
+ /**
144
+ * Owner-level grantees (direct or via role) can manage shares on the
145
+ * resource. Reads from `ResourcePermissionEngine`'s cached permissions —
146
+ * must already be configured; on the server this happens at startup.
147
+ */
148
+ currentUserHasOwnerGrant(userId) {
149
+ const engine = ResourcePermissionEngine.Instance;
150
+ if (!engine.Permissions)
151
+ return false;
152
+ return engine.Permissions.some((p) => UUIDsEqual(p.ResourceTypeID, this.ResourceTypeID) &&
153
+ UUIDsEqual(p.ResourceRecordID, this.ResourceRecordID) &&
154
+ p.Type === 'User' &&
155
+ !!p.UserID &&
156
+ UUIDsEqual(p.UserID, userId) &&
157
+ p.PermissionLevel === 'Owner' &&
158
+ p.Status === 'Approved');
159
+ }
15
160
  /**
16
161
  * This override encapsulates some busienss logic for the Resource Permissions entity as follows:
17
162
  * 1) Whenever a new permission record is created that has a status of "Requested", we generate a new Notifications record for the owner of the resource being requested
@@ -27,6 +172,9 @@ let MJResourcePermissionEntityExtended = class MJResourcePermissionEntityExtende
27
172
  const newRequest = !this.IsSaved && this.Status === 'Requested';
28
173
  const statusField = this.Fields.find(f => f.Name.trim().toLowerCase() === 'status');
29
174
  const statusChangedfromRequested = this.IsSaved && statusField.Dirty && statusField.OldValue.trim().toLowerCase() === 'requested';
175
+ // New direct share (grantor picked this user explicitly via the share dialog).
176
+ // Captured before `super.Save()` since `IsSaved` flips afterwards.
177
+ const newApprovedUserShare = !this.IsSaved && this.Status === 'Approved' && this.Type === 'User' && !!this.UserID;
30
178
  // just in case, config the engine but it probably already has been configured in which case nothing will happen
31
179
  const engine = ResourcePermissionEngine.GetProviderInstance(p, ResourcePermissionEngine);
32
180
  await engine.Config(false, this.ContextCurrentUser);
@@ -48,41 +196,93 @@ let MJResourcePermissionEntityExtended = class MJResourcePermissionEntityExtende
48
196
  // now grab the record name and owner from it
49
197
  const recordName = resourceRecord.Get(resourceTypeFields.NameFieldName);
50
198
  const recordOwnerID = resourceRecord.Get(resourceTypeFields.OwnerIDFieldName);
199
+ // Authorization gate for *granting* a share: only the resource's
200
+ // owner (or an existing Owner-level grantee) may create an Approved
201
+ // permission row. Access-request creates (Status='Requested') are
202
+ // allowed because the owner still approves them downstream.
203
+ if (!this.IsSaved && this.Status !== 'Requested') {
204
+ const authorized = this.callerMayGrantShare(engine, recordOwnerID);
205
+ if (!authorized) {
206
+ LogError(`User ${this.ContextCurrentUser?.ID ?? '(none)'} attempted to create a ${this.ResourceType} ` +
207
+ `share on record ${this.ResourceRecordID} without Owner rights.`);
208
+ const result = this.LatestResult;
209
+ if (result) {
210
+ result.Success = false;
211
+ result.Message = 'Only the owner can share this resource.';
212
+ }
213
+ return false;
214
+ }
215
+ }
51
216
  // we now have our cached state values of newRequest and statusChanged and can proceed with the logic below
52
217
  // after we call super.Save() to actually save the record
53
218
  if (await super.Save(options)) {
54
- // now proceed with workflow logic if we saved
55
- const notification = await p.GetEntityObject('MJ: User Notifications', this.ContextCurrentUser);
219
+ // All three workflow branches now route through CreateShareNotification so
220
+ // NotificationEngine honors the recipient's per-channel preferences (in-app /
221
+ // email / SMS) and the "Resource Shared" email template renders uniformly.
222
+ // Fire-and-forget — save itself already succeeded, and the dispatcher falls
223
+ // back to in-app-only on handler failure.
56
224
  if (newRequest) {
57
- // notify the owner of the resource that a new request was made
58
- const user = await p.GetEntityObject('MJ: Users', this.ContextCurrentUser);
59
- await user.Load(this.UserID);
60
- notification.Title = `New Request for Access to ${this.ResourceType}`;
61
- notification.Message = `A new request for access to ${this.ResourceType} record "${recordName}" has been made by ${user.Name} (${user.Email})`;
62
- notification.ResourceTypeID = rtEntityRecord.ID; // the resource type here is Entity Record which means that the user who gets this notification can easily click on THIS record to approve/reject/etc
63
- notification.ResourceRecordID = this.ID;
64
- notification.ResourceConfiguration = JSON.stringify({
65
- Entity: "MJ: Resource Permissions",
66
- ResourceRecordID: this.ResourceRecordID, // saving the resource record here to make it easy to find the request from the notification
67
- ResourcePermissionID: this.ID // saving the resource permission here to make it easy to find the request from the notification
68
- });
69
- notification.UserID = recordOwnerID;
70
- return await notification.Save();
225
+ const requester = await p.GetEntityObject('MJ: Users', this.ContextCurrentUser);
226
+ await requester.Load(this.UserID);
227
+ if (recordOwnerID) {
228
+ void CreateShareNotification({
229
+ Provider: p,
230
+ ContextUser: this.ContextCurrentUser,
231
+ GrantorUserID: this.UserID, // the *requester* is the actor; the owner receives
232
+ GranteeUserID: recordOwnerID,
233
+ ResourceTypeLabel: this.ResourceType ?? rt?.Name ?? 'resource',
234
+ ResourceTypeName: rtEntityRecord?.Name, // route deep-link via "Records" ResourceType so the owner can approve/reject
235
+ ResourceName: recordName,
236
+ ResourceRecordID: this.ID, // target the permission row itself — the owner approves *this* request
237
+ Title: `New Request for Access to ${this.ResourceType}`,
238
+ Message: `A new request for access to ${this.ResourceType} record "${recordName}" has been made by ${requester.Name} (${requester.Email})`,
239
+ ExtraConfiguration: {
240
+ Entity: 'MJ: Resource Permissions',
241
+ ResourceRecordID: this.ResourceRecordID,
242
+ ResourcePermissionID: this.ID,
243
+ },
244
+ });
245
+ }
246
+ return true;
71
247
  }
72
248
  else if (statusChangedfromRequested) {
73
- // notify the user who requested access that their request was approved or denied
74
- notification.UserID = this.UserID;
75
- notification.Title = `Request for Access to ${this.ResourceType} ${this.Status}`;
76
- notification.Message = `Your request for access to ${this.ResourceType} record "${recordName}" has been ${this.Status}`;
77
- notification.ResourceTypeID = this.ResourceTypeID;
78
- notification.ResourceRecordID = this.ResourceRecordID;
79
- notification.ResourceConfiguration = JSON.stringify({
80
- ResourcePermissionID: this.ID // saving the resource permission here to make it easy to find the request from the notification
249
+ void CreateShareNotification({
250
+ Provider: p,
251
+ ContextUser: this.ContextCurrentUser,
252
+ GrantorUserID: this.SharedByUserID ?? this.ContextCurrentUser?.ID ?? recordOwnerID,
253
+ GranteeUserID: this.UserID,
254
+ ResourceTypeLabel: this.ResourceType ?? rt?.Name ?? 'resource',
255
+ ResourceTypeName: rt?.Name,
256
+ ResourceName: recordName,
257
+ ResourceRecordID: this.ResourceRecordID,
258
+ Title: `Request for Access to ${this.ResourceType} ${this.Status}`,
259
+ Message: `Your request for access to ${this.ResourceType} record "${recordName}" has been ${this.Status}`,
260
+ ExtraConfiguration: { ResourcePermissionID: this.ID },
81
261
  });
82
- return await notification.Save();
262
+ return true;
263
+ }
264
+ else if (newApprovedUserShare) {
265
+ const grantorId = this.SharedByUserID ?? this.ContextCurrentUser?.ID ?? recordOwnerID;
266
+ if (grantorId && !UUIDsEqual(grantorId, this.UserID)) {
267
+ void CreateShareNotification({
268
+ Provider: p,
269
+ ContextUser: this.ContextCurrentUser,
270
+ GrantorUserID: grantorId,
271
+ GranteeUserID: this.UserID,
272
+ ResourceTypeLabel: this.ResourceType ?? rt?.Name ?? 'resource',
273
+ ResourceTypeName: rt?.Name,
274
+ ResourceName: recordName,
275
+ ResourceRecordID: this.ResourceRecordID,
276
+ ActionsSummary: this.PermissionLevel
277
+ ? `${this.PermissionLevel} access`
278
+ : undefined,
279
+ ExtraConfiguration: { ResourcePermissionID: this.ID },
280
+ });
281
+ }
282
+ return true;
83
283
  }
84
284
  else {
85
- return true; // in this case we do NOT need to save the notification because there is nothing to do here
285
+ return true; // nothing to notify about (update without status change, etc.)
86
286
  }
87
287
  }
88
288
  else {
@@ -98,6 +298,23 @@ let MJResourcePermissionEntityExtended = class MJResourcePermissionEntityExtende
98
298
  return super.Save(options);
99
299
  }
100
300
  }
301
+ /**
302
+ * `true` when the context user may create an Approved grant on this resource:
303
+ * they are either the resource's owner, or they already hold an Owner-level
304
+ * `MJ: Resource Permissions` row on it (direct or via role). Returns `false`
305
+ * when there is no context user.
306
+ */
307
+ callerMayGrantShare(engine, recordOwnerID) {
308
+ const user = this.ContextCurrentUser;
309
+ if (!user)
310
+ return false;
311
+ if (recordOwnerID && UUIDsEqual(recordOwnerID, user.ID))
312
+ return true;
313
+ const existing = engine.GetUserAvailableResources(user, this.ResourceTypeID);
314
+ return existing.some((p) => UUIDsEqual(p.ResourceRecordID, this.ResourceRecordID) &&
315
+ p.PermissionLevel === 'Owner' &&
316
+ p.Status === 'Approved');
317
+ }
101
318
  };
102
319
  MJResourcePermissionEntityExtended = __decorate([
103
320
  RegisterClass(BaseEntity, 'MJ: Resource Permissions')
@@ -1 +1 @@
1
- {"version":3,"file":"MJResourcePermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/MJResourcePermissionEntityExtended.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MJResourcePermissionEntityExtended.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/MJResourcePermissionEntityExtended.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,13 @@ export declare class ResourcePermissionEngine extends BaseEngine<ResourcePermiss
13
13
  Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
14
14
  get ResourceTypes(): MJResourceTypeEntity[];
15
15
  get Permissions(): MJResourcePermissionEntity[];
16
+ /**
17
+ * Case-insensitive name → ID lookup against the cached `MJ: Resource Types`
18
+ * catalog. Returns null when the catalog isn't loaded yet or no matching
19
+ * type exists. Used by `shareNotification.ts` and `shareNotificationHandler.ts`
20
+ * to resolve the `ResourceTypeID` for notification deep-links.
21
+ */
22
+ ResourceTypeIdByName(name: string | null | undefined): string | null;
16
23
  /**
17
24
  * Convenience method to find all of the permissions for a given Resource Type and Resource Record ID, no additional filtering takes place in this method regarding
18
25
  * the status or level of the permission.
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcePermissionEngine.d.ts","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAA8C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErJ,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAErG;;GAEG;AACH,qBACa,wBAAyB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IAC9E;;OAEG;IACH,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,cAAc,CAEpB;IAEW,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAkBhG,IAAW,aAAa,IAAI,oBAAoB,EAAE,CAEjD;IAED,IAAW,WAAW,IAAI,0BAA0B,EAAE,CAErD;IAGD;;;;;;OAMG;IACI,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAI7G;;;;;;;;;;;;;;;;;;OAkBG;IACI,8BAA8B,CACjC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,QAAQ,GACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAiCnC;;;;;;OAMG;IACI,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAuCvG;;;;OAIG;IACI,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC;CAoB3I"}
1
+ {"version":3,"file":"ResourcePermissionEngine.d.ts","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAA8C,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErJ,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAErG;;GAEG;AACH,qBACa,wBAAyB,SAAQ,UAAU,CAAC,wBAAwB,CAAC;IAC9E;;OAEG;IACH,WAAkB,QAAQ,IAAI,wBAAwB,CAErD;IAED,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,cAAc,CAEpB;IAEW,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB;IAkBhG,IAAW,aAAa,IAAI,oBAAoB,EAAE,CAEjD;IAED,IAAW,WAAW,IAAI,0BAA0B,EAAE,CAErD;IAED;;;;;OAKG;IACI,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;IAQ3E;;;;;;OAMG;IACI,sBAAsB,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAI7G;;;;;;;;;;;;;;;;;;OAkBG;IACI,8BAA8B,CACjC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,IAAI,EAAE,QAAQ,GACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAiCnC;;;;;;OAMG;IACI,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,0BAA0B,EAAE;IAuCvG;;;;OAIG;IACI,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAC;CAoB3I"}
@@ -39,6 +39,19 @@ let ResourcePermissionEngine = class ResourcePermissionEngine extends BaseEngine
39
39
  get Permissions() {
40
40
  return this._Permissions;
41
41
  }
42
+ /**
43
+ * Case-insensitive name → ID lookup against the cached `MJ: Resource Types`
44
+ * catalog. Returns null when the catalog isn't loaded yet or no matching
45
+ * type exists. Used by `shareNotification.ts` and `shareNotificationHandler.ts`
46
+ * to resolve the `ResourceTypeID` for notification deep-links.
47
+ */
48
+ ResourceTypeIdByName(name) {
49
+ if (!name)
50
+ return null;
51
+ const lower = name.trim().toLowerCase();
52
+ const match = this._ResourceTypes?.ResourceTypes?.find((rt) => rt.Name?.trim().toLowerCase() === lower);
53
+ return match?.ID ?? null;
54
+ }
42
55
  /**
43
56
  * Convenience method to find all of the permissions for a given Resource Type and Resource Record ID, no additional filtering takes place in this method regarding
44
57
  * the status or level of the permission.
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcePermissionEngine.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResourcePermissionEngine.js","sourceRoot":"","sources":["../../../src/custom/ResourcePermissions/ResourcePermissionEngine.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAA6D,QAAQ,EAAE,kBAAkB,EAAY,MAAM,sBAAsB,CAAC;AACrJ,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,CAAC,aAAa,CAAC;IAC7C,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACI,oBAAoB,CAAC,IAA+B;QACvD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;QACxG,OAAO,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;IAC7B,CAAC;IAGD;;;;;;OAMG;IACI,sBAAsB,CAAC,cAAsB,EAAE,gBAAwB;QAC1E,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC5I,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,8BAA8B,CACjC,cAAsB,EACtB,gBAAwB,EACxB,IAAc;QAEd,iDAAiD;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;QAErF,sDAAsD;QACtD,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzG,+DAA+D;QAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM;YAClE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QAE9E,+DAA+D;QAC/D,MAAM,qBAAqB,GAAG,eAAe,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAEtE,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAEhG,2CAA2C;QAC3C,IAAI,0BAA0B,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,sFAAsF;YACtF,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBACvD,IAAI,OAAO,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;oBACtC,OAAO,OAAO,CAAC,CAAC,mCAAmC;gBACvD,CAAC;qBAAM,IAAI,OAAO,CAAC,eAAe,KAAK,MAAM,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBAClF,OAAO,MAAM,CAAC,CAAC,2CAA2C;gBAC9D,CAAC;qBAAM,CAAC;oBACJ,OAAO,IAAI,CAAC,CAAC,+DAA+D;gBAChF,CAAC;YACL,CAAC,EAAE,MAAM,CAAC,CAAC;QACf,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,yBAAyB,CAAC,IAAc,EAAE,cAAuB;QACpE,IAAI,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACpJ,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrG,IAAI,cAAc,EAAE,CAAC;YACjB,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;YACtF,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAElD,0CAA0C;QAC1C,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAEjE,kIAAkI;QAClI,IAAI,kBAAkB,GAAiC,EAAE,CAAC;QAC1D,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACtB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACpJ,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACJ,qGAAqG;gBACrG,IAAI,KAAK,GAAG,KAAK,CAAC;gBAClB,IAAI,CAAC,CAAC,eAAe,KAAK,OAAO,IAAI,QAAQ,CAAC,eAAe,KAAK,OAAO,EAAE,CAAC;oBACxE,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;qBACI,IAAI,CAAC,CAAC,eAAe,KAAK,MAAM,IAAI,QAAQ,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;oBAC3E,KAAK,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACR,qCAAqC;oBACrC,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;oBACtE,yBAAyB;oBACzB,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,yBAAyB,CAAC,cAAsB;QACnD,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE;YACH,MAAM,IAAI,KAAK,CAAC,iBAAiB,cAAc,YAAY,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YACP,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,QAAQ,YAAY,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW;YACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAElD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,OAAO;YACH,gBAAgB,EAAE,YAAY,EAAE,IAAI;YACpC,aAAa,EAAE,SAAS,EAAE,IAAI;YAC9B,mBAAmB,EAAE,MAAM,CAAC,eAAe,CAAC,IAAI;SACnD,CAAA;IACL,CAAC;CACJ,CAAA;AA/LY,wBAAwB;IADpC,kBAAkB,EAAE;GACR,wBAAwB,CA+LpC"}
@@ -11,14 +11,26 @@ export interface GeoPointResolution {
11
11
  }
12
12
  /**
13
13
  * GeoDataEngine provides cached, in-memory access to Country and StateProvince
14
- * reference data. Loaded once at startup via @RegisterForStartup, all lookups
15
- * are O(1) via pre-built Maps keyed by common lookup patterns.
14
+ * reference data, plus point-in-polygon resolution against country/state boundaries.
15
+ * All lookups are O(1) via pre-built Maps keyed by common lookup patterns.
16
+ *
17
+ * **Loaded on demand**, not at app startup. The dataset is large (~3,000+ rows
18
+ * with BoundaryGeoJSON blobs) and parsing the geometry takes ~3–4s synchronously,
19
+ * so we only pay that cost when geocoding or geo lookups are actually needed.
20
+ *
21
+ * **Caller contract**: `await GeoDataEngine.Instance.Config(...)` once before
22
+ * calling any sync lookup method. `Config()` is idempotent — concurrent calls
23
+ * dedup against a single in-flight load (see `BaseEngine.Load`), and repeated
24
+ * calls after load complete return immediately. If no entity in the tenant has
25
+ * `SupportsGeoCoding=1`, `Config()` returns early and lookups will return
26
+ * `undefined` — callers already handle the not-found case so the empty state
27
+ * is safe to leave in place.
16
28
  *
17
29
  * Usage:
18
30
  * ```typescript
19
- * const engine = GeoDataEngine.Instance;
20
- * const country = engine.GetCountryByISO2('US');
21
- * const state = engine.GetStateByCode('US-country-id', 'CO');
31
+ * await GeoDataEngine.Instance.Config(false, contextUser);
32
+ * const country = GeoDataEngine.Instance.GetCountryByISO2('US');
33
+ * const state = GeoDataEngine.Instance.GetStateByCode(country.ID, 'CO');
22
34
  * ```
23
35
  */
24
36
  export declare class GeoDataEngine extends BaseEngine<GeoDataEngine> {
@@ -120,20 +132,42 @@ export declare class GeoDataEngine extends BaseEngine<GeoDataEngine> {
120
132
  */
121
133
  private rayCast;
122
134
  /**
123
- * Parse all BoundaryGeoJSON data and build indexed geometry caches.
124
- * Called once during AdditionalLoading after entities are loaded.
135
+ * The Web Worker source code for GeoJSON parsing. This is embedded as a string
136
+ * so we can create an inline Worker via Blob URL — no separate file needed.
137
+ * The worker receives raw BoundaryGeoJSON strings and returns parsed geometries.
138
+ */
139
+ private static readonly GEO_WORKER_SOURCE;
140
+ /**
141
+ * Parse all BoundaryGeoJSON data using a Web Worker (off main thread).
142
+ * Falls back to synchronous parsing if Workers are unavailable.
143
+ */
144
+ private buildGeometryCachesAsync;
145
+ /**
146
+ * Offload GeoJSON parsing to an inline Web Worker.
147
+ * Returns a promise that resolves with the parsed geometry arrays.
148
+ */
149
+ private parseInWorker;
150
+ /**
151
+ * Index state geometries by country for fast lookup.
152
+ * Used after both worker and sync parsing paths.
153
+ */
154
+ private indexStateGeometries;
155
+ /**
156
+ * Synchronous fallback for environments without Web Workers (e.g., Node.js, SSR).
125
157
  */
126
- private buildGeometryCaches;
158
+ private buildGeometryCachesSync;
127
159
  /**
128
160
  * Parse a BoundaryGeoJSON value into a CachedGeometry.
129
161
  * Supports GeoJSON Feature, Polygon, and MultiPolygon types.
130
162
  * Returns null if the boundary is missing or unparseable.
163
+ * Used by the synchronous fallback path.
131
164
  */
132
165
  private parseEntityBoundary;
133
166
  /**
134
167
  * Parse a single Polygon's coordinate rings and compute its bounding box.
135
168
  * GeoJSON Polygon coordinates: [ outerRing, ...holeRings ]
136
169
  * Each ring is an array of [lng, lat] pairs.
170
+ * Used by the synchronous fallback path.
137
171
  */
138
172
  private parsePolygonCoordinates;
139
173
  private buildLookupMaps;
@@ -1 +1 @@
1
- {"version":3,"file":"GeoDataEngine.d.ts","sourceRoot":"","sources":["../../src/engines/GeoDataEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA4B,iBAAiB,EAAE,QAAQ,EAAa,MAAM,sBAAsB,CAAC;AAEpH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AA0BxF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,kCAAkC;IAClC,OAAO,EAAE,eAAe,GAAG,SAAS,CAAC;IACrC,yCAAyC;IACzC,KAAK,EAAE,qBAAqB,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;;;;;GAWG;AACH,qBACa,aAAc,SAAQ,UAAU,CAAC,aAAa,CAAC;IACxD,WAAkB,QAAQ,IAAI,aAAa,CAE1C;IAED,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,eAAe,CAA+B;IAGtD,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,uBAAuB,CAA4C;IAC3E,OAAO,CAAC,uBAAuB,CAA4C;IAC3E,OAAO,CAAC,WAAW,CAA4C;IAG/D,OAAO,CAAC,kBAAkB,CAAwB;IAClD,OAAO,CAAC,gBAAgB,CAAwB;IAChD,kEAAkE;IAClE,OAAO,CAAC,yBAAyB,CAAuC;IAE3D,MAAM,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;cAkBvF,iBAAiB,CAAC,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IASlF,IAAW,SAAS,IAAI,eAAe,EAAE,CAExC;IAED,IAAW,cAAc,IAAI,qBAAqB,EAAE,CAEnD;IAMM,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK3D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK3D,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK9D;;;OAGG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAqBjE;;;;OAIG;IACI,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMzF;;;;OAIG;IACI,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAMlF,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAKlE;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAWxF;;;;;;;;OAQG;IACI,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAM3E;;;OAGG;IACI,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IASnF;;;OAGG;IACI,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAmB3G;;;;;;OAMG;IACI,aAAa,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,kBAAkB,EAAE;IAQlF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAInB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;OAIG;IACH,OAAO,CAAC,OAAO;IAqBf;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,eAAe;CA2B1B"}
1
+ {"version":3,"file":"GeoDataEngine.d.ts","sourceRoot":"","sources":["../../src/engines/GeoDataEngine.ts"],"names":[],"mappings":"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"}