@prisma-next/sql-contract-psl 0.12.0-dev.40 → 0.12.0-dev.42
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/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{interpreter-B75uZQde.mjs → interpreter-BTfcjVFM.mjs} +5 -4
- package/dist/interpreter-BTfcjVFM.mjs.map +1 -0
- package/dist/provider.d.mts +3 -0
- package/dist/provider.d.mts.map +1 -1
- package/dist/provider.mjs +3 -2
- package/dist/provider.mjs.map +1 -1
- package/package.json +12 -12
- package/src/interpreter.ts +1 -1
- package/src/provider.ts +4 -0
- package/src/psl-column-resolution.ts +10 -3
- package/src/psl-relation-resolution.ts +3 -4
- package/dist/interpreter-B75uZQde.mjs.map +0 -1
package/dist/provider.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as interpretPslDocumentToSqlContract } from "./interpreter-
|
|
1
|
+
import { t as interpretPslDocumentToSqlContract } from "./interpreter-BTfcjVFM.mjs";
|
|
2
2
|
import { ifDefined } from "@prisma-next/utils/defined";
|
|
3
3
|
import { notOk, ok } from "@prisma-next/utils/result";
|
|
4
4
|
import { parsePslDocument } from "@prisma-next/psl-parser";
|
|
@@ -70,7 +70,8 @@ function prismaContract(schemaPath, options) {
|
|
|
70
70
|
scalarTypeDescriptors,
|
|
71
71
|
...ifDefined("composedExtensionPacks", context.composedExtensionPacks.length > 0 ? [...context.composedExtensionPacks] : void 0),
|
|
72
72
|
...ifDefined("composedExtensionPackRefs", options.composedExtensionPackRefs?.length ? options.composedExtensionPackRefs : void 0),
|
|
73
|
-
controlMutationDefaults: context.controlMutationDefaults
|
|
73
|
+
controlMutationDefaults: context.controlMutationDefaults,
|
|
74
|
+
...ifDefined("createNamespace", options.createNamespace)
|
|
74
75
|
});
|
|
75
76
|
if (!interpreted.ok) return interpreted;
|
|
76
77
|
return ok(applySpecifierDefaultControlPolicy(interpreted.value, options.defaultControlPolicy));
|
package/dist/provider.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.mjs","names":[],"sources":["../src/provider.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport type { ContractConfig } from '@prisma-next/config/config-types';\nimport { applySpecifierDefaultControlPolicy } from '@prisma-next/contract/apply-specifier-default-control-policy';\nimport type { ControlPolicy } from '@prisma-next/contract/types';\nimport type { CodecLookup } from '@prisma-next/framework-components/codec';\nimport type { ExtensionPackRef, TargetPackRef } from '@prisma-next/framework-components/components';\nimport { parsePslDocument } from '@prisma-next/psl-parser';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { notOk, ok } from '@prisma-next/utils/result';\nimport { basename, extname } from 'pathe';\nimport { interpretPslDocumentToSqlContract } from './interpreter';\nimport type { ColumnDescriptor } from './psl-column-resolution';\n\nexport interface PrismaContractOptions {\n readonly output?: string;\n readonly target: TargetPackRef<'sql', string>;\n readonly composedExtensionPackRefs?: readonly ExtensionPackRef<'sql', string>[];\n readonly defaultControlPolicy?: ControlPolicy;\n}\n\n/**\n * Derives the emit output path from the schema input path so artefacts land\n * colocated with the source (e.g. `src/contract/schema.prisma` →\n * `src/contract/contract.json`). The provider owns this because it is the\n * only layer that knows the input path; the upstream `normalizeContractConfig`\n * default is a last-resort fallback for providers that don't carry one.\n */\nfunction defaultOutputFromSchemaPath(schemaPath: string): string {\n const ext = extname(schemaPath);\n if (ext.length === 0) return `${schemaPath}.json`;\n const base = schemaPath.slice(0, -ext.length);\n // PSL schemas commonly use `schema.prisma`; the emitted JSON is called\n // `contract.json` to mirror the rest of the toolchain, not `schema.json`.\n // Match only the exact basename `schema` so files like `my-schema.prisma`\n // are not silently rewritten to `my-contract.json`.\n if (basename(base) === 'schema') {\n return `${base.slice(0, -'schema'.length)}contract.json`;\n }\n return `${base}.json`;\n}\n\nfunction buildColumnDescriptorMap(\n scalarTypeDescriptors: ReadonlyMap<string, string>,\n codecLookup: CodecLookup,\n): ReadonlyMap<string, ColumnDescriptor> {\n const result = new Map<string, ColumnDescriptor>();\n for (const [typeName, codecId] of scalarTypeDescriptors) {\n const nativeType = codecLookup.targetTypesFor(codecId)?.[0];\n if (nativeType === undefined) continue;\n result.set(typeName, { codecId, nativeType });\n }\n return result;\n}\n\nexport function prismaContract(schemaPath: string, options: PrismaContractOptions): ContractConfig {\n return {\n source: {\n inputs: [schemaPath],\n load: async (context) => {\n const [absoluteSchemaPath] = context.resolvedInputs;\n if (absoluteSchemaPath === undefined) {\n throw new Error(\n 'prismaContract: context.resolvedInputs is empty. The CLI config loader should populate it positional-matched with source.inputs.',\n );\n }\n let schema: string;\n try {\n schema = await readFile(absoluteSchemaPath, 'utf-8');\n } catch (error) {\n const message = String(error);\n return notOk({\n summary: `Failed to read Prisma schema at \"${schemaPath}\"`,\n diagnostics: [\n {\n code: 'PSL_SCHEMA_READ_FAILED',\n message,\n sourceId: schemaPath,\n },\n ],\n meta: { schemaPath, absoluteSchemaPath, cause: message },\n });\n }\n\n const document = parsePslDocument({\n schema,\n sourceId: schemaPath,\n });\n\n const scalarTypeDescriptors = buildColumnDescriptorMap(\n context.scalarTypeDescriptors,\n context.codecLookup,\n );\n\n const interpreted = interpretPslDocumentToSqlContract({\n document,\n target: options.target,\n authoringContributions: context.authoringContributions,\n scalarTypeDescriptors,\n ...ifDefined(\n 'composedExtensionPacks',\n context.composedExtensionPacks.length > 0\n ? [...context.composedExtensionPacks]\n : undefined,\n ),\n ...ifDefined(\n 'composedExtensionPackRefs',\n options.composedExtensionPackRefs?.length\n ? options.composedExtensionPackRefs\n : undefined,\n ),\n controlMutationDefaults: context.controlMutationDefaults,\n });\n if (!interpreted.ok) {\n return interpreted;\n }\n\n return ok(\n applySpecifierDefaultControlPolicy(interpreted.value, options.defaultControlPolicy),\n );\n },\n },\n output: options.output ?? defaultOutputFromSchemaPath(schemaPath),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"provider.mjs","names":[],"sources":["../src/provider.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport type { ContractConfig } from '@prisma-next/config/config-types';\nimport { applySpecifierDefaultControlPolicy } from '@prisma-next/contract/apply-specifier-default-control-policy';\nimport type { ControlPolicy } from '@prisma-next/contract/types';\nimport type { CodecLookup } from '@prisma-next/framework-components/codec';\nimport type { ExtensionPackRef, TargetPackRef } from '@prisma-next/framework-components/components';\nimport type { Namespace } from '@prisma-next/framework-components/ir';\nimport { parsePslDocument } from '@prisma-next/psl-parser';\nimport type { SqlNamespaceTablesInput } from '@prisma-next/sql-contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport { notOk, ok } from '@prisma-next/utils/result';\nimport { basename, extname } from 'pathe';\nimport { interpretPslDocumentToSqlContract } from './interpreter';\nimport type { ColumnDescriptor } from './psl-column-resolution';\n\nexport interface PrismaContractOptions {\n readonly output?: string;\n readonly target: TargetPackRef<'sql', string>;\n readonly composedExtensionPackRefs?: readonly ExtensionPackRef<'sql', string>[];\n readonly createNamespace?: (input: SqlNamespaceTablesInput) => Namespace;\n readonly defaultControlPolicy?: ControlPolicy;\n}\n\n/**\n * Derives the emit output path from the schema input path so artefacts land\n * colocated with the source (e.g. `src/contract/schema.prisma` →\n * `src/contract/contract.json`). The provider owns this because it is the\n * only layer that knows the input path; the upstream `normalizeContractConfig`\n * default is a last-resort fallback for providers that don't carry one.\n */\nfunction defaultOutputFromSchemaPath(schemaPath: string): string {\n const ext = extname(schemaPath);\n if (ext.length === 0) return `${schemaPath}.json`;\n const base = schemaPath.slice(0, -ext.length);\n // PSL schemas commonly use `schema.prisma`; the emitted JSON is called\n // `contract.json` to mirror the rest of the toolchain, not `schema.json`.\n // Match only the exact basename `schema` so files like `my-schema.prisma`\n // are not silently rewritten to `my-contract.json`.\n if (basename(base) === 'schema') {\n return `${base.slice(0, -'schema'.length)}contract.json`;\n }\n return `${base}.json`;\n}\n\nfunction buildColumnDescriptorMap(\n scalarTypeDescriptors: ReadonlyMap<string, string>,\n codecLookup: CodecLookup,\n): ReadonlyMap<string, ColumnDescriptor> {\n const result = new Map<string, ColumnDescriptor>();\n for (const [typeName, codecId] of scalarTypeDescriptors) {\n const nativeType = codecLookup.targetTypesFor(codecId)?.[0];\n if (nativeType === undefined) continue;\n result.set(typeName, { codecId, nativeType });\n }\n return result;\n}\n\nexport function prismaContract(schemaPath: string, options: PrismaContractOptions): ContractConfig {\n return {\n source: {\n inputs: [schemaPath],\n load: async (context) => {\n const [absoluteSchemaPath] = context.resolvedInputs;\n if (absoluteSchemaPath === undefined) {\n throw new Error(\n 'prismaContract: context.resolvedInputs is empty. The CLI config loader should populate it positional-matched with source.inputs.',\n );\n }\n let schema: string;\n try {\n schema = await readFile(absoluteSchemaPath, 'utf-8');\n } catch (error) {\n const message = String(error);\n return notOk({\n summary: `Failed to read Prisma schema at \"${schemaPath}\"`,\n diagnostics: [\n {\n code: 'PSL_SCHEMA_READ_FAILED',\n message,\n sourceId: schemaPath,\n },\n ],\n meta: { schemaPath, absoluteSchemaPath, cause: message },\n });\n }\n\n const document = parsePslDocument({\n schema,\n sourceId: schemaPath,\n });\n\n const scalarTypeDescriptors = buildColumnDescriptorMap(\n context.scalarTypeDescriptors,\n context.codecLookup,\n );\n\n const interpreted = interpretPslDocumentToSqlContract({\n document,\n target: options.target,\n authoringContributions: context.authoringContributions,\n scalarTypeDescriptors,\n ...ifDefined(\n 'composedExtensionPacks',\n context.composedExtensionPacks.length > 0\n ? [...context.composedExtensionPacks]\n : undefined,\n ),\n ...ifDefined(\n 'composedExtensionPackRefs',\n options.composedExtensionPackRefs?.length\n ? options.composedExtensionPackRefs\n : undefined,\n ),\n controlMutationDefaults: context.controlMutationDefaults,\n ...ifDefined('createNamespace', options.createNamespace),\n });\n if (!interpreted.ok) {\n return interpreted;\n }\n\n return ok(\n applySpecifierDefaultControlPolicy(interpreted.value, options.defaultControlPolicy),\n );\n },\n },\n output: options.output ?? defaultOutputFromSchemaPath(schemaPath),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;AA8BA,SAAS,4BAA4B,YAA4B;CAC/D,MAAM,MAAM,QAAQ,UAAU;CAC9B,IAAI,IAAI,WAAW,GAAG,OAAO,GAAG,WAAW;CAC3C,MAAM,OAAO,WAAW,MAAM,GAAG,CAAC,IAAI,MAAM;CAK5C,IAAI,SAAS,IAAI,MAAM,UACrB,OAAO,GAAG,KAAK,MAAM,GAAG,EAAgB,EAAE;CAE5C,OAAO,GAAG,KAAK;AACjB;AAEA,SAAS,yBACP,uBACA,aACuC;CACvC,MAAM,yBAAS,IAAI,IAA8B;CACjD,KAAK,MAAM,CAAC,UAAU,YAAY,uBAAuB;EACvD,MAAM,aAAa,YAAY,eAAe,OAAO,IAAI;EACzD,IAAI,eAAe,KAAA,GAAW;EAC9B,OAAO,IAAI,UAAU;GAAE;GAAS;EAAW,CAAC;CAC9C;CACA,OAAO;AACT;AAEA,SAAgB,eAAe,YAAoB,SAAgD;CACjG,OAAO;EACL,QAAQ;GACN,QAAQ,CAAC,UAAU;GACnB,MAAM,OAAO,YAAY;IACvB,MAAM,CAAC,sBAAsB,QAAQ;IACrC,IAAI,uBAAuB,KAAA,GACzB,MAAM,IAAI,MACR,kIACF;IAEF,IAAI;IACJ,IAAI;KACF,SAAS,MAAM,SAAS,oBAAoB,OAAO;IACrD,SAAS,OAAO;KACd,MAAM,UAAU,OAAO,KAAK;KAC5B,OAAO,MAAM;MACX,SAAS,oCAAoC,WAAW;MACxD,aAAa,CACX;OACE,MAAM;OACN;OACA,UAAU;MACZ,CACF;MACA,MAAM;OAAE;OAAY;OAAoB,OAAO;MAAQ;KACzD,CAAC;IACH;IAEA,MAAM,WAAW,iBAAiB;KAChC;KACA,UAAU;IACZ,CAAC;IAED,MAAM,wBAAwB,yBAC5B,QAAQ,uBACR,QAAQ,WACV;IAEA,MAAM,cAAc,kCAAkC;KACpD;KACA,QAAQ,QAAQ;KAChB,wBAAwB,QAAQ;KAChC;KACA,GAAG,UACD,0BACA,QAAQ,uBAAuB,SAAS,IACpC,CAAC,GAAG,QAAQ,sBAAsB,IAClC,KAAA,CACN;KACA,GAAG,UACD,6BACA,QAAQ,2BAA2B,SAC/B,QAAQ,4BACR,KAAA,CACN;KACA,yBAAyB,QAAQ;KACjC,GAAG,UAAU,mBAAmB,QAAQ,eAAe;IACzD,CAAC;IACD,IAAI,CAAC,YAAY,IACf,OAAO;IAGT,OAAO,GACL,mCAAmC,YAAY,OAAO,QAAQ,oBAAoB,CACpF;GACF;EACF;EACA,QAAQ,QAAQ,UAAU,4BAA4B,UAAU;CAClE;AACF"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/sql-contract-psl",
|
|
3
|
-
"version": "0.12.0-dev.
|
|
3
|
+
"version": "0.12.0-dev.42",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
7
7
|
"description": "PSL-to-SQL ContractIR interpreter for Prisma Next",
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@prisma-next/config": "0.12.0-dev.
|
|
10
|
-
"@prisma-next/contract": "0.12.0-dev.
|
|
11
|
-
"@prisma-next/framework-components": "0.12.0-dev.
|
|
12
|
-
"@prisma-next/psl-parser": "0.12.0-dev.
|
|
13
|
-
"@prisma-next/sql-contract": "0.12.0-dev.
|
|
14
|
-
"@prisma-next/sql-contract-ts": "0.12.0-dev.
|
|
15
|
-
"@prisma-next/utils": "0.12.0-dev.
|
|
9
|
+
"@prisma-next/config": "0.12.0-dev.42",
|
|
10
|
+
"@prisma-next/contract": "0.12.0-dev.42",
|
|
11
|
+
"@prisma-next/framework-components": "0.12.0-dev.42",
|
|
12
|
+
"@prisma-next/psl-parser": "0.12.0-dev.42",
|
|
13
|
+
"@prisma-next/sql-contract": "0.12.0-dev.42",
|
|
14
|
+
"@prisma-next/sql-contract-ts": "0.12.0-dev.42",
|
|
15
|
+
"@prisma-next/utils": "0.12.0-dev.42",
|
|
16
16
|
"pathe": "^2.0.3"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@prisma-next/contract-authoring": "0.12.0-dev.
|
|
20
|
-
"@prisma-next/test-utils": "0.12.0-dev.
|
|
21
|
-
"@prisma-next/tsconfig": "0.12.0-dev.
|
|
22
|
-
"@prisma-next/tsdown": "0.12.0-dev.
|
|
19
|
+
"@prisma-next/contract-authoring": "0.12.0-dev.42",
|
|
20
|
+
"@prisma-next/test-utils": "0.12.0-dev.42",
|
|
21
|
+
"@prisma-next/tsconfig": "0.12.0-dev.42",
|
|
22
|
+
"@prisma-next/tsdown": "0.12.0-dev.42",
|
|
23
23
|
"arktype": "^2.2.0",
|
|
24
24
|
"tsdown": "0.22.0",
|
|
25
25
|
"typescript": "5.9.3",
|
package/src/interpreter.ts
CHANGED
|
@@ -1708,7 +1708,7 @@ export function interpretPslDocumentToSqlContract(
|
|
|
1708
1708
|
`duplicate model name "${modelName}" across domain namespaces during PSL interpretation`,
|
|
1709
1709
|
);
|
|
1710
1710
|
}
|
|
1711
|
-
modelsForPatch[modelName] = model
|
|
1711
|
+
modelsForPatch[modelName] = model;
|
|
1712
1712
|
}
|
|
1713
1713
|
}
|
|
1714
1714
|
let patchedModels = patchModelDomainFields(modelsForPatch, modelResolvedFields);
|
package/src/provider.ts
CHANGED
|
@@ -4,7 +4,9 @@ import { applySpecifierDefaultControlPolicy } from '@prisma-next/contract/apply-
|
|
|
4
4
|
import type { ControlPolicy } from '@prisma-next/contract/types';
|
|
5
5
|
import type { CodecLookup } from '@prisma-next/framework-components/codec';
|
|
6
6
|
import type { ExtensionPackRef, TargetPackRef } from '@prisma-next/framework-components/components';
|
|
7
|
+
import type { Namespace } from '@prisma-next/framework-components/ir';
|
|
7
8
|
import { parsePslDocument } from '@prisma-next/psl-parser';
|
|
9
|
+
import type { SqlNamespaceTablesInput } from '@prisma-next/sql-contract/types';
|
|
8
10
|
import { ifDefined } from '@prisma-next/utils/defined';
|
|
9
11
|
import { notOk, ok } from '@prisma-next/utils/result';
|
|
10
12
|
import { basename, extname } from 'pathe';
|
|
@@ -15,6 +17,7 @@ export interface PrismaContractOptions {
|
|
|
15
17
|
readonly output?: string;
|
|
16
18
|
readonly target: TargetPackRef<'sql', string>;
|
|
17
19
|
readonly composedExtensionPackRefs?: readonly ExtensionPackRef<'sql', string>[];
|
|
20
|
+
readonly createNamespace?: (input: SqlNamespaceTablesInput) => Namespace;
|
|
18
21
|
readonly defaultControlPolicy?: ControlPolicy;
|
|
19
22
|
}
|
|
20
23
|
|
|
@@ -109,6 +112,7 @@ export function prismaContract(schemaPath: string, options: PrismaContractOption
|
|
|
109
112
|
: undefined,
|
|
110
113
|
),
|
|
111
114
|
controlMutationDefaults: context.controlMutationDefaults,
|
|
115
|
+
...ifDefined('createNamespace', options.createNamespace),
|
|
112
116
|
});
|
|
113
117
|
if (!interpreted.ok) {
|
|
114
118
|
return interpreted;
|
|
@@ -25,6 +25,7 @@ import type {
|
|
|
25
25
|
PslSpan,
|
|
26
26
|
PslTypeConstructorCall,
|
|
27
27
|
} from '@prisma-next/psl-parser';
|
|
28
|
+
import { blindCast } from '@prisma-next/utils/casts';
|
|
28
29
|
import {
|
|
29
30
|
lowerDefaultFunctionWithRegistry,
|
|
30
31
|
parseDefaultFunctionCall,
|
|
@@ -67,7 +68,9 @@ export function getAuthoringTypeConstructor(
|
|
|
67
68
|
if (typeof current !== 'object' || current === null || Array.isArray(current)) {
|
|
68
69
|
return undefined;
|
|
69
70
|
}
|
|
70
|
-
current =
|
|
71
|
+
current = blindCast<Record<string, unknown>, 'narrowed by preceding typeof/null/array guards'>(
|
|
72
|
+
current,
|
|
73
|
+
)[segment];
|
|
71
74
|
}
|
|
72
75
|
|
|
73
76
|
return isAuthoringTypeConstructorDescriptor(current) ? current : undefined;
|
|
@@ -94,7 +97,9 @@ export function getAuthoringEntity(
|
|
|
94
97
|
if (typeof current !== 'object' || current === null || Array.isArray(current)) {
|
|
95
98
|
return undefined;
|
|
96
99
|
}
|
|
97
|
-
current =
|
|
100
|
+
current = blindCast<Record<string, unknown>, 'narrowed by preceding typeof/null/array guards'>(
|
|
101
|
+
current,
|
|
102
|
+
)[segment];
|
|
98
103
|
}
|
|
99
104
|
|
|
100
105
|
return isAuthoringEntityTypeDescriptor(current) ? current : undefined;
|
|
@@ -115,7 +120,9 @@ export function getAuthoringFieldPreset(
|
|
|
115
120
|
if (typeof current !== 'object' || current === null || Array.isArray(current)) {
|
|
116
121
|
return undefined;
|
|
117
122
|
}
|
|
118
|
-
current =
|
|
123
|
+
current = blindCast<Record<string, unknown>, 'narrowed by preceding typeof/null/array guards'>(
|
|
124
|
+
current,
|
|
125
|
+
)[segment];
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
return isAuthoringFieldPresetDescriptor(current) ? current : undefined;
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from './psl-attribute-parsing';
|
|
15
15
|
import { checkUncomposedNamespace, reportUncomposedNamespace } from './psl-column-resolution';
|
|
16
16
|
|
|
17
|
-
export const REFERENTIAL_ACTION_MAP = {
|
|
17
|
+
export const REFERENTIAL_ACTION_MAP: Record<string, ReferentialAction | undefined> = {
|
|
18
18
|
NoAction: 'noAction',
|
|
19
19
|
Restrict: 'restrict',
|
|
20
20
|
Cascade: 'cascade',
|
|
@@ -25,7 +25,7 @@ export const REFERENTIAL_ACTION_MAP = {
|
|
|
25
25
|
cascade: 'cascade',
|
|
26
26
|
setNull: 'setNull',
|
|
27
27
|
setDefault: 'setDefault',
|
|
28
|
-
}
|
|
28
|
+
};
|
|
29
29
|
|
|
30
30
|
export type ParsedRelationAttribute = {
|
|
31
31
|
readonly relationName?: string;
|
|
@@ -71,8 +71,7 @@ export function normalizeReferentialAction(input: {
|
|
|
71
71
|
readonly span: PslSpan;
|
|
72
72
|
readonly diagnostics: ContractSourceDiagnostic[];
|
|
73
73
|
}): ReferentialAction | undefined {
|
|
74
|
-
const normalized =
|
|
75
|
-
REFERENTIAL_ACTION_MAP[input.actionToken as keyof typeof REFERENTIAL_ACTION_MAP];
|
|
74
|
+
const normalized = REFERENTIAL_ACTION_MAP[input.actionToken];
|
|
76
75
|
if (normalized) {
|
|
77
76
|
return normalized;
|
|
78
77
|
}
|