@directus/api 24.0.0 → 25.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/app.js +10 -4
  2. package/dist/auth/drivers/oauth2.js +2 -3
  3. package/dist/auth/drivers/openid.js +2 -3
  4. package/dist/cache.d.ts +2 -2
  5. package/dist/cache.js +20 -7
  6. package/dist/controllers/assets.js +2 -2
  7. package/dist/controllers/metrics.d.ts +2 -0
  8. package/dist/controllers/metrics.js +33 -0
  9. package/dist/controllers/server.js +1 -1
  10. package/dist/database/get-ast-from-query/lib/parse-fields.js +4 -3
  11. package/dist/database/helpers/index.d.ts +1 -3
  12. package/dist/database/helpers/index.js +1 -3
  13. package/dist/database/helpers/number/dialects/mssql.d.ts +2 -2
  14. package/dist/database/helpers/number/dialects/mssql.js +3 -3
  15. package/dist/database/helpers/number/dialects/oracle.d.ts +2 -2
  16. package/dist/database/helpers/number/dialects/oracle.js +2 -2
  17. package/dist/database/helpers/number/dialects/sqlite.d.ts +2 -2
  18. package/dist/database/helpers/number/dialects/sqlite.js +2 -2
  19. package/dist/database/helpers/number/types.d.ts +2 -2
  20. package/dist/database/helpers/number/types.js +2 -2
  21. package/dist/database/helpers/schema/dialects/oracle.d.ts +6 -1
  22. package/dist/database/helpers/schema/dialects/oracle.js +15 -0
  23. package/dist/database/helpers/schema/types.d.ts +3 -1
  24. package/dist/database/helpers/schema/types.js +9 -0
  25. package/dist/database/index.js +3 -0
  26. package/dist/metrics/index.d.ts +1 -0
  27. package/dist/metrics/index.js +1 -0
  28. package/dist/metrics/lib/create-metrics.d.ts +15 -0
  29. package/dist/metrics/lib/create-metrics.js +239 -0
  30. package/dist/metrics/lib/use-metrics.d.ts +17 -0
  31. package/dist/metrics/lib/use-metrics.js +15 -0
  32. package/dist/metrics/types/metric.d.ts +1 -0
  33. package/dist/metrics/types/metric.js +1 -0
  34. package/dist/middleware/respond.js +7 -1
  35. package/dist/operations/condition/index.js +7 -2
  36. package/dist/operations/mail/index.d.ts +6 -3
  37. package/dist/operations/mail/index.js +2 -2
  38. package/dist/schedules/metrics.d.ts +7 -0
  39. package/dist/schedules/metrics.js +44 -0
  40. package/dist/services/assets.d.ts +6 -1
  41. package/dist/services/assets.js +8 -6
  42. package/dist/services/fields.js +23 -39
  43. package/dist/services/files.js +6 -5
  44. package/dist/services/graphql/errors/format.d.ts +6 -0
  45. package/dist/services/graphql/errors/format.js +14 -0
  46. package/dist/services/graphql/index.d.ts +5 -53
  47. package/dist/services/graphql/index.js +5 -2720
  48. package/dist/services/graphql/resolvers/mutation.d.ts +4 -0
  49. package/dist/services/graphql/resolvers/mutation.js +74 -0
  50. package/dist/services/graphql/resolvers/query.d.ts +8 -0
  51. package/dist/services/graphql/resolvers/query.js +87 -0
  52. package/dist/services/graphql/resolvers/system-admin.d.ts +5 -0
  53. package/dist/services/graphql/resolvers/system-admin.js +236 -0
  54. package/dist/services/graphql/resolvers/system-global.d.ts +7 -0
  55. package/dist/services/graphql/resolvers/system-global.js +435 -0
  56. package/dist/services/graphql/resolvers/system.d.ts +11 -0
  57. package/dist/services/graphql/resolvers/system.js +554 -0
  58. package/dist/services/graphql/schema/get-types.d.ts +12 -0
  59. package/dist/services/graphql/schema/get-types.js +223 -0
  60. package/dist/services/graphql/schema/index.d.ts +32 -0
  61. package/dist/services/graphql/schema/index.js +190 -0
  62. package/dist/services/graphql/schema/parse-args.d.ts +9 -0
  63. package/dist/services/graphql/schema/parse-args.js +35 -0
  64. package/dist/services/graphql/schema/parse-query.d.ts +7 -0
  65. package/dist/services/graphql/schema/parse-query.js +98 -0
  66. package/dist/services/graphql/schema/read.d.ts +12 -0
  67. package/dist/services/graphql/schema/read.js +653 -0
  68. package/dist/services/graphql/schema/write.d.ts +9 -0
  69. package/dist/services/graphql/schema/write.js +142 -0
  70. package/dist/services/graphql/subscription.d.ts +1 -1
  71. package/dist/services/graphql/subscription.js +7 -6
  72. package/dist/services/graphql/utils/aggrgate-query.d.ts +6 -0
  73. package/dist/services/graphql/utils/aggrgate-query.js +32 -0
  74. package/dist/services/graphql/utils/replace-fragments.d.ts +6 -0
  75. package/dist/services/graphql/utils/replace-fragments.js +21 -0
  76. package/dist/services/graphql/utils/replace-funcs.d.ts +5 -0
  77. package/dist/services/graphql/utils/replace-funcs.js +21 -0
  78. package/dist/services/graphql/utils/sanitize-gql-schema.d.ts +1 -1
  79. package/dist/services/graphql/utils/sanitize-gql-schema.js +5 -5
  80. package/dist/services/items.js +0 -2
  81. package/dist/services/meta.js +25 -84
  82. package/dist/services/users.d.ts +4 -0
  83. package/dist/services/users.js +23 -1
  84. package/dist/utils/apply-query.d.ts +1 -1
  85. package/dist/utils/apply-query.js +58 -21
  86. package/dist/utils/freeze-schema.d.ts +3 -0
  87. package/dist/utils/freeze-schema.js +31 -0
  88. package/dist/utils/get-accountability-for-token.js +1 -0
  89. package/dist/utils/get-milliseconds.js +1 -1
  90. package/dist/utils/get-schema.js +11 -6
  91. package/dist/utils/permissions-cachable.d.ts +8 -0
  92. package/dist/utils/permissions-cachable.js +38 -0
  93. package/dist/utils/sanitize-schema.d.ts +1 -1
  94. package/dist/websocket/messages.d.ts +6 -6
  95. package/package.json +23 -20
  96. package/dist/database/helpers/nullable-update/dialects/default.d.ts +0 -3
  97. package/dist/database/helpers/nullable-update/dialects/default.js +0 -3
  98. package/dist/database/helpers/nullable-update/dialects/oracle.d.ts +0 -12
  99. package/dist/database/helpers/nullable-update/dialects/oracle.js +0 -16
  100. package/dist/database/helpers/nullable-update/index.d.ts +0 -7
  101. package/dist/database/helpers/nullable-update/index.js +0 -7
  102. package/dist/database/helpers/nullable-update/types.d.ts +0 -7
  103. package/dist/database/helpers/nullable-update/types.js +0 -12
@@ -1,17 +1,15 @@
1
- import { type DirectusError } from '@directus/errors';
2
- import type { Accountability, Filter, Item, Query, SchemaOverview } from '@directus/types';
3
- import type { ArgumentNode, FormattedExecutionResult, FragmentDefinitionNode, GraphQLResolveInfo, SelectionNode } from 'graphql';
4
- import { GraphQLError, GraphQLSchema } from 'graphql';
5
- import { ObjectTypeComposer, SchemaComposer } from 'graphql-compose';
1
+ import type { Accountability, Item, Query, SchemaOverview } from '@directus/types';
2
+ import type { FormattedExecutionResult, GraphQLSchema } from 'graphql';
6
3
  import type { Knex } from 'knex';
7
4
  import type { AbstractServiceOptions, GraphQLParams } from '../../types/index.js';
5
+ export type GQLScope = 'items' | 'system';
8
6
  export declare class GraphQLService {
9
7
  accountability: Accountability | null;
10
8
  knex: Knex;
11
9
  schema: SchemaOverview;
12
- scope: 'items' | 'system';
10
+ scope: GQLScope;
13
11
  constructor(options: AbstractServiceOptions & {
14
- scope: 'items' | 'system';
12
+ scope: GQLScope;
15
13
  });
16
14
  /**
17
15
  * Execute a GraphQL structure
@@ -23,12 +21,6 @@ export declare class GraphQLService {
23
21
  getSchema(): Promise<GraphQLSchema>;
24
22
  getSchema(type: 'schema'): Promise<GraphQLSchema>;
25
23
  getSchema(type: 'sdl'): Promise<GraphQLSchema | string>;
26
- /**
27
- * Generic resolver that's used for every "regular" items/system query. Converts the incoming GraphQL AST / fragments into
28
- * Directus' query structure which is then executed by the services.
29
- */
30
- resolveQuery(info: GraphQLResolveInfo): Promise<Partial<Item> | null>;
31
- resolveMutation(args: Record<string, any>, info: GraphQLResolveInfo): Promise<Partial<Item> | boolean | undefined>;
32
24
  /**
33
25
  * Execute the read action on the correct service. Checks for singleton as well.
34
26
  */
@@ -37,44 +29,4 @@ export declare class GraphQLService {
37
29
  * Upsert and read singleton item
38
30
  */
39
31
  upsertSingleton(collection: string, body: Record<string, any> | Record<string, any>[], query: Query): Promise<Partial<Item> | boolean>;
40
- /**
41
- * GraphQL's regular resolver `args` variable only contains the "top-level" arguments. Seeing that we convert the
42
- * whole nested tree into one big query using Directus' own query resolver, we want to have a nested structure of
43
- * arguments for the whole resolving tree, which can later be transformed into Directus' AST using `deep`.
44
- * In order to do that, we'll parse over all ArgumentNodes and ObjectFieldNodes to manually recreate an object structure
45
- * of arguments
46
- */
47
- parseArgs(args: readonly ArgumentNode[], variableValues: GraphQLResolveInfo['variableValues']): Record<string, any>;
48
- /**
49
- * Get a Directus Query object from the parsed arguments (rawQuery) and GraphQL AST selectionSet. Converts SelectionSet into
50
- * Directus' `fields` query for use in the resolver. Also applies variables where appropriate.
51
- */
52
- getQuery(rawQuery: Query, selections: readonly SelectionNode[], variableValues: GraphQLResolveInfo['variableValues']): Query;
53
- /**
54
- * Resolve the aggregation query based on the requested aggregated fields
55
- */
56
- getAggregateQuery(rawQuery: Query, selections: readonly SelectionNode[]): Query;
57
- /**
58
- * Replace functions from GraphQL format to Directus-Filter format
59
- */
60
- replaceFuncs(filter: Filter): Filter;
61
- /**
62
- * Convert Directus-Exception into a GraphQL format, so it can be returned by GraphQL properly.
63
- */
64
- formatError(error: DirectusError | DirectusError[]): GraphQLError;
65
- /**
66
- * Replace all fragments in a selectionset for the actual selection set as defined in the fragment
67
- * Effectively merges the selections with the fragments used in those selections
68
- */
69
- replaceFragmentsInSelections(selections: readonly SelectionNode[] | undefined, fragments: Record<string, FragmentDefinitionNode>): readonly SelectionNode[] | null;
70
- injectSystemResolvers(schemaComposer: SchemaComposer<GraphQLParams['contextValue']>, { CreateCollectionTypes, ReadCollectionTypes, UpdateCollectionTypes, }: {
71
- CreateCollectionTypes: Record<string, ObjectTypeComposer<any, any>>;
72
- ReadCollectionTypes: Record<string, ObjectTypeComposer<any, any>>;
73
- UpdateCollectionTypes: Record<string, ObjectTypeComposer<any, any>>;
74
- }, schema: {
75
- create: SchemaOverview;
76
- read: SchemaOverview;
77
- update: SchemaOverview;
78
- delete: SchemaOverview;
79
- }): SchemaComposer<any>;
80
32
  }