@smartive/graphql-magic 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.eslintrc +21 -0
  2. package/.github/workflows/release.yml +24 -0
  3. package/.github/workflows/testing.yml +37 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +34 -0
  6. package/.prettierrc.json +1 -0
  7. package/.releaserc +27 -0
  8. package/CHANGELOG.md +6 -0
  9. package/README.md +15 -0
  10. package/dist/cjs/index.cjs +2646 -0
  11. package/dist/esm/client/gql.d.ts +1 -0
  12. package/dist/esm/client/gql.js +5 -0
  13. package/dist/esm/client/gql.js.map +1 -0
  14. package/dist/esm/client/index.d.ts +2 -0
  15. package/dist/esm/client/index.js +4 -0
  16. package/dist/esm/client/index.js.map +1 -0
  17. package/dist/esm/client/queries.d.ts +24 -0
  18. package/dist/esm/client/queries.js +152 -0
  19. package/dist/esm/client/queries.js.map +1 -0
  20. package/dist/esm/context.d.ts +30 -0
  21. package/dist/esm/context.js +2 -0
  22. package/dist/esm/context.js.map +1 -0
  23. package/dist/esm/errors.d.ts +17 -0
  24. package/dist/esm/errors.js +27 -0
  25. package/dist/esm/errors.js.map +1 -0
  26. package/dist/esm/generate/generate.d.ts +7 -0
  27. package/dist/esm/generate/generate.js +211 -0
  28. package/dist/esm/generate/generate.js.map +1 -0
  29. package/dist/esm/generate/index.d.ts +3 -0
  30. package/dist/esm/generate/index.js +5 -0
  31. package/dist/esm/generate/index.js.map +1 -0
  32. package/dist/esm/generate/mutations.d.ts +2 -0
  33. package/dist/esm/generate/mutations.js +18 -0
  34. package/dist/esm/generate/mutations.js.map +1 -0
  35. package/dist/esm/generate/utils.d.ts +22 -0
  36. package/dist/esm/generate/utils.js +150 -0
  37. package/dist/esm/generate/utils.js.map +1 -0
  38. package/dist/esm/index.d.ts +10 -0
  39. package/dist/esm/index.js +12 -0
  40. package/dist/esm/index.js.map +1 -0
  41. package/dist/esm/migrations/generate.d.ts +28 -0
  42. package/dist/esm/migrations/generate.js +516 -0
  43. package/dist/esm/migrations/generate.js.map +1 -0
  44. package/dist/esm/migrations/index.d.ts +1 -0
  45. package/dist/esm/migrations/index.js +3 -0
  46. package/dist/esm/migrations/index.js.map +1 -0
  47. package/dist/esm/models.d.ts +170 -0
  48. package/dist/esm/models.js +27 -0
  49. package/dist/esm/models.js.map +1 -0
  50. package/dist/esm/permissions/check.d.ts +15 -0
  51. package/dist/esm/permissions/check.js +162 -0
  52. package/dist/esm/permissions/check.js.map +1 -0
  53. package/dist/esm/permissions/generate.d.ts +45 -0
  54. package/dist/esm/permissions/generate.js +77 -0
  55. package/dist/esm/permissions/generate.js.map +1 -0
  56. package/dist/esm/permissions/index.d.ts +2 -0
  57. package/dist/esm/permissions/index.js +4 -0
  58. package/dist/esm/permissions/index.js.map +1 -0
  59. package/dist/esm/resolvers/arguments.d.ts +26 -0
  60. package/dist/esm/resolvers/arguments.js +88 -0
  61. package/dist/esm/resolvers/arguments.js.map +1 -0
  62. package/dist/esm/resolvers/filters.d.ts +5 -0
  63. package/dist/esm/resolvers/filters.js +126 -0
  64. package/dist/esm/resolvers/filters.js.map +1 -0
  65. package/dist/esm/resolvers/index.d.ts +7 -0
  66. package/dist/esm/resolvers/index.js +9 -0
  67. package/dist/esm/resolvers/index.js.map +1 -0
  68. package/dist/esm/resolvers/mutations.d.ts +3 -0
  69. package/dist/esm/resolvers/mutations.js +255 -0
  70. package/dist/esm/resolvers/mutations.js.map +1 -0
  71. package/dist/esm/resolvers/node.d.ts +44 -0
  72. package/dist/esm/resolvers/node.js +102 -0
  73. package/dist/esm/resolvers/node.js.map +1 -0
  74. package/dist/esm/resolvers/resolver.d.ts +5 -0
  75. package/dist/esm/resolvers/resolver.js +143 -0
  76. package/dist/esm/resolvers/resolver.js.map +1 -0
  77. package/dist/esm/resolvers/resolvers.d.ts +9 -0
  78. package/dist/esm/resolvers/resolvers.js +39 -0
  79. package/dist/esm/resolvers/resolvers.js.map +1 -0
  80. package/dist/esm/resolvers/utils.d.ts +43 -0
  81. package/dist/esm/resolvers/utils.js +125 -0
  82. package/dist/esm/resolvers/utils.js.map +1 -0
  83. package/dist/esm/utils.d.ts +25 -0
  84. package/dist/esm/utils.js +159 -0
  85. package/dist/esm/utils.js.map +1 -0
  86. package/dist/esm/values.d.ts +15 -0
  87. package/dist/esm/values.js +7 -0
  88. package/dist/esm/values.js.map +1 -0
  89. package/jest.config.ts +12 -0
  90. package/package.json +66 -0
  91. package/renovate.json +32 -0
  92. package/src/client/gql.ts +7 -0
  93. package/src/client/index.ts +4 -0
  94. package/src/client/queries.ts +251 -0
  95. package/src/context.ts +27 -0
  96. package/src/errors.ts +32 -0
  97. package/src/generate/generate.ts +273 -0
  98. package/src/generate/index.ts +5 -0
  99. package/src/generate/mutations.ts +35 -0
  100. package/src/generate/utils.ts +223 -0
  101. package/src/index.ts +12 -0
  102. package/src/migrations/generate.ts +633 -0
  103. package/src/migrations/index.ts +3 -0
  104. package/src/models.ts +228 -0
  105. package/src/permissions/check.ts +239 -0
  106. package/src/permissions/generate.ts +143 -0
  107. package/src/permissions/index.ts +4 -0
  108. package/src/resolvers/arguments.ts +129 -0
  109. package/src/resolvers/filters.ts +163 -0
  110. package/src/resolvers/index.ts +9 -0
  111. package/src/resolvers/mutations.ts +313 -0
  112. package/src/resolvers/node.ts +193 -0
  113. package/src/resolvers/resolver.ts +223 -0
  114. package/src/resolvers/resolvers.ts +40 -0
  115. package/src/resolvers/utils.ts +188 -0
  116. package/src/utils.ts +186 -0
  117. package/src/values.ts +19 -0
  118. package/tests/unit/__snapshots__/generate.spec.ts.snap +105 -0
  119. package/tests/unit/__snapshots__/resolve.spec.ts.snap +60 -0
  120. package/tests/unit/generate.spec.ts +8 -0
  121. package/tests/unit/resolve.spec.ts +128 -0
  122. package/tests/unit/utils.ts +82 -0
  123. package/tsconfig.jest.json +13 -0
  124. package/tsconfig.json +13 -0
@@ -0,0 +1 @@
1
+ export declare const gql: (chunks: TemplateStringsArray, ...variables: (string | number | boolean)[]) => string;
@@ -0,0 +1,5 @@
1
+ // This tag does nothing (just generates a string) - it is here for the tooling (syntax highlighting, formatting and type generation)
2
+ export const gql = (chunks, ...variables) => {
3
+ return chunks.reduce((accumulator, chunk, index) => `${accumulator}${chunk}${index in variables ? variables[index] : ''}`, '');
4
+ };
5
+ //# sourceMappingURL=gql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gql.js","sourceRoot":"","sources":["../../../src/client/gql.ts"],"names":[],"mappings":"AAAA,qIAAqI;AACrI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAA4B,EAAE,GAAG,SAAwC,EAAU,EAAE;IACvG,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EACpG,EAAE,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './gql';
2
+ export * from './queries';
@@ -0,0 +1,4 @@
1
+ // created from 'create-ts-index'
2
+ export * from './gql';
3
+ export * from './queries';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Model, Models, Relation, ReverseRelation, VisibleRelationsByRole } from '../models';
2
+ export declare const getUpdateEntityQuery: (model: Model, role: any, fields?: string[] | undefined, additionalFields?: string) => string;
3
+ export declare const getEditEntityRelationsQuery: (models: Models, model: Model, action: 'create' | 'update' | 'filter', fields?: string[], ignoreFields?: string[], additionalFields?: Record<string, string>) => string;
4
+ export declare const getManyToManyRelations: (model: Model, fields?: string[], ignoreFields?: string[]) => [ReverseRelation, Relation][];
5
+ export declare const getManyToManyRelation: (model: Model, name: string) => [ReverseRelation, Relation];
6
+ export declare const getManyToManyRelationsQuery: (model: Model, action: 'create' | 'update', manyToManyRelations: [ReverseRelation, Relation][]) => string;
7
+ export type MutationQuery = {
8
+ mutated: {
9
+ id: string;
10
+ };
11
+ };
12
+ export declare const getMutationQuery: (model: Model, action: 'create' | 'update' | 'delete') => string;
13
+ export declare const displayField: (model: Model) => string;
14
+ export declare const getEntityListQuery: (model: Model, role: string, additionalFields?: string, root?: {
15
+ model: Model;
16
+ entity: any;
17
+ reverseRelationName: string;
18
+ }) => string;
19
+ export declare const getEntityQuery: (models: Models, model: Model, role: string, visibleRelationsByRole: VisibleRelationsByRole, typesWithSubRelations: string[]) => string;
20
+ export declare const getFindEntityQuery: (model: Model, role: string) => string;
21
+ export declare const queryRelations: (models: Models, relations: {
22
+ name: string;
23
+ type: string;
24
+ }[], role: string, typesWithSubRelations: string[]) => string;
@@ -0,0 +1,152 @@
1
+ import upperFirst from 'lodash/upperFirst';
2
+ import { actionableRelations, and, isQueriableBy, isRelation, isSimpleField, isToOneRelation, isUpdatableBy, isVisibleRelation, not, } from '../models';
3
+ import { getModelPlural, getModelPluralField, summonByName, typeToField } from '../utils';
4
+ export const getUpdateEntityQuery = (model, role, fields, additionalFields = '') => `query Update${model.name}Fields ($id: ID!) {
5
+ data: ${typeToField(model.name)}(where: { id: $id }) {
6
+ id
7
+ ${model.fields
8
+ .filter(({ name }) => !fields || fields.includes(name))
9
+ .filter(not(isRelation))
10
+ .filter(isUpdatableBy(role))
11
+ .map(({ name }) => name)
12
+ .join(' ')}
13
+ ${actionableRelations(model, 'update')
14
+ .filter(({ name }) => !fields || fields.includes(name))
15
+ .map(({ name }) => `${name} { id }`)}
16
+ ${additionalFields}
17
+ }
18
+ }`;
19
+ export const getEditEntityRelationsQuery = (models, model, action, fields, ignoreFields, additionalFields = {}) => {
20
+ const relations = actionableRelations(model, action).filter(({ name }) => (!fields || fields.includes(name)) && (!ignoreFields || !ignoreFields.includes(name)));
21
+ return (!!relations.length &&
22
+ `query ${upperFirst(action)}${model.name}Relations {
23
+ ${relations
24
+ .map(({ name, type }) => {
25
+ const model = summonByName(models, type);
26
+ return `${name}: ${getModelPluralField(model)} {
27
+ id
28
+ display: ${model.displayField || ''}
29
+ ${additionalFields[name] || ''}
30
+ }`;
31
+ })
32
+ .join(' ')}
33
+ }`);
34
+ };
35
+ export const getManyToManyRelations = (model, fields, ignoreFields) => {
36
+ const manyToManyRelations = [];
37
+ for (const field of model.reverseRelations) {
38
+ if ((fields && !fields.includes(field.name)) || (ignoreFields && ignoreFields.includes(field.name))) {
39
+ continue;
40
+ }
41
+ const relation = field.model.relations.find((relation) => !relation.field.generated && relation.field.name !== field.field.name);
42
+ if (!relation) {
43
+ continue;
44
+ }
45
+ const inapplicableFields = field.model.fields.filter((otherField) => !otherField.generated && ![field.field.name, relation.field.name].includes(otherField.name));
46
+ if (inapplicableFields.length) {
47
+ continue;
48
+ }
49
+ manyToManyRelations.push([field, relation]);
50
+ }
51
+ return manyToManyRelations;
52
+ };
53
+ export const getManyToManyRelation = (model, name) => getManyToManyRelations(model, [name])[0];
54
+ export const getManyToManyRelationsQuery = (model, action, manyToManyRelations) => !!manyToManyRelations.length &&
55
+ (action === 'update'
56
+ ? `query Update${model.name}ManyToManyRelations($id: ID!) {
57
+ ${typeToField(model.name)}(where: { id: $id }) {
58
+ ${manyToManyRelations
59
+ .map(([reverseRelation, { field }]) => {
60
+ return `${reverseRelation.name} {
61
+ id
62
+ ${field.name} {
63
+ id
64
+ }
65
+ }`;
66
+ })
67
+ .join(' ')}
68
+ }
69
+ ${manyToManyRelations
70
+ .map(([reverseRelation, { model }]) => {
71
+ return `${reverseRelation.name}: ${getModelPluralField(model)} {
72
+ id
73
+ ${model.displayField || ''}
74
+ }`;
75
+ })
76
+ .join(' ')}
77
+ }`
78
+ : `query Create${model.name}ManyToManyRelations {
79
+ ${manyToManyRelations
80
+ .map(([reverseRelation, { model }]) => {
81
+ return `${reverseRelation.name}: ${getModelPluralField(model)} {
82
+ id
83
+ ${model.displayField || ''}
84
+ }`;
85
+ })
86
+ .join(' ')}
87
+ }`);
88
+ export const getMutationQuery = (model, action) => action === 'create'
89
+ ? `
90
+ mutation Create${model.name} ($data: Create${model.name}!) {
91
+ mutated: create${model.name}(data: $data) {
92
+ id
93
+ }
94
+ }
95
+ `
96
+ : action === 'update'
97
+ ? `
98
+ mutation Update${model.name} ($id: ID!, $data: Update${model.name}!) {
99
+ mutated: update${model.name}(where: { id: $id } data: $data) {
100
+ id
101
+ }
102
+ }
103
+ `
104
+ : `
105
+ mutation Delete${model.name} ($id: ID!) {
106
+ mutated: delete${model.name}(where: { id: $id }) {
107
+ id
108
+ }
109
+ }
110
+ `;
111
+ export const displayField = (model) => `
112
+ ${model.displayField ? `display: ${model.displayField}` : ''}
113
+ `;
114
+ export const getEntityListQuery = (model, role, additionalFields = '', root) => `query ${getModelPlural(model)}List(
115
+ ${root ? '$id: ID!,' : ''}
116
+ $limit: Int!,
117
+ $where: ${model.name}Where!,
118
+ ${model.fields.some(({ searchable }) => searchable) ? '$search: String,' : ''}
119
+ ) {
120
+ ${root ? `root: ${typeToField(root.model.name)}(where: { id: $id }) {` : ''}
121
+ data: ${root ? root.reverseRelationName : getModelPluralField(model)}(limit: $limit, where: $where, ${model.fields.some(({ searchable }) => searchable) ? ', search: $search' : ''}) {
122
+ ${displayField(model)}
123
+ ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
124
+ ${additionalFields}
125
+ }
126
+ ${root ? '}' : ''}
127
+ }`;
128
+ export const getEntityQuery = (models, model, role, visibleRelationsByRole, typesWithSubRelations) => `query Admin${model.name} ($id: ID!) {
129
+ data: ${typeToField(model.name)}(where: { id: $id }) {
130
+ ${displayField(model)}
131
+ ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
132
+ ${queryRelations(models, model.fields.filter(and(isRelation, isVisibleRelation(visibleRelationsByRole, model.name, role))), role, typesWithSubRelations)}
133
+ ${queryRelations(models, model.reverseRelations.filter(and(isToOneRelation, isVisibleRelation(visibleRelationsByRole, model.name, role))), role, typesWithSubRelations)}
134
+ }
135
+ }`;
136
+ export const getFindEntityQuery = (model, role) => `query Find${model.name}($where: ${model.name}Where!, $orderBy: [${model.name}OrderBy!]) {
137
+ data: ${getModelPluralField(model)}(limit: 1, where: $where, orderBy: $orderBy) {
138
+ ${model.fields.filter(and(isSimpleField, isQueriableBy(role))).map(({ name }) => name)}
139
+ }
140
+ }`;
141
+ export const queryRelations = (models, relations, role, typesWithSubRelations) => relations
142
+ .map(({ name, type }) => {
143
+ const relatedModel = summonByName(models, type);
144
+ const subRelations = typesWithSubRelations.includes(type) ? relatedModel.fields.filter(isRelation) : [];
145
+ return `${name} {
146
+ id
147
+ ${displayField(relatedModel)}
148
+ ${subRelations.length > 0 ? queryRelations(models, subRelations, role, typesWithSubRelations) : ''}
149
+ }`;
150
+ })
151
+ .join('\n');
152
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/client/queries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" />
2
+ import { DocumentNode, GraphQLResolveInfo } from 'graphql';
3
+ import { IncomingMessage } from 'http';
4
+ import { Knex } from 'knex';
5
+ import { DateTime } from 'luxon';
6
+ import { Entity, Models, MutationHook, RawModels } from './models';
7
+ import { Permissions } from './permissions/generate';
8
+ import { AliasGenerator } from './resolvers/utils';
9
+ export type User = {
10
+ id: string;
11
+ role: string;
12
+ };
13
+ export type Context = {
14
+ req: IncomingMessage;
15
+ now: DateTime;
16
+ knex: Knex;
17
+ document: DocumentNode;
18
+ locale: string;
19
+ locales: string[];
20
+ user: User;
21
+ rawModels: RawModels;
22
+ models: Models;
23
+ permissions: Permissions;
24
+ mutationHook?: MutationHook;
25
+ handleUploads?: (data: Entity) => Promise<void>;
26
+ };
27
+ export type FullContext = Context & {
28
+ info: GraphQLResolveInfo;
29
+ aliases: AliasGenerator;
30
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { GraphQLError as GQLError } from 'graphql';
2
+ import { PermissionAction } from './permissions/generate';
3
+ export declare class GraphQLError extends GQLError {
4
+ constructor(message: string, extensions: ConstructorParameters<typeof GQLError>[6]);
5
+ }
6
+ export declare class ForbiddenError extends GraphQLError {
7
+ constructor(what: string);
8
+ }
9
+ export declare class NotFoundError extends GraphQLError {
10
+ constructor(what: string);
11
+ }
12
+ export declare class UserInputError extends GraphQLError {
13
+ constructor(what: string);
14
+ }
15
+ export declare class PermissionError extends ForbiddenError {
16
+ constructor(action: PermissionAction, what: string);
17
+ }
@@ -0,0 +1,27 @@
1
+ import { GraphQLError as GQLError } from 'graphql';
2
+ export class GraphQLError extends GQLError {
3
+ constructor(message, extensions) {
4
+ super(message, undefined, undefined, undefined, undefined, undefined, extensions);
5
+ }
6
+ }
7
+ export class ForbiddenError extends GraphQLError {
8
+ constructor(what) {
9
+ super(what, { code: 'FORBIDDEN' });
10
+ }
11
+ }
12
+ export class NotFoundError extends GraphQLError {
13
+ constructor(what) {
14
+ super(what, { code: 'NOT_FOUND' });
15
+ }
16
+ }
17
+ export class UserInputError extends GraphQLError {
18
+ constructor(what) {
19
+ super(what, { code: 'BAD_USER_INPUT' });
20
+ }
21
+ }
22
+ export class PermissionError extends ForbiddenError {
23
+ constructor(action, what) {
24
+ super(`You do not have sufficient permissions to ${action.toLowerCase()} ${what}.`);
25
+ }
26
+ }
27
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe,EAAE,UAAqD;QAChF,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACpF,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YAAY,IAAY;QACtB,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,YAAY,IAAY;QACtB,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YAAY,IAAY;QACtB,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IACjD,YAAY,MAAwB,EAAE,IAAY;QAChD,KAAK,CAAC,6CAA6C,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;IACtF,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { DefinitionNode, DocumentNode, GraphQLSchema } from 'graphql';
2
+ import { RawModels } from '../models';
3
+ export declare const generateDefinitions: (rawModels: RawModels) => DefinitionNode[];
4
+ export declare const generate: (rawModels: RawModels) => DocumentNode;
5
+ export declare const printSchema: (schema: GraphQLSchema) => string;
6
+ export declare const printSchemaFromDocument: (document: DocumentNode) => string;
7
+ export declare const printSchemaFromModels: (models: RawModels) => string;
@@ -0,0 +1,211 @@
1
+ import { buildASTSchema, print } from 'graphql';
2
+ import flatMap from 'lodash/flatMap';
3
+ import { isEnumModel, isJsonObjectModel, isQueriableField, isRawEnumModel, isRawObjectModel, isScalarModel, } from '../models';
4
+ import { getModelPluralField, getModels, typeToField } from '../utils';
5
+ import { document, enm, input, object, scalar } from './utils';
6
+ export const generateDefinitions = (rawModels) => {
7
+ const models = getModels(rawModels);
8
+ return [
9
+ // Predefined types
10
+ enm('Order', ['ASC', 'DESC']),
11
+ scalar('DateTime'),
12
+ scalar('Upload'),
13
+ ...rawModels.filter(isEnumModel).map((model) => enm(model.name, model.values)),
14
+ ...rawModels.filter(isRawEnumModel).map((model) => enm(model.name, model.values)),
15
+ ...rawModels.filter(isScalarModel).map((model) => scalar(model.name)),
16
+ ...rawModels.filter(isRawObjectModel).map((model) => object(model.name, model.fields)),
17
+ ...rawModels.filter(isJsonObjectModel).map((model) => object(model.name, model.fields)),
18
+ ...rawModels
19
+ .filter(isRawObjectModel)
20
+ .filter(({ rawFilters }) => rawFilters)
21
+ .map((model) => input(`${model.name}Where`,
22
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- array gets filtered above to only include models with rawFilters
23
+ model.rawFilters.map(({ name, type, list = false, nonNull = false }) => ({ name, type, list, nonNull })))),
24
+ ...flatMap(models.map((model) => {
25
+ const types = [
26
+ object(model.name, [
27
+ ...model.fields.filter(isQueriableField).map((field) => ({
28
+ ...field,
29
+ args: [
30
+ ...(field.args || []),
31
+ ...(hasRawFilters(rawModels, field.type) ? [{ name: 'where', type: `${field.type}Where` }] : []),
32
+ ],
33
+ directives: field.directives,
34
+ })),
35
+ ...model.reverseRelations.map(({ name, field, model }) => ({
36
+ name,
37
+ type: model.name,
38
+ list: !field.toOne,
39
+ nonNull: !field.toOne,
40
+ args: [
41
+ { name: 'where', type: `${model.name}Where` },
42
+ ...(model.fields.some(({ searchable }) => searchable) ? [{ name: 'search', type: 'String' }] : []),
43
+ ...(model.fields.some(({ orderable }) => orderable)
44
+ ? [{ name: 'orderBy', type: `${model.name}OrderBy`, list: true }]
45
+ : []),
46
+ { name: 'limit', type: 'Int' },
47
+ { name: 'offset', type: 'Int' },
48
+ ],
49
+ })),
50
+ ], model.interfaces),
51
+ input(`${model.name}Where`, [
52
+ ...model.fields
53
+ .filter(({ unique, filterable, relation }) => (unique || filterable) && !relation)
54
+ .map(({ name, type, defaultFilter }) => ({ name, type, list: true, default: defaultFilter })),
55
+ ...flatMap(model.fields.filter(({ comparable }) => comparable), ({ name, type }) => [
56
+ { name: `${name}_GT`, type },
57
+ { name: `${name}_GTE`, type },
58
+ { name: `${name}_LT`, type },
59
+ { name: `${name}_LTE`, type },
60
+ ]),
61
+ ...model.fields
62
+ .filter(({ filterable, relation }) => filterable && relation)
63
+ .map(({ name, type }) => ({
64
+ name,
65
+ type: `${type}Where`,
66
+ })),
67
+ ]),
68
+ input(`${model.name}WhereUnique`, model.fields.filter(({ unique }) => unique).map(({ name, type }) => ({ name, type }))),
69
+ ...(model.fields.some(({ orderable }) => orderable)
70
+ ? [
71
+ input(`${model.name}OrderBy`, model.fields.filter(({ orderable }) => orderable).map(({ name }) => ({ name, type: 'Order' }))),
72
+ ]
73
+ : []),
74
+ ];
75
+ if (model.creatable) {
76
+ types.push(input(`Create${model.name}`, model.fields
77
+ .filter(({ creatable }) => creatable)
78
+ .map(({ name, relation, type, nonNull, list, default: defaultValue }) => relation
79
+ ? { name: `${name}Id`, type: 'ID', nonNull }
80
+ : { name, type, list, nonNull: nonNull && defaultValue === undefined })));
81
+ }
82
+ if (model.updatable) {
83
+ types.push(input(`Update${model.name}`, model.fields
84
+ .filter(({ updatable }) => updatable)
85
+ .map(({ name, relation, type, list }) => relation ? { name: `${name}Id`, type: 'ID' } : { name, type, list })));
86
+ }
87
+ return types;
88
+ })),
89
+ object('Query', [
90
+ {
91
+ name: 'me',
92
+ type: 'User',
93
+ },
94
+ ...models
95
+ .filter(({ queriable }) => queriable)
96
+ .map(({ name }) => ({
97
+ name: typeToField(name),
98
+ type: name,
99
+ nonNull: true,
100
+ args: [
101
+ {
102
+ name: 'where',
103
+ type: `${name}WhereUnique`,
104
+ nonNull: true,
105
+ },
106
+ ],
107
+ })),
108
+ ...models
109
+ .filter(({ listQueriable }) => listQueriable)
110
+ .map((model) => ({
111
+ name: getModelPluralField(model),
112
+ type: model.name,
113
+ list: true,
114
+ nonNull: true,
115
+ args: [
116
+ { name: 'where', type: `${model.name}Where` },
117
+ ...(model.fields.some(({ searchable }) => searchable) ? [{ name: 'search', type: 'String' }] : []),
118
+ ...(model.fields.some(({ orderable }) => orderable)
119
+ ? [{ name: 'orderBy', type: `${model.name}OrderBy`, list: true }]
120
+ : []),
121
+ { name: 'limit', type: 'Int' },
122
+ { name: 'offset', type: 'Int' },
123
+ ],
124
+ })),
125
+ ]),
126
+ object('Mutation', [
127
+ ...flatMap(models.map((model) => {
128
+ const mutations = [];
129
+ if (model.creatable) {
130
+ mutations.push({
131
+ name: `create${model.name}`,
132
+ type: model.name,
133
+ nonNull: true,
134
+ args: [
135
+ {
136
+ name: 'data',
137
+ type: `Create${model.name}`,
138
+ nonNull: true,
139
+ },
140
+ ],
141
+ });
142
+ }
143
+ if (model.updatable) {
144
+ mutations.push({
145
+ name: `update${model.name}`,
146
+ type: model.name,
147
+ nonNull: true,
148
+ args: [
149
+ {
150
+ name: 'where',
151
+ type: `${model.name}WhereUnique`,
152
+ nonNull: true,
153
+ },
154
+ {
155
+ name: 'data',
156
+ type: `Update${model.name}`,
157
+ nonNull: true,
158
+ },
159
+ ],
160
+ });
161
+ }
162
+ if (model.deletable) {
163
+ mutations.push({
164
+ name: `delete${model.name}`,
165
+ type: 'ID',
166
+ nonNull: true,
167
+ args: [
168
+ {
169
+ name: 'where',
170
+ type: `${model.name}WhereUnique`,
171
+ nonNull: true,
172
+ },
173
+ {
174
+ name: 'dryRun',
175
+ type: 'Boolean',
176
+ },
177
+ ],
178
+ });
179
+ mutations.push({
180
+ name: `restore${model.name}`,
181
+ type: 'ID',
182
+ nonNull: true,
183
+ args: [
184
+ {
185
+ name: 'where',
186
+ type: `${model.name}WhereUnique`,
187
+ nonNull: true,
188
+ },
189
+ ],
190
+ });
191
+ }
192
+ return mutations;
193
+ })),
194
+ ]),
195
+ ];
196
+ };
197
+ export const generate = (rawModels) => document(generateDefinitions(rawModels));
198
+ export const printSchema = (schema) => [
199
+ ...schema.getDirectives().map((d) => d.astNode && print(d.astNode)),
200
+ ...Object.values(schema.getTypeMap())
201
+ .filter((t) => !t.name.match(/^__/))
202
+ .sort((a, b) => (a.name > b.name ? 1 : -1))
203
+ .map((t) => t.astNode && print(t.astNode)),
204
+ ]
205
+ .filter(Boolean)
206
+ .map((s) => `${s}\n`)
207
+ .join('\n');
208
+ const hasRawFilters = (models, type) => models.filter(isRawObjectModel).some(({ name, rawFilters }) => name === type && !!rawFilters);
209
+ export const printSchemaFromDocument = (document) => printSchema(buildASTSchema(document));
210
+ export const printSchemaFromModels = (models) => printSchema(buildASTSchema(generate(models)));
211
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/generate/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './generate';
2
+ export * from './mutations';
3
+ export * from './utils';
@@ -0,0 +1,5 @@
1
+ // created from 'create-ts-index'
2
+ export * from './generate';
3
+ export * from './mutations';
4
+ export * from './utils';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generate/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Models } from '../models';
2
+ export declare const generateMutations: (models: Models) => string;
@@ -0,0 +1,18 @@
1
+ import upperCase from 'lodash/upperCase';
2
+ const constantCase = (str) => upperCase(str).replace(/ /g, '_');
3
+ export const generateMutations = (models) => {
4
+ const parts = [];
5
+ for (const { name, creatable, updatable, deletable } of models) {
6
+ if (creatable) {
7
+ parts.push(`export const CREATE_${constantCase(name)} = gql\`\n mutation Create${name}Mutation($data: Create${name}!) {\n create${name}(data: $data) { id }\n }\n\`;`);
8
+ }
9
+ if (updatable) {
10
+ parts.push(`export const UPDATE_${constantCase(name)} = gql\`\n mutation Update${name}Mutation($id: ID!, $data: Update${name}!) {\n update${name}(where: { id: $id }, data: $data) { id }\n }\n\`;`);
11
+ }
12
+ if (deletable) {
13
+ parts.push(`export const DELETE_${constantCase(name)} = gql\`\n mutation Delete${name}Mutation($id: ID!) {\n delete${name}(where: { id: $id })\n }\n\`;`);
14
+ }
15
+ }
16
+ return `import { gql } from "@smartive-private/graphql-magic";\n\n${parts.join('\n\n')}`;
17
+ };
18
+ //# sourceMappingURL=mutations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutations.js","sourceRoot":"","sources":["../../../src/generate/mutations.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAGzC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,EAAE;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,MAAM,EAAE;QAC9D,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CACR,uBAAuB,YAAY,CACjC,IAAI,CACL,8BAA8B,IAAI,yBAAyB,IAAI,mBAAmB,IAAI,gCAAgC,CACxH,CAAC;SACH;QAED,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CACR,uBAAuB,YAAY,CACjC,IAAI,CACL,8BAA8B,IAAI,mCAAmC,IAAI,mBAAmB,IAAI,oDAAoD,CACtJ,CAAC;SACH;QAED,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,IAAI,CACR,uBAAuB,YAAY,CACjC,IAAI,CACL,8BAA8B,IAAI,mCAAmC,IAAI,gCAAgC,CAC3G,CAAC;SACH;KACF;IAED,OAAO,6DAA6D,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC3F,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ArgumentNode, DefinitionNode, DirectiveDefinitionNode, DirectiveNode, DocumentNode, EnumTypeDefinitionNode, FieldDefinitionNode, InputObjectTypeDefinitionNode, InputValueDefinitionNode, InterfaceTypeDefinitionNode, ListTypeNode, NamedTypeNode, NameNode, NonNullTypeNode, ObjectTypeDefinitionNode, ScalarTypeDefinitionNode, TypeNode, ValueNode } from 'graphql';
2
+ import { Field } from '../models';
3
+ import { Directive, Value, Values } from '../values';
4
+ export type DirectiveLocation = 'ARGUMENT_DEFINITION' | 'INPUT_FIELD_DEFINITION' | 'FIELD' | 'FIELD_DEFINITION' | 'OBJECT' | 'INTERFACE' | 'INPUT_OBJECT';
5
+ export declare const document: (definitions: DefinitionNode[]) => DocumentNode;
6
+ export declare const directive: (nme: string, locations: DirectiveLocation[], fields?: Field[]) => DirectiveDefinitionNode;
7
+ export declare const scalar: (nme: string) => ScalarTypeDefinitionNode;
8
+ export declare const input: (nme: string, fields: Field[], dvs?: Directive[]) => InputObjectTypeDefinitionNode;
9
+ export declare const object: (nme: string, fds: Field[], interfaces?: string[], dvs?: Directive[]) => ObjectTypeDefinitionNode;
10
+ export declare const iface: (nme: string, fds: Field[], dvs?: Directive[]) => InterfaceTypeDefinitionNode;
11
+ export declare const inputValues: (fields: Field[]) => InputValueDefinitionNode[];
12
+ export declare const fields: (fields: Field[]) => FieldDefinitionNode[];
13
+ export declare const inputValue: (nme: string, type: TypeNode, dvs?: Directive[], description?: string, defaultValue?: Value) => InputValueDefinitionNode;
14
+ export declare const directives: (directives?: Directive[]) => DirectiveNode[] | undefined;
15
+ export declare const args: (ags: Values | undefined) => ReadonlyArray<ArgumentNode> | undefined;
16
+ export declare const enm: (nme: string, values: string[]) => EnumTypeDefinitionNode;
17
+ export declare const nonNull: (type: NamedTypeNode | ListTypeNode) => NonNullTypeNode;
18
+ export declare const namedType: (nme: string) => NamedTypeNode;
19
+ export declare const list: (type: TypeNode) => ListTypeNode;
20
+ export declare const name: (name: string) => NameNode;
21
+ export declare const fieldType: (field: Field) => TypeNode;
22
+ export declare const value: (val?: Value) => ValueNode;