@nxara/olio-http 0.1.2 → 0.1.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.
package/dist/core.d.ts CHANGED
@@ -12,6 +12,11 @@ export interface ErrorInfo<Request = undefined, Ctx = Context> {
12
12
  export interface ErrorOptions<Request = undefined, Ctx = Context> {
13
13
  maskErrors?: boolean;
14
14
  onUnexpectedError?: (error: unknown, info: ErrorInfo<Request, Ctx>) => void;
15
+ suggestions?: boolean;
16
+ }
17
+ export interface SchemaHiding {
18
+ introspection?: boolean;
19
+ suggestions?: boolean;
15
20
  }
16
21
  type ContextHook<Request> = (request: Request) => MaybePromise<Context>;
17
22
  type ContextOption<Request> = undefined extends Context ? {
@@ -27,6 +32,7 @@ export type ValidationRules = readonly ValidationRule[] | ((operation: Operation
27
32
  export type GraphQLHttpOptions<Options> = Omit<Options, "schema" | "context" | "validationRules" | "onOperation" | "onSubscribe">;
28
33
  export type HttpOptions<Request, Passed = unknown> = ErrorOptions<Request> & ContextOption<Request> & Passed & {
29
34
  validationRules?: ValidationRules;
35
+ introspection?: boolean;
30
36
  onOperationEnd?: (ctx: Context) => MaybePromise<void>;
31
37
  };
32
38
  export type OptionsArgs<Request, Passed = unknown> = undefined extends Context ? [options?: HttpOptions<Request, Passed>] : [options: HttpOptions<Request, Passed>];
@@ -47,6 +53,7 @@ export interface Masking<Info> {
47
53
  export declare function masking<Info>(options: {
48
54
  maskErrors?: boolean;
49
55
  onUnexpectedError?: (error: unknown, info: Info) => void;
56
+ suggestions?: boolean;
50
57
  }): Masking<Info>;
51
58
  export declare function errorMasker<Ctx = Context>(options?: ErrorOptions<undefined, Ctx>): ErrorMasker<Ctx>;
52
59
  export declare function contextFailure<Request>(mask: Masking<ErrorInfo<Request>>, error: unknown, request: Request): HttpResponse;
@@ -56,11 +63,12 @@ interface Operation {
56
63
  }
57
64
  export declare function validateOperation(schema: GraphQLSchema, operation: Operation & {
58
65
  readonly query: string;
59
- }, rules: ValidationRules): readonly GraphQLError[];
60
- export declare const handlerRules: (rules: ValidationRules | undefined) => ((req: unknown, args: {
66
+ }, rules: ValidationRules, { introspection, suggestions }?: SchemaHiding): readonly GraphQLError[];
67
+ export declare const handlerRules: (rules: ValidationRules | undefined, introspection?: boolean) => ((req: unknown, args: {
61
68
  readonly variableValues?: Readonly<Record<string, unknown>> | null;
62
69
  readonly operationName?: string | null;
63
70
  }) => readonly ValidationRule[]) | undefined;
71
+ export declare const handlerFormatError: (suggestions: boolean | undefined, formatError: ((error: Readonly<GraphQLError | Error>) => GraphQLError | Error) | undefined) => (error: Readonly<GraphQLError | Error>) => GraphQLError | Error;
64
72
  export declare function operationEnd<Request>(mask: Masking<ErrorInfo<Request>>, hook: ((ctx: Context) => MaybePromise<void>) | undefined): (ctx: Context | undefined, request: Request) => Promise<void>;
65
73
  export {};
66
74
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -1,7 +1,20 @@
1
- import { GraphQLError, parse, specifiedRules, validate } from "graphql";
1
+ import { GraphQLError, NoSchemaIntrospectionCustomRule, parse, specifiedRules, validate } from "graphql";
2
+ function withoutSuggestion(error) {
3
+ if (error.path)
4
+ return error;
5
+ const message = error.message.replace(/ ?Did you mean [^?]*\?$/, "");
6
+ if (message === error.message)
7
+ return error;
8
+ return new GraphQLError(message, {
9
+ nodes: error.nodes,
10
+ source: error.source,
11
+ positions: error.positions,
12
+ extensions: error.extensions
13
+ });
14
+ }
2
15
  export function masking(options) {
3
- const { maskErrors = true, onUnexpectedError = (error) => console.error(error) } = options;
4
- const error = (thrown, info) => {
16
+ const { maskErrors = true, onUnexpectedError = (error) => console.error(error), suggestions = true } = options;
17
+ const masked = (thrown, info) => {
5
18
  if (!(thrown instanceof GraphQLError)) {
6
19
  onUnexpectedError(thrown, info);
7
20
  return new GraphQLError(maskErrors || !(thrown instanceof Error)
@@ -19,6 +32,10 @@ export function masking(options) {
19
32
  })
20
33
  : thrown;
21
34
  };
35
+ const error = (thrown, info) => {
36
+ const result = masked(thrown, info);
37
+ return suggestions ? result : withoutSuggestion(result);
38
+ };
22
39
  return {
23
40
  error,
24
41
  result: (result, info) => result.errors
@@ -51,16 +68,20 @@ export function contextFailure(mask, error, request) {
51
68
  }
52
69
  ];
53
70
  }
54
- function ruleSet(rules, operation) {
71
+ function ruleSet(rules, operation, introspection) {
55
72
  const custom = typeof rules === "function"
56
73
  ? rules({
57
74
  variables: operation.variables ?? {},
58
75
  operationName: operation.operationName
59
76
  })
60
77
  : rules;
61
- return [...specifiedRules, ...custom];
78
+ return [
79
+ ...specifiedRules,
80
+ ...custom,
81
+ ...(introspection ? [] : [NoSchemaIntrospectionCustomRule])
82
+ ];
62
83
  }
63
- export function validateOperation(schema, operation, rules) {
84
+ export function validateOperation(schema, operation, rules, { introspection = true, suggestions = true } = {}) {
64
85
  let document;
65
86
  try {
66
87
  document = parse(operation.query);
@@ -68,13 +89,21 @@ export function validateOperation(schema, operation, rules) {
68
89
  catch (error) {
69
90
  return [error];
70
91
  }
71
- return validate(schema, document, ruleSet(rules, operation));
92
+ const errors = validate(schema, document, ruleSet(rules, operation, introspection));
93
+ return suggestions ? errors : errors.map(withoutSuggestion);
72
94
  }
73
- export const handlerRules = (rules) => rules &&
74
- ((_req, args) => ruleSet(rules, {
95
+ export const handlerRules = (rules, introspection = true) => rules || !introspection
96
+ ? (_req, args) => ruleSet(rules ?? [], {
75
97
  variables: args.variableValues,
76
98
  operationName: args.operationName
77
- }));
99
+ }, introspection)
100
+ : undefined;
101
+ export const handlerFormatError = (suggestions, formatError) => (error) => {
102
+ const hidden = suggestions === false && error instanceof GraphQLError
103
+ ? withoutSuggestion(error)
104
+ : error;
105
+ return formatError ? formatError(hidden) : hidden;
106
+ };
78
107
  export function operationEnd(mask, hook) {
79
108
  const ended = new WeakSet();
80
109
  return async (ctx, request) => {
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAML,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AAEnB,KAAK,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAGnE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,GAAG,CAAC,OAA4C,CAAC,EAAE,WAAW,CAC5D,OAAO,EACP,MAAM,CACP,GACA,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CA6BzC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EAOL,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AAEnB,KAAK,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAGnE,wBAAgB,YAAY,CAC1B,GAAG,EAAE,QAAQ,EACb,GAAG,CAAC,OAA4C,CAAC,EAAE,WAAW,CAC5D,OAAO,EACP,MAAM,CACP,GACA,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAiCzC"}
package/dist/fetch.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createHandler } from "graphql-http/lib/use/fetch";
2
- import { contextFailure, masking, operationEnd, handlerRules } from "./core.js";
2
+ import { contextFailure, masking, operationEnd, handlerFormatError, handlerRules } from "./core.js";
3
3
  export function fetchHandler(app, ...[options = {}]) {
4
4
  const mask = masking(options);
5
5
  const { context } = options;
@@ -20,7 +20,8 @@ export function fetchHandler(app, ...[options = {}]) {
20
20
  }
21
21
  }
22
22
  : undefined,
23
- validationRules: handlerRules(options.validationRules),
23
+ validationRules: handlerRules(options.validationRules, options.introspection),
24
+ formatError: handlerFormatError(options.suggestions, options.formatError),
24
25
  onOperation: (req, _args, result) => mask.result(result, { ctx: contexts.get(req.raw), request: req.raw })
25
26
  });
26
27
  return async (request) => {
package/dist/fetch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAuB,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EACL,cAAc,EACd,OAAO,EACP,YAAY,EACZ,YAAY,EAMb,MAAM,WAAW,CAAC;AAKnB,MAAM,UAAU,YAAY,CAC1B,GAAa,EACb,GAAG,CAAC,OAAO,GAAG,EAAkC,CAG/C;IAED,MAAM,IAAI,GAAG,OAAO,CAAqB,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoB,CAAC;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC;QACzB,GAAG,OAAO;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACZ,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC3B,OAAO,GAAY,CAAC;gBACtB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS;QACb,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC;QACtD,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;KACxE,CAAC,CAAC;IACH,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAuB,MAAM,4BAA4B,CAAC;AAEhF,OAAO,EACL,cAAc,EACd,OAAO,EACP,YAAY,EACZ,kBAAkB,EAClB,YAAY,EAMb,MAAM,WAAW,CAAC;AAKnB,MAAM,UAAU,YAAY,CAC1B,GAAa,EACb,GAAG,CAAC,OAAO,GAAG,EAAkC,CAG/C;IAED,MAAM,IAAI,GAAG,OAAO,CAAqB,OAAO,CAAC,CAAC;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoB,CAAC;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC;QACzB,GAAG,OAAO;QACV,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,OAAO;YACd,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACZ,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACnC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC3B,OAAO,GAAY,CAAC;gBACtB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YACH,CAAC,CAAC,SAAS;QACb,eAAe,EAAE,YAAY,CAC3B,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,aAAa,CACtB;QACD,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC;QACzE,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAClC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC;KACxE,CAAC,CAAC;IACH,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { errorMasker, validateOperation } from "./core.js";
2
- export type { ErrorInfo, ErrorMasker, ErrorOptions, HttpOptions, OperationInfo, OptionsArgs, Servable, ValidationRules } from "./core.js";
2
+ export type { ErrorInfo, ErrorMasker, ErrorOptions, HttpOptions, OperationInfo, OptionsArgs, SchemaHiding, Servable, ValidationRules } from "./core.js";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EAChB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC3D,YAAY,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,eAAe,EAChB,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAML,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AAEnB,KAAK,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAiBnE,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,GAAG,CAAC,OAAoD,CAAC,EAAE,WAAW,CACpE,eAAe,EACf,MAAM,CACP,GACA,CACD,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC,IAAI,CAAC,CAqDjB"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,2BAA2B,CAAC;AAEhF,OAAO,EAOL,KAAK,kBAAkB,EAEvB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,WAAW,CAAC;AAEnB,KAAK,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAiBnE,wBAAgB,WAAW,CACzB,GAAG,EAAE,QAAQ,EACb,GAAG,CAAC,OAAoD,CAAC,EAAE,WAAW,CACpE,eAAe,EACf,MAAM,CACP,GACA,CACD,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC,IAAI,CAAC,CAyDjB"}
package/dist/node.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createHandler } from "graphql-http";
2
- import { contextFailure, masking, operationEnd, handlerRules } from "./core.js";
2
+ import { contextFailure, masking, operationEnd, handlerFormatError, handlerRules } from "./core.js";
3
3
  const readBody = (req) => new Promise((resolve, reject) => {
4
4
  let body = "";
5
5
  req.setEncoding("utf8");
@@ -27,7 +27,8 @@ export function nodeHandler(app, ...[options = {}]) {
27
27
  }
28
28
  }
29
29
  : undefined,
30
- validationRules: handlerRules(options.validationRules),
30
+ validationRules: handlerRules(options.validationRules, options.introspection),
31
+ formatError: handlerFormatError(options.suggestions, options.formatError),
31
32
  onOperation: (req, _args, result) => mask.result(result, { ctx: contexts.get(req.raw), request: req.raw })
32
33
  });
33
34
  return async (req, res, body) => {
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxara/olio-http",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Serve an olio app over HTTP, on any framework: GraphQL over HTTP with context, error masking and per-operation cleanup.",
5
5
  "keywords": [
6
6
  "graphql",
@@ -42,11 +42,11 @@
42
42
  "check-types": "tsc -p tsconfig.test.json"
43
43
  },
44
44
  "dependencies": {
45
- "@nxara/olio-core": "0.1.2",
45
+ "@nxara/olio-core": "0.1.4",
46
46
  "graphql-http": "^1.23.1"
47
47
  },
48
48
  "devDependencies": {
49
- "@nxara/olio": "0.1.2",
49
+ "@nxara/olio": "0.1.4",
50
50
  "graphql": "^16.14.2"
51
51
  },
52
52
  "peerDependencies": {