@constructive-io/graphql-server 2.19.2 → 2.19.4

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 (205) hide show
  1. package/codegen/orm/index.d.ts +7 -603
  2. package/codegen/orm/index.js +4 -127
  3. package/codegen/orm/input-types.d.ts +14682 -7790
  4. package/codegen/orm/input-types.js +0 -5
  5. package/codegen/orm/models/api.d.ts +6 -6
  6. package/codegen/orm/models/api.js +3 -4
  7. package/codegen/orm/models/domain.d.ts +6 -6
  8. package/codegen/orm/models/domain.js +3 -4
  9. package/codegen/orm/models/index.d.ts +1 -58
  10. package/codegen/orm/models/index.js +3 -118
  11. package/codegen/orm/mutation/index.d.ts +1 -525
  12. package/codegen/orm/mutation/index.js +2 -591
  13. package/codegen/orm/query/index.d.ts +3 -257
  14. package/codegen/orm/query/index.js +8 -274
  15. package/codegen/orm/query-builder.d.ts +2 -1
  16. package/codegen/orm/query-builder.js +376 -129
  17. package/codegen/orm/select-types.d.ts +33 -0
  18. package/esm/codegen/orm/index.js +4 -127
  19. package/esm/codegen/orm/input-types.js +0 -5
  20. package/esm/codegen/orm/models/api.js +3 -4
  21. package/esm/codegen/orm/models/domain.js +3 -4
  22. package/esm/codegen/orm/models/index.js +1 -58
  23. package/esm/codegen/orm/mutation/index.js +2 -591
  24. package/esm/codegen/orm/query/index.js +8 -274
  25. package/esm/codegen/orm/query-builder.js +343 -129
  26. package/esm/middleware/api.js +145 -173
  27. package/esm/middleware/gql.js +72 -71
  28. package/middleware/api.d.ts +16 -3
  29. package/middleware/api.js +148 -173
  30. package/middleware/gql.d.ts +174 -24
  31. package/middleware/gql.js +76 -76
  32. package/middleware/types.d.ts +3 -19
  33. package/package.json +17 -14
  34. package/types.d.ts +17 -44
  35. package/codegen/orm/models/apiExtension.d.ts +0 -42
  36. package/codegen/orm/models/apiExtension.js +0 -77
  37. package/codegen/orm/models/apiModule.d.ts +0 -42
  38. package/codegen/orm/models/apiModule.js +0 -77
  39. package/codegen/orm/models/apiSchema.d.ts +0 -42
  40. package/codegen/orm/models/apiSchema.js +0 -77
  41. package/codegen/orm/models/app.d.ts +0 -42
  42. package/codegen/orm/models/app.js +0 -77
  43. package/codegen/orm/models/checkConstraint.d.ts +0 -42
  44. package/codegen/orm/models/checkConstraint.js +0 -77
  45. package/codegen/orm/models/connectedAccountsModule.d.ts +0 -42
  46. package/codegen/orm/models/connectedAccountsModule.js +0 -77
  47. package/codegen/orm/models/cryptoAddressesModule.d.ts +0 -42
  48. package/codegen/orm/models/cryptoAddressesModule.js +0 -77
  49. package/codegen/orm/models/cryptoAuthModule.d.ts +0 -42
  50. package/codegen/orm/models/cryptoAuthModule.js +0 -77
  51. package/codegen/orm/models/database.d.ts +0 -42
  52. package/codegen/orm/models/database.js +0 -77
  53. package/codegen/orm/models/databaseExtension.d.ts +0 -42
  54. package/codegen/orm/models/databaseExtension.js +0 -77
  55. package/codegen/orm/models/databaseProvision.d.ts +0 -42
  56. package/codegen/orm/models/databaseProvision.js +0 -77
  57. package/codegen/orm/models/defaultIdsModule.d.ts +0 -42
  58. package/codegen/orm/models/defaultIdsModule.js +0 -77
  59. package/codegen/orm/models/denormalizedTableField.d.ts +0 -42
  60. package/codegen/orm/models/denormalizedTableField.js +0 -77
  61. package/codegen/orm/models/emailsModule.d.ts +0 -42
  62. package/codegen/orm/models/emailsModule.js +0 -77
  63. package/codegen/orm/models/encryptedSecretsModule.d.ts +0 -42
  64. package/codegen/orm/models/encryptedSecretsModule.js +0 -77
  65. package/codegen/orm/models/extension.d.ts +0 -42
  66. package/codegen/orm/models/extension.js +0 -77
  67. package/codegen/orm/models/field.d.ts +0 -42
  68. package/codegen/orm/models/field.js +0 -77
  69. package/codegen/orm/models/fieldModule.d.ts +0 -42
  70. package/codegen/orm/models/fieldModule.js +0 -77
  71. package/codegen/orm/models/foreignKeyConstraint.d.ts +0 -42
  72. package/codegen/orm/models/foreignKeyConstraint.js +0 -77
  73. package/codegen/orm/models/fullTextSearch.d.ts +0 -42
  74. package/codegen/orm/models/fullTextSearch.js +0 -77
  75. package/codegen/orm/models/hierarchyModule.d.ts +0 -42
  76. package/codegen/orm/models/hierarchyModule.js +0 -77
  77. package/codegen/orm/models/indexModel.d.ts +0 -42
  78. package/codegen/orm/models/indexModel.js +0 -77
  79. package/codegen/orm/models/invitesModule.d.ts +0 -42
  80. package/codegen/orm/models/invitesModule.js +0 -77
  81. package/codegen/orm/models/levelsModule.d.ts +0 -42
  82. package/codegen/orm/models/levelsModule.js +0 -77
  83. package/codegen/orm/models/limitFunction.d.ts +0 -42
  84. package/codegen/orm/models/limitFunction.js +0 -77
  85. package/codegen/orm/models/limitsModule.d.ts +0 -42
  86. package/codegen/orm/models/limitsModule.js +0 -77
  87. package/codegen/orm/models/membershipTypesModule.d.ts +0 -42
  88. package/codegen/orm/models/membershipTypesModule.js +0 -77
  89. package/codegen/orm/models/membershipsModule.d.ts +0 -42
  90. package/codegen/orm/models/membershipsModule.js +0 -77
  91. package/codegen/orm/models/module.d.ts +0 -42
  92. package/codegen/orm/models/module.js +0 -77
  93. package/codegen/orm/models/moduleDefinition.d.ts +0 -42
  94. package/codegen/orm/models/moduleDefinition.js +0 -77
  95. package/codegen/orm/models/moduleField.d.ts +0 -42
  96. package/codegen/orm/models/moduleField.js +0 -77
  97. package/codegen/orm/models/moduleInputRecord.d.ts +0 -42
  98. package/codegen/orm/models/moduleInputRecord.js +0 -77
  99. package/codegen/orm/models/moduleOutput.d.ts +0 -42
  100. package/codegen/orm/models/moduleOutput.js +0 -77
  101. package/codegen/orm/models/permissionsModule.d.ts +0 -42
  102. package/codegen/orm/models/permissionsModule.js +0 -77
  103. package/codegen/orm/models/phoneNumbersModule.d.ts +0 -42
  104. package/codegen/orm/models/phoneNumbersModule.js +0 -77
  105. package/codegen/orm/models/policy.d.ts +0 -42
  106. package/codegen/orm/models/policy.js +0 -77
  107. package/codegen/orm/models/primaryKeyConstraint.d.ts +0 -42
  108. package/codegen/orm/models/primaryKeyConstraint.js +0 -77
  109. package/codegen/orm/models/procedure.d.ts +0 -42
  110. package/codegen/orm/models/procedure.js +0 -77
  111. package/codegen/orm/models/profilesModule.d.ts +0 -42
  112. package/codegen/orm/models/profilesModule.js +0 -77
  113. package/codegen/orm/models/rlsFunction.d.ts +0 -42
  114. package/codegen/orm/models/rlsFunction.js +0 -77
  115. package/codegen/orm/models/rlsModule.d.ts +0 -42
  116. package/codegen/orm/models/rlsModule.js +0 -77
  117. package/codegen/orm/models/schema.d.ts +0 -42
  118. package/codegen/orm/models/schema.js +0 -77
  119. package/codegen/orm/models/schemaGrant.d.ts +0 -42
  120. package/codegen/orm/models/schemaGrant.js +0 -77
  121. package/codegen/orm/models/secretsModule.d.ts +0 -42
  122. package/codegen/orm/models/secretsModule.js +0 -77
  123. package/codegen/orm/models/site.d.ts +0 -42
  124. package/codegen/orm/models/site.js +0 -77
  125. package/codegen/orm/models/siteMetadatum.d.ts +0 -42
  126. package/codegen/orm/models/siteMetadatum.js +0 -77
  127. package/codegen/orm/models/siteModule.d.ts +0 -42
  128. package/codegen/orm/models/siteModule.js +0 -77
  129. package/codegen/orm/models/siteTheme.d.ts +0 -42
  130. package/codegen/orm/models/siteTheme.js +0 -77
  131. package/codegen/orm/models/table.d.ts +0 -42
  132. package/codegen/orm/models/table.js +0 -77
  133. package/codegen/orm/models/tableGrant.d.ts +0 -42
  134. package/codegen/orm/models/tableGrant.js +0 -77
  135. package/codegen/orm/models/tokensModule.d.ts +0 -42
  136. package/codegen/orm/models/tokensModule.js +0 -77
  137. package/codegen/orm/models/trigger.d.ts +0 -42
  138. package/codegen/orm/models/trigger.js +0 -77
  139. package/codegen/orm/models/triggerFunction.d.ts +0 -42
  140. package/codegen/orm/models/triggerFunction.js +0 -77
  141. package/codegen/orm/models/uniqueConstraint.d.ts +0 -42
  142. package/codegen/orm/models/uniqueConstraint.js +0 -77
  143. package/codegen/orm/models/userAuthModule.d.ts +0 -42
  144. package/codegen/orm/models/userAuthModule.js +0 -77
  145. package/codegen/orm/models/usersModule.d.ts +0 -42
  146. package/codegen/orm/models/usersModule.js +0 -77
  147. package/codegen/orm/models/uuidModule.d.ts +0 -42
  148. package/codegen/orm/models/uuidModule.js +0 -77
  149. package/esm/codegen/orm/models/apiExtension.js +0 -73
  150. package/esm/codegen/orm/models/apiModule.js +0 -73
  151. package/esm/codegen/orm/models/apiSchema.js +0 -73
  152. package/esm/codegen/orm/models/app.js +0 -73
  153. package/esm/codegen/orm/models/checkConstraint.js +0 -73
  154. package/esm/codegen/orm/models/connectedAccountsModule.js +0 -73
  155. package/esm/codegen/orm/models/cryptoAddressesModule.js +0 -73
  156. package/esm/codegen/orm/models/cryptoAuthModule.js +0 -73
  157. package/esm/codegen/orm/models/database.js +0 -73
  158. package/esm/codegen/orm/models/databaseExtension.js +0 -73
  159. package/esm/codegen/orm/models/databaseProvision.js +0 -73
  160. package/esm/codegen/orm/models/defaultIdsModule.js +0 -73
  161. package/esm/codegen/orm/models/denormalizedTableField.js +0 -73
  162. package/esm/codegen/orm/models/emailsModule.js +0 -73
  163. package/esm/codegen/orm/models/encryptedSecretsModule.js +0 -73
  164. package/esm/codegen/orm/models/extension.js +0 -73
  165. package/esm/codegen/orm/models/field.js +0 -73
  166. package/esm/codegen/orm/models/fieldModule.js +0 -73
  167. package/esm/codegen/orm/models/foreignKeyConstraint.js +0 -73
  168. package/esm/codegen/orm/models/fullTextSearch.js +0 -73
  169. package/esm/codegen/orm/models/hierarchyModule.js +0 -73
  170. package/esm/codegen/orm/models/indexModel.js +0 -73
  171. package/esm/codegen/orm/models/invitesModule.js +0 -73
  172. package/esm/codegen/orm/models/levelsModule.js +0 -73
  173. package/esm/codegen/orm/models/limitFunction.js +0 -73
  174. package/esm/codegen/orm/models/limitsModule.js +0 -73
  175. package/esm/codegen/orm/models/membershipTypesModule.js +0 -73
  176. package/esm/codegen/orm/models/membershipsModule.js +0 -73
  177. package/esm/codegen/orm/models/module.js +0 -73
  178. package/esm/codegen/orm/models/moduleDefinition.js +0 -73
  179. package/esm/codegen/orm/models/moduleField.js +0 -73
  180. package/esm/codegen/orm/models/moduleInputRecord.js +0 -73
  181. package/esm/codegen/orm/models/moduleOutput.js +0 -73
  182. package/esm/codegen/orm/models/permissionsModule.js +0 -73
  183. package/esm/codegen/orm/models/phoneNumbersModule.js +0 -73
  184. package/esm/codegen/orm/models/policy.js +0 -73
  185. package/esm/codegen/orm/models/primaryKeyConstraint.js +0 -73
  186. package/esm/codegen/orm/models/procedure.js +0 -73
  187. package/esm/codegen/orm/models/profilesModule.js +0 -73
  188. package/esm/codegen/orm/models/rlsFunction.js +0 -73
  189. package/esm/codegen/orm/models/rlsModule.js +0 -73
  190. package/esm/codegen/orm/models/schema.js +0 -73
  191. package/esm/codegen/orm/models/schemaGrant.js +0 -73
  192. package/esm/codegen/orm/models/secretsModule.js +0 -73
  193. package/esm/codegen/orm/models/site.js +0 -73
  194. package/esm/codegen/orm/models/siteMetadatum.js +0 -73
  195. package/esm/codegen/orm/models/siteModule.js +0 -73
  196. package/esm/codegen/orm/models/siteTheme.js +0 -73
  197. package/esm/codegen/orm/models/table.js +0 -73
  198. package/esm/codegen/orm/models/tableGrant.js +0 -73
  199. package/esm/codegen/orm/models/tokensModule.js +0 -73
  200. package/esm/codegen/orm/models/trigger.js +0 -73
  201. package/esm/codegen/orm/models/triggerFunction.js +0 -73
  202. package/esm/codegen/orm/models/uniqueConstraint.js +0 -73
  203. package/esm/codegen/orm/models/userAuthModule.js +0 -73
  204. package/esm/codegen/orm/models/usersModule.js +0 -73
  205. package/esm/codegen/orm/models/uuidModule.js +0 -73
package/middleware/gql.js CHANGED
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildListApis = exports.buildApiByDatabaseIdAndName = exports.buildDomainLookup = void 0;
4
- const query_builder_1 = require("../codegen/orm/query-builder");
5
- const apiSelect = {
3
+ exports.normalizeApiRecord = exports.createGraphileOrm = exports.apiListSelect = exports.domainSelect = exports.apiSelect = exports.connectionFirst = void 0;
4
+ const client_1 = require("../codegen/orm/client");
5
+ const models_1 = require("../codegen/orm/models");
6
+ const query_1 = require("../codegen/orm/query");
7
+ exports.connectionFirst = 1000;
8
+ exports.apiSelect = {
6
9
  databaseId: true,
7
10
  dbname: true,
8
11
  roleName: true,
@@ -13,15 +16,15 @@ const apiSelect = {
13
16
  subdomain: true,
14
17
  domain: true,
15
18
  },
16
- connection: true,
19
+ first: exports.connectionFirst,
17
20
  },
18
21
  apiExtensions: {
19
22
  select: { schemaName: true },
20
- connection: true,
23
+ first: exports.connectionFirst,
21
24
  },
22
25
  schemasByApiSchemaApiIdAndSchemaId: {
23
26
  select: { schemaName: true },
24
- connection: true,
27
+ first: exports.connectionFirst,
25
28
  },
26
29
  rlsModule: {
27
30
  select: {
@@ -32,30 +35,17 @@ const apiSelect = {
32
35
  currentRoleId: true,
33
36
  },
34
37
  },
35
- database: {
36
- select: {
37
- sites: {
38
- select: {
39
- domains: {
40
- select: { subdomain: true, domain: true },
41
- connection: true,
42
- },
43
- },
44
- connection: true,
45
- },
46
- },
47
- },
48
38
  apiModules: {
49
39
  select: { name: true, data: true },
50
- connection: true,
40
+ first: exports.connectionFirst,
51
41
  },
52
42
  };
53
- const domainSelect = {
43
+ exports.domainSelect = {
54
44
  domain: true,
55
45
  subdomain: true,
56
- api: { select: apiSelect },
46
+ api: { select: exports.apiSelect },
57
47
  };
58
- const apisSelect = {
48
+ exports.apiListSelect = {
59
49
  id: true,
60
50
  databaseId: true,
61
51
  name: true,
@@ -65,62 +55,72 @@ const apisSelect = {
65
55
  isPublic: true,
66
56
  domains: {
67
57
  select: { domain: true, subdomain: true },
68
- connection: true,
69
- },
70
- database: {
71
- select: {
72
- sites: {
73
- select: {
74
- domains: {
75
- select: { domain: true, subdomain: true },
76
- connection: true,
77
- },
78
- },
79
- connection: true,
80
- },
81
- },
58
+ first: exports.connectionFirst,
82
59
  },
83
60
  };
84
- /**
85
- * Build query for domain lookup with optional subdomain
86
- * This uses domains connection instead of domainBySubdomainAndDomain
87
- * because we need to handle null subdomain with condition filter
88
- */
89
- const buildDomainLookup = (vars) => {
90
- const where = {
91
- domain: { equalTo: vars.domain },
92
- };
93
- if (vars.subdomain === null || vars.subdomain === undefined) {
94
- where.subdomain = { isNull: true };
61
+ class GraphileOrmClient extends client_1.OrmClient {
62
+ graphile;
63
+ constructor(graphile) {
64
+ super({ endpoint: 'http://localhost/graphql' });
65
+ this.graphile = graphile;
95
66
  }
96
- else {
97
- where.subdomain = { equalTo: vars.subdomain };
67
+ async execute(document, variables) {
68
+ const result = await this.graphile.query({
69
+ role: 'administrator',
70
+ query: document,
71
+ variables,
72
+ });
73
+ if (result.errors?.length) {
74
+ return {
75
+ ok: false,
76
+ data: null,
77
+ errors: result.errors,
78
+ };
79
+ }
80
+ return {
81
+ ok: true,
82
+ data: result.data,
83
+ errors: undefined,
84
+ };
98
85
  }
99
- return (0, query_builder_1.buildFindFirstDocument)('DomainLookup', 'domains', domainSelect, { where }, 'DomainFilter');
100
- };
101
- exports.buildDomainLookup = buildDomainLookup;
102
- /**
103
- * Build query for API lookup by database ID and name
104
- * Uses the generated apiByDatabaseIdAndName custom query
105
- */
106
- const buildApiByDatabaseIdAndName = (vars) => {
107
- // Import buildCustomDocument locally to avoid circular dependency
108
- const { buildCustomDocument } = require('../codegen/orm/query-builder');
109
- return buildCustomDocument('query', 'ApiByDatabaseIdAndName', 'apiByDatabaseIdAndName', apiSelect, vars, [
110
- { name: 'databaseId', type: 'UUID!' },
111
- { name: 'name', type: 'String!' },
112
- ]);
86
+ }
87
+ const createGraphileOrm = (graphile) => {
88
+ const client = new GraphileOrmClient(graphile);
89
+ return {
90
+ api: new models_1.ApiModel(client),
91
+ domain: new models_1.DomainModel(client),
92
+ query: (0, query_1.createQueryOperations)(client),
93
+ };
113
94
  };
114
- exports.buildApiByDatabaseIdAndName = buildApiByDatabaseIdAndName;
115
- /**
116
- * Build query to list all APIs
117
- */
118
- const buildListApis = () => {
119
- // Import buildCustomDocument locally to avoid circular dependency
120
- const { buildCustomDocument } = require('../codegen/orm/query-builder');
121
- return buildCustomDocument('query', 'ListApisByDatabaseId', 'apis', {
122
- select: apisSelect,
123
- connection: true,
124
- }, undefined, []);
95
+ exports.createGraphileOrm = createGraphileOrm;
96
+ const normalizeApiRecord = (api) => {
97
+ const schemaNames = (api.apiExtensions?.nodes ?? []).flatMap((node) => node.schemaName ? [node.schemaName] : []);
98
+ const additionalSchemas = (api.schemasByApiSchemaApiIdAndSchemaId?.nodes ?? []).flatMap((node) => (node.schemaName ? [node.schemaName] : []));
99
+ let domains = [];
100
+ if (api.domains?.nodes?.length) {
101
+ domains = api.domains.nodes.reduce((acc, domain) => {
102
+ if (!domain.domain)
103
+ return acc;
104
+ const hostname = domain.subdomain
105
+ ? `${domain.subdomain}.${domain.domain}`
106
+ : domain.domain;
107
+ const protocol = domain.domain === 'localhost' ? 'http://' : 'https://';
108
+ return [...acc, protocol + hostname];
109
+ }, []);
110
+ }
111
+ return {
112
+ dbname: api.dbname,
113
+ anonRole: api.anonRole,
114
+ roleName: api.roleName,
115
+ schema: [...schemaNames, ...additionalSchemas],
116
+ apiModules: api.apiModules?.nodes?.map((node) => ({
117
+ name: node.name,
118
+ data: node.data,
119
+ })) || [],
120
+ rlsModule: api.rlsModule,
121
+ domains,
122
+ databaseId: api.databaseId,
123
+ isPublic: api.isPublic,
124
+ };
125
125
  };
126
- exports.buildListApis = buildListApis;
126
+ exports.normalizeApiRecord = normalizeApiRecord;
@@ -1,29 +1,13 @@
1
- import { ApiModule } from "../types";
1
+ import type { ApiStructure } from '../types';
2
2
  export type ConstructiveAPIToken = {
3
3
  id: string;
4
4
  user_id: string;
5
- [key: string]: any;
5
+ [key: string]: unknown;
6
6
  };
7
7
  declare global {
8
8
  namespace Express {
9
9
  interface Request {
10
- api?: {
11
- dbname: string;
12
- anonRole: string;
13
- roleName: string;
14
- schema: string[];
15
- apiModules: ApiModule[];
16
- rlsModule?: {
17
- authenticate?: string;
18
- authenticateStrict?: string;
19
- privateSchema: {
20
- schemaName: string;
21
- };
22
- };
23
- domains?: string[];
24
- databaseId?: string;
25
- isPublic?: boolean;
26
- };
10
+ api?: ApiStructure;
27
11
  svc_key?: string;
28
12
  clientIp?: string;
29
13
  databaseId?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@constructive-io/graphql-server",
3
- "version": "2.19.2",
3
+ "version": "2.19.4",
4
4
  "author": "Constructive <developers@constructive.io>",
5
5
  "description": "Constructive GraphQL Server",
6
6
  "main": "index.js",
@@ -31,7 +31,8 @@
31
31
  "test:watch": "jest --watch",
32
32
  "bucket:create": "ts-node src/scripts/create-bucket.ts",
33
33
  "codegen:schema": "ts-node src/scripts/codegen-schema.ts",
34
- "codegen": "npm run codegen:schema && graphql-codegen generate-orm --schema codegen/schema.graphql --output src/codegen/orm"
34
+ "codegen:clean": "rimraf src/codegen/orm codegen/schema.graphql",
35
+ "codegen": "npm run codegen:clean && npm run codegen:schema && graphql-codegen generate-orm --schema codegen/schema.graphql --output src/codegen/orm"
35
36
  },
36
37
  "keywords": [
37
38
  "server",
@@ -41,7 +42,7 @@
41
42
  "backend"
42
43
  ],
43
44
  "dependencies": {
44
- "@constructive-io/graphql-env": "^2.9.0",
45
+ "@constructive-io/graphql-env": "^2.9.1",
45
46
  "@constructive-io/graphql-types": "^2.13.0",
46
47
  "@constructive-io/s3-utils": "^2.5.1",
47
48
  "@constructive-io/upload-names": "^2.4.0",
@@ -52,17 +53,18 @@
52
53
  "@pgpmjs/types": "^2.15.0",
53
54
  "cors": "^2.8.5",
54
55
  "express": "^5.2.1",
56
+ "gql-ast": "^2.6.0",
55
57
  "graphile-build": "^4.14.1",
56
58
  "graphile-cache": "^1.8.0",
57
- "graphile-i18n": "^0.6.0",
58
- "graphile-meta-schema": "^0.7.0",
59
- "graphile-plugin-connection-filter": "^2.8.0",
60
- "graphile-plugin-connection-filter-postgis": "^1.5.0",
61
- "graphile-plugin-fulltext-filter": "^2.5.0",
59
+ "graphile-i18n": "^0.6.1",
60
+ "graphile-meta-schema": "^0.7.1",
61
+ "graphile-plugin-connection-filter": "^2.8.1",
62
+ "graphile-plugin-connection-filter-postgis": "^1.5.1",
63
+ "graphile-plugin-fulltext-filter": "^2.5.1",
62
64
  "graphile-query": "^2.5.1",
63
- "graphile-search-plugin": "^0.6.0",
64
- "graphile-settings": "^2.14.0",
65
- "graphile-simple-inflector": "^0.6.0",
65
+ "graphile-search-plugin": "^0.6.1",
66
+ "graphile-settings": "^2.14.1",
67
+ "graphile-simple-inflector": "^0.6.1",
66
68
  "graphile-utils": "^4.14.1",
67
69
  "graphql": "15.10.1",
68
70
  "graphql-tag": "2.12.6",
@@ -76,16 +78,17 @@
76
78
  },
77
79
  "devDependencies": {
78
80
  "@aws-sdk/client-s3": "^3.971.0",
79
- "@constructive-io/graphql-codegen": "2.28.2",
81
+ "@constructive-io/graphql-codegen": "2.28.3",
80
82
  "@types/cors": "^2.8.17",
81
83
  "@types/express": "^5.0.6",
82
84
  "@types/graphql-upload": "^8.0.12",
83
85
  "@types/pg": "^8.16.0",
84
86
  "@types/request-ip": "^0.0.41",
85
- "graphile-test": "2.15.0",
87
+ "graphile-test": "2.15.1",
86
88
  "makage": "^0.1.10",
87
89
  "nodemon": "^3.1.10",
90
+ "rimraf": "^6.1.2",
88
91
  "ts-node": "^10.9.2"
89
92
  },
90
- "gitHead": "b1665179fec45aef7cb4c7f4e5bcd6990d2d3bb7"
93
+ "gitHead": "7e8bb857e6e981195f2784933ce342edbf0bc321"
91
94
  }
package/types.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { PgpmOptions } from '@pgpmjs/types';
1
2
  export interface CorsModuleData {
2
3
  urls: string[];
3
4
  }
@@ -10,7 +11,7 @@ export interface PublicKeyChallengeData {
10
11
  sign_in_with_challenge: string;
11
12
  }
12
13
  export interface GenericModuleData {
13
- [key: string]: any;
14
+ [key: string]: unknown;
14
15
  }
15
16
  export type ApiModule = {
16
17
  name: 'cors';
@@ -29,49 +30,6 @@ export interface RlsModule {
29
30
  schemaName: string;
30
31
  };
31
32
  }
32
- export interface SchemaNode {
33
- schemaName: string;
34
- }
35
- export interface SchemaNodes {
36
- nodes: SchemaNode[];
37
- }
38
- export interface Domain {
39
- subdomain?: string;
40
- domain: string;
41
- }
42
- export interface DomainNodes {
43
- nodes: Domain[];
44
- }
45
- export interface Site {
46
- domains: DomainNodes;
47
- }
48
- export interface SiteNodes {
49
- nodes: Site[];
50
- }
51
- export interface ApiModuleNodes {
52
- nodes: ApiModule[];
53
- }
54
- export interface Database {
55
- sites: SiteNodes;
56
- }
57
- export interface OldApiStructure {
58
- dbname: string;
59
- anonRole: string;
60
- roleName: string;
61
- schemasByApiSchemaApiIdAndSchemaId: SchemaNodes;
62
- apiExtensions: SchemaNodes;
63
- apiModules: ApiModuleNodes;
64
- rlsModule?: RlsModule;
65
- database?: Database;
66
- databaseId?: string;
67
- isPublic?: boolean;
68
- }
69
- export interface ServiceData {
70
- api: OldApiStructure;
71
- }
72
- export interface Service {
73
- data: ServiceData;
74
- }
75
33
  export interface ApiStructure {
76
34
  dbname: string;
77
35
  anonRole: string;
@@ -83,3 +41,18 @@ export interface ApiStructure {
83
41
  databaseId?: string;
84
42
  isPublic?: boolean;
85
43
  }
44
+ export type ApiError = {
45
+ errorHtml: string;
46
+ };
47
+ export type ApiConfigResult = ApiStructure | ApiError | null;
48
+ export type ApiOptions = PgpmOptions & {
49
+ api?: {
50
+ enableServicesApi?: boolean;
51
+ exposedSchemas?: string[];
52
+ anonRole?: string;
53
+ roleName?: string;
54
+ defaultDatabaseId?: string;
55
+ metaSchemas?: string[];
56
+ isPublic?: boolean;
57
+ };
58
+ };
@@ -1,42 +0,0 @@
1
- /**
2
- * ApiExtension model for ORM client
3
- * @generated by @constructive-io/graphql-codegen
4
- * DO NOT EDIT - changes will be overwritten
5
- */
6
- import { OrmClient } from '../client';
7
- import { QueryBuilder } from '../query-builder';
8
- import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
9
- import { type ApiExtensionWithRelations, type ApiExtensionSelect, type ApiExtensionFilter, type ApiExtensionsOrderBy, type CreateApiExtensionInput, type ApiExtensionPatch } from '../input-types';
10
- export declare class ApiExtensionModel {
11
- private client;
12
- constructor(client: OrmClient);
13
- findMany<const S extends ApiExtensionSelect>(args?: FindManyArgs<S, ApiExtensionFilter, ApiExtensionsOrderBy>): QueryBuilder<{
14
- apiExtensions: ConnectionResult<InferSelectResult<ApiExtensionWithRelations, S>>;
15
- }>;
16
- findFirst<const S extends ApiExtensionSelect>(args?: FindFirstArgs<S, ApiExtensionFilter>): QueryBuilder<{
17
- apiExtensions: {
18
- nodes: InferSelectResult<ApiExtensionWithRelations, S>[];
19
- };
20
- }>;
21
- create<const S extends ApiExtensionSelect>(args: CreateArgs<S, CreateApiExtensionInput['apiExtension']>): QueryBuilder<{
22
- createApiExtension: {
23
- apiExtension: InferSelectResult<ApiExtensionWithRelations, S>;
24
- };
25
- }>;
26
- update<const S extends ApiExtensionSelect>(args: UpdateArgs<S, {
27
- id: string;
28
- }, ApiExtensionPatch>): QueryBuilder<{
29
- updateApiExtension: {
30
- apiExtension: InferSelectResult<ApiExtensionWithRelations, S>;
31
- };
32
- }>;
33
- delete(args: DeleteArgs<{
34
- id: string;
35
- }>): QueryBuilder<{
36
- deleteApiExtension: {
37
- apiExtension: {
38
- id: string;
39
- };
40
- };
41
- }>;
42
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiExtensionModel = void 0;
4
- const query_builder_1 = require("../query-builder");
5
- // ============================================================================
6
- // Model Class
7
- // ============================================================================
8
- class ApiExtensionModel {
9
- client;
10
- constructor(client) {
11
- this.client = client;
12
- }
13
- findMany(args) {
14
- const { document, variables } = (0, query_builder_1.buildFindManyDocument)('ApiExtension', 'apiExtensions', args?.select, {
15
- where: args?.where,
16
- orderBy: args?.orderBy,
17
- first: args?.first,
18
- last: args?.last,
19
- after: args?.after,
20
- before: args?.before,
21
- offset: args?.offset,
22
- }, 'ApiExtensionFilter', 'ApiExtensionsOrderBy');
23
- return new query_builder_1.QueryBuilder({
24
- client: this.client,
25
- operation: 'query',
26
- operationName: 'ApiExtension',
27
- fieldName: 'apiExtensions',
28
- document,
29
- variables,
30
- });
31
- }
32
- findFirst(args) {
33
- const { document, variables } = (0, query_builder_1.buildFindFirstDocument)('ApiExtension', 'apiExtensions', args?.select, { where: args?.where }, 'ApiExtensionFilter');
34
- return new query_builder_1.QueryBuilder({
35
- client: this.client,
36
- operation: 'query',
37
- operationName: 'ApiExtension',
38
- fieldName: 'apiExtensions',
39
- document,
40
- variables,
41
- });
42
- }
43
- create(args) {
44
- const { document, variables } = (0, query_builder_1.buildCreateDocument)('ApiExtension', 'createApiExtension', 'apiExtension', args.select, args.data, 'CreateApiExtensionInput');
45
- return new query_builder_1.QueryBuilder({
46
- client: this.client,
47
- operation: 'mutation',
48
- operationName: 'ApiExtension',
49
- fieldName: 'createApiExtension',
50
- document,
51
- variables,
52
- });
53
- }
54
- update(args) {
55
- const { document, variables } = (0, query_builder_1.buildUpdateDocument)('ApiExtension', 'updateApiExtension', 'apiExtension', args.select, args.where, args.data, 'UpdateApiExtensionInput');
56
- return new query_builder_1.QueryBuilder({
57
- client: this.client,
58
- operation: 'mutation',
59
- operationName: 'ApiExtension',
60
- fieldName: 'updateApiExtension',
61
- document,
62
- variables,
63
- });
64
- }
65
- delete(args) {
66
- const { document, variables } = (0, query_builder_1.buildDeleteDocument)('ApiExtension', 'deleteApiExtension', 'apiExtension', args.where, 'DeleteApiExtensionInput');
67
- return new query_builder_1.QueryBuilder({
68
- client: this.client,
69
- operation: 'mutation',
70
- operationName: 'ApiExtension',
71
- fieldName: 'deleteApiExtension',
72
- document,
73
- variables,
74
- });
75
- }
76
- }
77
- exports.ApiExtensionModel = ApiExtensionModel;
@@ -1,42 +0,0 @@
1
- /**
2
- * ApiModule model for ORM client
3
- * @generated by @constructive-io/graphql-codegen
4
- * DO NOT EDIT - changes will be overwritten
5
- */
6
- import { OrmClient } from '../client';
7
- import { QueryBuilder } from '../query-builder';
8
- import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
9
- import { type ApiModuleWithRelations, type ApiModuleSelect, type ApiModuleFilter, type ApiModulesOrderBy, type CreateApiModuleInput, type ApiModulePatch } from '../input-types';
10
- export declare class ApiModuleModel {
11
- private client;
12
- constructor(client: OrmClient);
13
- findMany<const S extends ApiModuleSelect>(args?: FindManyArgs<S, ApiModuleFilter, ApiModulesOrderBy>): QueryBuilder<{
14
- apiModules: ConnectionResult<InferSelectResult<ApiModuleWithRelations, S>>;
15
- }>;
16
- findFirst<const S extends ApiModuleSelect>(args?: FindFirstArgs<S, ApiModuleFilter>): QueryBuilder<{
17
- apiModules: {
18
- nodes: InferSelectResult<ApiModuleWithRelations, S>[];
19
- };
20
- }>;
21
- create<const S extends ApiModuleSelect>(args: CreateArgs<S, CreateApiModuleInput['apiModule']>): QueryBuilder<{
22
- createApiModule: {
23
- apiModule: InferSelectResult<ApiModuleWithRelations, S>;
24
- };
25
- }>;
26
- update<const S extends ApiModuleSelect>(args: UpdateArgs<S, {
27
- id: string;
28
- }, ApiModulePatch>): QueryBuilder<{
29
- updateApiModule: {
30
- apiModule: InferSelectResult<ApiModuleWithRelations, S>;
31
- };
32
- }>;
33
- delete(args: DeleteArgs<{
34
- id: string;
35
- }>): QueryBuilder<{
36
- deleteApiModule: {
37
- apiModule: {
38
- id: string;
39
- };
40
- };
41
- }>;
42
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ApiModuleModel = void 0;
4
- const query_builder_1 = require("../query-builder");
5
- // ============================================================================
6
- // Model Class
7
- // ============================================================================
8
- class ApiModuleModel {
9
- client;
10
- constructor(client) {
11
- this.client = client;
12
- }
13
- findMany(args) {
14
- const { document, variables } = (0, query_builder_1.buildFindManyDocument)('ApiModule', 'apiModules', args?.select, {
15
- where: args?.where,
16
- orderBy: args?.orderBy,
17
- first: args?.first,
18
- last: args?.last,
19
- after: args?.after,
20
- before: args?.before,
21
- offset: args?.offset,
22
- }, 'ApiModuleFilter', 'ApiModulesOrderBy');
23
- return new query_builder_1.QueryBuilder({
24
- client: this.client,
25
- operation: 'query',
26
- operationName: 'ApiModule',
27
- fieldName: 'apiModules',
28
- document,
29
- variables,
30
- });
31
- }
32
- findFirst(args) {
33
- const { document, variables } = (0, query_builder_1.buildFindFirstDocument)('ApiModule', 'apiModules', args?.select, { where: args?.where }, 'ApiModuleFilter');
34
- return new query_builder_1.QueryBuilder({
35
- client: this.client,
36
- operation: 'query',
37
- operationName: 'ApiModule',
38
- fieldName: 'apiModules',
39
- document,
40
- variables,
41
- });
42
- }
43
- create(args) {
44
- const { document, variables } = (0, query_builder_1.buildCreateDocument)('ApiModule', 'createApiModule', 'apiModule', args.select, args.data, 'CreateApiModuleInput');
45
- return new query_builder_1.QueryBuilder({
46
- client: this.client,
47
- operation: 'mutation',
48
- operationName: 'ApiModule',
49
- fieldName: 'createApiModule',
50
- document,
51
- variables,
52
- });
53
- }
54
- update(args) {
55
- const { document, variables } = (0, query_builder_1.buildUpdateDocument)('ApiModule', 'updateApiModule', 'apiModule', args.select, args.where, args.data, 'UpdateApiModuleInput');
56
- return new query_builder_1.QueryBuilder({
57
- client: this.client,
58
- operation: 'mutation',
59
- operationName: 'ApiModule',
60
- fieldName: 'updateApiModule',
61
- document,
62
- variables,
63
- });
64
- }
65
- delete(args) {
66
- const { document, variables } = (0, query_builder_1.buildDeleteDocument)('ApiModule', 'deleteApiModule', 'apiModule', args.where, 'DeleteApiModuleInput');
67
- return new query_builder_1.QueryBuilder({
68
- client: this.client,
69
- operation: 'mutation',
70
- operationName: 'ApiModule',
71
- fieldName: 'deleteApiModule',
72
- document,
73
- variables,
74
- });
75
- }
76
- }
77
- exports.ApiModuleModel = ApiModuleModel;
@@ -1,42 +0,0 @@
1
- /**
2
- * ApiSchema model for ORM client
3
- * @generated by @constructive-io/graphql-codegen
4
- * DO NOT EDIT - changes will be overwritten
5
- */
6
- import { OrmClient } from '../client';
7
- import { QueryBuilder } from '../query-builder';
8
- import { type ConnectionResult, type FindManyArgs, type FindFirstArgs, type CreateArgs, type UpdateArgs, type DeleteArgs, type InferSelectResult } from '../select-types';
9
- import { type ApiSchemaWithRelations, type ApiSchemaSelect, type ApiSchemaFilter, type ApiSchemasOrderBy, type CreateApiSchemaInput, type ApiSchemaPatch } from '../input-types';
10
- export declare class ApiSchemaModel {
11
- private client;
12
- constructor(client: OrmClient);
13
- findMany<const S extends ApiSchemaSelect>(args?: FindManyArgs<S, ApiSchemaFilter, ApiSchemasOrderBy>): QueryBuilder<{
14
- apiSchemas: ConnectionResult<InferSelectResult<ApiSchemaWithRelations, S>>;
15
- }>;
16
- findFirst<const S extends ApiSchemaSelect>(args?: FindFirstArgs<S, ApiSchemaFilter>): QueryBuilder<{
17
- apiSchemas: {
18
- nodes: InferSelectResult<ApiSchemaWithRelations, S>[];
19
- };
20
- }>;
21
- create<const S extends ApiSchemaSelect>(args: CreateArgs<S, CreateApiSchemaInput['apiSchema']>): QueryBuilder<{
22
- createApiSchema: {
23
- apiSchema: InferSelectResult<ApiSchemaWithRelations, S>;
24
- };
25
- }>;
26
- update<const S extends ApiSchemaSelect>(args: UpdateArgs<S, {
27
- id: string;
28
- }, ApiSchemaPatch>): QueryBuilder<{
29
- updateApiSchema: {
30
- apiSchema: InferSelectResult<ApiSchemaWithRelations, S>;
31
- };
32
- }>;
33
- delete(args: DeleteArgs<{
34
- id: string;
35
- }>): QueryBuilder<{
36
- deleteApiSchema: {
37
- apiSchema: {
38
- id: string;
39
- };
40
- };
41
- }>;
42
- }