@gqlbase/plugins 0.1.1 → 0.1.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/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.d.ts.map +1 -1
- package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.js +8 -8
- package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.js.map +1 -1
- package/dist/appsync/AppSyncUtilsPlugin/AppSyncUtilsPlugin.d.ts.map +1 -1
- package/dist/appsync/AppSyncUtilsPlugin/AppSyncUtilsPlugin.js +16 -16
- package/dist/appsync/AppSyncUtilsPlugin/AppSyncUtilsPlugin.js.map +1 -1
- package/dist/base/ModelPlugin/ModelPlugin.d.ts.map +1 -1
- package/dist/base/ModelPlugin/ModelPlugin.js +79 -83
- package/dist/base/ModelPlugin/ModelPlugin.js.map +1 -1
- package/dist/base/ModelPlugin/ModelPlugin.utils.d.ts +1 -5
- package/dist/base/ModelPlugin/ModelPlugin.utils.d.ts.map +1 -1
- package/dist/base/ModelPlugin/ModelPlugin.utils.js +1 -16
- package/dist/base/ModelPlugin/ModelPlugin.utils.js.map +1 -1
- package/dist/base/ModelPlugin/index.d.ts +1 -1
- package/dist/base/ModelPlugin/index.d.ts.map +1 -1
- package/dist/base/ModelPlugin/index.js +1 -1
- package/dist/base/ModelPlugin/index.js.map +1 -1
- package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.d.ts.map +1 -1
- package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js +3 -5
- package/dist/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.js.map +1 -1
- package/dist/base/RelationsPlugin/RelationsPlugin.d.ts.map +1 -1
- package/dist/base/RelationsPlugin/RelationsPlugin.js +24 -26
- package/dist/base/RelationsPlugin/RelationsPlugin.js.map +1 -1
- package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts +4 -2
- package/dist/base/RelationsPlugin/RelationsPlugin.utils.d.ts.map +1 -1
- package/dist/base/RelationsPlugin/RelationsPlugin.utils.js +36 -6
- package/dist/base/RelationsPlugin/RelationsPlugin.utils.js.map +1 -1
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.d.ts.map +1 -1
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js +1 -1
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.js.map +1 -1
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts +1 -5
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.d.ts.map +1 -1
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js +2 -23
- package/dist/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js.map +1 -1
- package/dist/base/RfcFeaturesPlugin/index.d.ts +1 -1
- package/dist/base/RfcFeaturesPlugin/index.d.ts.map +1 -1
- package/dist/base/RfcFeaturesPlugin/index.js +1 -1
- package/dist/base/RfcFeaturesPlugin/index.js.map +1 -1
- package/dist/base/ScalarsPlugin/ScalarsPlugin.js +10 -10
- package/dist/base/ScalarsPlugin/ScalarsPlugin.js.map +1 -1
- package/dist/base/TypesGeneratorBase/TypesGeneratorBase.d.ts.map +1 -1
- package/dist/base/TypesGeneratorBase/TypesGeneratorBase.js +6 -7
- package/dist/base/TypesGeneratorBase/TypesGeneratorBase.js.map +1 -1
- package/dist/base/TypesGeneratorBase/index.d.ts +0 -1
- package/dist/base/TypesGeneratorBase/index.d.ts.map +1 -1
- package/dist/base/TypesGeneratorBase/index.js +0 -1
- package/dist/base/TypesGeneratorBase/index.js.map +1 -1
- package/dist/base/UtilitiesPlugin/UtilitiesPlugin.d.ts.map +1 -1
- package/dist/base/UtilitiesPlugin/UtilitiesPlugin.js +17 -7
- package/dist/base/UtilitiesPlugin/UtilitiesPlugin.js.map +1 -1
- package/dist/base/index.d.ts +3 -3
- package/dist/base/index.d.ts.map +1 -1
- package/dist/base/index.js +3 -3
- package/dist/base/index.js.map +1 -1
- package/dist/middy/MiddyAppSyncGraphQLPlugin/MiddyAppSyncGraphQLPlugin.d.ts.map +1 -1
- package/dist/middy/MiddyAppSyncGraphQLPlugin/MiddyAppSyncGraphQLPlugin.js +5 -5
- package/dist/middy/MiddyAppSyncGraphQLPlugin/MiddyAppSyncGraphQLPlugin.js.map +1 -1
- package/dist/relay/ConnectionPlugin/ConnectionPlugin.d.ts.map +1 -1
- package/dist/relay/ConnectionPlugin/ConnectionPlugin.js +14 -18
- package/dist/relay/ConnectionPlugin/ConnectionPlugin.js.map +1 -1
- package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.d.ts.map +1 -1
- package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.js +5 -3
- package/dist/relay/NodeInterfacePlugin/NodeInterfacePlugin.js.map +1 -1
- package/package.json +3 -3
- package/dist/base/TypesGeneratorBase/TypeGeneratorBase.utils.d.ts +0 -3
- package/dist/base/TypesGeneratorBase/TypeGeneratorBase.utils.d.ts.map +0 -1
- package/dist/base/TypesGeneratorBase/TypeGeneratorBase.utils.js +0 -5
- package/dist/base/TypesGeneratorBase/TypeGeneratorBase.utils.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DefinitionNode,
|
|
1
|
+
import { DefinitionNode, FieldNode, ObjectNode } from "@gqlbase/core/definition";
|
|
2
2
|
export interface ModelPluginOptions {
|
|
3
3
|
operations: OperationType[];
|
|
4
4
|
}
|
|
@@ -21,10 +21,6 @@ export type OperationType = (typeof ModelOperation)[keyof typeof ModelOperation]
|
|
|
21
21
|
export declare const DEFAULT_READ_OPERATIONS: ["get", "list"];
|
|
22
22
|
export declare const DEFAULT_WRITE_OPERATIONS: ["create", "update", "delete"];
|
|
23
23
|
export declare const isModel: (definition: DefinitionNode) => definition is ObjectNode;
|
|
24
|
-
export declare const isObjectLike: (type: DefinitionNode) => type is ObjectNode | InterfaceNode | UnionNode;
|
|
25
|
-
export declare const isListTypeNode: (node: TypeNode) => boolean;
|
|
26
|
-
export declare const isScalar: (node: DefinitionNode) => node is ScalarNode;
|
|
27
|
-
export declare const isEnum: (node: DefinitionNode) => node is EnumNode;
|
|
28
24
|
export declare const shouldSkipFieldFromMutationInput: (field: FieldNode) => boolean;
|
|
29
25
|
export declare const shouldSkipFieldFromFilterInput: (field: FieldNode) => boolean;
|
|
30
26
|
export declare const shouldSkipFieldFromSortInput: (field: FieldNode) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/ModelPlugin/ModelPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ModelPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/ModelPlugin/ModelPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAIjF,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc;;CAEjB,CAAC;AAEX,eAAO,MAAM,cAAc;IACzB,oDAAoD;;IAGpD,oEAAoE;;;;;;;;CAgB5D,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEjF,eAAO,MAAM,uBAAuB,iBAAqD,CAAC;AAC1F,eAAO,MAAM,wBAAwB,gCAID,CAAC;AAErC,eAAO,MAAM,OAAO,GAAI,YAAY,cAAc,KAAG,UAAU,IAAI,UAElE,CAAC;AAEF,eAAO,MAAM,gCAAgC,GAAI,OAAO,SAAS,KAAG,OAEnE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,OAAO,SAAS,KAAG,OAEjE,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,OAAO,SAAS,KAAG,OAE/D,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ObjectNode } from "@gqlbase/core/definition";
|
|
2
2
|
import { isClientOnly, isReadOnly, isServerOnly, isWriteOnly } from "../UtilitiesPlugin/index.js";
|
|
3
3
|
import { isRelationField } from "../RelationsPlugin/index.js";
|
|
4
4
|
export const ModelDirective = {
|
|
@@ -30,21 +30,6 @@ export const DEFAULT_WRITE_OPERATIONS = [
|
|
|
30
30
|
export const isModel = (definition) => {
|
|
31
31
|
return definition instanceof ObjectNode && definition.hasDirective(ModelDirective.MODEL);
|
|
32
32
|
};
|
|
33
|
-
export const isObjectLike = (type) => {
|
|
34
|
-
return type instanceof ObjectNode || type instanceof InterfaceNode || type instanceof UnionNode;
|
|
35
|
-
};
|
|
36
|
-
export const isListTypeNode = (node) => {
|
|
37
|
-
if (node instanceof NonNullTypeNode && node.type instanceof ListTypeNode) {
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return node instanceof ListTypeNode;
|
|
41
|
-
};
|
|
42
|
-
export const isScalar = (node) => {
|
|
43
|
-
return node instanceof ScalarNode;
|
|
44
|
-
};
|
|
45
|
-
export const isEnum = (node) => {
|
|
46
|
-
return node instanceof EnumNode;
|
|
47
|
-
};
|
|
48
33
|
export const shouldSkipFieldFromMutationInput = (field) => {
|
|
49
34
|
return isReadOnly(field) || isServerOnly(field) || isClientOnly(field) || isRelationField(field);
|
|
50
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/ModelPlugin/ModelPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ModelPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/ModelPlugin/ModelPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAM9D,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,OAAO;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,oDAAoD;IACpD,IAAI,EAAE,MAAM;IAEZ,oEAAoE;IACpE,KAAK,EAAE,OAAO;IAEd,mBAAmB;IACnB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IAEZ,sBAAsB;IACtB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAEhB,MAAM;IACN,gBAAgB;IAChB,0BAA0B;CAClB,CAAC;AAIX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAoC,CAAC;AAC1F,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,QAAQ;IACR,QAAQ;IACR,QAAQ;CAC0B,CAAC;AAErC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,UAA0B,EAA4B,EAAE;IAC9E,OAAO,UAAU,YAAY,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,KAAgB,EAAW,EAAE;IAC5E,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACnG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAgB,EAAW,EAAE;IAC1E,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,KAAgB,EAAW,EAAE;IACxE,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ModelPlugin, modelPlugin } from "./ModelPlugin.js";
|
|
2
|
-
export { ModelDirective, ModelOperation, isModel,
|
|
2
|
+
export { ModelDirective, ModelOperation, isModel, type OperationType, type ModelPluginOptions, } from "./ModelPlugin.utils.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/ModelPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/ModelPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,OAAO,EACP,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { ModelPlugin, modelPlugin } from "./ModelPlugin.js";
|
|
2
|
-
export { ModelDirective, ModelOperation, isModel,
|
|
2
|
+
export { ModelDirective, ModelOperation, isModel, } from "./ModelPlugin.utils.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/ModelPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/ModelPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,OAAO,GAGR,MAAM,wBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelTypesGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEhG,OAAO,EACL,cAAc,
|
|
1
|
+
{"version":3,"file":"ModelTypesGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEhG,OAAO,EACL,cAAc,EAaf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAGL,gCAAgC,EACjC,MAAM,sCAAsC,CAAC;AAM9C;;GAEG;AAEH,qBAAa,yBAA0B,SAAQ,qBAAqB;IAClE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAA6C;gBAEhD,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,gCAAqC;IAMxF,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,yBAAyB;IAkCjC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,gBAAgB;IAsBjB,MAAM;IAkBN,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAQ1C,QAAQ,CAAC,UAAU,EAAE,cAAc;IAkBnC,MAAM;;;;;CAYd;AAED,eAAO,MAAM,yBAAyB,oGAAiD,CAAC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core";
|
|
3
3
|
import { createFileHeaders } from "@gqlbase/shared/codegen";
|
|
4
|
-
import { EnumNode, InterfaceNode, ListTypeNode, NonNullTypeNode, ObjectNode, UnionNode, } from "@gqlbase/core/definition";
|
|
4
|
+
import { EnumNode, InterfaceNode, isEnumNode, isObjectLike, isOperationNode, isScalarNode, ListTypeNode, NonNullTypeNode, ObjectNode, UnionNode, } from "@gqlbase/core/definition";
|
|
5
5
|
import { getBuildinScalarTypeKeyword, mergeOptions, } from "./ModelTypesGeneratorPlugin.utils.js";
|
|
6
|
-
import { isEnum, isObjectLike, isScalar } from "../ModelPlugin/ModelPlugin.utils.js";
|
|
7
6
|
import { isRelationField } from "../RelationsPlugin/RelationsPlugin.utils.js";
|
|
8
7
|
import { isBuildInScalar } from "@gqlbase/shared/definition";
|
|
9
8
|
import { getTypeHint, isInternal } from "@gqlbase/core/plugins";
|
|
10
9
|
import { isSemanticNullable } from "../RfcFeaturesPlugin/RfcFeaturesPlugin.utils.js";
|
|
11
|
-
import { isOperationNode } from "../TypesGeneratorBase/index.js";
|
|
12
10
|
/**
|
|
13
11
|
* This plugin generates TypeScript types for all objects defined in the schema.
|
|
14
12
|
*/
|
|
@@ -34,7 +32,7 @@ export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
|
|
|
34
32
|
return ts.factory.createIdentifier(getBuildinScalarTypeKeyword(typeName));
|
|
35
33
|
}
|
|
36
34
|
const typeDef = this.context.document.getNodeOrThrow(typeName);
|
|
37
|
-
if (
|
|
35
|
+
if (isScalarNode(typeDef)) {
|
|
38
36
|
const hint = getTypeHint(typeDef);
|
|
39
37
|
switch (hint) {
|
|
40
38
|
case "id":
|
|
@@ -141,7 +139,7 @@ export class ModelTypesGeneratorPlugin extends TransformerPluginBase {
|
|
|
141
139
|
])));
|
|
142
140
|
}
|
|
143
141
|
match(definition) {
|
|
144
|
-
return ((isObjectLike(definition) ||
|
|
142
|
+
return ((isObjectLike(definition) || isEnumNode(definition)) &&
|
|
145
143
|
!isOperationNode(definition) &&
|
|
146
144
|
!isInternal(definition));
|
|
147
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelTypesGeneratorPlugin.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAuB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAEL,QAAQ,EAER,aAAa,EACb,YAAY,EACZ,eAAe,EACf,UAAU,EAEV,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,YAAY,GAEb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ModelTypesGeneratorPlugin.js","sourceRoot":"","sources":["../../../src/base/ModelTypesGeneratorPlugin/ModelTypesGeneratorPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationsPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,cAAc,EAId,aAAa,
|
|
1
|
+
{"version":3,"file":"RelationsPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EACL,cAAc,EAId,aAAa,EAMb,UAAU,EAGX,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EASL,qBAAqB,EAGtB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qBAAa,eAAgB,YAAW,kBAAkB;IACxD,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE9C,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,qBAA0B;IAO7E,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,sBAAsB;IA0BvB,IAAI;IA4BJ,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAW1C,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAmB9D,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAoB9C,OAAO,CAAC,UAAU,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI;IAY5D,KAAK,IAAI,IAAI;CAKd;AAED,eAAO,MAAM,cAAc,yFAAuC,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { createPluginFactory } from "@gqlbase/core";
|
|
2
|
-
import { DirectiveDefinitionNode, FieldNode, InputValueNode, InterfaceNode, ListTypeNode, NamedTypeNode, ObjectNode,
|
|
2
|
+
import { DirectiveDefinitionNode, FieldNode, InputValueNode, InterfaceNode, isInterfaceNode, isObjectNode, isUnionNode, ListTypeNode, NamedTypeNode, ObjectNode, isListTypeNode, } from "@gqlbase/core/definition";
|
|
3
3
|
import { TransformerPluginExecutionError } from "@gqlbase/shared/errors";
|
|
4
4
|
import { pascalCase } from "@gqlbase/shared/format";
|
|
5
|
-
import { isPaginationConnection, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, parseFieldRelation, RelationDirective, } from "./RelationsPlugin.utils.js";
|
|
6
|
-
import { isListTypeNode } from "../ModelPlugin/ModelPlugin.utils.js";
|
|
7
|
-
import { isOperationNode } from "../TypesGeneratorBase/TypeGeneratorBase.utils.js";
|
|
5
|
+
import { isPaginationConnection, isManyRelationship, isOneRelationship, isRelationField, isValidRelationTarget, parseFieldRelation, RelationDirective, isBelongsToRelationship, } from "./RelationsPlugin.utils.js";
|
|
8
6
|
/**
|
|
9
7
|
* This plugin is responsible for adding the `@hasOne` and `@hasMany` directives to the schema, which can be used to define relationships between types.
|
|
10
8
|
*
|
|
@@ -73,16 +71,27 @@ export class RelationsPlugin {
|
|
|
73
71
|
return parseFieldRelation(object, field, target);
|
|
74
72
|
}
|
|
75
73
|
_setRelationKey(node, key) {
|
|
74
|
+
if (isUnionNode(node)) {
|
|
75
|
+
for (const type of node.types ?? []) {
|
|
76
|
+
const unionType = this.context.document.getNodeOrThrow(type.getTypeName());
|
|
77
|
+
if (isObjectNode(unionType) || isInterfaceNode(unionType)) {
|
|
78
|
+
this._setRelationKey(unionType, key);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
throw new TransformerPluginExecutionError(this.name, `Invalid relation union target: ${node.name}`);
|
|
82
|
+
}
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
76
85
|
if (!node.hasField(key)) {
|
|
77
|
-
node.addField(FieldNode.create(key, NamedTypeNode.create("ID")));
|
|
86
|
+
node.addField(FieldNode.create(key, undefined, undefined, NamedTypeNode.create("ID")));
|
|
78
87
|
}
|
|
79
88
|
}
|
|
80
89
|
_setConnectionArguments(field) {
|
|
81
90
|
if (!field.hasArgument("limit")) {
|
|
82
|
-
field.addArgument(InputValueNode.create("limit", NamedTypeNode.create("Int")));
|
|
91
|
+
field.addArgument(InputValueNode.create("limit", undefined, undefined, NamedTypeNode.create("Int")));
|
|
83
92
|
}
|
|
84
93
|
if (!field.hasArgument("nextToken")) {
|
|
85
|
-
field.addArgument(InputValueNode.create("nextToken", NamedTypeNode.create("String")));
|
|
94
|
+
field.addArgument(InputValueNode.create("nextToken", undefined, undefined, NamedTypeNode.create("String")));
|
|
86
95
|
}
|
|
87
96
|
}
|
|
88
97
|
_createFieldConnection(field, target) {
|
|
@@ -92,13 +101,14 @@ export class RelationsPlugin {
|
|
|
92
101
|
}
|
|
93
102
|
const connectionTypeName = pascalCase(target.name, "Connection");
|
|
94
103
|
return this.context.document.getOrCreateNode(connectionTypeName, ObjectNode.create(connectionTypeName)
|
|
95
|
-
.addField(FieldNode.create("items", ListTypeNode.create(NamedTypeNode.create(target.name))))
|
|
96
|
-
.addField(FieldNode.create("nextToken", NamedTypeNode.create("String"))));
|
|
104
|
+
.addField(FieldNode.create("items", undefined, undefined, ListTypeNode.create(NamedTypeNode.create(target.name))))
|
|
105
|
+
.addField(FieldNode.create("nextToken", undefined, undefined, NamedTypeNode.create("String"))));
|
|
97
106
|
}
|
|
98
107
|
init() {
|
|
99
108
|
this.context.base
|
|
100
|
-
.addNode(DirectiveDefinitionNode.create(RelationDirective.HAS_ONE, ["FIELD_DEFINITION"], [InputValueNode.create("key", "String")]))
|
|
101
|
-
.addNode(DirectiveDefinitionNode.create(RelationDirective.
|
|
109
|
+
.addNode(DirectiveDefinitionNode.create(RelationDirective.HAS_ONE, undefined, ["FIELD_DEFINITION"], [InputValueNode.create("key", undefined, undefined, "String")]))
|
|
110
|
+
.addNode(DirectiveDefinitionNode.create(RelationDirective.BELONGS_TO, undefined, ["FIELD_DEFINITION"], [InputValueNode.create("key", undefined, undefined, "String")]))
|
|
111
|
+
.addNode(DirectiveDefinitionNode.create(RelationDirective.HAS_MANY, undefined, ["FIELD_DEFINITION"], [InputValueNode.create("key", undefined, undefined, "String")]));
|
|
102
112
|
}
|
|
103
113
|
match(definition) {
|
|
104
114
|
if (definition instanceof InterfaceNode || definition instanceof ObjectNode) {
|
|
@@ -118,23 +128,11 @@ export class RelationsPlugin {
|
|
|
118
128
|
if (!relation) {
|
|
119
129
|
continue;
|
|
120
130
|
}
|
|
121
|
-
if (relation.
|
|
122
|
-
if (
|
|
131
|
+
if (relation.key) {
|
|
132
|
+
if (isBelongsToRelationship(field)) {
|
|
123
133
|
this._setRelationKey(definition, relation.key);
|
|
134
|
+
continue;
|
|
124
135
|
}
|
|
125
|
-
continue;
|
|
126
|
-
}
|
|
127
|
-
if (relation.target instanceof UnionNode) {
|
|
128
|
-
for (const type of relation.target.types ?? []) {
|
|
129
|
-
const unionType = this.context.document.getNode(type.getTypeName());
|
|
130
|
-
if (unionType instanceof ObjectNode || unionType instanceof InterfaceNode) {
|
|
131
|
-
this._setRelationKey(unionType, relation.key);
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
throw new TransformerPluginExecutionError(this.name, `Invalid relation union target: ${relation.target.name}`);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
136
|
this._setRelationKey(relation.target, relation.key);
|
|
139
137
|
}
|
|
140
138
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationsPlugin.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA2C,MAAM,eAAe,CAAC;AAC7F,OAAO,EAEL,uBAAuB,EACvB,SAAS,EACT,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,
|
|
1
|
+
{"version":3,"file":"RelationsPlugin.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,17 +5,19 @@ export interface RelationPluginOptions {
|
|
|
5
5
|
export declare const RelationDirective: {
|
|
6
6
|
readonly HAS_ONE: "hasOne";
|
|
7
7
|
readonly HAS_MANY: "hasMany";
|
|
8
|
+
readonly BELONGS_TO: "belongsTo";
|
|
8
9
|
};
|
|
9
10
|
export interface FieldRelationship {
|
|
10
11
|
type: "oneToOne" | "oneToMany";
|
|
11
12
|
target: ObjectNode | InterfaceNode | UnionNode;
|
|
12
|
-
key?: string;
|
|
13
|
+
key?: string | null;
|
|
13
14
|
}
|
|
14
15
|
export type RelationTarget = ObjectNode | InterfaceNode | UnionNode;
|
|
15
16
|
export declare const isOneRelationship: (field: FieldNode) => boolean;
|
|
16
17
|
export declare const isManyRelationship: (field: FieldNode) => boolean;
|
|
18
|
+
export declare const isBelongsToRelationship: (field: FieldNode) => boolean;
|
|
17
19
|
export declare const isRelationField: (field: FieldNode) => boolean;
|
|
18
20
|
export declare const isPaginationConnection: (node: DefinitionNode) => boolean;
|
|
19
21
|
export declare const isValidRelationTarget: (node: DefinitionNode) => node is RelationTarget;
|
|
20
|
-
export declare const parseFieldRelation: (object: ObjectNode | InterfaceNode, field: FieldNode, target: RelationTarget) =>
|
|
22
|
+
export declare const parseFieldRelation: (object: ObjectNode | InterfaceNode, field: FieldNode, target: RelationTarget) => FieldRelationship | null;
|
|
21
23
|
//# sourceMappingURL=RelationsPlugin.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationsPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,
|
|
1
|
+
{"version":3,"file":"RelationsPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,aAAa,EAGb,UAAU,EACV,SAAS,EACV,MAAM,0BAA0B,CAAC;AAGlC,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpE,eAAO,MAAM,iBAAiB,GAAI,OAAO,SAAS,KAAG,OAEpD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,OAAO,SAAS,KAAG,OAE1D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,cAAc,KAAG,OAS7D,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,MAAM,cAAc,KAAG,IAAI,IAAI,cAEpE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,UAAU,GAAG,aAAa,EAClC,OAAO,SAAS,EAChB,QAAQ,cAAc,KACrB,iBAAiB,GAAG,IA4DtB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isObjectLike, isOperationNode, ObjectNode, } from "@gqlbase/core/definition";
|
|
2
2
|
import { camelCase } from "@gqlbase/shared/format";
|
|
3
3
|
export const RelationDirective = {
|
|
4
4
|
HAS_ONE: "hasOne",
|
|
5
5
|
HAS_MANY: "hasMany",
|
|
6
|
+
BELONGS_TO: "belongsTo",
|
|
6
7
|
};
|
|
7
8
|
export const isOneRelationship = (field) => {
|
|
8
9
|
return field.hasDirective(RelationDirective.HAS_ONE);
|
|
@@ -10,8 +11,11 @@ export const isOneRelationship = (field) => {
|
|
|
10
11
|
export const isManyRelationship = (field) => {
|
|
11
12
|
return field.hasDirective(RelationDirective.HAS_MANY);
|
|
12
13
|
};
|
|
14
|
+
export const isBelongsToRelationship = (field) => {
|
|
15
|
+
return field.hasDirective(RelationDirective.BELONGS_TO);
|
|
16
|
+
};
|
|
13
17
|
export const isRelationField = (field) => {
|
|
14
|
-
return isOneRelationship(field) || isManyRelationship(field);
|
|
18
|
+
return isOneRelationship(field) || isBelongsToRelationship(field) || isManyRelationship(field);
|
|
15
19
|
};
|
|
16
20
|
export const isPaginationConnection = (node) => {
|
|
17
21
|
if (node instanceof ObjectNode) {
|
|
@@ -26,28 +30,54 @@ export const isPaginationConnection = (node) => {
|
|
|
26
30
|
return false;
|
|
27
31
|
};
|
|
28
32
|
export const isValidRelationTarget = (node) => {
|
|
29
|
-
return node
|
|
33
|
+
return isObjectLike(node);
|
|
30
34
|
};
|
|
31
35
|
export const parseFieldRelation = (object, field, target) => {
|
|
32
|
-
|
|
36
|
+
const relationships = [
|
|
37
|
+
isOneRelationship(field),
|
|
38
|
+
isManyRelationship(field),
|
|
39
|
+
isBelongsToRelationship(field),
|
|
40
|
+
].filter(Boolean);
|
|
41
|
+
if (relationships.length > 1) {
|
|
33
42
|
throw new Error(`Multiple relationship directives detected for field: ${field.name}`);
|
|
34
43
|
}
|
|
35
44
|
if (isOneRelationship(field)) {
|
|
36
45
|
const directive = field.getDirective(RelationDirective.HAS_ONE);
|
|
37
46
|
const args = directive?.getArgumentsJSON();
|
|
47
|
+
let key = args?.key ?? null;
|
|
48
|
+
if (!key && !isOperationNode(object)) {
|
|
49
|
+
key = camelCase(object.name, "id");
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
type: "oneToOne",
|
|
53
|
+
target: target,
|
|
54
|
+
key,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (isBelongsToRelationship(field)) {
|
|
58
|
+
const directive = field.getDirective(RelationDirective.BELONGS_TO);
|
|
59
|
+
const args = directive?.getArgumentsJSON();
|
|
60
|
+
let key = args?.key ?? null;
|
|
61
|
+
if (!key && !isOperationNode(object)) {
|
|
62
|
+
key = camelCase(field.name, "id");
|
|
63
|
+
}
|
|
38
64
|
return {
|
|
39
65
|
type: "oneToOne",
|
|
40
66
|
target: target,
|
|
41
|
-
key
|
|
67
|
+
key,
|
|
42
68
|
};
|
|
43
69
|
}
|
|
44
70
|
if (isManyRelationship(field)) {
|
|
45
71
|
const directive = field.getDirective(RelationDirective.HAS_MANY);
|
|
46
72
|
const args = directive?.getArgumentsJSON();
|
|
73
|
+
let key = args?.key ?? null;
|
|
74
|
+
if (!key && !isOperationNode(object)) {
|
|
75
|
+
key = camelCase(object.name, "id");
|
|
76
|
+
}
|
|
47
77
|
return {
|
|
48
78
|
type: "oneToMany",
|
|
49
79
|
target: target,
|
|
50
|
-
key
|
|
80
|
+
key,
|
|
51
81
|
};
|
|
52
82
|
}
|
|
53
83
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationsPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"RelationsPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RelationsPlugin/RelationsPlugin.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RfcFeaturesPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAUhG;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,iBAAkB,SAAQ,qBAAqB;gBAC9C,OAAO,EAAE,mBAAmB;IAIjC,IAAI;
|
|
1
|
+
{"version":3,"file":"RfcFeaturesPlugin.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAUhG;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,qBAAa,iBAAkB,SAAQ,qBAAqB;gBAC9C,OAAO,EAAE,mBAAmB;IAIjC,IAAI;CAkBZ;AAED,eAAO,MAAM,iBAAiB,+DAAyC,CAAC"}
|
|
@@ -26,7 +26,7 @@ export class RfcFeaturesPlugin extends TransformerPluginBase {
|
|
|
26
26
|
super("RfcFeaturesPlugin", context);
|
|
27
27
|
}
|
|
28
28
|
init() {
|
|
29
|
-
this.context.base.addNode(DirectiveDefinitionNode.create("semanticNonNull", ["FIELD_DEFINITION"], InputValueNode.create("levels", NonNullTypeNode.create(ListTypeNode.create(NonNullTypeNode.create(NamedTypeNode.create("Int")))), ValueNode.list([ValueNode.int(0)]))));
|
|
29
|
+
this.context.base.addNode(DirectiveDefinitionNode.create("semanticNonNull", undefined, ["FIELD_DEFINITION"], InputValueNode.create("levels", undefined, undefined, NonNullTypeNode.create(ListTypeNode.create(NonNullTypeNode.create(NamedTypeNode.create("Int")))), ValueNode.list([ValueNode.int(0)]))));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
export const rfcFeaturesPlugin = createPluginFactory(RfcFeaturesPlugin);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RfcFeaturesPlugin.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,GACV,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D,YAAY,OAA4B;QACtC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CACvB,uBAAuB,CAAC,MAAM,CAC5B,iBAAiB,EACjB,CAAC,kBAAkB,CAAC,EACpB,cAAc,CAAC,MAAM,CACnB,QAAQ,EACR,eAAe,CAAC,MAAM,CACpB,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,EACD,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CACF,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"RfcFeaturesPlugin.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAuB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,GACV,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D,YAAY,OAA4B;QACtC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CACvB,uBAAuB,CAAC,MAAM,CAC5B,iBAAiB,EACjB,SAAS,EACT,CAAC,kBAAkB,CAAC,EACpB,cAAc,CAAC,MAAM,CACnB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAe,CAAC,MAAM,CACpB,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CACzE,EACD,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CACF,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CAAC"}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { FieldNode
|
|
1
|
+
import { FieldNode } from "@gqlbase/core/definition";
|
|
2
2
|
export declare const RfcDirective: {
|
|
3
3
|
readonly SEMANTIC_NON_NULL: "semanticNonNull";
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export declare const isNullable: (type: TypeNode, level?: number) => boolean;
|
|
9
5
|
/**
|
|
10
6
|
* Determines if a field is semantically nullable based on its type and/or the presence of the `@semanticNonNull` directive.
|
|
11
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RfcFeaturesPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"RfcFeaturesPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,0BAA0B,CAAC;AAEzE,eAAO,MAAM,YAAY;;CAEf,CAAC;AAEX;;;;;;;GAOG;AAEH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,EAAE,cAAS,YAa7D,CAAC"}
|
|
@@ -1,28 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isNullableTypeNode } from "@gqlbase/core/definition";
|
|
2
2
|
export const RfcDirective = {
|
|
3
3
|
SEMANTIC_NON_NULL: "semanticNonNull",
|
|
4
4
|
};
|
|
5
|
-
/**
|
|
6
|
-
* Unwraps a type to the given depth level.
|
|
7
|
-
* Only `ListTypeNode` counts as a level — `NonNullTypeNode` is
|
|
8
|
-
* a modifier at the same depth and is skipped transparently.
|
|
9
|
-
*/
|
|
10
|
-
const getTypeAtLevel = (type, level) => {
|
|
11
|
-
if (level <= 0)
|
|
12
|
-
return type;
|
|
13
|
-
if (type instanceof NonNullTypeNode)
|
|
14
|
-
return getTypeAtLevel(type.type, level);
|
|
15
|
-
if (type instanceof ListTypeNode)
|
|
16
|
-
return getTypeAtLevel(type.type, level - 1);
|
|
17
|
-
return type;
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
export const isNullable = (type, level = 0) => {
|
|
23
|
-
const typeAtLevel = getTypeAtLevel(type, level);
|
|
24
|
-
return !(typeAtLevel instanceof NonNullTypeNode);
|
|
25
|
-
};
|
|
26
5
|
/**
|
|
27
6
|
* Determines if a field is semantically nullable based on its type and/or the presence of the `@semanticNonNull` directive.
|
|
28
7
|
*
|
|
@@ -32,7 +11,7 @@ export const isNullable = (type, level = 0) => {
|
|
|
32
11
|
* @returns `false` if the field is non-nullable either by being a NonNullType or by having the `@semanticNonNull` directive at the specified level, `true` otherwise.
|
|
33
12
|
*/
|
|
34
13
|
export const isSemanticNullable = (field, level = 0) => {
|
|
35
|
-
if (!
|
|
14
|
+
if (!isNullableTypeNode(field.type, level)) {
|
|
36
15
|
return false;
|
|
37
16
|
}
|
|
38
17
|
if (field.hasDirective(RfcDirective.SEMANTIC_NON_NULL)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RfcFeaturesPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,
|
|
1
|
+
{"version":3,"file":"RfcFeaturesPlugin.utils.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/RfcFeaturesPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB,EAAE,iBAAiB;CAC5B,CAAC;AAEX;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAgB,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;IAChE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACrE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,gBAAgB,EAAwB,IAAI,EAAE,CAAC;QAEnF,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { RfcFeaturesPlugin, rfcFeaturesPlugin } from "./RfcFeaturesPlugin.js";
|
|
2
|
-
export { RfcDirective,
|
|
2
|
+
export { RfcDirective, isSemanticNullable } from "./RfcFeaturesPlugin.utils.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { RfcFeaturesPlugin, rfcFeaturesPlugin } from "./RfcFeaturesPlugin.js";
|
|
2
|
-
export { RfcDirective,
|
|
2
|
+
export { RfcDirective, isSemanticNullable } from "./RfcFeaturesPlugin.utils.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/base/RfcFeaturesPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC"}
|