@memberjunction/server 6.1.0-edge.1 → 6.1.0-edge.2
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/auth/exampleNewUserSubClass.js +1 -1
- package/dist/auth/exampleNewUserSubClass.js.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +9 -5
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/magicLink/MagicLinkService.js +1 -1
- package/dist/auth/magicLink/MagicLinkService.js.map +1 -1
- package/dist/auth/newUsers.js +1 -1
- package/dist/auth/newUsers.js.map +1 -1
- package/dist/context.js +2 -2
- package/dist/context.js.map +1 -1
- package/dist/generated/generated.d.ts +45 -4
- package/dist/generated/generated.d.ts.map +1 -1
- package/dist/generated/generated.js +229 -21
- package/dist/generated/generated.js.map +1 -1
- package/dist/generic/ResolverBase.d.ts +19 -3
- package/dist/generic/ResolverBase.d.ts.map +1 -1
- package/dist/generic/ResolverBase.js +51 -17
- package/dist/generic/ResolverBase.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -41
- package/dist/index.js.map +1 -1
- package/dist/logging/secretRedactor.d.ts +9 -0
- package/dist/logging/secretRedactor.d.ts.map +1 -1
- package/dist/logging/secretRedactor.js +39 -0
- package/dist/logging/secretRedactor.js.map +1 -1
- package/dist/middleware/BaseServerMiddleware.d.ts +5 -0
- package/dist/middleware/BaseServerMiddleware.d.ts.map +1 -1
- package/dist/middleware/BaseServerMiddleware.js +5 -0
- package/dist/middleware/BaseServerMiddleware.js.map +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js +1 -1
- package/dist/realtimeWidget/WidgetSessionService.js.map +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js +1 -1
- package/dist/realtimeWidget/widgetGuestElevation.js.map +1 -1
- package/dist/resolvers/ActionResolver.d.ts.map +1 -1
- package/dist/resolvers/ActionResolver.js +12 -0
- package/dist/resolvers/ActionResolver.js.map +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js +1 -1
- package/dist/resolvers/ComponentRegistryResolver.js.map +1 -1
- package/dist/resolvers/EntityPermissionResolver.js +1 -1
- package/dist/resolvers/EntityPermissionResolver.js.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts +9 -0
- package/dist/resolvers/IntegrationDiscoveryResolver.d.ts.map +1 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js +3 -1
- package/dist/resolvers/IntegrationDiscoveryResolver.js.map +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js +1 -1
- package/dist/resolvers/PotentialDuplicateRecordResolver.js.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts +10 -0
- package/dist/resolvers/RealtimeClientSessionResolver.d.ts.map +1 -1
- package/dist/resolvers/RealtimeClientSessionResolver.js +5 -0
- package/dist/resolvers/RealtimeClientSessionResolver.js.map +1 -1
- package/dist/resolvers/SearchEntitiesResolver.js +1 -1
- package/dist/resolvers/SearchEntitiesResolver.js.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.d.ts.map +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js +1 -1
- package/dist/resolvers/SqlLoggingConfigResolver.js.map +1 -1
- package/dist/resolvers/SyncRolesUsersResolver.js +2 -2
- package/dist/resolvers/SyncRolesUsersResolver.js.map +1 -1
- package/dist/resolvers/UserFavoriteResolver.js +1 -1
- package/dist/resolvers/UserFavoriteResolver.js.map +1 -1
- package/dist/rest/OAuthCallbackHandler.js +1 -1
- package/dist/rest/OAuthCallbackHandler.js.map +1 -1
- package/dist/rest/SignatureWebhookHandler.js +1 -1
- package/dist/rest/SignatureWebhookHandler.js.map +1 -1
- package/dist/services/DurableEntityActionTaskSubmitter.d.ts +26 -0
- package/dist/services/DurableEntityActionTaskSubmitter.d.ts.map +1 -0
- package/dist/services/DurableEntityActionTaskSubmitter.js +55 -0
- package/dist/services/DurableEntityActionTaskSubmitter.js.map +1 -0
- package/dist/services/ScheduledJobsService.js +1 -1
- package/dist/services/ScheduledJobsService.js.map +1 -1
- package/dist/services/StartTaskGraphDispatcher.d.ts.map +1 -1
- package/dist/services/StartTaskGraphDispatcher.js +16 -1
- package/dist/services/StartTaskGraphDispatcher.js.map +1 -1
- package/dist/services/TaskGraphActionRunner.d.ts +34 -0
- package/dist/services/TaskGraphActionRunner.d.ts.map +1 -0
- package/dist/services/TaskGraphActionRunner.js +95 -0
- package/dist/services/TaskGraphActionRunner.js.map +1 -0
- package/dist/services/TaskGraphAgentRunner.d.ts +13 -0
- package/dist/services/TaskGraphAgentRunner.d.ts.map +1 -1
- package/dist/services/TaskGraphAgentRunner.js +30 -0
- package/dist/services/TaskGraphAgentRunner.js.map +1 -1
- package/dist/services/TaskGraphPromptRunner.d.ts +31 -0
- package/dist/services/TaskGraphPromptRunner.d.ts.map +1 -0
- package/dist/services/TaskGraphPromptRunner.js +134 -0
- package/dist/services/TaskGraphPromptRunner.js.map +1 -0
- package/dist/telephony/RingCentralTelephonyService.js +1 -1
- package/dist/telephony/RingCentralTelephonyService.js.map +1 -1
- package/dist/telephony/TwilioTelephonyRouter.js +1 -1
- package/dist/telephony/TwilioTelephonyRouter.js.map +1 -1
- package/dist/telephony/VonageTelephonyRouter.js +1 -1
- package/dist/telephony/VonageTelephonyRouter.js.map +1 -1
- package/package.json +90 -90
- package/src/__tests__/RealtimeClientSessionResolver.test.ts +1 -1
- package/src/__tests__/ResolverBase.frozenRecordMapping.test.ts +133 -0
- package/src/__tests__/ResolverBase.transportMapping.test.ts +289 -0
- package/src/__tests__/SessionManager.test.ts +1 -1
- package/src/__tests__/WidgetSessionService.test.ts +1 -1
- package/src/__tests__/databaseAbstraction.test.ts +1 -1
- package/src/__tests__/magicLinkService.provisionLog.test.ts +1 -1
- package/src/__tests__/resolverBase.rls.test.ts +3 -0
- package/src/__tests__/secretRedactor.failOpen.test.ts +135 -0
- package/src/__tests__/widgetGuestElevation.test.ts +1 -1
- package/src/auth/exampleNewUserSubClass.ts +1 -1
- package/src/auth/index.ts +10 -6
- package/src/auth/magicLink/MagicLinkService.ts +1 -1
- package/src/auth/newUsers.ts +1 -1
- package/src/context.ts +2 -2
- package/src/generated/generated.ts +166 -17
- package/src/generic/ResolverBase.ts +52 -17
- package/src/index.ts +92 -42
- package/src/logging/secretRedactor.ts +43 -0
- package/src/middleware/BaseServerMiddleware.ts +5 -0
- package/src/realtimeWidget/WidgetSessionService.ts +1 -1
- package/src/realtimeWidget/widgetGuestElevation.ts +1 -1
- package/src/resolvers/ActionResolver.ts +13 -0
- package/src/resolvers/ComponentRegistryResolver.ts +1 -1
- package/src/resolvers/EntityPermissionResolver.ts +1 -1
- package/src/resolvers/IntegrationDiscoveryResolver.ts +12 -2
- package/src/resolvers/PotentialDuplicateRecordResolver.ts +1 -1
- package/src/resolvers/RealtimeClientSessionResolver.ts +13 -0
- package/src/resolvers/SearchEntitiesResolver.ts +1 -1
- package/src/resolvers/SqlLoggingConfigResolver.ts +1 -2
- package/src/resolvers/SyncRolesUsersResolver.ts +2 -2
- package/src/resolvers/UserFavoriteResolver.ts +1 -1
- package/src/rest/OAuthCallbackHandler.ts +1 -1
- package/src/rest/SignatureWebhookHandler.ts +1 -1
- package/src/services/DurableEntityActionTaskSubmitter.ts +78 -0
- package/src/services/ScheduledJobsService.ts +1 -1
- package/src/services/StartTaskGraphDispatcher.ts +17 -0
- package/src/services/TaskGraphActionRunner.ts +99 -0
- package/src/services/TaskGraphAgentRunner.ts +35 -1
- package/src/services/TaskGraphPromptRunner.ts +144 -0
- package/src/telephony/RingCentralTelephonyService.ts +1 -1
- package/src/telephony/TwilioTelephonyRouter.ts +1 -1
- package/src/telephony/VonageTelephonyRouter.ts +1 -1
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MJServer's implementation of the task-graph `TaskPromptRunner` seam.
|
|
3
|
+
*
|
|
4
|
+
* The third sibling of {@link TaskGraphAgentRunner} and {@link TaskGraphActionRunner}, and here for
|
|
5
|
+
* the same reason: the dispatcher knows *when* a prompt-assigned node should run and nothing about
|
|
6
|
+
* how a prompt executes. The AI engine depends on the entity layer the dispatcher also builds on, so
|
|
7
|
+
* importing it into `@memberjunction/task-graph` would make every consumer of durable execution load
|
|
8
|
+
* the prompt engine too.
|
|
9
|
+
*
|
|
10
|
+
* **Why prompt nodes matter enough to have their own runner.** The `User Onboarding Flow Agent`
|
|
11
|
+
* ships with six of them. Until this existed, every one of its steps was refused at submission and
|
|
12
|
+
* the agent could not run at all — the refusal was correct (a persisted step nothing can execute
|
|
13
|
+
* waits forever) but it made a shipped workflow unusable rather than merely unfinished.
|
|
14
|
+
*
|
|
15
|
+
* @module @memberjunction/server
|
|
16
|
+
*/
|
|
17
|
+
import { AIPromptRunner } from '@memberjunction/ai-prompts';
|
|
18
|
+
import { AIEngine } from '@memberjunction/aiengine';
|
|
19
|
+
import { AIPromptParams } from '@memberjunction/ai-core-plus';
|
|
20
|
+
import { LogError } from '@memberjunction/core';
|
|
21
|
+
import { UUIDsEqual } from '@memberjunction/global';
|
|
22
|
+
/** The placeholder a workflow prompt uses to receive the payload (plan §5.7). */
|
|
23
|
+
const CURRENT_PAYLOAD_PLACEHOLDER = '_CURRENT_PAYLOAD';
|
|
24
|
+
export class TaskGraphPromptRunner {
|
|
25
|
+
async RunPromptForTask(params) {
|
|
26
|
+
try {
|
|
27
|
+
await AIEngine.Instance.Config(false, params.ContextUser);
|
|
28
|
+
const prompt = AIEngine.Instance.Prompts.find((p) => UUIDsEqual(p.ID, params.PromptID));
|
|
29
|
+
if (!prompt) {
|
|
30
|
+
return { Success: false, ErrorMessage: `Prompt ${params.PromptID} is not in the engine's metadata.` };
|
|
31
|
+
}
|
|
32
|
+
const promptParams = new AIPromptParams();
|
|
33
|
+
promptParams.prompt = prompt;
|
|
34
|
+
promptParams.contextUser = params.ContextUser;
|
|
35
|
+
promptParams.data = this.buildData(params);
|
|
36
|
+
const result = await new AIPromptRunner().ExecutePrompt(promptParams);
|
|
37
|
+
if (!result?.success) {
|
|
38
|
+
return {
|
|
39
|
+
Success: false,
|
|
40
|
+
ErrorMessage: result?.errorMessage ?? 'The prompt did not return a result.',
|
|
41
|
+
PromptRunID: result?.promptRun?.ID,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
const parsed = this.parseResponse(result.result);
|
|
45
|
+
return {
|
|
46
|
+
Success: true,
|
|
47
|
+
Output: parsed.payload,
|
|
48
|
+
PromptRunID: result.promptRun?.ID,
|
|
49
|
+
ChatMessage: parsed.chatMessage,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
54
|
+
LogError(`[TaskGraphPromptRunner] Task ${params.TaskID} failed: ${message}`);
|
|
55
|
+
return { Success: false, ErrorMessage: message };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* What the prompt's template can see.
|
|
60
|
+
*
|
|
61
|
+
* The payload arrives under a **placeholder name** rather than being spread across the top level,
|
|
62
|
+
* so a workflow author writes `{{ _CURRENT_PAYLOAD }}` and gets the whole thing — and a payload
|
|
63
|
+
* key can never collide with a template parameter and silently win.
|
|
64
|
+
*
|
|
65
|
+
* `flowContext` carries what the step knows about its own position: what its prerequisites
|
|
66
|
+
* produced. Without it a prompt is reasoning about the payload alone and cannot refer to the step
|
|
67
|
+
* immediately before it.
|
|
68
|
+
*/
|
|
69
|
+
buildData(params) {
|
|
70
|
+
const payload = params.InputPayload && typeof params.InputPayload === 'object'
|
|
71
|
+
? params.InputPayload
|
|
72
|
+
: {};
|
|
73
|
+
const dependencyOutputs = {};
|
|
74
|
+
for (const [taskID, output] of params.DependencyOutputs)
|
|
75
|
+
dependencyOutputs[taskID] = output;
|
|
76
|
+
return {
|
|
77
|
+
...(params.TemplateParameters ?? {}),
|
|
78
|
+
// JSON, not the object. A template writes `{{ _CURRENT_PAYLOAD }}` and expects to SEE
|
|
79
|
+
// the payload; handing the renderer an object yields "[object Object]", and the model
|
|
80
|
+
// then answers about a value it was never shown. That failure is invisible from the
|
|
81
|
+
// outside — the prompt run succeeds, the response is well-formed, and it is about
|
|
82
|
+
// nothing. It is what kept the Content Pipeline reviewer rejecting a draft it could not
|
|
83
|
+
// read, on every iteration, forever.
|
|
84
|
+
[CURRENT_PAYLOAD_PLACEHOLDER]: JSON.stringify(payload, null, 2),
|
|
85
|
+
flowContext: JSON.stringify({ dependencyOutputs }, null, 2),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Reads the model's response as a payload update, and notices when it wants to stop.
|
|
90
|
+
*
|
|
91
|
+
* **A prompt is the only node kind that can end the workflow early**, because it is the only one
|
|
92
|
+
* doing open-ended reasoning: it can conclude the remaining steps are unnecessary. That is
|
|
93
|
+
* expressed as a Chat-shaped response, and the dispatcher honours it by skipping what remains and
|
|
94
|
+
* settling the parent Complete — rather than treating an early finish as an abandoned graph.
|
|
95
|
+
*
|
|
96
|
+
* Non-JSON is not an error. A prompt that answers in prose has still answered; it simply carries
|
|
97
|
+
* no structured update, so it becomes a message rather than a payload merge.
|
|
98
|
+
*/
|
|
99
|
+
parseResponse(raw) {
|
|
100
|
+
if (raw == null)
|
|
101
|
+
return {};
|
|
102
|
+
if (typeof raw === 'object') {
|
|
103
|
+
return this.interpret(raw);
|
|
104
|
+
}
|
|
105
|
+
if (typeof raw === 'string') {
|
|
106
|
+
const text = raw.trim();
|
|
107
|
+
const fenced = text.replace(/^```(?:json)?\s*/i, '').replace(/\s*```$/, '');
|
|
108
|
+
try {
|
|
109
|
+
const parsed = JSON.parse(fenced);
|
|
110
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
111
|
+
return this.interpret(parsed);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Prose, not JSON — see above.
|
|
116
|
+
}
|
|
117
|
+
return { chatMessage: text };
|
|
118
|
+
}
|
|
119
|
+
return {};
|
|
120
|
+
}
|
|
121
|
+
/** Separates "here is an update" from "we are done, tell them this". */
|
|
122
|
+
interpret(obj) {
|
|
123
|
+
const nextStep = obj['nextStep'];
|
|
124
|
+
const wantsChat = nextStep?.type === 'Chat' || obj['taskComplete'] === true;
|
|
125
|
+
const message = typeof obj['message'] === 'string' ? obj['message'] : undefined;
|
|
126
|
+
if (wantsChat && message) {
|
|
127
|
+
// The payload still merges: a prompt that both concluded and produced data should not
|
|
128
|
+
// lose the data because it also had something to say.
|
|
129
|
+
return { payload: obj, chatMessage: message };
|
|
130
|
+
}
|
|
131
|
+
return { payload: obj };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=TaskGraphPromptRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskGraphPromptRunner.js","sourceRoot":"","sources":["../../src/services/TaskGraphPromptRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* @module @memberjunction/server/telephony
|
|
18
18
|
*/
|
|
19
19
|
import { RunView, Metadata, LogError, LogStatus } from '@memberjunction/core';
|
|
20
|
-
import { UserCache } from '@memberjunction/
|
|
20
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
21
21
|
import { AIBridgeEngine } from '@memberjunction/ai-bridge-server';
|
|
22
22
|
import { CreateBridgeRealtimeSession } from '@memberjunction/ai-agents';
|
|
23
23
|
import { CARRIER_SAMPLE_RATE_CONFIG_KEY, DIRECTION_CONFIG_KEY, FROM_NUMBER_CONFIG_KEY, INBOUND_CALL_ID_CONFIG_KEY, } from '@memberjunction/ai-bridge-base';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingCentralTelephonyService.js","sourceRoot":"","sources":["../../src/telephony/RingCentralTelephonyService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAA+B,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE3G,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RingCentralTelephonyService.js","sourceRoot":"","sources":["../../src/telephony/RingCentralTelephonyService.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ import { Router, urlencoded } from 'express';
|
|
|
19
19
|
import { WebSocketServer } from 'ws';
|
|
20
20
|
import { RegisterMediaUpgradeRoute } from './media-upgrade-router.js';
|
|
21
21
|
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
22
|
-
import { UserCache } from '@memberjunction/
|
|
22
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
23
23
|
import { verifyTwilioSignature, resolveInboundCall, buildInboundVoiceTwiML, } from '@memberjunction/ai-bridge-twilio';
|
|
24
24
|
import { TwilioCallMediaRegistry } from './twilioMediaRegistry.js';
|
|
25
25
|
import { TwilioTelephonyService } from './TwilioTelephonyService.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TwilioTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/TwilioTelephonyRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAA+B,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TwilioTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/TwilioTelephonyRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ import { Router, urlencoded, json } from 'express';
|
|
|
24
24
|
import { WebSocketServer } from 'ws';
|
|
25
25
|
import { RegisterMediaUpgradeRoute } from './media-upgrade-router.js';
|
|
26
26
|
import { LogError, LogStatus, Metadata } from '@memberjunction/core';
|
|
27
|
-
import { UserCache } from '@memberjunction/
|
|
27
|
+
import { UserCache } from '@memberjunction/generic-database-provider';
|
|
28
28
|
import { verifyVonageSignature, verifyVonageJwt, resolveInboundCall, buildInboundAnswerNcco, parseVonageControlEvent, } from '@memberjunction/ai-bridge-vonage';
|
|
29
29
|
import { VonageCallMediaRegistry } from './vonageMediaRegistry.js';
|
|
30
30
|
import { VonageTelephonyService } from './VonageTelephonyService.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VonageTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/VonageTelephonyRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAA+B,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AAErD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAA+B,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"VonageTelephonyRouter.js","sourceRoot":"","sources":["../../src/telephony/VonageTelephonyRouter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/server",
|
|
3
|
-
"version": "6.1.0-edge.
|
|
3
|
+
"version": "6.1.0-edge.2",
|
|
4
4
|
"description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./src/index.ts",
|
|
@@ -19,95 +19,95 @@
|
|
|
19
19
|
"@as-integrations/express5": "^1.0.0",
|
|
20
20
|
"@graphql-tools/schema": "^10.0.38",
|
|
21
21
|
"@graphql-tools/utils": "^11.0.0",
|
|
22
|
-
"@memberjunction/actions": "6.1.0-edge.
|
|
23
|
-
"@memberjunction/actions-apollo": "6.1.0-edge.
|
|
24
|
-
"@memberjunction/actions-base": "6.1.0-edge.
|
|
25
|
-
"@memberjunction/actions-bizapps-accounting": "6.1.0-edge.
|
|
26
|
-
"@memberjunction/actions-bizapps-crm": "6.1.0-edge.
|
|
27
|
-
"@memberjunction/actions-bizapps-formbuilders": "6.1.0-edge.
|
|
28
|
-
"@memberjunction/actions-bizapps-lms": "6.1.0-edge.
|
|
29
|
-
"@memberjunction/actions-bizapps-social": "6.1.0-edge.
|
|
30
|
-
"@memberjunction/ai": "6.1.0-edge.
|
|
31
|
-
"@memberjunction/ai-agent-manager": "6.1.0-edge.
|
|
32
|
-
"@memberjunction/ai-agent-manager-actions": "6.1.0-edge.
|
|
33
|
-
"@memberjunction/ai-agents": "6.1.0-edge.
|
|
34
|
-
"@memberjunction/ai-bridge-base": "6.1.0-edge.
|
|
35
|
-
"@memberjunction/ai-bridge-ringcentral": "6.1.0-edge.
|
|
36
|
-
"@memberjunction/ai-bridge-server": "6.1.0-edge.
|
|
37
|
-
"@memberjunction/ai-bridge-teams": "6.1.0-edge.
|
|
38
|
-
"@memberjunction/ai-bridge-twilio": "6.1.0-edge.
|
|
39
|
-
"@memberjunction/ai-bridge-vonage": "6.1.0-edge.
|
|
40
|
-
"@memberjunction/ai-core-plus": "6.1.0-edge.
|
|
41
|
-
"@memberjunction/ai-engine-base": "6.1.0-edge.
|
|
42
|
-
"@memberjunction/ai-mcp-client": "6.1.0-edge.
|
|
43
|
-
"@memberjunction/ai-prompts": "6.1.0-edge.
|
|
44
|
-
"@memberjunction/ai-provider-bundle": "6.1.0-edge.
|
|
45
|
-
"@memberjunction/ai-vector-sync": "6.1.0-edge.
|
|
46
|
-
"@memberjunction/ai-vectordb": "6.1.0-edge.
|
|
47
|
-
"@memberjunction/ai-vectors-pinecone": "6.1.0-edge.
|
|
48
|
-
"@memberjunction/aiengine": "6.1.0-edge.
|
|
49
|
-
"@memberjunction/api-keys": "6.1.0-edge.
|
|
50
|
-
"@memberjunction/auth-providers": "6.1.0-edge.
|
|
51
|
-
"@memberjunction/clustering-engine": "6.1.0-edge.
|
|
52
|
-
"@memberjunction/codegen-lib": "6.1.0-edge.
|
|
53
|
-
"@memberjunction/communication-engine": "6.1.0-edge.
|
|
54
|
-
"@memberjunction/communication-ms-graph": "6.1.0-edge.
|
|
55
|
-
"@memberjunction/communication-sendgrid": "6.1.0-edge.
|
|
56
|
-
"@memberjunction/communication-types": "6.1.0-edge.
|
|
57
|
-
"@memberjunction/component-registry-client-sdk": "6.1.0-edge.
|
|
58
|
-
"@memberjunction/computer-use": "6.1.0-edge.
|
|
59
|
-
"@memberjunction/computer-use-engine": "6.1.0-edge.
|
|
60
|
-
"@memberjunction/config": "6.1.0-edge.
|
|
61
|
-
"@memberjunction/core": "6.1.0-edge.
|
|
62
|
-
"@memberjunction/core-actions": "6.1.0-edge.
|
|
63
|
-
"@memberjunction/core-entities": "6.1.0-edge.
|
|
64
|
-
"@memberjunction/core-entities-server": "6.1.0-edge.
|
|
65
|
-
"@memberjunction/credentials": "6.1.0-edge.
|
|
66
|
-
"@memberjunction/data-context": "6.1.0-edge.
|
|
67
|
-
"@memberjunction/data-context-server": "6.1.0-edge.
|
|
68
|
-
"@memberjunction/doc-utils": "6.1.0-edge.
|
|
69
|
-
"@memberjunction/encryption": "6.1.0-edge.
|
|
70
|
-
"@memberjunction/entity-communications-base": "6.1.0-edge.
|
|
71
|
-
"@memberjunction/entity-communications-server": "6.1.0-edge.
|
|
72
|
-
"@memberjunction/esignature": "6.1.0-edge.
|
|
73
|
-
"@memberjunction/external-change-detection": "6.1.0-edge.
|
|
74
|
-
"@memberjunction/generic-database-provider": "6.1.0-edge.
|
|
75
|
-
"@memberjunction/global": "6.1.0-edge.
|
|
76
|
-
"@memberjunction/graphql-dataprovider": "6.1.0-edge.
|
|
77
|
-
"@memberjunction/integration-engine": "6.1.0-edge.
|
|
78
|
-
"@memberjunction/integration-engine-base": "6.1.0-edge.
|
|
79
|
-
"@memberjunction/integration-progress-artifacts": "6.1.0-edge.
|
|
80
|
-
"@memberjunction/integration-schema-builder": "6.1.0-edge.
|
|
81
|
-
"@memberjunction/interactive-component-types": "6.1.0-edge.
|
|
82
|
-
"@memberjunction/lists": "6.1.0-edge.
|
|
83
|
-
"@memberjunction/lists-base": "6.1.0-edge.
|
|
84
|
-
"@memberjunction/livekit-room-server": "6.1.0-edge.
|
|
85
|
-
"@memberjunction/notifications": "6.1.0-edge.
|
|
86
|
-
"@memberjunction/postgresql-dataprovider": "6.1.0-edge.
|
|
87
|
-
"@memberjunction/queue": "6.1.0-edge.
|
|
88
|
-
"@memberjunction/record-comparison": "6.1.0-edge.
|
|
89
|
-
"@memberjunction/redis-provider": "6.1.0-edge.
|
|
90
|
-
"@memberjunction/remote-browser-base": "6.1.0-edge.
|
|
91
|
-
"@memberjunction/remote-browser-cdp": "6.1.0-edge.
|
|
92
|
-
"@memberjunction/remote-browser-selfhost": "6.1.0-edge.
|
|
93
|
-
"@memberjunction/remote-browser-server": "6.1.0-edge.
|
|
94
|
-
"@memberjunction/scheduling-actions": "6.1.0-edge.
|
|
95
|
-
"@memberjunction/scheduling-base-types": "6.1.0-edge.
|
|
96
|
-
"@memberjunction/scheduling-engine": "6.1.0-edge.
|
|
97
|
-
"@memberjunction/scheduling-engine-base": "6.1.0-edge.
|
|
98
|
-
"@memberjunction/schema-engine": "6.1.0-edge.
|
|
99
|
-
"@memberjunction/search-engine": "6.1.0-edge.
|
|
100
|
-
"@memberjunction/server-extensions-core": "6.1.0-edge.
|
|
101
|
-
"@memberjunction/sql-dialect": "6.1.0-edge.
|
|
102
|
-
"@memberjunction/sqlserver-dataprovider": "6.1.0-edge.
|
|
103
|
-
"@memberjunction/storage": "6.1.0-edge.
|
|
104
|
-
"@memberjunction/tag-engine": "6.1.0-edge.
|
|
105
|
-
"@memberjunction/tag-engine-base": "6.1.0-edge.
|
|
106
|
-
"@memberjunction/task-graph": "6.1.0-edge.
|
|
107
|
-
"@memberjunction/templates": "6.1.0-edge.
|
|
108
|
-
"@memberjunction/testing-engine": "6.1.0-edge.
|
|
109
|
-
"@memberjunction/testing-engine-base": "6.1.0-edge.
|
|
110
|
-
"@memberjunction/version-history": "6.1.0-edge.
|
|
22
|
+
"@memberjunction/actions": "6.1.0-edge.2",
|
|
23
|
+
"@memberjunction/actions-apollo": "6.1.0-edge.2",
|
|
24
|
+
"@memberjunction/actions-base": "6.1.0-edge.2",
|
|
25
|
+
"@memberjunction/actions-bizapps-accounting": "6.1.0-edge.2",
|
|
26
|
+
"@memberjunction/actions-bizapps-crm": "6.1.0-edge.2",
|
|
27
|
+
"@memberjunction/actions-bizapps-formbuilders": "6.1.0-edge.2",
|
|
28
|
+
"@memberjunction/actions-bizapps-lms": "6.1.0-edge.2",
|
|
29
|
+
"@memberjunction/actions-bizapps-social": "6.1.0-edge.2",
|
|
30
|
+
"@memberjunction/ai": "6.1.0-edge.2",
|
|
31
|
+
"@memberjunction/ai-agent-manager": "6.1.0-edge.2",
|
|
32
|
+
"@memberjunction/ai-agent-manager-actions": "6.1.0-edge.2",
|
|
33
|
+
"@memberjunction/ai-agents": "6.1.0-edge.2",
|
|
34
|
+
"@memberjunction/ai-bridge-base": "6.1.0-edge.2",
|
|
35
|
+
"@memberjunction/ai-bridge-ringcentral": "6.1.0-edge.2",
|
|
36
|
+
"@memberjunction/ai-bridge-server": "6.1.0-edge.2",
|
|
37
|
+
"@memberjunction/ai-bridge-teams": "6.1.0-edge.2",
|
|
38
|
+
"@memberjunction/ai-bridge-twilio": "6.1.0-edge.2",
|
|
39
|
+
"@memberjunction/ai-bridge-vonage": "6.1.0-edge.2",
|
|
40
|
+
"@memberjunction/ai-core-plus": "6.1.0-edge.2",
|
|
41
|
+
"@memberjunction/ai-engine-base": "6.1.0-edge.2",
|
|
42
|
+
"@memberjunction/ai-mcp-client": "6.1.0-edge.2",
|
|
43
|
+
"@memberjunction/ai-prompts": "6.1.0-edge.2",
|
|
44
|
+
"@memberjunction/ai-provider-bundle": "6.1.0-edge.2",
|
|
45
|
+
"@memberjunction/ai-vector-sync": "6.1.0-edge.2",
|
|
46
|
+
"@memberjunction/ai-vectordb": "6.1.0-edge.2",
|
|
47
|
+
"@memberjunction/ai-vectors-pinecone": "6.1.0-edge.2",
|
|
48
|
+
"@memberjunction/aiengine": "6.1.0-edge.2",
|
|
49
|
+
"@memberjunction/api-keys": "6.1.0-edge.2",
|
|
50
|
+
"@memberjunction/auth-providers": "6.1.0-edge.2",
|
|
51
|
+
"@memberjunction/clustering-engine": "6.1.0-edge.2",
|
|
52
|
+
"@memberjunction/codegen-lib": "6.1.0-edge.2",
|
|
53
|
+
"@memberjunction/communication-engine": "6.1.0-edge.2",
|
|
54
|
+
"@memberjunction/communication-ms-graph": "6.1.0-edge.2",
|
|
55
|
+
"@memberjunction/communication-sendgrid": "6.1.0-edge.2",
|
|
56
|
+
"@memberjunction/communication-types": "6.1.0-edge.2",
|
|
57
|
+
"@memberjunction/component-registry-client-sdk": "6.1.0-edge.2",
|
|
58
|
+
"@memberjunction/computer-use": "6.1.0-edge.2",
|
|
59
|
+
"@memberjunction/computer-use-engine": "6.1.0-edge.2",
|
|
60
|
+
"@memberjunction/config": "6.1.0-edge.2",
|
|
61
|
+
"@memberjunction/core": "6.1.0-edge.2",
|
|
62
|
+
"@memberjunction/core-actions": "6.1.0-edge.2",
|
|
63
|
+
"@memberjunction/core-entities": "6.1.0-edge.2",
|
|
64
|
+
"@memberjunction/core-entities-server": "6.1.0-edge.2",
|
|
65
|
+
"@memberjunction/credentials": "6.1.0-edge.2",
|
|
66
|
+
"@memberjunction/data-context": "6.1.0-edge.2",
|
|
67
|
+
"@memberjunction/data-context-server": "6.1.0-edge.2",
|
|
68
|
+
"@memberjunction/doc-utils": "6.1.0-edge.2",
|
|
69
|
+
"@memberjunction/encryption": "6.1.0-edge.2",
|
|
70
|
+
"@memberjunction/entity-communications-base": "6.1.0-edge.2",
|
|
71
|
+
"@memberjunction/entity-communications-server": "6.1.0-edge.2",
|
|
72
|
+
"@memberjunction/esignature": "6.1.0-edge.2",
|
|
73
|
+
"@memberjunction/external-change-detection": "6.1.0-edge.2",
|
|
74
|
+
"@memberjunction/generic-database-provider": "6.1.0-edge.2",
|
|
75
|
+
"@memberjunction/global": "6.1.0-edge.2",
|
|
76
|
+
"@memberjunction/graphql-dataprovider": "6.1.0-edge.2",
|
|
77
|
+
"@memberjunction/integration-engine": "6.1.0-edge.2",
|
|
78
|
+
"@memberjunction/integration-engine-base": "6.1.0-edge.2",
|
|
79
|
+
"@memberjunction/integration-progress-artifacts": "6.1.0-edge.2",
|
|
80
|
+
"@memberjunction/integration-schema-builder": "6.1.0-edge.2",
|
|
81
|
+
"@memberjunction/interactive-component-types": "6.1.0-edge.2",
|
|
82
|
+
"@memberjunction/lists": "6.1.0-edge.2",
|
|
83
|
+
"@memberjunction/lists-base": "6.1.0-edge.2",
|
|
84
|
+
"@memberjunction/livekit-room-server": "6.1.0-edge.2",
|
|
85
|
+
"@memberjunction/notifications": "6.1.0-edge.2",
|
|
86
|
+
"@memberjunction/postgresql-dataprovider": "6.1.0-edge.2",
|
|
87
|
+
"@memberjunction/queue": "6.1.0-edge.2",
|
|
88
|
+
"@memberjunction/record-comparison": "6.1.0-edge.2",
|
|
89
|
+
"@memberjunction/redis-provider": "6.1.0-edge.2",
|
|
90
|
+
"@memberjunction/remote-browser-base": "6.1.0-edge.2",
|
|
91
|
+
"@memberjunction/remote-browser-cdp": "6.1.0-edge.2",
|
|
92
|
+
"@memberjunction/remote-browser-selfhost": "6.1.0-edge.2",
|
|
93
|
+
"@memberjunction/remote-browser-server": "6.1.0-edge.2",
|
|
94
|
+
"@memberjunction/scheduling-actions": "6.1.0-edge.2",
|
|
95
|
+
"@memberjunction/scheduling-base-types": "6.1.0-edge.2",
|
|
96
|
+
"@memberjunction/scheduling-engine": "6.1.0-edge.2",
|
|
97
|
+
"@memberjunction/scheduling-engine-base": "6.1.0-edge.2",
|
|
98
|
+
"@memberjunction/schema-engine": "6.1.0-edge.2",
|
|
99
|
+
"@memberjunction/search-engine": "6.1.0-edge.2",
|
|
100
|
+
"@memberjunction/server-extensions-core": "6.1.0-edge.2",
|
|
101
|
+
"@memberjunction/sql-dialect": "6.1.0-edge.2",
|
|
102
|
+
"@memberjunction/sqlserver-dataprovider": "6.1.0-edge.2",
|
|
103
|
+
"@memberjunction/storage": "6.1.0-edge.2",
|
|
104
|
+
"@memberjunction/tag-engine": "6.1.0-edge.2",
|
|
105
|
+
"@memberjunction/tag-engine-base": "6.1.0-edge.2",
|
|
106
|
+
"@memberjunction/task-graph": "6.1.0-edge.2",
|
|
107
|
+
"@memberjunction/templates": "6.1.0-edge.2",
|
|
108
|
+
"@memberjunction/testing-engine": "6.1.0-edge.2",
|
|
109
|
+
"@memberjunction/testing-engine-base": "6.1.0-edge.2",
|
|
110
|
+
"@memberjunction/version-history": "6.1.0-edge.2",
|
|
111
111
|
"@octokit/auth-app": "^7.1.5",
|
|
112
112
|
"@octokit/rest": "^21.1.1",
|
|
113
113
|
"@types/compression": "^1.8.1",
|
|
@@ -148,7 +148,7 @@ vi.mock('../util.js', () => ({
|
|
|
148
148
|
// --- Partial mock: control ONLY UserCache.GetSystemUser (the scoped-anonymous elevation seam,
|
|
149
149
|
// issue #3371); everything else in the data provider stays real ---
|
|
150
150
|
const getSystemUserMock = vi.fn<[], UserInfo | undefined>();
|
|
151
|
-
vi.mock('@memberjunction/
|
|
151
|
+
vi.mock('@memberjunction/generic-database-provider', async (importOriginal) => {
|
|
152
152
|
const actual = await importOriginal<Record<string, unknown>>();
|
|
153
153
|
return {
|
|
154
154
|
...actual,
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
// ResolverBase transitively pulls in type-graphql decorators, which need the
|
|
2
|
+
// Reflect.metadata polyfill at import time.
|
|
3
|
+
import 'reflect-metadata';
|
|
4
|
+
import { describe, it, expect } from 'vitest';
|
|
5
|
+
import type { IMetadataProvider, UserInfo } from '@memberjunction/core';
|
|
6
|
+
import { ResolverBase } from '../generic/ResolverBase.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* `MapFieldNamesToCodeNames` must not write into the rows it is handed
|
|
10
|
+
* (PR #3425 review, finding M2).
|
|
11
|
+
*
|
|
12
|
+
* This is the SINGLE-RECORD half of the transport rename. The RunView half was fixed to
|
|
13
|
+
* copy-then-map, but this one still renamed `__mj_*` → `_mj__*` by writing onto its argument —
|
|
14
|
+
* and its arguments are frequently rows straight out of `findBy`/`RunView`, i.e. the server
|
|
15
|
+
* cache's own objects.
|
|
16
|
+
*
|
|
17
|
+
* Now that `LocalCacheManager` deep-freezes cached rows, that in-place rename does not corrupt
|
|
18
|
+
* the cache — it throws. Reproduced live against a running MJAPI before the fix:
|
|
19
|
+
*
|
|
20
|
+
* UserByEmail → "Cannot add property _mj__CreatedAt, object is not extensible"
|
|
21
|
+
*
|
|
22
|
+
* deterministically, on every call, because `MJ: Users` has caching enabled. `UserByID` and
|
|
23
|
+
* `UserByEmployeeID` share the code path, and so does every CodeGen-generated single-record
|
|
24
|
+
* resolver in `generated.ts` (`MapFieldNamesToCodeNames(entity, rows[0], ...)`), which is why
|
|
25
|
+
* the fix belongs in the shared helper rather than at the call sites.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/** Exposes the two protected mappers and supplies metadata without a live provider. */
|
|
29
|
+
class MappingProbe extends ResolverBase {
|
|
30
|
+
public MapOne(entityName: string, dataObject: unknown, provider: IMetadataProvider): Promise<unknown> {
|
|
31
|
+
return this.MapFieldNamesToCodeNames(entityName, dataObject, undefined, provider);
|
|
32
|
+
}
|
|
33
|
+
public MapMany(entityName: string, rows: unknown[], provider: IMetadataProvider, contextUser?: UserInfo): Promise<unknown[]> {
|
|
34
|
+
return this.ArrayMapFieldNamesToCodeNames(entityName, rows as Record<string, unknown>[], contextUser, provider);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const ENTITY_NAME = 'MJ: Users';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Minimal metadata: the field set drives the rename, `EncryptedFields` empty so the
|
|
42
|
+
* EncryptionEngine is never consulted.
|
|
43
|
+
*/
|
|
44
|
+
function fakeProvider(): IMetadataProvider {
|
|
45
|
+
return {
|
|
46
|
+
EntityByName: (name: string) =>
|
|
47
|
+
name === ENTITY_NAME
|
|
48
|
+
? {
|
|
49
|
+
Name: ENTITY_NAME,
|
|
50
|
+
Fields: [
|
|
51
|
+
{ Name: 'ID', CodeName: 'ID' },
|
|
52
|
+
{ Name: 'Name', CodeName: 'Name' },
|
|
53
|
+
{ Name: '__mj_CreatedAt', CodeName: '__mj_CreatedAt' },
|
|
54
|
+
{ Name: '__mj_UpdatedAt', CodeName: '__mj_UpdatedAt' },
|
|
55
|
+
],
|
|
56
|
+
EncryptedFields: [],
|
|
57
|
+
}
|
|
58
|
+
: undefined,
|
|
59
|
+
} as unknown as IMetadataProvider;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** A row as the cache hands it out: deep-frozen. */
|
|
63
|
+
function frozenCachedRow(): Record<string, unknown> {
|
|
64
|
+
return Object.freeze({
|
|
65
|
+
ID: 'u-1',
|
|
66
|
+
Name: 'Ada',
|
|
67
|
+
__mj_CreatedAt: 'T0',
|
|
68
|
+
__mj_UpdatedAt: 'T1',
|
|
69
|
+
}) as Record<string, unknown>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
describe('MapFieldNamesToCodeNames on frozen cache rows', () => {
|
|
73
|
+
it('maps a FROZEN row to transport keys instead of throwing (the live UserByEmail 500)', async () => {
|
|
74
|
+
const row = frozenCachedRow();
|
|
75
|
+
|
|
76
|
+
const mapped = (await new MappingProbe().MapOne(ENTITY_NAME, row, fakeProvider())) as Record<string, unknown>;
|
|
77
|
+
|
|
78
|
+
expect(mapped._mj__CreatedAt).toBe('T0');
|
|
79
|
+
expect(mapped._mj__UpdatedAt).toBe('T1');
|
|
80
|
+
expect(mapped.ID).toBe('u-1');
|
|
81
|
+
expect(mapped.Name).toBe('Ada');
|
|
82
|
+
// The transport aliases replace the originals in the OUTGOING shape.
|
|
83
|
+
expect(mapped.__mj_CreatedAt).toBeUndefined();
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it('returns a copy — the caller\'s row keeps its entity field names', async () => {
|
|
87
|
+
// Unfrozen input, so a regression to in-place mapping would silently pass the frozen
|
|
88
|
+
// test above only if it also stopped mapping. This one pins non-mutation directly.
|
|
89
|
+
const row: Record<string, unknown> = { ID: 'u-1', Name: 'Ada', __mj_CreatedAt: 'T0', __mj_UpdatedAt: 'T1' };
|
|
90
|
+
|
|
91
|
+
const mapped = (await new MappingProbe().MapOne(ENTITY_NAME, row, fakeProvider())) as Record<string, unknown>;
|
|
92
|
+
|
|
93
|
+
expect(row.__mj_CreatedAt).toBe('T0');
|
|
94
|
+
expect(row._mj__CreatedAt).toBeUndefined();
|
|
95
|
+
expect(mapped).not.toBe(row);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('still returns null for empty/absent input (contract unchanged)', async () => {
|
|
99
|
+
const probe = new MappingProbe();
|
|
100
|
+
expect(await probe.MapOne(ENTITY_NAME, null, fakeProvider())).toBeNull();
|
|
101
|
+
expect(await probe.MapOne(ENTITY_NAME, {}, fakeProvider())).toBeNull();
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it('leaves rows with no __mj_ fields structurally intact', async () => {
|
|
105
|
+
const row = Object.freeze({ ID: 'u-1', Name: 'Ada' }) as Record<string, unknown>;
|
|
106
|
+
|
|
107
|
+
const mapped = (await new MappingProbe().MapOne(ENTITY_NAME, row, fakeProvider())) as Record<string, unknown>;
|
|
108
|
+
|
|
109
|
+
expect(mapped).toEqual({ ID: 'u-1', Name: 'Ada' });
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
describe('ArrayMapFieldNamesToCodeNames on frozen cache rows', () => {
|
|
114
|
+
it('maps a frozen ARRAY of frozen rows without mutating either', async () => {
|
|
115
|
+
// The array itself is frozen too — LocalCacheManager freezes the array as well as the
|
|
116
|
+
// rows, because `results.sort()`/`.push()` on a live cache array is its own hazard.
|
|
117
|
+
const rows = Object.freeze([frozenCachedRow(), frozenCachedRow()]) as unknown as Record<string, unknown>[];
|
|
118
|
+
|
|
119
|
+
const mapped = (await new MappingProbe().MapMany(ENTITY_NAME, rows, fakeProvider())) as Record<string, unknown>[];
|
|
120
|
+
|
|
121
|
+
expect(mapped).toHaveLength(2);
|
|
122
|
+
expect(mapped[0]._mj__CreatedAt).toBe('T0');
|
|
123
|
+
expect(mapped[1]._mj__UpdatedAt).toBe('T1');
|
|
124
|
+
// Inputs untouched.
|
|
125
|
+
expect(rows[0].__mj_CreatedAt).toBe('T0');
|
|
126
|
+
expect(rows[0]._mj__CreatedAt).toBeUndefined();
|
|
127
|
+
expect(mapped[0]).not.toBe(rows[0]);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('passes an empty array straight through', async () => {
|
|
131
|
+
expect(await new MappingProbe().MapMany(ENTITY_NAME, [], fakeProvider())).toEqual([]);
|
|
132
|
+
});
|
|
133
|
+
});
|