cruddl 2.7.0-alpha.1 → 3.0.0-alpha.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.
Files changed (94) hide show
  1. package/.github/workflows/ci.yml +1 -1
  2. package/.nvmrc +1 -0
  3. package/.prettierrc +2 -1
  4. package/README.md +27 -16
  5. package/dist/core-exports.d.ts +1 -1
  6. package/dist/spec/database/arangodb/schema-migration/arango-search-helper.spec.js +5 -3
  7. package/dist/spec/database/arangodb/schema-migration/arango-search-helper.spec.js.map +1 -1
  8. package/dist/spec/dev/fast-server.js +9 -11
  9. package/dist/spec/dev/fast-server.js.map +1 -1
  10. package/dist/spec/dev/server.js +9 -9
  11. package/dist/spec/dev/server.js.map +1 -1
  12. package/dist/spec/meta-schema/meta-schema.spec.js +133 -133
  13. package/dist/spec/meta-schema/meta-schema.spec.js.map +1 -1
  14. package/dist/spec/performance/support/helpers.js +9 -9
  15. package/dist/spec/performance/support/helpers.js.map +1 -1
  16. package/dist/spec/project/project.spec.js +7 -7
  17. package/dist/spec/project/project.spec.js.map +1 -1
  18. package/dist/spec/regression/regression-suite.js +15 -15
  19. package/dist/spec/regression/regression-suite.js.map +1 -1
  20. package/dist/spec/schema-generation/createdat-updatedat-modification.spec.js +14 -12
  21. package/dist/spec/schema-generation/createdat-updatedat-modification.spec.js.map +1 -1
  22. package/dist/src/authorization/auth-basics.d.ts +14 -1
  23. package/dist/src/authorization/permission-descriptors.d.ts +8 -2
  24. package/dist/src/authorization/permission-descriptors.js +118 -13
  25. package/dist/src/authorization/permission-descriptors.js.map +1 -1
  26. package/dist/src/config/interfaces.d.ts +10 -7
  27. package/dist/src/database/arangodb/aql-generator.js +30 -25
  28. package/dist/src/database/arangodb/aql-generator.js.map +1 -1
  29. package/dist/src/database/arangodb/schema-migration/analyzer.js +20 -22
  30. package/dist/src/database/arangodb/schema-migration/analyzer.js.map +1 -1
  31. package/dist/src/database/arangodb/schema-migration/arango-search-helpers.d.ts +2 -0
  32. package/dist/src/database/arangodb/schema-migration/arango-search-helpers.js +44 -27
  33. package/dist/src/database/arangodb/schema-migration/arango-search-helpers.js.map +1 -1
  34. package/dist/src/database/inmemory/inmemory-adapter.js +12 -6
  35. package/dist/src/database/inmemory/inmemory-adapter.js.map +1 -1
  36. package/dist/src/database/inmemory/js-generator.js +41 -27
  37. package/dist/src/database/inmemory/js-generator.js.map +1 -1
  38. package/dist/src/execution/execution-options.d.ts +3 -4
  39. package/dist/src/execution/operation-resolver.js +21 -21
  40. package/dist/src/execution/operation-resolver.js.map +1 -1
  41. package/dist/src/meta-schema/meta-schema.js +34 -35
  42. package/dist/src/meta-schema/meta-schema.js.map +1 -1
  43. package/dist/src/model/config/field.d.ts +7 -0
  44. package/dist/src/model/config/field.js.map +1 -1
  45. package/dist/src/model/config/indices.d.ts +2 -1
  46. package/dist/src/model/config/model.d.ts +2 -2
  47. package/dist/src/model/config/permissions.d.ts +26 -3
  48. package/dist/src/model/create-model.d.ts +2 -2
  49. package/dist/src/model/create-model.js +81 -62
  50. package/dist/src/model/create-model.js.map +1 -1
  51. package/dist/src/model/implementation/field-path.d.ts +2 -0
  52. package/dist/src/model/implementation/field-path.js +11 -0
  53. package/dist/src/model/implementation/field-path.js.map +1 -1
  54. package/dist/src/model/implementation/field.d.ts +12 -0
  55. package/dist/src/model/implementation/field.js +104 -53
  56. package/dist/src/model/implementation/field.js.map +1 -1
  57. package/dist/src/model/implementation/model.d.ts +6 -2
  58. package/dist/src/model/implementation/model.js +20 -16
  59. package/dist/src/model/implementation/model.js.map +1 -1
  60. package/dist/src/model/implementation/permission-profile.d.ts +22 -4
  61. package/dist/src/model/implementation/permission-profile.js +56 -18
  62. package/dist/src/model/implementation/permission-profile.js.map +1 -1
  63. package/dist/src/model/implementation/root-entity-type.d.ts +2 -0
  64. package/dist/src/model/implementation/root-entity-type.js +83 -28
  65. package/dist/src/model/implementation/root-entity-type.js.map +1 -1
  66. package/dist/src/project/project.js +12 -13
  67. package/dist/src/project/project.js.map +1 -1
  68. package/dist/src/query-tree/operators.js +1 -1
  69. package/dist/src/schema/constants.d.ts +1 -0
  70. package/dist/src/schema/constants.js +6 -5
  71. package/dist/src/schema/constants.js.map +1 -1
  72. package/dist/src/schema/graphql-base.js +3 -0
  73. package/dist/src/schema/graphql-base.js.map +1 -1
  74. package/dist/src/schema/preparation/source-validation-modules/schema/schema.json +49 -0
  75. package/dist/src/schema/preparation/source-validation-modules/schema/validate-schema.js +1073 -721
  76. package/dist/src/schema/schema-builder.js +18 -21
  77. package/dist/src/schema/schema-builder.js.map +1 -1
  78. package/dist/src/schema-generation/flex-search-filter-input-types/filter-fields.js +13 -6
  79. package/dist/src/schema-generation/flex-search-filter-input-types/filter-fields.js.map +1 -1
  80. package/dist/src/schema-generation/order-by-and-pagination-augmentation.js +60 -42
  81. package/dist/src/schema-generation/order-by-and-pagination-augmentation.js.map +1 -1
  82. package/dist/src/schema-generation/output-type-generator.js +1 -1
  83. package/dist/src/schema-generation/output-type-generator.js.map +1 -1
  84. package/dist/src/schema-generation/utils/flex-search-utils.js +1 -0
  85. package/dist/src/schema-generation/utils/flex-search-utils.js.map +1 -1
  86. package/docs/api.md +58 -40
  87. package/docs/architecture.md +18 -18
  88. package/docs/billing.md +14 -9
  89. package/docs/flexSearch.md +32 -24
  90. package/docs/i18n.md +68 -56
  91. package/docs/modelling.md +256 -83
  92. package/docs/time-to-live.md +4 -4
  93. package/example/index.ts +40 -42
  94. package/package.json +2 -2
@@ -6,7 +6,7 @@ jobs:
6
6
  strategy:
7
7
  matrix:
8
8
  arango-image: ['arangodb:3.6', 'arangodb:3.7', 'arangodb:3.8', 'arangodb:3.9']
9
- node-version: [12.x, 14.x, 16.x]
9
+ node-version: [14.x, 16.x]
10
10
  steps:
11
11
  - uses: actions/checkout@v2
12
12
  - name: Use Node.js ${{ matrix.node-version }}
package/.nvmrc ADDED
@@ -0,0 +1 @@
1
+ 16
package/.prettierrc CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "tabWidth": 4,
3
3
  "singleQuote": true,
4
- "printWidth": 120
4
+ "printWidth": 120,
5
+ "proseWrap": "always"
5
6
  }
package/README.md CHANGED
@@ -1,10 +1,16 @@
1
1
  # cruddl
2
2
 
3
- [![npm version](https://badge.fury.io/js/cruddl.svg)](https://npmjs.org/cruddl) [![Build Status](https://github.com/AEB-labs/cruddl/workflows/CI/badge.svg)](https://github.com/AEB-labs/cruddl/actions?query=branch%3Amaster) [![Package Quality](https://npm.packagequality.com/shield/cruddl.svg)](https://packagequality.com/#?package=cruddl)
3
+ [![npm version](https://badge.fury.io/js/cruddl.svg)](https://npmjs.org/cruddl)
4
+ [![Build Status](https://github.com/AEB-labs/cruddl/workflows/CI/badge.svg)](https://github.com/AEB-labs/cruddl/actions?query=branch%3Amaster)
5
+ [![Package Quality](https://npm.packagequality.com/shield/cruddl.svg)](https://packagequality.com/#?package=cruddl)
4
6
 
5
7
  **cruddl** - create a cuddly GraphQL API for your database, using the GraphQL SDL to model your schema.
6
8
 
7
- This TypeScript library creates an executable GraphQL schema from a model definition and provides queries and mutations to access a database. Currently, it supports the multi-model database [ArangoDB](https://www.arangodb.com/). The concept being inspired by existing projects like [prisma](https://github.com/graphcool/prisma) and [join-monster](https://github.com/stems/join-monster), cruddl exploits the expressiveness of the Arango Query Language (AQL) to generate one tailored query for each GraphQL request.
9
+ This TypeScript library creates an executable GraphQL schema from a model definition and provides queries and mutations
10
+ to access a database. Currently, it supports the multi-model database [ArangoDB](https://www.arangodb.com/). The concept
11
+ being inspired by existing projects like [prisma](https://github.com/graphcool/prisma) and
12
+ [join-monster](https://github.com/stems/join-monster), cruddl exploits the expressiveness of the Arango Query Language
13
+ (AQL) to generate one tailored query for each GraphQL request.
8
14
 
9
15
  **[Try it online](https://aeb-labs.github.io/cruddl/)**
10
16
 
@@ -31,11 +37,12 @@ const db = new ArangoDBAdapter({
31
37
  databaseName: 'databaseName',
32
38
  url: 'http://root:@localhost:8529',
33
39
  user: 'root',
34
- password: ''
40
+ password: '',
35
41
  });
36
42
  ```
37
43
 
38
- If you just want to explore the features, you can also use an in-memory database implementation - but don't use this for anything else.
44
+ If you just want to explore the features, you can also use an in-memory database implementation - but don't use this for
45
+ anything else.
39
46
 
40
47
  ```typescript
41
48
  import { InMemoryAdapter } from 'cruddl';
@@ -59,7 +66,7 @@ const project = new Project({
59
66
  type Actor @rootEntity {
60
67
  name: String
61
68
  movies: Movie @relation(inverseOf: "actors")
62
- }`
69
+ }`,
63
70
  },
64
71
  {
65
72
  name: 'permission-profiles.json',
@@ -69,16 +76,16 @@ const project = new Project({
69
76
  permissions: [
70
77
  {
71
78
  roles: ['users'],
72
- access: 'readWrite'
73
- }
74
- ]
75
- }
76
- }
77
- })
78
- }
79
+ access: 'readWrite',
80
+ },
81
+ ],
82
+ },
83
+ },
84
+ }),
85
+ },
79
86
  ],
80
- getExecutionOptions: ({ context }) => ({ authRoles: ['users'] }),
81
- getOperationIdentifier: ({ context }) => context as object // each operation is executed with an unique context object
87
+ getExecutionOptions: ({ context }) => ({ authContext: { authRoles: ['users'] } }),
88
+ getOperationIdentifier: ({ context }) => context as object, // each operation is executed with an unique context object
82
89
  });
83
90
  ```
84
91
 
@@ -90,7 +97,7 @@ const schema = project.createSchema(db);
90
97
  db.updateSchema(project.getModel()); // create missing collections
91
98
  const server = new ApolloServer({
92
99
  schema,
93
- context: ({ req }) => req // pass request as context so we have a unique context object for each operation
100
+ context: ({ req }) => req, // pass request as context so we have a unique context object for each operation
94
101
  });
95
102
  server.listen(4000, () => console.log('Server is running on http://localhost:4000/'));
96
103
  ```
@@ -99,7 +106,11 @@ See the [modelling guide](docs/modelling.md) and the [api documentation](docs/ap
99
106
 
100
107
  ### Usage in a browser environment
101
108
 
102
- The core of cruddl perfectly works in a browser (e.g., using webpack), and this can be useful to generate a mock GraphQL schema on the fly or to validate a cruddl project. However, the ArangoDB adapter only works with node imports like `path`. Unless you configure webpack to provide mock modules for them, you will get an error when you import `cruddl` in a webpack environment. To solve this, you can import the core symbols from `cruddl/core` and the `InMemoryAdapter` from `cruddl/inmemory`.
109
+ The core of cruddl perfectly works in a browser (e.g., using webpack), and this can be useful to generate a mock GraphQL
110
+ schema on the fly or to validate a cruddl project. However, the ArangoDB adapter only works with node imports like
111
+ `path`. Unless you configure webpack to provide mock modules for them, you will get an error when you import `cruddl` in
112
+ a webpack environment. To solve this, you can import the core symbols from `cruddl/core` and the `InMemoryAdapter` from
113
+ `cruddl/inmemory`.
103
114
 
104
115
  ## Running Tests
105
116
 
@@ -1,4 +1,4 @@
1
- export { RequestProfile, ProjectOptions, RequestContext, ModelValidationOptions } from './src/config/interfaces';
1
+ export { RequestProfile, ProjectOptions, RequestContext, ModelOptions } from './src/config/interfaces';
2
2
  export { FieldResolverParameters } from './src/graphql/operation-based-resolvers';
3
3
  export { Project, ProjectConfig } from './src/project/project';
4
4
  export { InvalidProjectError } from './src/project/invalid-project-error';
@@ -19,7 +19,8 @@ describe('arango-search-helper', () => {
19
19
  const view = views[0];
20
20
  chai_1.expect(view.primarySort).to.deep.equal([
21
21
  { field: 'deliveryNumber', asc: false },
22
- { field: '_key', asc: true }
22
+ { field: 'createdAt', asc: false },
23
+ { field: '_key', asc: false },
23
24
  ]);
24
25
  });
25
26
  it('uses _key instead of id in primary sort', () => {
@@ -37,7 +38,7 @@ describe('arango-search-helper', () => {
37
38
  const view = views[0];
38
39
  chai_1.expect(view.primarySort).to.deep.equal([
39
40
  { field: '_key', asc: false },
40
- { field: 'deliveryNumber', asc: true }
41
+ { field: 'deliveryNumber', asc: true },
41
42
  ]);
42
43
  });
43
44
  it('leaves id fields in value objects in primary sort alone', () => {
@@ -56,7 +57,8 @@ describe('arango-search-helper', () => {
56
57
  const view = views[0];
57
58
  chai_1.expect(view.primarySort).to.deep.equal([
58
59
  { field: 'value.id', asc: false },
59
- { field: '_key', asc: true }
60
+ { field: 'createdAt', asc: false },
61
+ { field: '_key', asc: false },
60
62
  ]);
61
63
  });
62
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"arango-search-helper.spec.js","sourceRoot":"","sources":["../../../../../spec/database/arangodb/schema-migration/arango-search-helper.spec.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,sEAA8B;AAC9B,oHAAqH;AACrH,wEAAqE;AAErE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACtC,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;aAKlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE;gBACvC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;aAC/B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;;;;aAQlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;gBAC7B,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE;aACzC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;;;;;aASlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE;gBACjC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;aAC/B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"arango-search-helper.spec.js","sourceRoot":"","sources":["../../../../../spec/database/arangodb/schema-migration/arango-search-helper.spec.ts"],"names":[],"mappings":";;;AAAA,+BAA8B;AAC9B,sEAA8B;AAC9B,oHAAqH;AACrH,wEAAqE;AAErE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAClC,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACtC,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;aAKlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE;gBACvC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE;gBAClC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;aAChC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YAC/C,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;;;;aAQlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;gBAC7B,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE;aACzC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YAC/D,MAAM,KAAK,GAAG,qCAAiB,CAAC,qBAAG,CAAA;;;;;;;;;aASlC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,iDAAyB,CAAC,KAAK,CAAC,CAAC;YAC/C,aAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,aAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;gBACnC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE;gBACjC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE;gBAClC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;aAChC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -5,36 +5,32 @@ const graphql_1 = require("graphql");
5
5
  function createFastApp(project, databaseAdapter) {
6
6
  const executor = project.createSchemaExecutor(databaseAdapter);
7
7
  const slowSchema = project.createSchema(databaseAdapter);
8
- const contextValue = { authRoles: ['allusers', 'logistics-reader', 'system'] };
9
8
  return async (req, res) => {
10
9
  const { query, operationName, variables: variableValues } = req.body;
11
10
  const document = graphql_1.parse(query);
12
11
  const validationErrors = graphql_1.validate(slowSchema, document);
13
12
  if (validationErrors.length) {
14
13
  res.end(JSON.stringify({
15
- errors: validationErrors.map(e => graphql_1.formatError(e))
14
+ errors: validationErrors.map((e) => graphql_1.formatError(e)),
16
15
  }));
17
16
  }
18
17
  const fastPromise = executor.tryExecute({
19
18
  document,
20
19
  variableValues,
21
- contextValue,
22
20
  operationName,
23
21
  options: {
24
22
  recordPlan: true,
25
23
  recordTimings: true,
26
24
  mutationMode: 'rollback',
27
25
  queryMemoryLimit: 5000000,
28
- authRoles: contextValue.authRoles
29
- }
26
+ },
30
27
  });
31
28
  if (!fastPromise) {
32
29
  const { data, errors } = await graphql_1.execute({
33
30
  schema: slowSchema,
34
- contextValue,
35
31
  operationName,
36
32
  rootValue: {},
37
- document
33
+ document,
38
34
  });
39
35
  res.end(JSON.stringify({ data, errors }));
40
36
  return;
@@ -43,14 +39,16 @@ function createFastApp(project, databaseAdapter) {
43
39
  const result = await fastPromise;
44
40
  res.end(JSON.stringify({
45
41
  data: result.data,
46
- errors: result.error ? [graphql_1.formatError(new graphql_1.GraphQLError(result.error.message, undefined, undefined, undefined, undefined, result.error))] : undefined
42
+ errors: result.error
43
+ ? [
44
+ graphql_1.formatError(new graphql_1.GraphQLError(result.error.message, undefined, undefined, undefined, undefined, result.error)),
45
+ ]
46
+ : undefined,
47
47
  }));
48
48
  }
49
49
  catch (e) {
50
50
  res.end(JSON.stringify({
51
- errors: [
52
- graphql_1.formatError(new graphql_1.GraphQLError(e.stack))
53
- ]
51
+ errors: [graphql_1.formatError(new graphql_1.GraphQLError(e.stack))],
54
52
  }));
55
53
  }
56
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"fast-server.js","sourceRoot":"","sources":["../../../spec/dev/fast-server.ts"],"names":[],"mappings":";;;AACA,qCAA8E;AAI9E,SAAgB,aAAa,CAAC,OAAgB,EAAE,eAAgC;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,CAAC;IAE/E,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACrE,MAAM,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,kBAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,gBAAgB,CAAC,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAW,CAAC,CAAC,CAAC,CAAC;aACpD,CAAC,CAAC,CAAC;SACP;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;YACpC,QAAQ;YACR,cAAc;YACd,YAAY;YACZ,aAAa;YACb,OAAO,EAAE;gBACL,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,UAAU;gBACxB,gBAAgB,EAAE,OAAO;gBACzB,SAAS,EAAE,YAAY,CAAC,SAAS;aACpC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAO,CAAC;gBACnC,MAAM,EAAE,UAAU;gBAClB,YAAY;gBACZ,aAAa;gBACb,SAAS,EAAE,EAAE;gBACb,QAAQ;aACX,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO;SACV;QAED,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YACjC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAW,CAAC,IAAI,sBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;aACrJ,CAAC,CAAC,CAAC;SACP;QAAC,OAAO,CAAC,EAAE;YACR,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE;oBACJ,qBAAW,CAAC,IAAI,sBAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBACzC;aACJ,CAAC,CAAC,CAAC;SACP;IACL,CAAC,CAAC;AACN,CAAC;AAtDD,sCAsDC"}
1
+ {"version":3,"file":"fast-server.js","sourceRoot":"","sources":["../../../spec/dev/fast-server.ts"],"names":[],"mappings":";;;AACA,qCAA8E;AAK9E,SAAgB,aAAa,CAAC,OAAgB,EAAE,eAAgC;IAC5E,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IAEzD,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtB,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QACrE,MAAM,QAAQ,GAAG,eAAK,CAAC,KAAK,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,kBAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,gBAAgB,CAAC,MAAM,EAAE;YACzB,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;gBACX,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAW,CAAC,CAAC,CAAC,CAAC;aACtD,CAAC,CACL,CAAC;SACL;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC;YACpC,QAAQ;YACR,cAAc;YACd,aAAa;YACb,OAAO,EAAE;gBACL,UAAU,EAAE,IAAI;gBAChB,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,UAAU;gBACxB,gBAAgB,EAAE,OAAO;aAC5B;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE;YACd,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAO,CAAC;gBACnC,MAAM,EAAE,UAAU;gBAClB,aAAa;gBACb,SAAS,EAAE,EAAE;gBACb,QAAQ;aACX,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO;SACV;QAED,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;YACjC,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,KAAK;oBAChB,CAAC,CAAC;wBACI,qBAAW,CACP,IAAI,sBAAY,CACZ,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CAAC,KAAK,CACf,CACJ;qBACJ;oBACH,CAAC,CAAC,SAAS;aAClB,CAAC,CACL,CAAC;SACL;QAAC,OAAO,CAAC,EAAE;YACR,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;gBACX,MAAM,EAAE,CAAC,qBAAW,CAAC,IAAI,sBAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aACnD,CAAC,CACL,CAAC;SACL;IACL,CAAC,CAAC;AACN,CAAC;AAlED,sCAkEC"}
@@ -30,30 +30,30 @@ async function start() {
30
30
  databaseName,
31
31
  url: databaseURL,
32
32
  doNonMandatoryMigrations: true,
33
- createIndicesInBackground: true
33
+ createIndicesInBackground: true,
34
34
  }, { loggerProvider });
35
35
  }
36
36
  const project = await project_from_fs_1.loadProjectFromDir(path.resolve(__dirname, './model'), {
37
- profileConsumer: profile => {
37
+ profileConsumer: (profile) => {
38
38
  logger.info(`${profile.operation.operation} ${profile.operation.name ? profile.operation.name.value : '<anonymous>'}: ${JSON.stringify(profile.timings, undefined, ' ')}`);
39
39
  },
40
40
  getOperationIdentifier: ({ context }) => context,
41
41
  getExecutionOptions: ({ context }) => {
42
42
  return {
43
- authRoles: ['logistics-reader'],
43
+ authContext: { authRoles: ['allusers'] },
44
44
  recordTimings: true,
45
45
  recordPlan: true,
46
46
  mutationMode: 'normal',
47
- disableAuthorization: true,
47
+ disableAuthorization: false,
48
48
  //queryMemoryLimit: 1000000,
49
- cancellationToken: new Promise(resolve => context.req.on('aborted', resolve))
49
+ cancellationToken: new Promise((resolve) => context.req.on('aborted', resolve)),
50
50
  };
51
51
  },
52
52
  /*processError(error: Error) {
53
53
  console.error(`Internal error: ${error.stack}`);
54
54
  return new Error(`Internal error`);
55
55
  },*/
56
- loggerProvider
56
+ loggerProvider,
57
57
  });
58
58
  const schema = project.createSchema(db);
59
59
  const logger = global_1.globalContext.loggerProvider.getLogger('server');
@@ -62,7 +62,7 @@ async function start() {
62
62
  logger.info('Schema is up to date');
63
63
  if (process.argv.includes('--run-ttl-cleanup')) {
64
64
  const result = await project.executeTTLCleanupExt(db, {
65
- timeToLiveOptions: { cleanupLimit: 100, reduceLimitOnResourceLimits: true }
65
+ timeToLiveOptions: { cleanupLimit: 100, reduceLimitOnResourceLimits: true },
66
66
  });
67
67
  for (const type of result.types) {
68
68
  if (type.error) {
@@ -78,7 +78,7 @@ async function start() {
78
78
  }
79
79
  const server = new apollo_server_1.ApolloServer({
80
80
  schema: schema,
81
- context: props => props
81
+ context: (props) => props,
82
82
  });
83
83
  const fastServer = express_1.default();
84
84
  fastServer.use(cors_1.default());
@@ -100,7 +100,7 @@ async function startMetaServer(project) {
100
100
  const metaSchemaPort = port + 1;
101
101
  const metaSchemaServer = new apollo_server_1.ApolloServer({
102
102
  schema: meta_schema_1.getMetaSchema(project),
103
- context: { locale: 'en' }
103
+ context: { locale: 'en' },
104
104
  });
105
105
  expressServerReference = await metaSchemaServer.listen({ port: metaSchemaPort });
106
106
  logger.info(`Meta-Schema-Server started on http://localhost:${metaSchemaPort}`);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../spec/dev/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../spec/dev/server.ts"],"names":[],"mappings":"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"}