@smartive/graphql-magic 9.1.2 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +2 -10
- package/.github/workflows/release.yml +1 -1
- package/.gqmrc.json +6 -0
- package/CHANGELOG.md +2 -2
- package/README.md +1 -1
- package/dist/bin/gqm.cjs +684 -330
- package/dist/cjs/index.cjs +998 -554
- package/dist/esm/api/execute.js +1 -1
- package/dist/esm/api/execute.js.map +1 -1
- package/dist/esm/client/mutations.d.ts +2 -2
- package/dist/esm/client/mutations.js +5 -4
- package/dist/esm/client/mutations.js.map +1 -1
- package/dist/esm/client/queries.d.ts +12 -17
- package/dist/esm/client/queries.js +30 -50
- package/dist/esm/client/queries.js.map +1 -1
- package/dist/esm/context.d.ts +1 -2
- package/dist/esm/db/generate.d.ts +3 -3
- package/dist/esm/db/generate.js +31 -29
- package/dist/esm/db/generate.js.map +1 -1
- package/dist/esm/migrations/generate.d.ts +3 -4
- package/dist/esm/migrations/generate.js +114 -107
- package/dist/esm/migrations/generate.js.map +1 -1
- package/dist/esm/models/index.d.ts +1 -0
- package/dist/esm/models/index.js +1 -0
- package/dist/esm/models/index.js.map +1 -1
- package/dist/esm/models/model-definitions.d.ts +189 -0
- package/dist/esm/models/model-definitions.js +2 -0
- package/dist/esm/models/model-definitions.js.map +1 -0
- package/dist/esm/models/models.d.ts +128 -174
- package/dist/esm/models/models.js +411 -1
- package/dist/esm/models/models.js.map +1 -1
- package/dist/esm/models/mutation-hook.d.ts +2 -2
- package/dist/esm/models/utils.d.ts +35 -497
- package/dist/esm/models/utils.js +21 -144
- package/dist/esm/models/utils.js.map +1 -1
- package/dist/esm/permissions/check.d.ts +3 -3
- package/dist/esm/permissions/check.js +14 -7
- package/dist/esm/permissions/check.js.map +1 -1
- package/dist/esm/permissions/generate.js +6 -6
- package/dist/esm/permissions/generate.js.map +1 -1
- package/dist/esm/resolvers/filters.d.ts +8 -0
- package/dist/esm/resolvers/filters.js +28 -25
- package/dist/esm/resolvers/filters.js.map +1 -1
- package/dist/esm/resolvers/index.d.ts +1 -0
- package/dist/esm/resolvers/index.js +1 -0
- package/dist/esm/resolvers/index.js.map +1 -1
- package/dist/esm/resolvers/mutations.js +85 -21
- package/dist/esm/resolvers/mutations.js.map +1 -1
- package/dist/esm/resolvers/node.d.ts +13 -15
- package/dist/esm/resolvers/node.js +41 -36
- package/dist/esm/resolvers/node.js.map +1 -1
- package/dist/esm/resolvers/resolver.js +19 -49
- package/dist/esm/resolvers/resolver.js.map +1 -1
- package/dist/esm/resolvers/resolvers.d.ts +1 -8
- package/dist/esm/resolvers/resolvers.js +15 -7
- package/dist/esm/resolvers/resolvers.js.map +1 -1
- package/dist/esm/resolvers/selects.d.ts +3 -0
- package/dist/esm/resolvers/selects.js +50 -0
- package/dist/esm/resolvers/selects.js.map +1 -0
- package/dist/esm/resolvers/utils.d.ts +12 -4
- package/dist/esm/resolvers/utils.js +30 -22
- package/dist/esm/resolvers/utils.js.map +1 -1
- package/dist/esm/schema/generate.d.ts +4 -4
- package/dist/esm/schema/generate.js +122 -131
- package/dist/esm/schema/generate.js.map +1 -1
- package/dist/esm/schema/utils.d.ts +1 -1
- package/dist/esm/schema/utils.js +2 -1
- package/dist/esm/schema/utils.js.map +1 -1
- package/knexfile.ts +31 -0
- package/migrations/20230912185644_setup.ts +127 -0
- package/package.json +16 -14
- package/src/api/execute.ts +1 -1
- package/src/bin/gqm/gqm.ts +25 -23
- package/src/bin/gqm/parse-models.ts +5 -5
- package/src/bin/gqm/settings.ts +13 -4
- package/src/bin/gqm/static-eval.ts +5 -0
- package/src/bin/gqm/templates.ts +23 -3
- package/src/client/mutations.ts +11 -5
- package/src/client/queries.ts +43 -80
- package/src/context.ts +1 -2
- package/src/db/generate.ts +41 -41
- package/src/migrations/generate.ts +165 -146
- package/src/models/index.ts +1 -0
- package/src/models/model-definitions.ts +168 -0
- package/src/models/models.ts +510 -166
- package/src/models/mutation-hook.ts +2 -2
- package/src/models/utils.ts +53 -187
- package/src/permissions/check.ts +19 -11
- package/src/permissions/generate.ts +6 -6
- package/src/resolvers/filters.ts +44 -28
- package/src/resolvers/index.ts +1 -0
- package/src/resolvers/mutations.ts +98 -36
- package/src/resolvers/node.ts +79 -51
- package/src/resolvers/resolver.ts +20 -74
- package/src/resolvers/resolvers.ts +18 -7
- package/src/resolvers/selects.ts +77 -0
- package/src/resolvers/utils.ts +41 -25
- package/src/schema/generate.ts +106 -127
- package/src/schema/utils.ts +2 -1
- package/tests/api/__snapshots__/inheritance.spec.ts.snap +83 -0
- package/tests/api/inheritance.spec.ts +130 -0
- package/tests/generated/api/index.ts +1174 -0
- package/tests/generated/client/index.ts +1163 -0
- package/tests/generated/client/mutations.ts +109 -0
- package/tests/generated/db/index.ts +291 -0
- package/tests/generated/db/knex.ts +14 -0
- package/tests/generated/models.json +675 -0
- package/tests/generated/schema.graphql +325 -0
- package/tests/unit/__snapshots__/resolve.spec.ts.snap +23 -0
- package/tests/unit/queries.spec.ts +5 -5
- package/tests/unit/resolve.spec.ts +8 -8
- package/tests/utils/database/knex.ts +5 -13
- package/tests/utils/database/seed.ts +57 -18
- package/tests/utils/models.ts +62 -7
- package/tests/utils/server.ts +5 -5
- package/tsconfig.eslint.json +1 -0
- package/tests/unit/__snapshots__/generate.spec.ts.snap +0 -128
- package/tests/unit/generate.spec.ts +0 -8
- package/tests/utils/database/schema.ts +0 -64
- package/tests/utils/generate-migration.ts +0 -24
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { Field } from '..';
|
|
2
|
+
import type { OrderBy } from '../resolvers/arguments';
|
|
3
|
+
import type { Value } from '../values';
|
|
4
|
+
|
|
5
|
+
type BaseNumberType = {
|
|
6
|
+
unit?: 'million';
|
|
7
|
+
min?: number;
|
|
8
|
+
max?: number;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
type FieldDefinitionBase = Omit<Field, 'type'>;
|
|
12
|
+
|
|
13
|
+
type FieldDefinitionBase2 =
|
|
14
|
+
| ({ kind?: 'primitive' | undefined } & (
|
|
15
|
+
| { type: 'ID' }
|
|
16
|
+
| { type: 'Boolean' }
|
|
17
|
+
| {
|
|
18
|
+
type: 'String';
|
|
19
|
+
stringType?: 'email' | 'url' | 'phone';
|
|
20
|
+
large?: true;
|
|
21
|
+
maxLength?: number;
|
|
22
|
+
}
|
|
23
|
+
| {
|
|
24
|
+
type: 'DateTime';
|
|
25
|
+
dateTimeType?: 'year' | 'date' | 'datetime' | 'year_and_month';
|
|
26
|
+
endOfDay?: boolean;
|
|
27
|
+
}
|
|
28
|
+
| ({
|
|
29
|
+
type: 'Int';
|
|
30
|
+
intType?: 'currency';
|
|
31
|
+
} & BaseNumberType)
|
|
32
|
+
| ({
|
|
33
|
+
type: 'Float';
|
|
34
|
+
floatType?: 'currency' | 'percentage';
|
|
35
|
+
double?: boolean;
|
|
36
|
+
precision?: number;
|
|
37
|
+
scale?: number;
|
|
38
|
+
} & BaseNumberType)
|
|
39
|
+
| { type: 'Upload' }
|
|
40
|
+
))
|
|
41
|
+
| { kind: 'enum'; type: string; possibleValues?: Value[] }
|
|
42
|
+
| { kind: 'custom'; type: string };
|
|
43
|
+
|
|
44
|
+
export type ObjectFieldDefinition = FieldDefinitionBase & FieldDefinitionBase2;
|
|
45
|
+
|
|
46
|
+
export type EntityFieldDefinition = FieldDefinitionBase &
|
|
47
|
+
(
|
|
48
|
+
| FieldDefinitionBase2
|
|
49
|
+
| { kind: 'json'; type: string }
|
|
50
|
+
| {
|
|
51
|
+
kind: 'relation';
|
|
52
|
+
type: string;
|
|
53
|
+
toOne?: boolean;
|
|
54
|
+
reverse?: string;
|
|
55
|
+
foreignKey?: string;
|
|
56
|
+
onDelete?: 'cascade' | 'set-null';
|
|
57
|
+
}
|
|
58
|
+
) & {
|
|
59
|
+
primary?: boolean;
|
|
60
|
+
unique?: boolean;
|
|
61
|
+
filterable?:
|
|
62
|
+
| boolean
|
|
63
|
+
| {
|
|
64
|
+
default?: Value;
|
|
65
|
+
};
|
|
66
|
+
searchable?: boolean;
|
|
67
|
+
orderable?: boolean;
|
|
68
|
+
comparable?: boolean;
|
|
69
|
+
queriable?:
|
|
70
|
+
| boolean
|
|
71
|
+
| {
|
|
72
|
+
roles?: string[];
|
|
73
|
+
};
|
|
74
|
+
creatable?:
|
|
75
|
+
| boolean
|
|
76
|
+
| {
|
|
77
|
+
roles?: string[];
|
|
78
|
+
};
|
|
79
|
+
updatable?:
|
|
80
|
+
| boolean
|
|
81
|
+
| {
|
|
82
|
+
roles?: string[];
|
|
83
|
+
};
|
|
84
|
+
// The tooltip is "hidden" behind an icon in the admin forms
|
|
85
|
+
tooltip?: string;
|
|
86
|
+
// If true the field must be filled within forms but can be null in the database
|
|
87
|
+
required?: boolean;
|
|
88
|
+
indent?: boolean;
|
|
89
|
+
// If true the field is hidden in the admin interface
|
|
90
|
+
hidden?: boolean;
|
|
91
|
+
|
|
92
|
+
// Temporary fields for the generation of migrations
|
|
93
|
+
deleted?: true;
|
|
94
|
+
oldName?: string;
|
|
95
|
+
|
|
96
|
+
// For your additional information about the field
|
|
97
|
+
meta?: Record<string, unknown>;
|
|
98
|
+
|
|
99
|
+
// Set by graphql-magic, leave empty
|
|
100
|
+
generated?: boolean;
|
|
101
|
+
inherited?: boolean;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export type PrimitiveFieldDefinition = Extract<EntityFieldDefinition, { kind?: 'primitive' | undefined }>;
|
|
105
|
+
export type IDFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'ID' }>;
|
|
106
|
+
export type BooleanFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'Boolean' }>;
|
|
107
|
+
export type StringFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'String' }>;
|
|
108
|
+
export type DateTimeFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'DateTime' }>;
|
|
109
|
+
export type IntFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'Int' }>;
|
|
110
|
+
export type FloatFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'Float' }>;
|
|
111
|
+
export type UploadFieldDefinition = Extract<PrimitiveFieldDefinition, { type: 'Upload' }>;
|
|
112
|
+
export type JsonFieldDefinition = Extract<EntityFieldDefinition, { kind: 'json' }>;
|
|
113
|
+
export type EnumFieldDefinition = Extract<EntityFieldDefinition, { kind: 'enum' }>;
|
|
114
|
+
export type CustomFieldDefinition = Extract<EntityFieldDefinition, { kind: 'custom' }>;
|
|
115
|
+
export type RelationFieldDefinition = Extract<EntityFieldDefinition, { kind: 'relation' }>;
|
|
116
|
+
|
|
117
|
+
export type ModelDefinition = {
|
|
118
|
+
name: string;
|
|
119
|
+
plural?: string;
|
|
120
|
+
description?: string;
|
|
121
|
+
} & (
|
|
122
|
+
| { kind: 'scalar' }
|
|
123
|
+
| { kind: 'enum'; values: string[]; deleted?: true }
|
|
124
|
+
| { kind: 'raw-enum'; values: string[] }
|
|
125
|
+
| { kind: 'interface'; fields: EntityFieldDefinition[] }
|
|
126
|
+
| {
|
|
127
|
+
kind: 'input';
|
|
128
|
+
fields: ObjectFieldDefinition[];
|
|
129
|
+
}
|
|
130
|
+
| {
|
|
131
|
+
kind: 'object';
|
|
132
|
+
fields: ObjectFieldDefinition[];
|
|
133
|
+
}
|
|
134
|
+
| {
|
|
135
|
+
kind: 'entity';
|
|
136
|
+
root?: boolean;
|
|
137
|
+
parent?: string;
|
|
138
|
+
interfaces?: string[];
|
|
139
|
+
queriable?: boolean;
|
|
140
|
+
listQueriable?: boolean;
|
|
141
|
+
creatable?: boolean | { createdBy?: Partial<RelationFieldDefinition>; createdAt?: Partial<DateTimeFieldDefinition> };
|
|
142
|
+
updatable?: boolean | { updatedBy?: Partial<RelationFieldDefinition>; updatedAt?: Partial<DateTimeFieldDefinition> };
|
|
143
|
+
deletable?:
|
|
144
|
+
| boolean
|
|
145
|
+
| {
|
|
146
|
+
deleted?: Partial<BooleanFieldDefinition>;
|
|
147
|
+
deletedBy?: Partial<RelationFieldDefinition>;
|
|
148
|
+
deletedAt?: Partial<DateTimeFieldDefinition>;
|
|
149
|
+
};
|
|
150
|
+
displayField?: string;
|
|
151
|
+
defaultOrderBy?: OrderBy;
|
|
152
|
+
fields: EntityFieldDefinition[];
|
|
153
|
+
|
|
154
|
+
// temporary fields for the generation of migrations
|
|
155
|
+
deleted?: true;
|
|
156
|
+
oldName?: string;
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
export type ScalarModelDefinition = Extract<ModelDefinition, { kind: 'scalar' }>;
|
|
161
|
+
export type EnumModelDefinition = Extract<ModelDefinition, { kind: 'enum' }>;
|
|
162
|
+
export type RawEnumModelDefinition = Extract<ModelDefinition, { kind: 'raw-enum' }>;
|
|
163
|
+
export type InterfaceModelDefinition = Extract<ModelDefinition, { kind: 'interface' }>;
|
|
164
|
+
export type ObjectModelDefinition = Extract<ModelDefinition, { kind: 'object' }>;
|
|
165
|
+
export type InputModelDefinition = Extract<ModelDefinition, { kind: 'input' }>;
|
|
166
|
+
export type EntityModelDefinition = Extract<ModelDefinition, { kind: 'entity' }>;
|
|
167
|
+
|
|
168
|
+
export type ModelDefinitions = ModelDefinition[];
|