@orion-js/graphql 4.1.6 → 4.1.7
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/index.cjs +25 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
package/dist/index.cjs
CHANGED
|
@@ -753,6 +753,7 @@ function errorHandler(error, data) {
|
|
|
753
753
|
}
|
|
754
754
|
|
|
755
755
|
// src/buildSchema/getType/getTypeAsResolver.ts
|
|
756
|
+
var import_logger = require("@orion-js/logger");
|
|
756
757
|
function getTypeAsResolver_default({ resolver, getGraphQLType: getGraphQLType2, options, schema }) {
|
|
757
758
|
const type2 = getGraphQLType2(resolver.returns, options);
|
|
758
759
|
const args = getArgs_default(resolver.params, options);
|
|
@@ -761,8 +762,18 @@ function getTypeAsResolver_default({ resolver, getGraphQLType: getGraphQLType2,
|
|
|
761
762
|
args,
|
|
762
763
|
async resolve(item, params, context, info) {
|
|
763
764
|
try {
|
|
764
|
-
|
|
765
|
-
|
|
765
|
+
return await (0, import_logger.runWithOrionAsyncContext)(
|
|
766
|
+
{
|
|
767
|
+
controllerType: "modelResolver",
|
|
768
|
+
viewer: context,
|
|
769
|
+
params,
|
|
770
|
+
parentData: item,
|
|
771
|
+
modelResolverName: resolver.key
|
|
772
|
+
},
|
|
773
|
+
async () => {
|
|
774
|
+
return await resolver.resolve(item, params, context, info);
|
|
775
|
+
}
|
|
776
|
+
);
|
|
766
777
|
} catch (error) {
|
|
767
778
|
errorHandler(error, { context, resolver, options, schema });
|
|
768
779
|
throw error;
|
|
@@ -889,10 +900,10 @@ function getGraphQLType(type2, options) {
|
|
|
889
900
|
var resolversStore = {};
|
|
890
901
|
|
|
891
902
|
// src/buildSchema/getResolvers/index.ts
|
|
903
|
+
var import_logger2 = require("@orion-js/logger");
|
|
892
904
|
async function getResolvers_default(options, mutation) {
|
|
893
905
|
const { resolvers } = options;
|
|
894
906
|
const filteredResolvers = Object.keys(resolvers).map((key) => {
|
|
895
|
-
resolvers[key].resolverName = key;
|
|
896
907
|
return {
|
|
897
908
|
name: key,
|
|
898
909
|
resolver: resolvers[key]
|
|
@@ -908,8 +919,17 @@ async function getResolvers_default(options, mutation) {
|
|
|
908
919
|
args,
|
|
909
920
|
async resolve(_root, params, context, info) {
|
|
910
921
|
try {
|
|
911
|
-
|
|
912
|
-
|
|
922
|
+
return await (0, import_logger2.runWithOrionAsyncContext)(
|
|
923
|
+
{
|
|
924
|
+
controllerType: "resolver",
|
|
925
|
+
viewer: context,
|
|
926
|
+
params,
|
|
927
|
+
resolverName: name
|
|
928
|
+
},
|
|
929
|
+
async () => {
|
|
930
|
+
return await resolver.resolve(params, context, info);
|
|
931
|
+
}
|
|
932
|
+
);
|
|
913
933
|
} catch (error) {
|
|
914
934
|
errorHandler(error, { context, resolver, options, name });
|
|
915
935
|
throw error;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/subscription/index.ts","../src/pubsub.ts","../src/subscription/getChannelName.ts","../src/startGraphiQL.ts","../src/buildSchema/index.ts","../src/buildSchema/getQuery.ts","../src/buildSchema/getType/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/equals.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/compare.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/includes.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/omit.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/buildSchema/getType/BigIntScalar.ts","../src/buildSchema/getType/DateScalar.ts","../src/buildSchema/getType/JSONScalar.ts","../src/buildSchema/getType/getScalar.ts","../src/buildSchema/getArgs/getField.ts","../src/resolversSchemas/getStaticFields.ts","../src/buildSchema/getArgs/index.ts","../src/errorHandler.ts","../src/buildSchema/getType/getTypeAsResolver.ts","../src/resolversSchemas/getDynamicFields.ts","../src/resolversSchemas/getModelLoadedResolvers.ts","../src/buildSchema/getResolvers/resolversStore.ts","../src/buildSchema/getResolvers/index.ts","../src/buildSchema/getMutation.ts","../src/buildSchema/getSubscription.ts","../src/buildSchema/getSubscriptions/index.ts","../src/getApolloOptions/formatError.ts","../src/getApolloOptions/index.ts","../src/startWebsocket.ts","../src/websockerViewer.ts","../src/startGraphQL.ts","../src/resolversSchemas/params.ts","../src/resolversSchemas/ResolverParamsInfo.ts","../src/resolversSchemas/serializeSchema.ts","../src/resolversSchemas/getField.ts","../src/resolversSchemas/getBasicResultQuery.ts","../src/resolversSchemas/index.ts","../src/types/subscription.ts","../src/service/global.ts","../src/service/middlewares.ts","../src/service/model.ts","../src/service/subscription.ts"],"sourcesContent":["import subscription from './subscription'\nimport startGraphQL from './startGraphQL'\nimport startGraphiQL from './startGraphiQL'\nimport resolversSchemas from './resolversSchemas'\nimport ResolverParamsInfo from './resolversSchemas/ResolverParamsInfo'\nimport serializeSchema from './resolversSchemas/serializeSchema'\nimport getBasicResultQuery from './resolversSchemas/getBasicResultQuery'\nimport * as GraphQL from 'graphql'\n\nconst createSubscription = subscription\n\nexport {\n GraphQL,\n startGraphQL,\n startGraphiQL,\n resolversSchemas,\n ResolverParamsInfo,\n serializeSchema,\n subscription,\n createSubscription,\n getBasicResultQuery,\n}\n\nexport * from './types'\nexport * from './service'\nexport * from './websockerViewer'\n","import {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\nimport {getPubsub} from '../pubsub'\nimport {\n CreateOrionSubscriptionFunction,\n OrionSubscription,\n OrionSubscriptionOptions,\n} from '../types/subscription'\nimport getChannelName from './getChannelName'\n\nconst createSubscription: CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType,\n TReturnsSchema extends SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => {\n const subscription = {} as OrionSubscription<TParamsSchema, TReturnsSchema>\n\n const getSubscriptionName = () => {\n if (!subscription.name) {\n throw new Error('This subscription is not yet initialized in GraphQL')\n }\n\n return subscription.name\n }\n\n // the publish function\n subscription.publish = async (params, data) => {\n const pubsub = getPubsub()\n const channelName = getChannelName(getSubscriptionName(), params)\n await pubsub.publish(channelName, {[getSubscriptionName()]: data})\n }\n\n subscription.subscribe = async (params, viewer) => {\n const pubsub = getPubsub()\n try {\n if (options.canSubscribe) {\n const canSubscribe = await options.canSubscribe(params, viewer)\n if (!canSubscribe) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n const channelName = getChannelName(getSubscriptionName(), params)\n return pubsub.asyncIterator(channelName)\n } catch (_error) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n subscription.params = (getSchemaFromAnyOrionForm(options.params) ?? {}) as TParamsSchema\n subscription.returns = getSchemaFromAnyOrionForm(options.returns) as TReturnsSchema\n\n return subscription as OrionSubscription<TParamsSchema, TReturnsSchema>\n}\n\nexport default createSubscription\n","import {PubSubEngine} from 'graphql-subscriptions'\n\nlet pubsub = null\n\nexport const setPubsub = function (newPubsub: PubSubEngine) {\n pubsub = newPubsub\n}\n\nexport const getPubsub: () => PubSubEngine = function () {\n return pubsub\n}\n","import {hashObject} from '@orion-js/helpers'\n\nexport default function (name: string, params) {\n const hash = hashObject(params)\n const channelName = `${name}_${hash}`\n return channelName\n}\n","import {registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\n\n// Ensures string values are safe to be used within a <script> tag.\n// TODO: I don't think that's the right escape function\nfunction safeSerialize(data) {\n return data ? JSON.stringify(data).replace(/\\//g, '\\\\/') : null\n}\n\nconst getHTML = (_apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions, data) => {\n // Current latest version of GraphiQL.\n const GRAPHIQL_VERSION = '0.11.11'\n\n const endpointURL = '/graphql'\n const subscriptionsEndpoint = '/subscriptions'\n\n const queryString = data.query\n const variablesString = data.variables ? JSON.stringify(data.variables, null, 2) : null\n const operationName = data.operationName\n const useSubs = !!options.subscriptions\n\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>GraphiQL</title>\n <meta name=\"robots\" content=\"noindex\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n }\n </style>\n <link href=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.css\" rel=\"stylesheet\" />\n <script src=\"//unpkg.com/react@15.6.1/dist/react.min.js\"></script>\n <script src=\"//unpkg.com/jssha@2.3.1/src/sha512.js\"></script>\n <script src=\"//unpkg.com/react-dom@15.6.1/dist/react-dom.min.js\"></script>\n <script src=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.min.js\"></script>\n <script src=\"//cdn.jsdelivr.net/fetch/2.0.1/fetch.min.js\"></script>\n ${\n useSubs\n ? `<script src=\"//unpkg.com/subscriptions-transport-ws@0.5.4/browser/client.js\"></script>\n <script src=\"//unpkg.com/graphiql-subscriptions-fetcher@0.0.2/browser/client.js\"></script>`\n : ''\n }\n</head>\n<body>\n <script>\n // Collect the URL parameters\n var parameters = {};\n window.location.search.substr(1).split('&').forEach(function (entry) {\n var eq = entry.indexOf('=');\n if (eq >= 0) {\n parameters[decodeURIComponent(entry.slice(0, eq))] =\n decodeURIComponent(entry.slice(eq + 1));\n }\n });\n // Produce a Location query string from a parameter object.\n function locationQuery(params, location) {\n return (location ? location: '') + '?' + Object.keys(params).map(function (key) {\n return encodeURIComponent(key) + '=' +\n encodeURIComponent(params[key]);\n }).join('&');\n }\n // Derive a fetch URL from the current URL, sans the GraphQL parameters.\n var graphqlParamNames = {\n query: true,\n variables: true,\n operationName: true\n };\n var otherParams = {};\n for (var k in parameters) {\n if (parameters.hasOwnProperty(k) && graphqlParamNames[k] !== true) {\n otherParams[k] = parameters[k];\n }\n }\n // We don't use safe-serialize for location, because it's not client input.\n var fetchURL = '${endpointURL}'\n // Defines a GraphQL fetcher using the fetch API.\n function graphQLHttpFetcher(graphQLParams) {\n const body = JSON.stringify(graphQLParams)\n const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n }\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime()\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + body)\n const signature = shaObj.getHMAC('HEX')\n headers['X-ORION-NONCE'] = nonce\n headers['X-ORION-PUBLICKEY'] = publicKey\n headers['X-ORION-SIGNATURE'] = signature\n }\n return fetch(fetchURL, {\n method: 'post',\n headers,\n body,\n credentials: 'same-origin',\n }).then(function (response) {\n return response.text();\n }).then(function (responseBody) {\n try {\n const json = JSON.parse(responseBody);\n if (json.data && json.data.loginWithPassword) {\n const publicKey = json.data.loginWithPassword.publicKey\n const secretKey = json.data.loginWithPassword.secretKey\n if (publicKey && secretKey) {\n localStorage.setItem('GraphiQL:publicKey', publicKey)\n localStorage.setItem('GraphiQL:secretKey', secretKey)\n alert('Session saved in localStorage')\n }\n }\n if (json.error && json.error === 'AuthError') {\n localStorage.setItem('GraphiQL:publicKey', '')\n localStorage.setItem('GraphiQL:secretKey', '')\n alert('Logged out after receiving AuthError')\n }\n return json\n } catch (error) {\n return responseBody;\n }\n });\n }\n ${\n useSubs\n ? `\n let params = {}\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime() + 500\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + 'websockethandshake')\n const signature = shaObj.getHMAC('HEX')\n params = {\n nonce,\n publicKey,\n signature\n }\n }\n\n const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'\n let subscriptionsClient = new window.SubscriptionsTransportWs.SubscriptionClient(protocol + window.location.host + '${subscriptionsEndpoint}', {\n reconnect: true,\n connectionParams: params\n });\n let myCustomFetcher = window.GraphiQLSubscriptionsFetcher.graphQLFetcher(subscriptionsClient, graphQLHttpFetcher);\n var fetcher = myCustomFetcher\n `\n : `\n var fetcher = graphQLHttpFetcher\n `\n }\n\n // When the query and variables string is edited, update the URL bar so\n // that it can be easily shared.\n function onEditQuery(newQuery) {\n parameters.query = newQuery;\n updateURL();\n }\n function onEditVariables(newVariables) {\n parameters.variables = newVariables;\n updateURL();\n }\n function onEditOperationName(newOperationName) {\n parameters.operationName = newOperationName;\n updateURL();\n }\n function updateURL() {\n var cleanParams = Object.keys(parameters).filter(function(v) {\n return parameters[v];\n }).reduce(function(old, v) {\n old[v] = parameters[v];\n return old;\n }, {});\n history.replaceState(null, null, locationQuery(cleanParams) + window.location.hash);\n }\n // Render <GraphiQL /> into the body.\n ReactDOM.render(\n React.createElement(GraphiQL, {\n fetcher: fetcher,\n onEditQuery: onEditQuery,\n onEditVariables: onEditVariables,\n onEditOperationName: onEditOperationName,\n query: ${safeSerialize(queryString)},\n response: null,\n variables: ${safeSerialize(variablesString)},\n operationName: ${safeSerialize(operationName)},\n }),\n document.body\n );\n </script>\n</body>\n</html>`\n}\n\nexport default function (apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions) {\n registerRoute(\n route({\n path: '/graphiql',\n method: 'get',\n async resolve(req) {\n return {\n body: getHTML(apolloOptions, options, req.query),\n }\n },\n }),\n )\n}\n","import {GraphQLSchema} from 'graphql'\nimport getQuery from './getQuery'\nimport getMutation from './getMutation'\nimport getSubscription from './getSubscription'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const query = await getQuery(options)\n const mutation = await getMutation(options)\n const subscription = await getSubscription(options)\n const schema = new GraphQLSchema({query, mutation, subscription})\n return schema\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, false)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Query',\n fields,\n })\n}\n","import {GraphQLList, GraphQLObjectType} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaFieldType,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport {equals} from 'rambdax'\nimport getScalar from './getScalar'\nimport getTypeAsResolver from './getTypeAsResolver'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\nimport {getDynamicFields} from '../../resolversSchemas/getDynamicFields'\nimport {getModelLoadedResolvers} from '../../resolversSchemas/getModelLoadedResolvers'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport const createGraphQLObjectType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = field.graphQLResolver\n ? getTypeAsResolver({resolver: field.graphQLResolver, getGraphQLType, options, schema})\n : {type: getGraphQLType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n const addDynamicFields = () => {\n for (const resolver of getDynamicFields(schema)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n const addModelLoadedResolvers = () => {\n for (const resolver of getModelLoadedResolvers(schema, options)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n addStaticFields()\n addDynamicFields()\n addModelLoadedResolvers()\n\n return fields\n}\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLObjectType}\n>()\n\nexport default function getGraphQLType(type: SchemaFieldType, options: StartGraphQLOptions) {\n if (!type) throw new Error('Type is undefined')\n\n if (Array.isArray(type)) {\n return new GraphQLList(getGraphQLType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schema.__modelName\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLObjectType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n return getScalar(getFieldType(type))\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { isArray } from './_internals/isArray.js'\nimport { type } from './type.js'\n\nexport function _lastIndexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.lastIndexOf(valueToFind)\n\n const { length } = list\n let index = length\n let foundIndex = -1\n\n while (--index > -1 && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nexport function _indexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.indexOf(valueToFind)\n\n let index = -1\n let foundIndex = -1\n const { length } = list\n\n while (++index < length && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nfunction _arrayFromIterator(iter){\n const list = []\n let next\n while (!(next = iter.next()).done)\n list.push(next.value)\n\n return list\n}\n\nfunction _compareSets(a, b){\n if (a.size !== b.size)\n return false\n\n const aList = _arrayFromIterator(a.values())\n const bList = _arrayFromIterator(b.values())\n\n const filtered = aList.filter(aInstance => _indexOf(aInstance, bList) === -1)\n\n return filtered.length === 0\n}\n\nfunction compareErrors(a, b){\n if (a.message !== b.message) return false\n if (a.toString !== b.toString) return false\n\n return a.toString() === b.toString()\n}\n\nfunction parseDate(maybeDate){\n if (!maybeDate.toDateString) return [ false ]\n\n return [ true, maybeDate.getTime() ]\n}\n\nfunction parseRegex(maybeRegex){\n if (maybeRegex.constructor !== RegExp) return [ false ]\n\n return [ true, maybeRegex.toString() ]\n}\n\nexport function equals(a, b){\n if (arguments.length === 1) return _b => equals(a, _b)\n\n if (Object.is(a, b)) return true\n\n const aType = type(a)\n\n if (aType !== type(b)) return false\n if (aType === 'Function')\n return a.name === undefined ? false : a.name === b.name\n\n if ([ 'NaN', 'Null', 'Undefined' ].includes(aType)) return true\n\n if ([ 'BigInt', 'Number' ].includes(aType)){\n if (Object.is(-0, a) !== Object.is(-0, b)) return false\n\n return a.toString() === b.toString()\n }\n\n if ([ 'Boolean', 'String' ].includes(aType))\n return a.toString() === b.toString()\n\n if (aType === 'Array'){\n const aClone = Array.from(a)\n const bClone = Array.from(b)\n\n if (aClone.toString() !== bClone.toString())\n return false\n\n let loopArrayFlag = true\n aClone.forEach((aCloneInstance, aCloneIndex) => {\n if (loopArrayFlag)\n if (\n aCloneInstance !== bClone[ aCloneIndex ] &&\n !equals(aCloneInstance, bClone[ aCloneIndex ])\n )\n loopArrayFlag = false\n\n })\n\n return loopArrayFlag\n }\n\n const aRegex = parseRegex(a)\n const bRegex = parseRegex(b)\n\n if (aRegex[ 0 ])\n return bRegex[ 0 ] ? aRegex[ 1 ] === bRegex[ 1 ] : false\n else if (bRegex[ 0 ]) return false\n\n const aDate = parseDate(a)\n const bDate = parseDate(b)\n\n if (aDate[ 0 ])\n return bDate[ 0 ] ? aDate[ 1 ] === bDate[ 1 ] : false\n else if (bDate[ 0 ]) return false\n\n if (a instanceof Error){\n if (!(b instanceof Error)) return false\n\n return compareErrors(a, b)\n }\n\n if (aType === 'Set')\n return _compareSets(a, b)\n\n if (aType === 'Object'){\n const aKeys = Object.keys(a)\n\n if (aKeys.length !== Object.keys(b).length)\n return false\n\n let loopObjectFlag = true\n aKeys.forEach(aKeyInstance => {\n if (loopObjectFlag){\n const aValue = a[ aKeyInstance ]\n const bValue = b[ aKeyInstance ]\n\n if (aValue !== bValue && !equals(aValue, bValue))\n loopObjectFlag = false\n\n }\n })\n\n return loopObjectFlag\n }\n\n return false\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","export function compare(a, b){\n return String(a) === String(b)\n}\n","import { compare } from './compare.js'\n\nexport function includes(a, list){\n let index = -1\n const { length } = list\n\n while (++index < length)\n if (compare(list[ index ], a))\n return true\n\n return false\n}\n","import { createPath } from './_internals/createPath.js'\nimport { includes } from './_internals/includes.js'\n\nexport function omit(propsToOmit, obj){\n if (arguments.length === 1) return _obj => omit(propsToOmit, _obj)\n\n if (obj === null || obj === undefined)\n return undefined\n\n const propsToOmitValue = createPath(propsToOmit, ',')\n const willReturn = {}\n\n for (const key in obj)\n if (!includes(key, propsToOmitValue))\n willReturn[ key ] = obj[ key ]\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","import {GraphQLScalarType} from 'graphql'\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER\nconst MIN_INT = Number.MIN_SAFE_INTEGER\n\nconst coerceBigInt = function coerceBigInt(value) {\n if (value === '') {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: (empty string)')\n }\n const num = Number(value)\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: ' + String(value))\n }\n const int = Math.floor(num)\n if (int !== num) {\n throw new TypeError('BigInt cannot represent non-integer value: ' + String(value))\n }\n return int\n}\n\nexport default new GraphQLScalarType({\n name: 'BigInt',\n description:\n 'The `BigInt` scalar type represents non-fractional signed whole numeric ' +\n 'values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ',\n serialize: coerceBigInt,\n parseValue: coerceBigInt,\n parseLiteral(ast) {\n if (ast.kind === 'IntValue') {\n const num = parseInt(ast.value, 10)\n if (num <= MAX_INT && num >= MIN_INT) {\n return num\n }\n }\n return null\n },\n})\n","import {GraphQLScalarType} from 'graphql'\nimport {GraphQLDateTime} from 'graphql-scalars'\n\nexport default new GraphQLScalarType({\n name: 'Date',\n serialize: GraphQLDateTime.serialize,\n parseValue: GraphQLDateTime.parseValue,\n parseLiteral: GraphQLDateTime.parseLiteral,\n})\n","import {GraphQLScalarType, Kind} from 'graphql'\n\nfunction identity(value) {\n return value\n}\n\nfunction parseLiteral(ast, variables) {\n switch (ast.kind) {\n case Kind.STRING:\n case Kind.BOOLEAN:\n return ast.value\n case Kind.INT:\n case Kind.FLOAT:\n return parseFloat(ast.value)\n case Kind.OBJECT: {\n const value = Object.create(null)\n ast.fields.forEach(field => {\n value[field.name.value] = parseLiteral(field.value, variables)\n })\n\n return value\n }\n case Kind.LIST:\n return ast.values.map(n => parseLiteral(n, variables))\n case Kind.NULL:\n return null\n case Kind.VARIABLE: {\n const name = ast.name.value\n return variables ? variables[name] : undefined\n }\n default:\n return undefined\n }\n}\n\nexport default new GraphQLScalarType({\n name: 'JSON',\n description:\n 'The `JSON` scalar type represents JSON values as specified by ' +\n '[ECMA-404](http://www.ecma-international.org/' +\n 'publications/files/ECMA-ST/ECMA-404.pdf).',\n serialize: identity,\n parseValue: identity,\n parseLiteral,\n})\n","import BigIntScalar from './BigIntScalar'\nimport DateScalar from './DateScalar'\nimport JSONScalar from './JSONScalar'\nimport * as GraphQL from 'graphql'\n\nconst {GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean} = GraphQL\n\nconst fieldMap = {\n string: GraphQLString,\n email: GraphQLString,\n date: DateScalar,\n integer: BigIntScalar,\n number: GraphQLFloat,\n ID: GraphQLID,\n boolean: GraphQLBoolean,\n blackbox: JSONScalar,\n any: JSONScalar,\n}\n\nexport default function (fieldType) {\n if (fieldMap[fieldType.name]) {\n return fieldMap[fieldType.name]\n }\n\n if (fieldType.name.startsWith('typedId:')) {\n return fieldMap.string\n }\n\n if (fieldType.toGraphQLType) {\n const result = fieldType.toGraphQLType(GraphQL)\n if (result.then) {\n throw new Error('toGraphQLType cant return a promise')\n }\n return result\n }\n throw new Error(`Field type \"${fieldType.name}\" has no convertion to GraphQLType`)\n}\n","import {GraphQLInputObjectType, GraphQLList} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport getScalar from '../getType/getScalar'\nimport {equals} from 'rambdax'\nimport {StartGraphQLOptions} from '../../types'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLInputObjectType}\n>()\n\nconst resolveType = (type, options: StartGraphQLOptions) => {\n if (!type) throw new Error('No type specified')\n\n if (type?.[Symbol.metadata]?._getModel) {\n const model = type[Symbol.metadata]._getModel()\n return resolveType(model, options)\n }\n\n if (Array.isArray(type)) {\n return new GraphQLList(resolveType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = `${schema.__modelName}Input`\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!schema.__modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLInputType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n const schemaType = getFieldType(type)\n return getScalar(schemaType)\n}\n\nexport default resolveType\n\nexport const createGraphQLInputType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLInputObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = {type: resolveType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n addStaticFields()\n\n return fields\n}\n","import {Schema, SchemaNode, SchemaWithMetadata} from '@orion-js/schema'\n\nexport function getStaticFields(schema: Schema | SchemaWithMetadata): Array<SchemaNode> {\n if (!schema) return []\n\n // retrocompatibility with model\n if ((schema as any).getSchema) {\n schema = (schema as any).getSchema()\n }\n\n const keys = Object.keys(schema).filter(key => !key.startsWith('__'))\n\n return (\n keys\n .map((key): SchemaNode => {\n const field = schema[key] as SchemaNode\n return {\n ...field,\n key,\n } as SchemaNode\n })\n // there is a compile error if we don't do this\n .filter(field => !field.private)\n )\n}\n","import {Schema} from '@orion-js/schema'\nimport getField from './getField'\nimport {StartGraphQLOptions} from '../../types'\n\nexport default function (params: Schema, options: StartGraphQLOptions) {\n if (!params) return\n if (Object.keys(params).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(params).filter(key => !key.startsWith('__'))) {\n try {\n const type = getField(params[key].type, options)\n fields[key] = {type}\n } catch (error) {\n throw new Error(`Error creating GraphQL resolver params argument ${key}: ${error.message}`)\n }\n }\n return fields\n}\n","import crypto from 'node:crypto'\nimport {GraphQLError} from 'graphql'\n\nexport default function errorHandler(error, data) {\n const message = `Error in resolver \"${data.name}\" ${\n data.schema ? `of model \"${data.schema.__modelName}\"` : ''\n }`\n\n const hash = crypto\n .createHash('sha1')\n .update(error.message, 'utf8')\n .digest('hex')\n .substring(0, 10)\n error.hash = hash\n\n if (error?.isOrionError) {\n console.warn(message, error)\n throw new GraphQLError(error.message, {\n originalError: error,\n extensions: {\n isOrionError: !!error.isOrionError,\n isValidationError: !!error.isValidationError,\n code: error.code,\n hash,\n info: error.getInfo(),\n },\n })\n }\n console.error(message, error)\n throw new GraphQLError(`${error.message} [${hash}]`, {\n // originalError: error,\n extensions: {\n isOrionError: false,\n isValidationError: false,\n code: 'INTERNAL_SERVER_ERROR',\n hash: hash,\n },\n })\n}\n","import getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\n\nexport default function ({resolver, getGraphQLType, options, schema}) {\n const type = getGraphQLType(resolver.returns, options)\n const args = getArgs(resolver.params, options)\n return {\n type,\n args,\n async resolve(item, params, context, info) {\n try {\n const result = await resolver.resolve(item, params, context, info)\n return result\n } catch (error) {\n errorHandler(error, {context, resolver, options, schema})\n throw error\n }\n },\n }\n}\n","import {Model, ModelResolversMap} from '@orion-js/models'\nimport {Schema} from '@orion-js/schema'\n\nfunction getResolvers(schema: Schema | Model): ModelResolversMap {\n if (typeof schema.getResolvers === 'function') {\n console.warn('Models are deprecated')\n return (schema as Model).getResolvers()\n }\n\n if ((schema as any).__resolvers) {\n return (schema as any).__resolvers\n }\n\n return {}\n}\n\nexport function getDynamicFields(schema: Schema): any {\n const resolvers = getResolvers(schema as any)\n if (!resolvers) return []\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {StartGraphQLOptions} from '../types/startGraphQL'\nimport {Schema} from '@orion-js/schema'\n\nexport function getModelLoadedResolvers(schema: Schema, options: StartGraphQLOptions): any[] {\n if (!options.modelResolvers) return []\n const resolvers = options.modelResolvers[schema.__modelName]\n if (!resolvers) return []\n\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n resolver.resolverName = key\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {GlobalResolversMap} from '@orion-js/models'\n\nconst resolversStore: GlobalResolversMap = {}\n\nexport {resolversStore}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {resolversStore} from './resolversStore'\nimport {GraphQLFieldConfig, ThunkObjMap} from 'graphql'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions, mutation: boolean) {\n const {resolvers} = options\n const filteredResolvers = Object.keys(resolvers)\n .map(key => {\n resolvers[key].resolverName = key\n return {\n name: key,\n resolver: resolvers[key],\n }\n })\n .filter(({resolver}) => !!resolver.mutation === !!mutation)\n .filter(({resolver}) => !resolver.private)\n\n const fields: ThunkObjMap<GraphQLFieldConfig<any, any, any>> = {}\n\n for (const {resolver, name} of filteredResolvers) {\n resolversStore[name] = resolver\n\n const type = await getType(resolver.returns, options)\n const args = await getArgs(resolver.params, options)\n\n fields[name] = {\n type,\n args,\n async resolve(_root, params, context, info) {\n try {\n const result = await resolver.resolve(params, context, info)\n return result\n } catch (error) {\n errorHandler(error, {context, resolver, options, name})\n throw error\n }\n },\n }\n }\n\n return fields\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, true)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Mutation',\n fields,\n })\n}\n","import {GraphQLObjectType} from 'graphql'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport getSubscriptions from './getSubscriptions'\n\nexport default async function (options: StartGraphQLOptions): Promise<GraphQLObjectType> {\n if (!options.subscriptions) return null\n\n const fields = await getSubscriptions(options)\n return new GraphQLObjectType({\n name: 'Subscription',\n fields,\n })\n}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const {subscriptions} = options\n const fields = {}\n\n for (const key of Object.keys(subscriptions)) {\n const subscription = subscriptions[key]\n subscription.name = subscription.name || key\n\n const type = await getType(subscription.returns, options)\n const args = await getArgs(subscription.params as any, options)\n fields[subscription.name] = {\n type,\n args,\n async subscribe(root, params, viewer) {\n return await subscription.subscribe(params, viewer)\n },\n }\n }\n\n return fields\n}\n","export default function (apolloError) {\n let response = {...apolloError}\n const error = apolloError.originalError\n\n if (error && error.isValidationError) {\n response.validationErrors = error.validationErrors\n }\n\n if (error && error.getInfo) {\n response = error.getInfo()\n }\n return response\n}\n","import buildSchema from '../buildSchema'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport formatError from './formatError'\nimport {omit} from 'rambdax'\n\nexport default async function (options: StartGraphQLOptions) {\n const schema = await buildSchema(options)\n const passedOptions = omit(\n [\n 'resolvers',\n 'modelResolvers',\n 'subscriptions',\n 'executeGraphQLCache',\n 'useGraphiql',\n 'app',\n 'pubsub',\n ],\n options,\n )\n return {\n ...passedOptions,\n schema,\n formatError,\n } as unknown as ApolloServerOptions<any>\n}\n","import {PubSub} from 'graphql-subscriptions'\nimport {setPubsub} from './pubsub'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport {WebSocketServer} from 'ws'\nimport {useServer} from 'graphql-ws/lib/use/ws'\nimport {getWebsockerViewer} from './websockerViewer'\nimport {getServer} from '@orion-js/http'\n\nexport default function (\n apolloOptions: ApolloServerOptions<any>,\n options: StartGraphQLOptions,\n /**\n * For testing purposes\n */\n wsServer?: any,\n) {\n if (!options.subscriptions) {\n return []\n }\n\n const pubsub = options.pubsub || new PubSub()\n setPubsub(pubsub)\n\n // Creating the WebSocket server\n if (!wsServer) {\n wsServer = new WebSocketServer({\n server: getServer(),\n path: '/subscriptions',\n })\n }\n\n // Hand in the schema we just created and have the\n // WebSocketServer start listening.\n const serverCleanup = useServer(\n {\n schema: apolloOptions.schema,\n context: async (ctx, msg, args) => {\n // This will be run every time the client sends a subscription request\n return getWebsockerViewer(ctx.connectionParams)\n },\n },\n wsServer,\n )\n return [\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n },\n }\n },\n },\n ]\n}\n","// Declare a type.\n\nglobal.getWebsocketViewerRef = () => null\n\nexport const getWebsockerViewer = async (connectionParams: any): Promise<any> => {\n try {\n const viewer = await global.getWebsocketViewerRef(connectionParams)\n if (!viewer) return {}\n return viewer\n } catch {\n return {}\n }\n}\n\nexport const setGetWebsockerViewer = (getViewerFunc: (connectionParams: any) => any): void => {\n global.getWebsocketViewerRef = getViewerFunc\n}\n","import startGraphiQL from './startGraphiQL'\nimport getApolloOptions from './getApolloOptions'\nimport startWebsocket from './startWebsocket'\nimport {getApp, getServer, registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServer} from '@apollo/server'\nimport {expressMiddleware} from '@apollo/server/express4'\nimport {ApolloServerPluginDrainHttpServer} from '@apollo/server/plugin/drainHttpServer'\n\nexport default async function (options: StartGraphQLOptions) {\n const apolloOptions = await getApolloOptions(options)\n\n const app = options.app || getApp()\n const httpServer = getServer()\n\n if (options.useGraphiql) {\n startGraphiQL(apolloOptions, options)\n }\n\n const subPlugins = startWebsocket(apolloOptions, options)\n\n const drainPlugins = httpServer ? [ApolloServerPluginDrainHttpServer({httpServer})] : []\n\n const server = new ApolloServer({\n ...apolloOptions,\n plugins: [...(apolloOptions.plugins || []), ...drainPlugins, ...subPlugins],\n })\n\n await server.start()\n\n const middleware = expressMiddleware(server, {\n // @ts-expect-error\n context: ({req, res}) => req._viewer,\n })\n\n registerRoute(\n route({\n app,\n method: 'all',\n path: options.path || '/graphql',\n bodyParser: 'json',\n bodyParserOptions: options.bodyParserOptions,\n async resolve(req, res, viewer) {\n ;(req as any)._viewer = viewer\n return middleware(req, res, req.next)\n },\n }),\n )\n}\n","import {createResolver} from '@orion-js/resolvers'\nimport {UserError} from '@orion-js/helpers'\nimport ResolverParams from './ResolverParamsInfo'\nimport {resolversStore} from '../buildSchema/getResolvers/resolversStore'\nimport serializeSchema from './serializeSchema'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaFieldType} from '@orion-js/schema'\nimport getBasicResultQuery from './getBasicResultQuery'\n\nfunction getResultTypeName(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n const schema = getSchemaFromAnyOrionForm(returns)\n if (schema?.__modelName) return schema.__modelName\n return\n}\n\nasync function getInternalBasicResultQuery(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n\n if (isSchemaLike(returns)) {\n const schema = getSchemaFromAnyOrionForm(returns) as Schema\n return await getBasicResultQuery({\n type: schema,\n })\n }\n return ''\n}\n\nexport default createResolver({\n params: {\n name: {\n type: 'ID',\n },\n mutation: {\n type: Boolean,\n },\n },\n returns: ResolverParams,\n mutation: false,\n async resolve({mutation, name}) {\n const resolver = resolversStore[name]\n if (!resolver) {\n throw new UserError(\n 'notFound',\n `${mutation ? 'Mutation' : 'Query'} named \"${name}\" not found`,\n )\n }\n if (!!resolver.mutation !== !!mutation) {\n throw new UserError('incorrectType', `\"${name}\" is ${mutation ? 'not' : ''} a mutation`)\n }\n\n return {\n name,\n basicResultQuery: await getInternalBasicResultQuery(resolver.returns),\n params: await serializeSchema(resolver.params),\n result: getResultTypeName(resolver.returns),\n }\n },\n})\n","import {schemaWithName} from '@orion-js/schema'\nexport default schemaWithName('ResolverParams', {\n name: {\n type: 'string',\n },\n params: {\n type: 'blackbox',\n },\n result: {\n type: 'string',\n },\n basicResultQuery: {\n type: 'string',\n },\n})\n","import {FieldType, Schema, SchemaWithMetadata, getSchemaFromAnyOrionForm} from '@orion-js/schema'\nimport getField from './getField'\n\nexport default async function serializeSchema(params: Schema): Promise<SchemaWithMetadata> {\n if (!params) return\n\n const schema = getSchemaFromAnyOrionForm(params) as Schema\n\n if (Object.keys(schema).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(schema).filter(key => !key.startsWith('__'))) {\n const field = schema[key]\n fields[key] = await getField(field)\n\n const typeAsFieldType = field?.type as FieldType\n if (typeAsFieldType?.toSerializedType && fields[key].type) {\n fields[key].type = await typeAsFieldType?.toSerializedType(field)\n }\n }\n\n return fields\n}\n","import {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n SchemaNode,\n} from '@orion-js/schema'\nimport {isType, omit} from 'rambdax'\nimport getScalar from '../buildSchema/getType/getScalar'\nimport {getStaticFields} from './getStaticFields'\n\nexport default async function getParams(field: SchemaNode) {\n const {type} = field\n\n if (Array.isArray(type)) {\n const serialized = await getParams({...field, type: type[0]})\n return {\n ...serialized,\n type: [serialized.type],\n __graphQLType: `[${serialized.__graphQLType}]`,\n }\n }\n\n const isSchema = isSchemaLike(type)\n\n if (isSchema) {\n const schemaOfType = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schemaOfType.__modelName\n if (!modelName) {\n throw new Error('The schema needs a model name to be serialized for GraphQL')\n }\n\n const fields = {}\n\n for (const field of getStaticFields(schemaOfType)) {\n fields[field.key] = await getParams(field)\n }\n\n return {\n ...omit(['key'], field),\n type: fields,\n __graphQLType: `${modelName}Input`,\n }\n }\n\n const schemaType = getFieldType(type)\n const graphQLType = await getScalar(schemaType)\n\n const withoutKey = isType('Object', field) ? omit(['key'], field) : ({} as any)\n\n return {\n ...withoutKey,\n type: schemaType.name,\n __graphQLType: graphQLType.name,\n }\n}\n","import {getStaticFields} from './getStaticFields'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaNode} from '@orion-js/schema'\n\nexport default async function getBasicQuery(field: SchemaNode) {\n if (!field.type) return ''\n\n if (Array.isArray(field.type)) {\n return getBasicQuery({\n ...field,\n type: field.type[0],\n })\n }\n\n if (!isSchemaLike(field.type)) {\n return field.key\n }\n\n const schema = getSchemaFromAnyOrionForm(field.type) as Schema\n\n const fields = []\n for (const field of getStaticFields(schema)) {\n fields.push(await getBasicQuery(field))\n }\n\n const key = field.key ? `${field.key} ` : ''\n\n return `${key}{ ${fields.join(' ')} }`\n}\n","import params from './params'\n\nexport default {\n params,\n}\n","import {ResolverOptions} from '@orion-js/resolvers'\nimport {InferSchemaType, SchemaFieldType} from '@orion-js/schema'\n\nexport class OrionSubscription<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n> {\n name: string\n params: TParamsSchema\n subscribe: (\n callParams: InferSchemaType<TParamsSchema>,\n viewer: InferSchemaType<TReturnsSchema>,\n ) => {}\n returns: TReturnsSchema\n publish: (\n params: InferSchemaType<TParamsSchema>,\n data: InferSchemaType<TReturnsSchema>,\n ) => Promise<void>\n}\n\nexport type CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => OrionSubscription<TParamsSchema, TReturnsSchema>\n\nexport interface OrionSubscriptionsMap {\n [key: string]: OrionSubscription\n}\n\nexport type OrionSubscriptionOptions<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n> = Omit<ResolverOptions<TParamsSchema, TReturnsSchema, TViewer>, 'resolve'> & {\n /**\n * This function is used to check if the user can subscribe to the subscription.\n * If not provided, the subscription will be public.\n * @param params - The parameters of the subscription.\n * @param viewer - The viewer of the subscription.\n * @returns true if the user can subscribe to the subscription, false otherwise.\n */\n canSubscribe?: (params: InferSchemaType<TParamsSchema>, viewer: TViewer) => Promise<boolean>\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createResolver,\n GlobalResolver,\n GlobalResolverOptions,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nexport {createResolver}\n\nexport const createQuery = createResolver\nexport const createMutation = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: Omit<GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>, 'mutation'>,\n) => {\n return createResolver({\n ...options,\n mutation: true,\n })\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nexport const internalResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Resolvers() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n serviceMetadata.set(target, {_serviceType: 'resolvers'})\n }\n}\n\nexport function Query(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Query(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Query(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n resolvers[propertyKey] = this[propertyKey]\n }\n\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function Mutation(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Mutation(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Mutation(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n mutation: true,\n resolve: this[propertyKey].bind(this),\n })\n }\n if (context.kind === 'field') {\n this[propertyKey].mutation = true\n resolvers[propertyKey] = this[propertyKey]\n }\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceResolvers(target: any): {\n [key: string]: GlobalResolver<any, any, any, any>\n} {\n const instance = getInstance(target)\n\n const className = instance.constructor.name\n const errorMessage = `You must pass a class decorated with @Resolvers to getServiceResolvers. Check the class ${className}`\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(errorMessage)\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'resolvers') {\n throw new Error(`${errorMessage}. Got class type ${instanceMetadata._serviceType}`)\n }\n\n const resolversMap = internalResolversMetadata.get(instance) || {}\n\n return resolversMap\n}\n","import {ResolverMiddleware} from '@orion-js/resolvers'\nimport {SchemaInAnyOrionForm} from '@orion-js/schema'\n\nconst resolversMetadata = new WeakMap<any, Record<string, any>>()\n\nfunction addTargetMetadata(\n target: any,\n propertyKey: string,\n metadataKey: string,\n metadata: any,\n isArray = false,\n) {\n const targetMetadata = resolversMetadata.get(target) || {}\n targetMetadata[propertyKey] = targetMetadata[propertyKey] || {}\n\n if (isArray) {\n targetMetadata[propertyKey][metadataKey] = targetMetadata[propertyKey][metadataKey] || []\n targetMetadata[propertyKey][metadataKey].unshift(metadata)\n } else {\n targetMetadata[propertyKey][metadataKey] = metadata\n }\n\n resolversMetadata.set(target, targetMetadata)\n}\n\nexport function getTargetMetadata(target: any, propertyKey: string, metadataKey: string) {\n const targetMetadata = resolversMetadata.get(target) || {}\n return targetMetadata[propertyKey]?.[metadataKey]\n}\n\nexport function UseMiddleware<TMiddleware extends ResolverMiddleware, This>(params: TMiddleware) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'middlewares', params, true)\n return method\n }\n}\n\nexport function ResolverParams<TParams extends SchemaInAnyOrionForm, This>(params: TParams) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'params', params, false)\n return method\n }\n}\n\nexport function ResolverReturns<This>(returns: any) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'returns', returns, false)\n return method\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createModelResolver as createModelResolverFromResolvers,\n ModelResolver as ModelResolverType,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\n\nexport const createModelResolver = createModelResolverFromResolvers\n\nexport interface ModelResolversOptions {\n // the model name to add resolvers. If not specified, the model name will be the schema name\n modelName?: string\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<\n any,\n {_serviceType: string; options: ModelResolversOptions; _modelName: string}\n>()\nconst modelResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function ModelResolvers(typedSchema: any, options: ModelResolversOptions = {}) {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n const className = context.name\n\n const modelName = (() => {\n if (options.modelName) {\n return options.modelName\n }\n\n if (typeof typedSchema.name === 'string') {\n return typedSchema.name\n }\n\n if (typedSchema.__modelName) {\n return typedSchema.__modelName\n }\n\n throw new Error(`You must specify a model name for the model resolvers (at: ${className})`)\n })()\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {\n _serviceType: 'modelResolvers',\n options: options,\n _modelName: modelName,\n })\n })\n }\n}\n\nexport function ModelResolver(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function ModelResolver(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'middlewares'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function ModelResolver(options = {}) {\n return (method: any, context: ClassMethodDecoratorContext | ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const modelResolvers = modelResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n modelResolvers[propertyKey] = createModelResolver({\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n modelResolvers[propertyKey] = this[propertyKey]\n }\n\n modelResolversMetadata.set(this, modelResolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceModelResolvers(target: any): {\n [key: string]: {\n [key: string]: ModelResolverType\n }\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'modelResolvers') {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const modelResolversMap = modelResolversMetadata.get(instance) || {}\n\n return {\n [instanceMetadata._modelName]: modelResolversMap,\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {OrionSubscription} from '../types/subscription'\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nconst subscriptionsMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Subscriptions() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {_serviceType: 'subscriptions'})\n })\n }\n}\n\nexport function Subscription(): (method: any, context: ClassFieldDecoratorContext) => any\nexport function Subscription() {\n return (_method: any, context: ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n context.addInitializer(function (this) {\n const repo = serviceMetadata.get(this.constructor)\n if (!repo || repo._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions if you want to use @Subscription',\n )\n }\n\n const subscriptions = subscriptionsMetadata.get(this) || {}\n\n subscriptions[propertyKey] = this[propertyKey]\n\n subscriptionsMetadata.set(this, subscriptions)\n\n this[propertyKey] = subscriptions[propertyKey]\n })\n }\n}\n\nexport function getServiceSubscriptions(target: any): {\n [key: string]: OrionSubscription\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const subscriptionsMap = subscriptionsMetadata.get(instance) || {}\n\n return subscriptionsMap\n}\n"],"mappings":"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","names":["GraphQL","createSubscription","pubsub","import_graphql","import_graphql","import_graphql","import_schema","coerceBigInt","import_graphql","import_graphql","import_graphql","import_schema","type","graphQLType","key","type","import_graphql","crypto","getGraphQLType","type","buildFields","registeredGraphQLTypes","type","graphQLType","type","import_graphql","import_graphql","type","import_ws","import_http","pubsub","import_http","import_helpers","import_schema","import_schema","import_schema","type","field","key","import_schema","import_schema","field","type","GraphQL","import_resolvers","isArray","import_services","import_resolvers","createModelResolverFromResolvers","serviceMetadata","import_services","serviceMetadata","createSubscription"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/subscription/index.ts","../src/pubsub.ts","../src/subscription/getChannelName.ts","../src/startGraphiQL.ts","../src/buildSchema/index.ts","../src/buildSchema/getQuery.ts","../src/buildSchema/getType/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/equals.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/compare.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/includes.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/omit.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/buildSchema/getType/BigIntScalar.ts","../src/buildSchema/getType/DateScalar.ts","../src/buildSchema/getType/JSONScalar.ts","../src/buildSchema/getType/getScalar.ts","../src/buildSchema/getArgs/getField.ts","../src/resolversSchemas/getStaticFields.ts","../src/buildSchema/getArgs/index.ts","../src/errorHandler.ts","../src/buildSchema/getType/getTypeAsResolver.ts","../src/resolversSchemas/getDynamicFields.ts","../src/resolversSchemas/getModelLoadedResolvers.ts","../src/buildSchema/getResolvers/resolversStore.ts","../src/buildSchema/getResolvers/index.ts","../src/buildSchema/getMutation.ts","../src/buildSchema/getSubscription.ts","../src/buildSchema/getSubscriptions/index.ts","../src/getApolloOptions/formatError.ts","../src/getApolloOptions/index.ts","../src/startWebsocket.ts","../src/websockerViewer.ts","../src/startGraphQL.ts","../src/resolversSchemas/params.ts","../src/resolversSchemas/ResolverParamsInfo.ts","../src/resolversSchemas/serializeSchema.ts","../src/resolversSchemas/getField.ts","../src/resolversSchemas/getBasicResultQuery.ts","../src/resolversSchemas/index.ts","../src/types/subscription.ts","../src/service/global.ts","../src/service/middlewares.ts","../src/service/model.ts","../src/service/subscription.ts"],"sourcesContent":["import subscription from './subscription'\nimport startGraphQL from './startGraphQL'\nimport startGraphiQL from './startGraphiQL'\nimport resolversSchemas from './resolversSchemas'\nimport ResolverParamsInfo from './resolversSchemas/ResolverParamsInfo'\nimport serializeSchema from './resolversSchemas/serializeSchema'\nimport getBasicResultQuery from './resolversSchemas/getBasicResultQuery'\nimport * as GraphQL from 'graphql'\n\nconst createSubscription = subscription\n\nexport {\n GraphQL,\n startGraphQL,\n startGraphiQL,\n resolversSchemas,\n ResolverParamsInfo,\n serializeSchema,\n subscription,\n createSubscription,\n getBasicResultQuery,\n}\n\nexport * from './types'\nexport * from './service'\nexport * from './websockerViewer'\n","import {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\nimport {getPubsub} from '../pubsub'\nimport {\n CreateOrionSubscriptionFunction,\n OrionSubscription,\n OrionSubscriptionOptions,\n} from '../types/subscription'\nimport getChannelName from './getChannelName'\n\nconst createSubscription: CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType,\n TReturnsSchema extends SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => {\n const subscription = {} as OrionSubscription<TParamsSchema, TReturnsSchema>\n\n const getSubscriptionName = () => {\n if (!subscription.name) {\n throw new Error('This subscription is not yet initialized in GraphQL')\n }\n\n return subscription.name\n }\n\n // the publish function\n subscription.publish = async (params, data) => {\n const pubsub = getPubsub()\n const channelName = getChannelName(getSubscriptionName(), params)\n await pubsub.publish(channelName, {[getSubscriptionName()]: data})\n }\n\n subscription.subscribe = async (params, viewer) => {\n const pubsub = getPubsub()\n try {\n if (options.canSubscribe) {\n const canSubscribe = await options.canSubscribe(params, viewer)\n if (!canSubscribe) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n const channelName = getChannelName(getSubscriptionName(), params)\n return pubsub.asyncIterator(channelName)\n } catch (_error) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n subscription.params = (getSchemaFromAnyOrionForm(options.params) ?? {}) as TParamsSchema\n subscription.returns = getSchemaFromAnyOrionForm(options.returns) as TReturnsSchema\n\n return subscription as OrionSubscription<TParamsSchema, TReturnsSchema>\n}\n\nexport default createSubscription\n","import {PubSubEngine} from 'graphql-subscriptions'\n\nlet pubsub = null\n\nexport const setPubsub = function (newPubsub: PubSubEngine) {\n pubsub = newPubsub\n}\n\nexport const getPubsub: () => PubSubEngine = function () {\n return pubsub\n}\n","import {hashObject} from '@orion-js/helpers'\n\nexport default function (name: string, params) {\n const hash = hashObject(params)\n const channelName = `${name}_${hash}`\n return channelName\n}\n","import {registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\n\n// Ensures string values are safe to be used within a <script> tag.\n// TODO: I don't think that's the right escape function\nfunction safeSerialize(data) {\n return data ? JSON.stringify(data).replace(/\\//g, '\\\\/') : null\n}\n\nconst getHTML = (_apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions, data) => {\n // Current latest version of GraphiQL.\n const GRAPHIQL_VERSION = '0.11.11'\n\n const endpointURL = '/graphql'\n const subscriptionsEndpoint = '/subscriptions'\n\n const queryString = data.query\n const variablesString = data.variables ? JSON.stringify(data.variables, null, 2) : null\n const operationName = data.operationName\n const useSubs = !!options.subscriptions\n\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>GraphiQL</title>\n <meta name=\"robots\" content=\"noindex\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n }\n </style>\n <link href=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.css\" rel=\"stylesheet\" />\n <script src=\"//unpkg.com/react@15.6.1/dist/react.min.js\"></script>\n <script src=\"//unpkg.com/jssha@2.3.1/src/sha512.js\"></script>\n <script src=\"//unpkg.com/react-dom@15.6.1/dist/react-dom.min.js\"></script>\n <script src=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.min.js\"></script>\n <script src=\"//cdn.jsdelivr.net/fetch/2.0.1/fetch.min.js\"></script>\n ${\n useSubs\n ? `<script src=\"//unpkg.com/subscriptions-transport-ws@0.5.4/browser/client.js\"></script>\n <script src=\"//unpkg.com/graphiql-subscriptions-fetcher@0.0.2/browser/client.js\"></script>`\n : ''\n }\n</head>\n<body>\n <script>\n // Collect the URL parameters\n var parameters = {};\n window.location.search.substr(1).split('&').forEach(function (entry) {\n var eq = entry.indexOf('=');\n if (eq >= 0) {\n parameters[decodeURIComponent(entry.slice(0, eq))] =\n decodeURIComponent(entry.slice(eq + 1));\n }\n });\n // Produce a Location query string from a parameter object.\n function locationQuery(params, location) {\n return (location ? location: '') + '?' + Object.keys(params).map(function (key) {\n return encodeURIComponent(key) + '=' +\n encodeURIComponent(params[key]);\n }).join('&');\n }\n // Derive a fetch URL from the current URL, sans the GraphQL parameters.\n var graphqlParamNames = {\n query: true,\n variables: true,\n operationName: true\n };\n var otherParams = {};\n for (var k in parameters) {\n if (parameters.hasOwnProperty(k) && graphqlParamNames[k] !== true) {\n otherParams[k] = parameters[k];\n }\n }\n // We don't use safe-serialize for location, because it's not client input.\n var fetchURL = '${endpointURL}'\n // Defines a GraphQL fetcher using the fetch API.\n function graphQLHttpFetcher(graphQLParams) {\n const body = JSON.stringify(graphQLParams)\n const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n }\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime()\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + body)\n const signature = shaObj.getHMAC('HEX')\n headers['X-ORION-NONCE'] = nonce\n headers['X-ORION-PUBLICKEY'] = publicKey\n headers['X-ORION-SIGNATURE'] = signature\n }\n return fetch(fetchURL, {\n method: 'post',\n headers,\n body,\n credentials: 'same-origin',\n }).then(function (response) {\n return response.text();\n }).then(function (responseBody) {\n try {\n const json = JSON.parse(responseBody);\n if (json.data && json.data.loginWithPassword) {\n const publicKey = json.data.loginWithPassword.publicKey\n const secretKey = json.data.loginWithPassword.secretKey\n if (publicKey && secretKey) {\n localStorage.setItem('GraphiQL:publicKey', publicKey)\n localStorage.setItem('GraphiQL:secretKey', secretKey)\n alert('Session saved in localStorage')\n }\n }\n if (json.error && json.error === 'AuthError') {\n localStorage.setItem('GraphiQL:publicKey', '')\n localStorage.setItem('GraphiQL:secretKey', '')\n alert('Logged out after receiving AuthError')\n }\n return json\n } catch (error) {\n return responseBody;\n }\n });\n }\n ${\n useSubs\n ? `\n let params = {}\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime() + 500\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + 'websockethandshake')\n const signature = shaObj.getHMAC('HEX')\n params = {\n nonce,\n publicKey,\n signature\n }\n }\n\n const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'\n let subscriptionsClient = new window.SubscriptionsTransportWs.SubscriptionClient(protocol + window.location.host + '${subscriptionsEndpoint}', {\n reconnect: true,\n connectionParams: params\n });\n let myCustomFetcher = window.GraphiQLSubscriptionsFetcher.graphQLFetcher(subscriptionsClient, graphQLHttpFetcher);\n var fetcher = myCustomFetcher\n `\n : `\n var fetcher = graphQLHttpFetcher\n `\n }\n\n // When the query and variables string is edited, update the URL bar so\n // that it can be easily shared.\n function onEditQuery(newQuery) {\n parameters.query = newQuery;\n updateURL();\n }\n function onEditVariables(newVariables) {\n parameters.variables = newVariables;\n updateURL();\n }\n function onEditOperationName(newOperationName) {\n parameters.operationName = newOperationName;\n updateURL();\n }\n function updateURL() {\n var cleanParams = Object.keys(parameters).filter(function(v) {\n return parameters[v];\n }).reduce(function(old, v) {\n old[v] = parameters[v];\n return old;\n }, {});\n history.replaceState(null, null, locationQuery(cleanParams) + window.location.hash);\n }\n // Render <GraphiQL /> into the body.\n ReactDOM.render(\n React.createElement(GraphiQL, {\n fetcher: fetcher,\n onEditQuery: onEditQuery,\n onEditVariables: onEditVariables,\n onEditOperationName: onEditOperationName,\n query: ${safeSerialize(queryString)},\n response: null,\n variables: ${safeSerialize(variablesString)},\n operationName: ${safeSerialize(operationName)},\n }),\n document.body\n );\n </script>\n</body>\n</html>`\n}\n\nexport default function (apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions) {\n registerRoute(\n route({\n path: '/graphiql',\n method: 'get',\n async resolve(req) {\n return {\n body: getHTML(apolloOptions, options, req.query),\n }\n },\n }),\n )\n}\n","import {GraphQLSchema} from 'graphql'\nimport getQuery from './getQuery'\nimport getMutation from './getMutation'\nimport getSubscription from './getSubscription'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const query = await getQuery(options)\n const mutation = await getMutation(options)\n const subscription = await getSubscription(options)\n const schema = new GraphQLSchema({query, mutation, subscription})\n return schema\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, false)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Query',\n fields,\n })\n}\n","import {GraphQLList, GraphQLObjectType} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaFieldType,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport {equals} from 'rambdax'\nimport getScalar from './getScalar'\nimport getTypeAsResolver from './getTypeAsResolver'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\nimport {getDynamicFields} from '../../resolversSchemas/getDynamicFields'\nimport {getModelLoadedResolvers} from '../../resolversSchemas/getModelLoadedResolvers'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport const createGraphQLObjectType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = field.graphQLResolver\n ? getTypeAsResolver({resolver: field.graphQLResolver, getGraphQLType, options, schema})\n : {type: getGraphQLType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n const addDynamicFields = () => {\n for (const resolver of getDynamicFields(schema)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n const addModelLoadedResolvers = () => {\n for (const resolver of getModelLoadedResolvers(schema, options)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n addStaticFields()\n addDynamicFields()\n addModelLoadedResolvers()\n\n return fields\n}\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLObjectType}\n>()\n\nexport default function getGraphQLType(type: SchemaFieldType, options: StartGraphQLOptions) {\n if (!type) throw new Error('Type is undefined')\n\n if (Array.isArray(type)) {\n return new GraphQLList(getGraphQLType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schema.__modelName\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLObjectType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n return getScalar(getFieldType(type))\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { isArray } from './_internals/isArray.js'\nimport { type } from './type.js'\n\nexport function _lastIndexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.lastIndexOf(valueToFind)\n\n const { length } = list\n let index = length\n let foundIndex = -1\n\n while (--index > -1 && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nexport function _indexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.indexOf(valueToFind)\n\n let index = -1\n let foundIndex = -1\n const { length } = list\n\n while (++index < length && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nfunction _arrayFromIterator(iter){\n const list = []\n let next\n while (!(next = iter.next()).done)\n list.push(next.value)\n\n return list\n}\n\nfunction _compareSets(a, b){\n if (a.size !== b.size)\n return false\n\n const aList = _arrayFromIterator(a.values())\n const bList = _arrayFromIterator(b.values())\n\n const filtered = aList.filter(aInstance => _indexOf(aInstance, bList) === -1)\n\n return filtered.length === 0\n}\n\nfunction compareErrors(a, b){\n if (a.message !== b.message) return false\n if (a.toString !== b.toString) return false\n\n return a.toString() === b.toString()\n}\n\nfunction parseDate(maybeDate){\n if (!maybeDate.toDateString) return [ false ]\n\n return [ true, maybeDate.getTime() ]\n}\n\nfunction parseRegex(maybeRegex){\n if (maybeRegex.constructor !== RegExp) return [ false ]\n\n return [ true, maybeRegex.toString() ]\n}\n\nexport function equals(a, b){\n if (arguments.length === 1) return _b => equals(a, _b)\n\n if (Object.is(a, b)) return true\n\n const aType = type(a)\n\n if (aType !== type(b)) return false\n if (aType === 'Function')\n return a.name === undefined ? false : a.name === b.name\n\n if ([ 'NaN', 'Null', 'Undefined' ].includes(aType)) return true\n\n if ([ 'BigInt', 'Number' ].includes(aType)){\n if (Object.is(-0, a) !== Object.is(-0, b)) return false\n\n return a.toString() === b.toString()\n }\n\n if ([ 'Boolean', 'String' ].includes(aType))\n return a.toString() === b.toString()\n\n if (aType === 'Array'){\n const aClone = Array.from(a)\n const bClone = Array.from(b)\n\n if (aClone.toString() !== bClone.toString())\n return false\n\n let loopArrayFlag = true\n aClone.forEach((aCloneInstance, aCloneIndex) => {\n if (loopArrayFlag)\n if (\n aCloneInstance !== bClone[ aCloneIndex ] &&\n !equals(aCloneInstance, bClone[ aCloneIndex ])\n )\n loopArrayFlag = false\n\n })\n\n return loopArrayFlag\n }\n\n const aRegex = parseRegex(a)\n const bRegex = parseRegex(b)\n\n if (aRegex[ 0 ])\n return bRegex[ 0 ] ? aRegex[ 1 ] === bRegex[ 1 ] : false\n else if (bRegex[ 0 ]) return false\n\n const aDate = parseDate(a)\n const bDate = parseDate(b)\n\n if (aDate[ 0 ])\n return bDate[ 0 ] ? aDate[ 1 ] === bDate[ 1 ] : false\n else if (bDate[ 0 ]) return false\n\n if (a instanceof Error){\n if (!(b instanceof Error)) return false\n\n return compareErrors(a, b)\n }\n\n if (aType === 'Set')\n return _compareSets(a, b)\n\n if (aType === 'Object'){\n const aKeys = Object.keys(a)\n\n if (aKeys.length !== Object.keys(b).length)\n return false\n\n let loopObjectFlag = true\n aKeys.forEach(aKeyInstance => {\n if (loopObjectFlag){\n const aValue = a[ aKeyInstance ]\n const bValue = b[ aKeyInstance ]\n\n if (aValue !== bValue && !equals(aValue, bValue))\n loopObjectFlag = false\n\n }\n })\n\n return loopObjectFlag\n }\n\n return false\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","export function compare(a, b){\n return String(a) === String(b)\n}\n","import { compare } from './compare.js'\n\nexport function includes(a, list){\n let index = -1\n const { length } = list\n\n while (++index < length)\n if (compare(list[ index ], a))\n return true\n\n return false\n}\n","import { createPath } from './_internals/createPath.js'\nimport { includes } from './_internals/includes.js'\n\nexport function omit(propsToOmit, obj){\n if (arguments.length === 1) return _obj => omit(propsToOmit, _obj)\n\n if (obj === null || obj === undefined)\n return undefined\n\n const propsToOmitValue = createPath(propsToOmit, ',')\n const willReturn = {}\n\n for (const key in obj)\n if (!includes(key, propsToOmitValue))\n willReturn[ key ] = obj[ key ]\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","import {GraphQLScalarType} from 'graphql'\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER\nconst MIN_INT = Number.MIN_SAFE_INTEGER\n\nconst coerceBigInt = function coerceBigInt(value) {\n if (value === '') {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: (empty string)')\n }\n const num = Number(value)\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: ' + String(value))\n }\n const int = Math.floor(num)\n if (int !== num) {\n throw new TypeError('BigInt cannot represent non-integer value: ' + String(value))\n }\n return int\n}\n\nexport default new GraphQLScalarType({\n name: 'BigInt',\n description:\n 'The `BigInt` scalar type represents non-fractional signed whole numeric ' +\n 'values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ',\n serialize: coerceBigInt,\n parseValue: coerceBigInt,\n parseLiteral(ast) {\n if (ast.kind === 'IntValue') {\n const num = parseInt(ast.value, 10)\n if (num <= MAX_INT && num >= MIN_INT) {\n return num\n }\n }\n return null\n },\n})\n","import {GraphQLScalarType} from 'graphql'\nimport {GraphQLDateTime} from 'graphql-scalars'\n\nexport default new GraphQLScalarType({\n name: 'Date',\n serialize: GraphQLDateTime.serialize,\n parseValue: GraphQLDateTime.parseValue,\n parseLiteral: GraphQLDateTime.parseLiteral,\n})\n","import {GraphQLScalarType, Kind} from 'graphql'\n\nfunction identity(value) {\n return value\n}\n\nfunction parseLiteral(ast, variables) {\n switch (ast.kind) {\n case Kind.STRING:\n case Kind.BOOLEAN:\n return ast.value\n case Kind.INT:\n case Kind.FLOAT:\n return parseFloat(ast.value)\n case Kind.OBJECT: {\n const value = Object.create(null)\n ast.fields.forEach(field => {\n value[field.name.value] = parseLiteral(field.value, variables)\n })\n\n return value\n }\n case Kind.LIST:\n return ast.values.map(n => parseLiteral(n, variables))\n case Kind.NULL:\n return null\n case Kind.VARIABLE: {\n const name = ast.name.value\n return variables ? variables[name] : undefined\n }\n default:\n return undefined\n }\n}\n\nexport default new GraphQLScalarType({\n name: 'JSON',\n description:\n 'The `JSON` scalar type represents JSON values as specified by ' +\n '[ECMA-404](http://www.ecma-international.org/' +\n 'publications/files/ECMA-ST/ECMA-404.pdf).',\n serialize: identity,\n parseValue: identity,\n parseLiteral,\n})\n","import BigIntScalar from './BigIntScalar'\nimport DateScalar from './DateScalar'\nimport JSONScalar from './JSONScalar'\nimport * as GraphQL from 'graphql'\n\nconst {GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean} = GraphQL\n\nconst fieldMap = {\n string: GraphQLString,\n email: GraphQLString,\n date: DateScalar,\n integer: BigIntScalar,\n number: GraphQLFloat,\n ID: GraphQLID,\n boolean: GraphQLBoolean,\n blackbox: JSONScalar,\n any: JSONScalar,\n}\n\nexport default function (fieldType) {\n if (fieldMap[fieldType.name]) {\n return fieldMap[fieldType.name]\n }\n\n if (fieldType.name.startsWith('typedId:')) {\n return fieldMap.string\n }\n\n if (fieldType.toGraphQLType) {\n const result = fieldType.toGraphQLType(GraphQL)\n if (result.then) {\n throw new Error('toGraphQLType cant return a promise')\n }\n return result\n }\n throw new Error(`Field type \"${fieldType.name}\" has no convertion to GraphQLType`)\n}\n","import {GraphQLInputObjectType, GraphQLList} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport getScalar from '../getType/getScalar'\nimport {equals} from 'rambdax'\nimport {StartGraphQLOptions} from '../../types'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLInputObjectType}\n>()\n\nconst resolveType = (type, options: StartGraphQLOptions) => {\n if (!type) throw new Error('No type specified')\n\n if (type?.[Symbol.metadata]?._getModel) {\n const model = type[Symbol.metadata]._getModel()\n return resolveType(model, options)\n }\n\n if (Array.isArray(type)) {\n return new GraphQLList(resolveType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = `${schema.__modelName}Input`\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!schema.__modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLInputType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n const schemaType = getFieldType(type)\n return getScalar(schemaType)\n}\n\nexport default resolveType\n\nexport const createGraphQLInputType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLInputObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = {type: resolveType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n addStaticFields()\n\n return fields\n}\n","import {Schema, SchemaNode, SchemaWithMetadata} from '@orion-js/schema'\n\nexport function getStaticFields(schema: Schema | SchemaWithMetadata): Array<SchemaNode> {\n if (!schema) return []\n\n // retrocompatibility with model\n if ((schema as any).getSchema) {\n schema = (schema as any).getSchema()\n }\n\n const keys = Object.keys(schema).filter(key => !key.startsWith('__'))\n\n return (\n keys\n .map((key): SchemaNode => {\n const field = schema[key] as SchemaNode\n return {\n ...field,\n key,\n } as SchemaNode\n })\n // there is a compile error if we don't do this\n .filter(field => !field.private)\n )\n}\n","import {Schema} from '@orion-js/schema'\nimport getField from './getField'\nimport {StartGraphQLOptions} from '../../types'\n\nexport default function (params: Schema, options: StartGraphQLOptions) {\n if (!params) return\n if (Object.keys(params).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(params).filter(key => !key.startsWith('__'))) {\n try {\n const type = getField(params[key].type, options)\n fields[key] = {type}\n } catch (error) {\n throw new Error(`Error creating GraphQL resolver params argument ${key}: ${error.message}`)\n }\n }\n return fields\n}\n","import crypto from 'node:crypto'\nimport {GraphQLError} from 'graphql'\n\nexport default function errorHandler(error, data) {\n const message = `Error in resolver \"${data.name}\" ${\n data.schema ? `of model \"${data.schema.__modelName}\"` : ''\n }`\n\n const hash = crypto\n .createHash('sha1')\n .update(error.message, 'utf8')\n .digest('hex')\n .substring(0, 10)\n error.hash = hash\n\n if (error?.isOrionError) {\n console.warn(message, error)\n throw new GraphQLError(error.message, {\n originalError: error,\n extensions: {\n isOrionError: !!error.isOrionError,\n isValidationError: !!error.isValidationError,\n code: error.code,\n hash,\n info: error.getInfo(),\n },\n })\n }\n console.error(message, error)\n throw new GraphQLError(`${error.message} [${hash}]`, {\n // originalError: error,\n extensions: {\n isOrionError: false,\n isValidationError: false,\n code: 'INTERNAL_SERVER_ERROR',\n hash: hash,\n },\n })\n}\n","import getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {runWithOrionAsyncContext} from '@orion-js/logger'\n\nexport default function ({resolver, getGraphQLType, options, schema}) {\n const type = getGraphQLType(resolver.returns, options)\n const args = getArgs(resolver.params, options)\n return {\n type,\n args,\n async resolve(item, params, context, info) {\n try {\n return await runWithOrionAsyncContext(\n {\n controllerType: 'modelResolver' as const,\n viewer: context,\n params: params,\n parentData: item,\n modelResolverName: resolver.key,\n },\n async () => {\n return await resolver.resolve(item, params, context, info)\n },\n )\n } catch (error) {\n errorHandler(error, {context, resolver, options, schema})\n throw error\n }\n },\n }\n}\n","import {Model, ModelResolversMap} from '@orion-js/models'\nimport {Schema} from '@orion-js/schema'\n\nfunction getResolvers(schema: Schema | Model): ModelResolversMap {\n if (typeof schema.getResolvers === 'function') {\n console.warn('Models are deprecated')\n return (schema as Model).getResolvers()\n }\n\n if ((schema as any).__resolvers) {\n return (schema as any).__resolvers\n }\n\n return {}\n}\n\nexport function getDynamicFields(schema: Schema): any {\n const resolvers = getResolvers(schema as any)\n if (!resolvers) return []\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {StartGraphQLOptions} from '../types/startGraphQL'\nimport {Schema} from '@orion-js/schema'\n\nexport function getModelLoadedResolvers(schema: Schema, options: StartGraphQLOptions): any[] {\n if (!options.modelResolvers) return []\n const resolvers = options.modelResolvers[schema.__modelName]\n if (!resolvers) return []\n\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n resolver.resolverName = key\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {GlobalResolversMap} from '@orion-js/models'\n\nconst resolversStore: GlobalResolversMap = {}\n\nexport {resolversStore}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {resolversStore} from './resolversStore'\nimport {GraphQLFieldConfig, ThunkObjMap} from 'graphql'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\nimport {runWithOrionAsyncContext} from '@orion-js/logger'\n\nexport default async function (options: StartGraphQLOptions, mutation: boolean) {\n const {resolvers} = options\n const filteredResolvers = Object.keys(resolvers)\n .map(key => {\n return {\n name: key,\n resolver: resolvers[key],\n }\n })\n .filter(({resolver}) => !!resolver.mutation === !!mutation)\n .filter(({resolver}) => !resolver.private)\n\n const fields: ThunkObjMap<GraphQLFieldConfig<any, any, any>> = {}\n\n for (const {resolver, name} of filteredResolvers) {\n resolversStore[name] = resolver\n\n const type = await getType(resolver.returns, options)\n const args = await getArgs(resolver.params, options)\n\n fields[name] = {\n type,\n args,\n async resolve(_root, params, context, info) {\n try {\n return await runWithOrionAsyncContext(\n {\n controllerType: 'resolver' as const,\n viewer: context,\n params: params,\n resolverName: name,\n },\n async () => {\n return await resolver.resolve(params, context, info)\n },\n )\n } catch (error) {\n errorHandler(error, {context, resolver, options, name})\n throw error\n }\n },\n }\n }\n\n return fields\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, true)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Mutation',\n fields,\n })\n}\n","import {GraphQLObjectType} from 'graphql'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport getSubscriptions from './getSubscriptions'\n\nexport default async function (options: StartGraphQLOptions): Promise<GraphQLObjectType> {\n if (!options.subscriptions) return null\n\n const fields = await getSubscriptions(options)\n return new GraphQLObjectType({\n name: 'Subscription',\n fields,\n })\n}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const {subscriptions} = options\n const fields = {}\n\n for (const key of Object.keys(subscriptions)) {\n const subscription = subscriptions[key]\n subscription.name = subscription.name || key\n\n const type = await getType(subscription.returns, options)\n const args = await getArgs(subscription.params as any, options)\n fields[subscription.name] = {\n type,\n args,\n async subscribe(root, params, viewer) {\n return await subscription.subscribe(params, viewer)\n },\n }\n }\n\n return fields\n}\n","export default function (apolloError) {\n let response = {...apolloError}\n const error = apolloError.originalError\n\n if (error && error.isValidationError) {\n response.validationErrors = error.validationErrors\n }\n\n if (error && error.getInfo) {\n response = error.getInfo()\n }\n return response\n}\n","import buildSchema from '../buildSchema'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport formatError from './formatError'\nimport {omit} from 'rambdax'\n\nexport default async function (options: StartGraphQLOptions) {\n const schema = await buildSchema(options)\n const passedOptions = omit(\n [\n 'resolvers',\n 'modelResolvers',\n 'subscriptions',\n 'executeGraphQLCache',\n 'useGraphiql',\n 'app',\n 'pubsub',\n ],\n options,\n )\n return {\n ...passedOptions,\n schema,\n formatError,\n } as unknown as ApolloServerOptions<any>\n}\n","import {PubSub} from 'graphql-subscriptions'\nimport {setPubsub} from './pubsub'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport {WebSocketServer} from 'ws'\nimport {useServer} from 'graphql-ws/lib/use/ws'\nimport {getWebsockerViewer} from './websockerViewer'\nimport {getServer} from '@orion-js/http'\n\nexport default function (\n apolloOptions: ApolloServerOptions<any>,\n options: StartGraphQLOptions,\n /**\n * For testing purposes\n */\n wsServer?: any,\n) {\n if (!options.subscriptions) {\n return []\n }\n\n const pubsub = options.pubsub || new PubSub()\n setPubsub(pubsub)\n\n // Creating the WebSocket server\n if (!wsServer) {\n wsServer = new WebSocketServer({\n server: getServer(),\n path: '/subscriptions',\n })\n }\n\n // Hand in the schema we just created and have the\n // WebSocketServer start listening.\n const serverCleanup = useServer(\n {\n schema: apolloOptions.schema,\n context: async (ctx, msg, args) => {\n // This will be run every time the client sends a subscription request\n return getWebsockerViewer(ctx.connectionParams)\n },\n },\n wsServer,\n )\n return [\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n },\n }\n },\n },\n ]\n}\n","// Declare a type.\n\nglobal.getWebsocketViewerRef = () => null\n\nexport const getWebsockerViewer = async (connectionParams: any): Promise<any> => {\n try {\n const viewer = await global.getWebsocketViewerRef(connectionParams)\n if (!viewer) return {}\n return viewer\n } catch {\n return {}\n }\n}\n\nexport const setGetWebsockerViewer = (getViewerFunc: (connectionParams: any) => any): void => {\n global.getWebsocketViewerRef = getViewerFunc\n}\n","import startGraphiQL from './startGraphiQL'\nimport getApolloOptions from './getApolloOptions'\nimport startWebsocket from './startWebsocket'\nimport {getApp, getServer, registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServer} from '@apollo/server'\nimport {expressMiddleware} from '@apollo/server/express4'\nimport {ApolloServerPluginDrainHttpServer} from '@apollo/server/plugin/drainHttpServer'\n\nexport default async function (options: StartGraphQLOptions) {\n const apolloOptions = await getApolloOptions(options)\n\n const app = options.app || getApp()\n const httpServer = getServer()\n\n if (options.useGraphiql) {\n startGraphiQL(apolloOptions, options)\n }\n\n const subPlugins = startWebsocket(apolloOptions, options)\n\n const drainPlugins = httpServer ? [ApolloServerPluginDrainHttpServer({httpServer})] : []\n\n const server = new ApolloServer({\n ...apolloOptions,\n plugins: [...(apolloOptions.plugins || []), ...drainPlugins, ...subPlugins],\n })\n\n await server.start()\n\n const middleware = expressMiddleware(server, {\n // @ts-expect-error\n context: ({req, res}) => req._viewer,\n })\n\n registerRoute(\n route({\n app,\n method: 'all',\n path: options.path || '/graphql',\n bodyParser: 'json',\n bodyParserOptions: options.bodyParserOptions,\n async resolve(req, res, viewer) {\n ;(req as any)._viewer = viewer\n return middleware(req, res, req.next)\n },\n }),\n )\n}\n","import {createResolver} from '@orion-js/resolvers'\nimport {UserError} from '@orion-js/helpers'\nimport ResolverParams from './ResolverParamsInfo'\nimport {resolversStore} from '../buildSchema/getResolvers/resolversStore'\nimport serializeSchema from './serializeSchema'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaFieldType} from '@orion-js/schema'\nimport getBasicResultQuery from './getBasicResultQuery'\n\nfunction getResultTypeName(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n const schema = getSchemaFromAnyOrionForm(returns)\n if (schema?.__modelName) return schema.__modelName\n return\n}\n\nasync function getInternalBasicResultQuery(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n\n if (isSchemaLike(returns)) {\n const schema = getSchemaFromAnyOrionForm(returns) as Schema\n return await getBasicResultQuery({\n type: schema,\n })\n }\n return ''\n}\n\nexport default createResolver({\n params: {\n name: {\n type: 'ID',\n },\n mutation: {\n type: Boolean,\n },\n },\n returns: ResolverParams,\n mutation: false,\n async resolve({mutation, name}) {\n const resolver = resolversStore[name]\n if (!resolver) {\n throw new UserError(\n 'notFound',\n `${mutation ? 'Mutation' : 'Query'} named \"${name}\" not found`,\n )\n }\n if (!!resolver.mutation !== !!mutation) {\n throw new UserError('incorrectType', `\"${name}\" is ${mutation ? 'not' : ''} a mutation`)\n }\n\n return {\n name,\n basicResultQuery: await getInternalBasicResultQuery(resolver.returns),\n params: await serializeSchema(resolver.params),\n result: getResultTypeName(resolver.returns),\n }\n },\n})\n","import {schemaWithName} from '@orion-js/schema'\nexport default schemaWithName('ResolverParams', {\n name: {\n type: 'string',\n },\n params: {\n type: 'blackbox',\n },\n result: {\n type: 'string',\n },\n basicResultQuery: {\n type: 'string',\n },\n})\n","import {FieldType, Schema, SchemaWithMetadata, getSchemaFromAnyOrionForm} from '@orion-js/schema'\nimport getField from './getField'\n\nexport default async function serializeSchema(params: Schema): Promise<SchemaWithMetadata> {\n if (!params) return\n\n const schema = getSchemaFromAnyOrionForm(params) as Schema\n\n if (Object.keys(schema).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(schema).filter(key => !key.startsWith('__'))) {\n const field = schema[key]\n fields[key] = await getField(field)\n\n const typeAsFieldType = field?.type as FieldType\n if (typeAsFieldType?.toSerializedType && fields[key].type) {\n fields[key].type = await typeAsFieldType?.toSerializedType(field)\n }\n }\n\n return fields\n}\n","import {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n SchemaNode,\n} from '@orion-js/schema'\nimport {isType, omit} from 'rambdax'\nimport getScalar from '../buildSchema/getType/getScalar'\nimport {getStaticFields} from './getStaticFields'\n\nexport default async function getParams(field: SchemaNode) {\n const {type} = field\n\n if (Array.isArray(type)) {\n const serialized = await getParams({...field, type: type[0]})\n return {\n ...serialized,\n type: [serialized.type],\n __graphQLType: `[${serialized.__graphQLType}]`,\n }\n }\n\n const isSchema = isSchemaLike(type)\n\n if (isSchema) {\n const schemaOfType = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schemaOfType.__modelName\n if (!modelName) {\n throw new Error('The schema needs a model name to be serialized for GraphQL')\n }\n\n const fields = {}\n\n for (const field of getStaticFields(schemaOfType)) {\n fields[field.key] = await getParams(field)\n }\n\n return {\n ...omit(['key'], field),\n type: fields,\n __graphQLType: `${modelName}Input`,\n }\n }\n\n const schemaType = getFieldType(type)\n const graphQLType = await getScalar(schemaType)\n\n const withoutKey = isType('Object', field) ? omit(['key'], field) : ({} as any)\n\n return {\n ...withoutKey,\n type: schemaType.name,\n __graphQLType: graphQLType.name,\n }\n}\n","import {getStaticFields} from './getStaticFields'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaNode} from '@orion-js/schema'\n\nexport default async function getBasicQuery(field: SchemaNode) {\n if (!field.type) return ''\n\n if (Array.isArray(field.type)) {\n return getBasicQuery({\n ...field,\n type: field.type[0],\n })\n }\n\n if (!isSchemaLike(field.type)) {\n return field.key\n }\n\n const schema = getSchemaFromAnyOrionForm(field.type) as Schema\n\n const fields = []\n for (const field of getStaticFields(schema)) {\n fields.push(await getBasicQuery(field))\n }\n\n const key = field.key ? `${field.key} ` : ''\n\n return `${key}{ ${fields.join(' ')} }`\n}\n","import params from './params'\n\nexport default {\n params,\n}\n","import {ResolverOptions} from '@orion-js/resolvers'\nimport {InferSchemaType, SchemaFieldType} from '@orion-js/schema'\n\nexport class OrionSubscription<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n> {\n name: string\n params: TParamsSchema\n subscribe: (\n callParams: InferSchemaType<TParamsSchema>,\n viewer: InferSchemaType<TReturnsSchema>,\n ) => {}\n returns: TReturnsSchema\n publish: (\n params: InferSchemaType<TParamsSchema>,\n data: InferSchemaType<TReturnsSchema>,\n ) => Promise<void>\n}\n\nexport type CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => OrionSubscription<TParamsSchema, TReturnsSchema>\n\nexport interface OrionSubscriptionsMap {\n [key: string]: OrionSubscription\n}\n\nexport type OrionSubscriptionOptions<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n> = Omit<ResolverOptions<TParamsSchema, TReturnsSchema, TViewer>, 'resolve'> & {\n /**\n * This function is used to check if the user can subscribe to the subscription.\n * If not provided, the subscription will be public.\n * @param params - The parameters of the subscription.\n * @param viewer - The viewer of the subscription.\n * @returns true if the user can subscribe to the subscription, false otherwise.\n */\n canSubscribe?: (params: InferSchemaType<TParamsSchema>, viewer: TViewer) => Promise<boolean>\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createResolver,\n GlobalResolver,\n GlobalResolverOptions,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nexport {createResolver}\n\nexport const createQuery = createResolver\nexport const createMutation = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: Omit<GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>, 'mutation'>,\n) => {\n return createResolver({\n ...options,\n mutation: true,\n })\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nexport const internalResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Resolvers() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n serviceMetadata.set(target, {_serviceType: 'resolvers'})\n }\n}\n\nexport function Query(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Query(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Query(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n resolvers[propertyKey] = this[propertyKey]\n }\n\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function Mutation(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Mutation(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Mutation(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n mutation: true,\n resolve: this[propertyKey].bind(this),\n })\n }\n if (context.kind === 'field') {\n this[propertyKey].mutation = true\n resolvers[propertyKey] = this[propertyKey]\n }\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceResolvers(target: any): {\n [key: string]: GlobalResolver<any, any, any, any>\n} {\n const instance = getInstance(target)\n\n const className = instance.constructor.name\n const errorMessage = `You must pass a class decorated with @Resolvers to getServiceResolvers. Check the class ${className}`\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(errorMessage)\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'resolvers') {\n throw new Error(`${errorMessage}. Got class type ${instanceMetadata._serviceType}`)\n }\n\n const resolversMap = internalResolversMetadata.get(instance) || {}\n\n return resolversMap\n}\n","import {ResolverMiddleware} from '@orion-js/resolvers'\nimport {SchemaInAnyOrionForm} from '@orion-js/schema'\n\nconst resolversMetadata = new WeakMap<any, Record<string, any>>()\n\nfunction addTargetMetadata(\n target: any,\n propertyKey: string,\n metadataKey: string,\n metadata: any,\n isArray = false,\n) {\n const targetMetadata = resolversMetadata.get(target) || {}\n targetMetadata[propertyKey] = targetMetadata[propertyKey] || {}\n\n if (isArray) {\n targetMetadata[propertyKey][metadataKey] = targetMetadata[propertyKey][metadataKey] || []\n targetMetadata[propertyKey][metadataKey].unshift(metadata)\n } else {\n targetMetadata[propertyKey][metadataKey] = metadata\n }\n\n resolversMetadata.set(target, targetMetadata)\n}\n\nexport function getTargetMetadata(target: any, propertyKey: string, metadataKey: string) {\n const targetMetadata = resolversMetadata.get(target) || {}\n return targetMetadata[propertyKey]?.[metadataKey]\n}\n\nexport function UseMiddleware<TMiddleware extends ResolverMiddleware, This>(params: TMiddleware) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'middlewares', params, true)\n return method\n }\n}\n\nexport function ResolverParams<TParams extends SchemaInAnyOrionForm, This>(params: TParams) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'params', params, false)\n return method\n }\n}\n\nexport function ResolverReturns<This>(returns: any) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'returns', returns, false)\n return method\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createModelResolver as createModelResolverFromResolvers,\n ModelResolver as ModelResolverType,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\n\nexport const createModelResolver = createModelResolverFromResolvers\n\nexport interface ModelResolversOptions {\n // the model name to add resolvers. If not specified, the model name will be the schema name\n modelName?: string\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<\n any,\n {_serviceType: string; options: ModelResolversOptions; _modelName: string}\n>()\nconst modelResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function ModelResolvers(typedSchema: any, options: ModelResolversOptions = {}) {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n const className = context.name\n\n const modelName = (() => {\n if (options.modelName) {\n return options.modelName\n }\n\n if (typeof typedSchema.name === 'string') {\n return typedSchema.name\n }\n\n if (typedSchema.__modelName) {\n return typedSchema.__modelName\n }\n\n throw new Error(`You must specify a model name for the model resolvers (at: ${className})`)\n })()\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {\n _serviceType: 'modelResolvers',\n options: options,\n _modelName: modelName,\n })\n })\n }\n}\n\nexport function ModelResolver(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function ModelResolver(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'middlewares'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function ModelResolver(options = {}) {\n return (method: any, context: ClassMethodDecoratorContext | ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const modelResolvers = modelResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n modelResolvers[propertyKey] = createModelResolver({\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n modelResolvers[propertyKey] = this[propertyKey]\n }\n\n modelResolversMetadata.set(this, modelResolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceModelResolvers(target: any): {\n [key: string]: {\n [key: string]: ModelResolverType\n }\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'modelResolvers') {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const modelResolversMap = modelResolversMetadata.get(instance) || {}\n\n return {\n [instanceMetadata._modelName]: modelResolversMap,\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {OrionSubscription} from '../types/subscription'\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nconst subscriptionsMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Subscriptions() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {_serviceType: 'subscriptions'})\n })\n }\n}\n\nexport function Subscription(): (method: any, context: ClassFieldDecoratorContext) => any\nexport function Subscription() {\n return (_method: any, context: ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n context.addInitializer(function (this) {\n const repo = serviceMetadata.get(this.constructor)\n if (!repo || repo._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions if you want to use @Subscription',\n )\n }\n\n const subscriptions = subscriptionsMetadata.get(this) || {}\n\n subscriptions[propertyKey] = this[propertyKey]\n\n subscriptionsMetadata.set(this, subscriptions)\n\n this[propertyKey] = subscriptions[propertyKey]\n })\n }\n}\n\nexport function getServiceSubscriptions(target: any): {\n [key: string]: OrionSubscription\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const subscriptionsMap = subscriptionsMetadata.get(instance) || {}\n\n return subscriptionsMap\n}\n"],"mappings":"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","names":["GraphQL","createSubscription","pubsub","import_graphql","import_graphql","import_graphql","import_schema","coerceBigInt","import_graphql","import_graphql","import_graphql","import_schema","type","graphQLType","key","type","import_graphql","crypto","getGraphQLType","type","buildFields","registeredGraphQLTypes","type","graphQLType","import_logger","type","import_graphql","import_graphql","type","import_ws","import_http","pubsub","import_http","import_helpers","import_schema","import_schema","import_schema","type","field","key","import_schema","import_schema","field","type","GraphQL","import_resolvers","isArray","import_services","import_resolvers","createModelResolverFromResolvers","serviceMetadata","import_services","serviceMetadata","createSubscription"]}
|
package/dist/index.js
CHANGED
|
@@ -696,6 +696,7 @@ function errorHandler(error, data) {
|
|
|
696
696
|
}
|
|
697
697
|
|
|
698
698
|
// src/buildSchema/getType/getTypeAsResolver.ts
|
|
699
|
+
import { runWithOrionAsyncContext } from "@orion-js/logger";
|
|
699
700
|
function getTypeAsResolver_default({ resolver, getGraphQLType: getGraphQLType2, options, schema }) {
|
|
700
701
|
const type2 = getGraphQLType2(resolver.returns, options);
|
|
701
702
|
const args = getArgs_default(resolver.params, options);
|
|
@@ -704,8 +705,18 @@ function getTypeAsResolver_default({ resolver, getGraphQLType: getGraphQLType2,
|
|
|
704
705
|
args,
|
|
705
706
|
async resolve(item, params, context, info) {
|
|
706
707
|
try {
|
|
707
|
-
|
|
708
|
-
|
|
708
|
+
return await runWithOrionAsyncContext(
|
|
709
|
+
{
|
|
710
|
+
controllerType: "modelResolver",
|
|
711
|
+
viewer: context,
|
|
712
|
+
params,
|
|
713
|
+
parentData: item,
|
|
714
|
+
modelResolverName: resolver.key
|
|
715
|
+
},
|
|
716
|
+
async () => {
|
|
717
|
+
return await resolver.resolve(item, params, context, info);
|
|
718
|
+
}
|
|
719
|
+
);
|
|
709
720
|
} catch (error) {
|
|
710
721
|
errorHandler(error, { context, resolver, options, schema });
|
|
711
722
|
throw error;
|
|
@@ -832,10 +843,10 @@ function getGraphQLType(type2, options) {
|
|
|
832
843
|
var resolversStore = {};
|
|
833
844
|
|
|
834
845
|
// src/buildSchema/getResolvers/index.ts
|
|
846
|
+
import { runWithOrionAsyncContext as runWithOrionAsyncContext2 } from "@orion-js/logger";
|
|
835
847
|
async function getResolvers_default(options, mutation) {
|
|
836
848
|
const { resolvers } = options;
|
|
837
849
|
const filteredResolvers = Object.keys(resolvers).map((key) => {
|
|
838
|
-
resolvers[key].resolverName = key;
|
|
839
850
|
return {
|
|
840
851
|
name: key,
|
|
841
852
|
resolver: resolvers[key]
|
|
@@ -851,8 +862,17 @@ async function getResolvers_default(options, mutation) {
|
|
|
851
862
|
args,
|
|
852
863
|
async resolve(_root, params, context, info) {
|
|
853
864
|
try {
|
|
854
|
-
|
|
855
|
-
|
|
865
|
+
return await runWithOrionAsyncContext2(
|
|
866
|
+
{
|
|
867
|
+
controllerType: "resolver",
|
|
868
|
+
viewer: context,
|
|
869
|
+
params,
|
|
870
|
+
resolverName: name
|
|
871
|
+
},
|
|
872
|
+
async () => {
|
|
873
|
+
return await resolver.resolve(params, context, info);
|
|
874
|
+
}
|
|
875
|
+
);
|
|
856
876
|
} catch (error) {
|
|
857
877
|
errorHandler(error, { context, resolver, options, name });
|
|
858
878
|
throw error;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/subscription/index.ts","../src/pubsub.ts","../src/subscription/getChannelName.ts","../src/startGraphiQL.ts","../src/buildSchema/index.ts","../src/buildSchema/getQuery.ts","../src/buildSchema/getType/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/equals.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/compare.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/includes.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/omit.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/buildSchema/getType/BigIntScalar.ts","../src/buildSchema/getType/DateScalar.ts","../src/buildSchema/getType/JSONScalar.ts","../src/buildSchema/getType/getScalar.ts","../src/buildSchema/getArgs/getField.ts","../src/resolversSchemas/getStaticFields.ts","../src/buildSchema/getArgs/index.ts","../src/errorHandler.ts","../src/buildSchema/getType/getTypeAsResolver.ts","../src/resolversSchemas/getDynamicFields.ts","../src/resolversSchemas/getModelLoadedResolvers.ts","../src/buildSchema/getResolvers/resolversStore.ts","../src/buildSchema/getResolvers/index.ts","../src/buildSchema/getMutation.ts","../src/buildSchema/getSubscription.ts","../src/buildSchema/getSubscriptions/index.ts","../src/getApolloOptions/formatError.ts","../src/getApolloOptions/index.ts","../src/startWebsocket.ts","../src/websockerViewer.ts","../src/startGraphQL.ts","../src/resolversSchemas/params.ts","../src/resolversSchemas/ResolverParamsInfo.ts","../src/resolversSchemas/serializeSchema.ts","../src/resolversSchemas/getField.ts","../src/resolversSchemas/getBasicResultQuery.ts","../src/resolversSchemas/index.ts","../src/index.ts","../src/types/subscription.ts","../src/service/global.ts","../src/service/middlewares.ts","../src/service/model.ts","../src/service/subscription.ts"],"sourcesContent":["import {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\nimport {getPubsub} from '../pubsub'\nimport {\n CreateOrionSubscriptionFunction,\n OrionSubscription,\n OrionSubscriptionOptions,\n} from '../types/subscription'\nimport getChannelName from './getChannelName'\n\nconst createSubscription: CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType,\n TReturnsSchema extends SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => {\n const subscription = {} as OrionSubscription<TParamsSchema, TReturnsSchema>\n\n const getSubscriptionName = () => {\n if (!subscription.name) {\n throw new Error('This subscription is not yet initialized in GraphQL')\n }\n\n return subscription.name\n }\n\n // the publish function\n subscription.publish = async (params, data) => {\n const pubsub = getPubsub()\n const channelName = getChannelName(getSubscriptionName(), params)\n await pubsub.publish(channelName, {[getSubscriptionName()]: data})\n }\n\n subscription.subscribe = async (params, viewer) => {\n const pubsub = getPubsub()\n try {\n if (options.canSubscribe) {\n const canSubscribe = await options.canSubscribe(params, viewer)\n if (!canSubscribe) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n const channelName = getChannelName(getSubscriptionName(), params)\n return pubsub.asyncIterator(channelName)\n } catch (_error) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n subscription.params = (getSchemaFromAnyOrionForm(options.params) ?? {}) as TParamsSchema\n subscription.returns = getSchemaFromAnyOrionForm(options.returns) as TReturnsSchema\n\n return subscription as OrionSubscription<TParamsSchema, TReturnsSchema>\n}\n\nexport default createSubscription\n","import {PubSubEngine} from 'graphql-subscriptions'\n\nlet pubsub = null\n\nexport const setPubsub = function (newPubsub: PubSubEngine) {\n pubsub = newPubsub\n}\n\nexport const getPubsub: () => PubSubEngine = function () {\n return pubsub\n}\n","import {hashObject} from '@orion-js/helpers'\n\nexport default function (name: string, params) {\n const hash = hashObject(params)\n const channelName = `${name}_${hash}`\n return channelName\n}\n","import {registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\n\n// Ensures string values are safe to be used within a <script> tag.\n// TODO: I don't think that's the right escape function\nfunction safeSerialize(data) {\n return data ? JSON.stringify(data).replace(/\\//g, '\\\\/') : null\n}\n\nconst getHTML = (_apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions, data) => {\n // Current latest version of GraphiQL.\n const GRAPHIQL_VERSION = '0.11.11'\n\n const endpointURL = '/graphql'\n const subscriptionsEndpoint = '/subscriptions'\n\n const queryString = data.query\n const variablesString = data.variables ? JSON.stringify(data.variables, null, 2) : null\n const operationName = data.operationName\n const useSubs = !!options.subscriptions\n\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>GraphiQL</title>\n <meta name=\"robots\" content=\"noindex\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n }\n </style>\n <link href=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.css\" rel=\"stylesheet\" />\n <script src=\"//unpkg.com/react@15.6.1/dist/react.min.js\"></script>\n <script src=\"//unpkg.com/jssha@2.3.1/src/sha512.js\"></script>\n <script src=\"//unpkg.com/react-dom@15.6.1/dist/react-dom.min.js\"></script>\n <script src=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.min.js\"></script>\n <script src=\"//cdn.jsdelivr.net/fetch/2.0.1/fetch.min.js\"></script>\n ${\n useSubs\n ? `<script src=\"//unpkg.com/subscriptions-transport-ws@0.5.4/browser/client.js\"></script>\n <script src=\"//unpkg.com/graphiql-subscriptions-fetcher@0.0.2/browser/client.js\"></script>`\n : ''\n }\n</head>\n<body>\n <script>\n // Collect the URL parameters\n var parameters = {};\n window.location.search.substr(1).split('&').forEach(function (entry) {\n var eq = entry.indexOf('=');\n if (eq >= 0) {\n parameters[decodeURIComponent(entry.slice(0, eq))] =\n decodeURIComponent(entry.slice(eq + 1));\n }\n });\n // Produce a Location query string from a parameter object.\n function locationQuery(params, location) {\n return (location ? location: '') + '?' + Object.keys(params).map(function (key) {\n return encodeURIComponent(key) + '=' +\n encodeURIComponent(params[key]);\n }).join('&');\n }\n // Derive a fetch URL from the current URL, sans the GraphQL parameters.\n var graphqlParamNames = {\n query: true,\n variables: true,\n operationName: true\n };\n var otherParams = {};\n for (var k in parameters) {\n if (parameters.hasOwnProperty(k) && graphqlParamNames[k] !== true) {\n otherParams[k] = parameters[k];\n }\n }\n // We don't use safe-serialize for location, because it's not client input.\n var fetchURL = '${endpointURL}'\n // Defines a GraphQL fetcher using the fetch API.\n function graphQLHttpFetcher(graphQLParams) {\n const body = JSON.stringify(graphQLParams)\n const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n }\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime()\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + body)\n const signature = shaObj.getHMAC('HEX')\n headers['X-ORION-NONCE'] = nonce\n headers['X-ORION-PUBLICKEY'] = publicKey\n headers['X-ORION-SIGNATURE'] = signature\n }\n return fetch(fetchURL, {\n method: 'post',\n headers,\n body,\n credentials: 'same-origin',\n }).then(function (response) {\n return response.text();\n }).then(function (responseBody) {\n try {\n const json = JSON.parse(responseBody);\n if (json.data && json.data.loginWithPassword) {\n const publicKey = json.data.loginWithPassword.publicKey\n const secretKey = json.data.loginWithPassword.secretKey\n if (publicKey && secretKey) {\n localStorage.setItem('GraphiQL:publicKey', publicKey)\n localStorage.setItem('GraphiQL:secretKey', secretKey)\n alert('Session saved in localStorage')\n }\n }\n if (json.error && json.error === 'AuthError') {\n localStorage.setItem('GraphiQL:publicKey', '')\n localStorage.setItem('GraphiQL:secretKey', '')\n alert('Logged out after receiving AuthError')\n }\n return json\n } catch (error) {\n return responseBody;\n }\n });\n }\n ${\n useSubs\n ? `\n let params = {}\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime() + 500\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + 'websockethandshake')\n const signature = shaObj.getHMAC('HEX')\n params = {\n nonce,\n publicKey,\n signature\n }\n }\n\n const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'\n let subscriptionsClient = new window.SubscriptionsTransportWs.SubscriptionClient(protocol + window.location.host + '${subscriptionsEndpoint}', {\n reconnect: true,\n connectionParams: params\n });\n let myCustomFetcher = window.GraphiQLSubscriptionsFetcher.graphQLFetcher(subscriptionsClient, graphQLHttpFetcher);\n var fetcher = myCustomFetcher\n `\n : `\n var fetcher = graphQLHttpFetcher\n `\n }\n\n // When the query and variables string is edited, update the URL bar so\n // that it can be easily shared.\n function onEditQuery(newQuery) {\n parameters.query = newQuery;\n updateURL();\n }\n function onEditVariables(newVariables) {\n parameters.variables = newVariables;\n updateURL();\n }\n function onEditOperationName(newOperationName) {\n parameters.operationName = newOperationName;\n updateURL();\n }\n function updateURL() {\n var cleanParams = Object.keys(parameters).filter(function(v) {\n return parameters[v];\n }).reduce(function(old, v) {\n old[v] = parameters[v];\n return old;\n }, {});\n history.replaceState(null, null, locationQuery(cleanParams) + window.location.hash);\n }\n // Render <GraphiQL /> into the body.\n ReactDOM.render(\n React.createElement(GraphiQL, {\n fetcher: fetcher,\n onEditQuery: onEditQuery,\n onEditVariables: onEditVariables,\n onEditOperationName: onEditOperationName,\n query: ${safeSerialize(queryString)},\n response: null,\n variables: ${safeSerialize(variablesString)},\n operationName: ${safeSerialize(operationName)},\n }),\n document.body\n );\n </script>\n</body>\n</html>`\n}\n\nexport default function (apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions) {\n registerRoute(\n route({\n path: '/graphiql',\n method: 'get',\n async resolve(req) {\n return {\n body: getHTML(apolloOptions, options, req.query),\n }\n },\n }),\n )\n}\n","import {GraphQLSchema} from 'graphql'\nimport getQuery from './getQuery'\nimport getMutation from './getMutation'\nimport getSubscription from './getSubscription'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const query = await getQuery(options)\n const mutation = await getMutation(options)\n const subscription = await getSubscription(options)\n const schema = new GraphQLSchema({query, mutation, subscription})\n return schema\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, false)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Query',\n fields,\n })\n}\n","import {GraphQLList, GraphQLObjectType} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaFieldType,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport {equals} from 'rambdax'\nimport getScalar from './getScalar'\nimport getTypeAsResolver from './getTypeAsResolver'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\nimport {getDynamicFields} from '../../resolversSchemas/getDynamicFields'\nimport {getModelLoadedResolvers} from '../../resolversSchemas/getModelLoadedResolvers'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport const createGraphQLObjectType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = field.graphQLResolver\n ? getTypeAsResolver({resolver: field.graphQLResolver, getGraphQLType, options, schema})\n : {type: getGraphQLType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n const addDynamicFields = () => {\n for (const resolver of getDynamicFields(schema)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n const addModelLoadedResolvers = () => {\n for (const resolver of getModelLoadedResolvers(schema, options)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n addStaticFields()\n addDynamicFields()\n addModelLoadedResolvers()\n\n return fields\n}\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLObjectType}\n>()\n\nexport default function getGraphQLType(type: SchemaFieldType, options: StartGraphQLOptions) {\n if (!type) throw new Error('Type is undefined')\n\n if (Array.isArray(type)) {\n return new GraphQLList(getGraphQLType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schema.__modelName\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLObjectType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n return getScalar(getFieldType(type))\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { isArray } from './_internals/isArray.js'\nimport { type } from './type.js'\n\nexport function _lastIndexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.lastIndexOf(valueToFind)\n\n const { length } = list\n let index = length\n let foundIndex = -1\n\n while (--index > -1 && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nexport function _indexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.indexOf(valueToFind)\n\n let index = -1\n let foundIndex = -1\n const { length } = list\n\n while (++index < length && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nfunction _arrayFromIterator(iter){\n const list = []\n let next\n while (!(next = iter.next()).done)\n list.push(next.value)\n\n return list\n}\n\nfunction _compareSets(a, b){\n if (a.size !== b.size)\n return false\n\n const aList = _arrayFromIterator(a.values())\n const bList = _arrayFromIterator(b.values())\n\n const filtered = aList.filter(aInstance => _indexOf(aInstance, bList) === -1)\n\n return filtered.length === 0\n}\n\nfunction compareErrors(a, b){\n if (a.message !== b.message) return false\n if (a.toString !== b.toString) return false\n\n return a.toString() === b.toString()\n}\n\nfunction parseDate(maybeDate){\n if (!maybeDate.toDateString) return [ false ]\n\n return [ true, maybeDate.getTime() ]\n}\n\nfunction parseRegex(maybeRegex){\n if (maybeRegex.constructor !== RegExp) return [ false ]\n\n return [ true, maybeRegex.toString() ]\n}\n\nexport function equals(a, b){\n if (arguments.length === 1) return _b => equals(a, _b)\n\n if (Object.is(a, b)) return true\n\n const aType = type(a)\n\n if (aType !== type(b)) return false\n if (aType === 'Function')\n return a.name === undefined ? false : a.name === b.name\n\n if ([ 'NaN', 'Null', 'Undefined' ].includes(aType)) return true\n\n if ([ 'BigInt', 'Number' ].includes(aType)){\n if (Object.is(-0, a) !== Object.is(-0, b)) return false\n\n return a.toString() === b.toString()\n }\n\n if ([ 'Boolean', 'String' ].includes(aType))\n return a.toString() === b.toString()\n\n if (aType === 'Array'){\n const aClone = Array.from(a)\n const bClone = Array.from(b)\n\n if (aClone.toString() !== bClone.toString())\n return false\n\n let loopArrayFlag = true\n aClone.forEach((aCloneInstance, aCloneIndex) => {\n if (loopArrayFlag)\n if (\n aCloneInstance !== bClone[ aCloneIndex ] &&\n !equals(aCloneInstance, bClone[ aCloneIndex ])\n )\n loopArrayFlag = false\n\n })\n\n return loopArrayFlag\n }\n\n const aRegex = parseRegex(a)\n const bRegex = parseRegex(b)\n\n if (aRegex[ 0 ])\n return bRegex[ 0 ] ? aRegex[ 1 ] === bRegex[ 1 ] : false\n else if (bRegex[ 0 ]) return false\n\n const aDate = parseDate(a)\n const bDate = parseDate(b)\n\n if (aDate[ 0 ])\n return bDate[ 0 ] ? aDate[ 1 ] === bDate[ 1 ] : false\n else if (bDate[ 0 ]) return false\n\n if (a instanceof Error){\n if (!(b instanceof Error)) return false\n\n return compareErrors(a, b)\n }\n\n if (aType === 'Set')\n return _compareSets(a, b)\n\n if (aType === 'Object'){\n const aKeys = Object.keys(a)\n\n if (aKeys.length !== Object.keys(b).length)\n return false\n\n let loopObjectFlag = true\n aKeys.forEach(aKeyInstance => {\n if (loopObjectFlag){\n const aValue = a[ aKeyInstance ]\n const bValue = b[ aKeyInstance ]\n\n if (aValue !== bValue && !equals(aValue, bValue))\n loopObjectFlag = false\n\n }\n })\n\n return loopObjectFlag\n }\n\n return false\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","export function compare(a, b){\n return String(a) === String(b)\n}\n","import { compare } from './compare.js'\n\nexport function includes(a, list){\n let index = -1\n const { length } = list\n\n while (++index < length)\n if (compare(list[ index ], a))\n return true\n\n return false\n}\n","import { createPath } from './_internals/createPath.js'\nimport { includes } from './_internals/includes.js'\n\nexport function omit(propsToOmit, obj){\n if (arguments.length === 1) return _obj => omit(propsToOmit, _obj)\n\n if (obj === null || obj === undefined)\n return undefined\n\n const propsToOmitValue = createPath(propsToOmit, ',')\n const willReturn = {}\n\n for (const key in obj)\n if (!includes(key, propsToOmitValue))\n willReturn[ key ] = obj[ key ]\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","import {GraphQLScalarType} from 'graphql'\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER\nconst MIN_INT = Number.MIN_SAFE_INTEGER\n\nconst coerceBigInt = function coerceBigInt(value) {\n if (value === '') {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: (empty string)')\n }\n const num = Number(value)\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: ' + String(value))\n }\n const int = Math.floor(num)\n if (int !== num) {\n throw new TypeError('BigInt cannot represent non-integer value: ' + String(value))\n }\n return int\n}\n\nexport default new GraphQLScalarType({\n name: 'BigInt',\n description:\n 'The `BigInt` scalar type represents non-fractional signed whole numeric ' +\n 'values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ',\n serialize: coerceBigInt,\n parseValue: coerceBigInt,\n parseLiteral(ast) {\n if (ast.kind === 'IntValue') {\n const num = parseInt(ast.value, 10)\n if (num <= MAX_INT && num >= MIN_INT) {\n return num\n }\n }\n return null\n },\n})\n","import {GraphQLScalarType} from 'graphql'\nimport {GraphQLDateTime} from 'graphql-scalars'\n\nexport default new GraphQLScalarType({\n name: 'Date',\n serialize: GraphQLDateTime.serialize,\n parseValue: GraphQLDateTime.parseValue,\n parseLiteral: GraphQLDateTime.parseLiteral,\n})\n","import {GraphQLScalarType, Kind} from 'graphql'\n\nfunction identity(value) {\n return value\n}\n\nfunction parseLiteral(ast, variables) {\n switch (ast.kind) {\n case Kind.STRING:\n case Kind.BOOLEAN:\n return ast.value\n case Kind.INT:\n case Kind.FLOAT:\n return parseFloat(ast.value)\n case Kind.OBJECT: {\n const value = Object.create(null)\n ast.fields.forEach(field => {\n value[field.name.value] = parseLiteral(field.value, variables)\n })\n\n return value\n }\n case Kind.LIST:\n return ast.values.map(n => parseLiteral(n, variables))\n case Kind.NULL:\n return null\n case Kind.VARIABLE: {\n const name = ast.name.value\n return variables ? variables[name] : undefined\n }\n default:\n return undefined\n }\n}\n\nexport default new GraphQLScalarType({\n name: 'JSON',\n description:\n 'The `JSON` scalar type represents JSON values as specified by ' +\n '[ECMA-404](http://www.ecma-international.org/' +\n 'publications/files/ECMA-ST/ECMA-404.pdf).',\n serialize: identity,\n parseValue: identity,\n parseLiteral,\n})\n","import BigIntScalar from './BigIntScalar'\nimport DateScalar from './DateScalar'\nimport JSONScalar from './JSONScalar'\nimport * as GraphQL from 'graphql'\n\nconst {GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean} = GraphQL\n\nconst fieldMap = {\n string: GraphQLString,\n email: GraphQLString,\n date: DateScalar,\n integer: BigIntScalar,\n number: GraphQLFloat,\n ID: GraphQLID,\n boolean: GraphQLBoolean,\n blackbox: JSONScalar,\n any: JSONScalar,\n}\n\nexport default function (fieldType) {\n if (fieldMap[fieldType.name]) {\n return fieldMap[fieldType.name]\n }\n\n if (fieldType.name.startsWith('typedId:')) {\n return fieldMap.string\n }\n\n if (fieldType.toGraphQLType) {\n const result = fieldType.toGraphQLType(GraphQL)\n if (result.then) {\n throw new Error('toGraphQLType cant return a promise')\n }\n return result\n }\n throw new Error(`Field type \"${fieldType.name}\" has no convertion to GraphQLType`)\n}\n","import {GraphQLInputObjectType, GraphQLList} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport getScalar from '../getType/getScalar'\nimport {equals} from 'rambdax'\nimport {StartGraphQLOptions} from '../../types'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLInputObjectType}\n>()\n\nconst resolveType = (type, options: StartGraphQLOptions) => {\n if (!type) throw new Error('No type specified')\n\n if (type?.[Symbol.metadata]?._getModel) {\n const model = type[Symbol.metadata]._getModel()\n return resolveType(model, options)\n }\n\n if (Array.isArray(type)) {\n return new GraphQLList(resolveType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = `${schema.__modelName}Input`\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!schema.__modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLInputType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n const schemaType = getFieldType(type)\n return getScalar(schemaType)\n}\n\nexport default resolveType\n\nexport const createGraphQLInputType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLInputObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = {type: resolveType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n addStaticFields()\n\n return fields\n}\n","import {Schema, SchemaNode, SchemaWithMetadata} from '@orion-js/schema'\n\nexport function getStaticFields(schema: Schema | SchemaWithMetadata): Array<SchemaNode> {\n if (!schema) return []\n\n // retrocompatibility with model\n if ((schema as any).getSchema) {\n schema = (schema as any).getSchema()\n }\n\n const keys = Object.keys(schema).filter(key => !key.startsWith('__'))\n\n return (\n keys\n .map((key): SchemaNode => {\n const field = schema[key] as SchemaNode\n return {\n ...field,\n key,\n } as SchemaNode\n })\n // there is a compile error if we don't do this\n .filter(field => !field.private)\n )\n}\n","import {Schema} from '@orion-js/schema'\nimport getField from './getField'\nimport {StartGraphQLOptions} from '../../types'\n\nexport default function (params: Schema, options: StartGraphQLOptions) {\n if (!params) return\n if (Object.keys(params).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(params).filter(key => !key.startsWith('__'))) {\n try {\n const type = getField(params[key].type, options)\n fields[key] = {type}\n } catch (error) {\n throw new Error(`Error creating GraphQL resolver params argument ${key}: ${error.message}`)\n }\n }\n return fields\n}\n","import crypto from 'node:crypto'\nimport {GraphQLError} from 'graphql'\n\nexport default function errorHandler(error, data) {\n const message = `Error in resolver \"${data.name}\" ${\n data.schema ? `of model \"${data.schema.__modelName}\"` : ''\n }`\n\n const hash = crypto\n .createHash('sha1')\n .update(error.message, 'utf8')\n .digest('hex')\n .substring(0, 10)\n error.hash = hash\n\n if (error?.isOrionError) {\n console.warn(message, error)\n throw new GraphQLError(error.message, {\n originalError: error,\n extensions: {\n isOrionError: !!error.isOrionError,\n isValidationError: !!error.isValidationError,\n code: error.code,\n hash,\n info: error.getInfo(),\n },\n })\n }\n console.error(message, error)\n throw new GraphQLError(`${error.message} [${hash}]`, {\n // originalError: error,\n extensions: {\n isOrionError: false,\n isValidationError: false,\n code: 'INTERNAL_SERVER_ERROR',\n hash: hash,\n },\n })\n}\n","import getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\n\nexport default function ({resolver, getGraphQLType, options, schema}) {\n const type = getGraphQLType(resolver.returns, options)\n const args = getArgs(resolver.params, options)\n return {\n type,\n args,\n async resolve(item, params, context, info) {\n try {\n const result = await resolver.resolve(item, params, context, info)\n return result\n } catch (error) {\n errorHandler(error, {context, resolver, options, schema})\n throw error\n }\n },\n }\n}\n","import {Model, ModelResolversMap} from '@orion-js/models'\nimport {Schema} from '@orion-js/schema'\n\nfunction getResolvers(schema: Schema | Model): ModelResolversMap {\n if (typeof schema.getResolvers === 'function') {\n console.warn('Models are deprecated')\n return (schema as Model).getResolvers()\n }\n\n if ((schema as any).__resolvers) {\n return (schema as any).__resolvers\n }\n\n return {}\n}\n\nexport function getDynamicFields(schema: Schema): any {\n const resolvers = getResolvers(schema as any)\n if (!resolvers) return []\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {StartGraphQLOptions} from '../types/startGraphQL'\nimport {Schema} from '@orion-js/schema'\n\nexport function getModelLoadedResolvers(schema: Schema, options: StartGraphQLOptions): any[] {\n if (!options.modelResolvers) return []\n const resolvers = options.modelResolvers[schema.__modelName]\n if (!resolvers) return []\n\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n resolver.resolverName = key\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {GlobalResolversMap} from '@orion-js/models'\n\nconst resolversStore: GlobalResolversMap = {}\n\nexport {resolversStore}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {resolversStore} from './resolversStore'\nimport {GraphQLFieldConfig, ThunkObjMap} from 'graphql'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions, mutation: boolean) {\n const {resolvers} = options\n const filteredResolvers = Object.keys(resolvers)\n .map(key => {\n resolvers[key].resolverName = key\n return {\n name: key,\n resolver: resolvers[key],\n }\n })\n .filter(({resolver}) => !!resolver.mutation === !!mutation)\n .filter(({resolver}) => !resolver.private)\n\n const fields: ThunkObjMap<GraphQLFieldConfig<any, any, any>> = {}\n\n for (const {resolver, name} of filteredResolvers) {\n resolversStore[name] = resolver\n\n const type = await getType(resolver.returns, options)\n const args = await getArgs(resolver.params, options)\n\n fields[name] = {\n type,\n args,\n async resolve(_root, params, context, info) {\n try {\n const result = await resolver.resolve(params, context, info)\n return result\n } catch (error) {\n errorHandler(error, {context, resolver, options, name})\n throw error\n }\n },\n }\n }\n\n return fields\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, true)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Mutation',\n fields,\n })\n}\n","import {GraphQLObjectType} from 'graphql'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport getSubscriptions from './getSubscriptions'\n\nexport default async function (options: StartGraphQLOptions): Promise<GraphQLObjectType> {\n if (!options.subscriptions) return null\n\n const fields = await getSubscriptions(options)\n return new GraphQLObjectType({\n name: 'Subscription',\n fields,\n })\n}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const {subscriptions} = options\n const fields = {}\n\n for (const key of Object.keys(subscriptions)) {\n const subscription = subscriptions[key]\n subscription.name = subscription.name || key\n\n const type = await getType(subscription.returns, options)\n const args = await getArgs(subscription.params as any, options)\n fields[subscription.name] = {\n type,\n args,\n async subscribe(root, params, viewer) {\n return await subscription.subscribe(params, viewer)\n },\n }\n }\n\n return fields\n}\n","export default function (apolloError) {\n let response = {...apolloError}\n const error = apolloError.originalError\n\n if (error && error.isValidationError) {\n response.validationErrors = error.validationErrors\n }\n\n if (error && error.getInfo) {\n response = error.getInfo()\n }\n return response\n}\n","import buildSchema from '../buildSchema'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport formatError from './formatError'\nimport {omit} from 'rambdax'\n\nexport default async function (options: StartGraphQLOptions) {\n const schema = await buildSchema(options)\n const passedOptions = omit(\n [\n 'resolvers',\n 'modelResolvers',\n 'subscriptions',\n 'executeGraphQLCache',\n 'useGraphiql',\n 'app',\n 'pubsub',\n ],\n options,\n )\n return {\n ...passedOptions,\n schema,\n formatError,\n } as unknown as ApolloServerOptions<any>\n}\n","import {PubSub} from 'graphql-subscriptions'\nimport {setPubsub} from './pubsub'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport {WebSocketServer} from 'ws'\nimport {useServer} from 'graphql-ws/lib/use/ws'\nimport {getWebsockerViewer} from './websockerViewer'\nimport {getServer} from '@orion-js/http'\n\nexport default function (\n apolloOptions: ApolloServerOptions<any>,\n options: StartGraphQLOptions,\n /**\n * For testing purposes\n */\n wsServer?: any,\n) {\n if (!options.subscriptions) {\n return []\n }\n\n const pubsub = options.pubsub || new PubSub()\n setPubsub(pubsub)\n\n // Creating the WebSocket server\n if (!wsServer) {\n wsServer = new WebSocketServer({\n server: getServer(),\n path: '/subscriptions',\n })\n }\n\n // Hand in the schema we just created and have the\n // WebSocketServer start listening.\n const serverCleanup = useServer(\n {\n schema: apolloOptions.schema,\n context: async (ctx, msg, args) => {\n // This will be run every time the client sends a subscription request\n return getWebsockerViewer(ctx.connectionParams)\n },\n },\n wsServer,\n )\n return [\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n },\n }\n },\n },\n ]\n}\n","// Declare a type.\n\nglobal.getWebsocketViewerRef = () => null\n\nexport const getWebsockerViewer = async (connectionParams: any): Promise<any> => {\n try {\n const viewer = await global.getWebsocketViewerRef(connectionParams)\n if (!viewer) return {}\n return viewer\n } catch {\n return {}\n }\n}\n\nexport const setGetWebsockerViewer = (getViewerFunc: (connectionParams: any) => any): void => {\n global.getWebsocketViewerRef = getViewerFunc\n}\n","import startGraphiQL from './startGraphiQL'\nimport getApolloOptions from './getApolloOptions'\nimport startWebsocket from './startWebsocket'\nimport {getApp, getServer, registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServer} from '@apollo/server'\nimport {expressMiddleware} from '@apollo/server/express4'\nimport {ApolloServerPluginDrainHttpServer} from '@apollo/server/plugin/drainHttpServer'\n\nexport default async function (options: StartGraphQLOptions) {\n const apolloOptions = await getApolloOptions(options)\n\n const app = options.app || getApp()\n const httpServer = getServer()\n\n if (options.useGraphiql) {\n startGraphiQL(apolloOptions, options)\n }\n\n const subPlugins = startWebsocket(apolloOptions, options)\n\n const drainPlugins = httpServer ? [ApolloServerPluginDrainHttpServer({httpServer})] : []\n\n const server = new ApolloServer({\n ...apolloOptions,\n plugins: [...(apolloOptions.plugins || []), ...drainPlugins, ...subPlugins],\n })\n\n await server.start()\n\n const middleware = expressMiddleware(server, {\n // @ts-expect-error\n context: ({req, res}) => req._viewer,\n })\n\n registerRoute(\n route({\n app,\n method: 'all',\n path: options.path || '/graphql',\n bodyParser: 'json',\n bodyParserOptions: options.bodyParserOptions,\n async resolve(req, res, viewer) {\n ;(req as any)._viewer = viewer\n return middleware(req, res, req.next)\n },\n }),\n )\n}\n","import {createResolver} from '@orion-js/resolvers'\nimport {UserError} from '@orion-js/helpers'\nimport ResolverParams from './ResolverParamsInfo'\nimport {resolversStore} from '../buildSchema/getResolvers/resolversStore'\nimport serializeSchema from './serializeSchema'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaFieldType} from '@orion-js/schema'\nimport getBasicResultQuery from './getBasicResultQuery'\n\nfunction getResultTypeName(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n const schema = getSchemaFromAnyOrionForm(returns)\n if (schema?.__modelName) return schema.__modelName\n return\n}\n\nasync function getInternalBasicResultQuery(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n\n if (isSchemaLike(returns)) {\n const schema = getSchemaFromAnyOrionForm(returns) as Schema\n return await getBasicResultQuery({\n type: schema,\n })\n }\n return ''\n}\n\nexport default createResolver({\n params: {\n name: {\n type: 'ID',\n },\n mutation: {\n type: Boolean,\n },\n },\n returns: ResolverParams,\n mutation: false,\n async resolve({mutation, name}) {\n const resolver = resolversStore[name]\n if (!resolver) {\n throw new UserError(\n 'notFound',\n `${mutation ? 'Mutation' : 'Query'} named \"${name}\" not found`,\n )\n }\n if (!!resolver.mutation !== !!mutation) {\n throw new UserError('incorrectType', `\"${name}\" is ${mutation ? 'not' : ''} a mutation`)\n }\n\n return {\n name,\n basicResultQuery: await getInternalBasicResultQuery(resolver.returns),\n params: await serializeSchema(resolver.params),\n result: getResultTypeName(resolver.returns),\n }\n },\n})\n","import {schemaWithName} from '@orion-js/schema'\nexport default schemaWithName('ResolverParams', {\n name: {\n type: 'string',\n },\n params: {\n type: 'blackbox',\n },\n result: {\n type: 'string',\n },\n basicResultQuery: {\n type: 'string',\n },\n})\n","import {FieldType, Schema, SchemaWithMetadata, getSchemaFromAnyOrionForm} from '@orion-js/schema'\nimport getField from './getField'\n\nexport default async function serializeSchema(params: Schema): Promise<SchemaWithMetadata> {\n if (!params) return\n\n const schema = getSchemaFromAnyOrionForm(params) as Schema\n\n if (Object.keys(schema).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(schema).filter(key => !key.startsWith('__'))) {\n const field = schema[key]\n fields[key] = await getField(field)\n\n const typeAsFieldType = field?.type as FieldType\n if (typeAsFieldType?.toSerializedType && fields[key].type) {\n fields[key].type = await typeAsFieldType?.toSerializedType(field)\n }\n }\n\n return fields\n}\n","import {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n SchemaNode,\n} from '@orion-js/schema'\nimport {isType, omit} from 'rambdax'\nimport getScalar from '../buildSchema/getType/getScalar'\nimport {getStaticFields} from './getStaticFields'\n\nexport default async function getParams(field: SchemaNode) {\n const {type} = field\n\n if (Array.isArray(type)) {\n const serialized = await getParams({...field, type: type[0]})\n return {\n ...serialized,\n type: [serialized.type],\n __graphQLType: `[${serialized.__graphQLType}]`,\n }\n }\n\n const isSchema = isSchemaLike(type)\n\n if (isSchema) {\n const schemaOfType = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schemaOfType.__modelName\n if (!modelName) {\n throw new Error('The schema needs a model name to be serialized for GraphQL')\n }\n\n const fields = {}\n\n for (const field of getStaticFields(schemaOfType)) {\n fields[field.key] = await getParams(field)\n }\n\n return {\n ...omit(['key'], field),\n type: fields,\n __graphQLType: `${modelName}Input`,\n }\n }\n\n const schemaType = getFieldType(type)\n const graphQLType = await getScalar(schemaType)\n\n const withoutKey = isType('Object', field) ? omit(['key'], field) : ({} as any)\n\n return {\n ...withoutKey,\n type: schemaType.name,\n __graphQLType: graphQLType.name,\n }\n}\n","import {getStaticFields} from './getStaticFields'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaNode} from '@orion-js/schema'\n\nexport default async function getBasicQuery(field: SchemaNode) {\n if (!field.type) return ''\n\n if (Array.isArray(field.type)) {\n return getBasicQuery({\n ...field,\n type: field.type[0],\n })\n }\n\n if (!isSchemaLike(field.type)) {\n return field.key\n }\n\n const schema = getSchemaFromAnyOrionForm(field.type) as Schema\n\n const fields = []\n for (const field of getStaticFields(schema)) {\n fields.push(await getBasicQuery(field))\n }\n\n const key = field.key ? `${field.key} ` : ''\n\n return `${key}{ ${fields.join(' ')} }`\n}\n","import params from './params'\n\nexport default {\n params,\n}\n","import subscription from './subscription'\nimport startGraphQL from './startGraphQL'\nimport startGraphiQL from './startGraphiQL'\nimport resolversSchemas from './resolversSchemas'\nimport ResolverParamsInfo from './resolversSchemas/ResolverParamsInfo'\nimport serializeSchema from './resolversSchemas/serializeSchema'\nimport getBasicResultQuery from './resolversSchemas/getBasicResultQuery'\nimport * as GraphQL from 'graphql'\n\nconst createSubscription = subscription\n\nexport {\n GraphQL,\n startGraphQL,\n startGraphiQL,\n resolversSchemas,\n ResolverParamsInfo,\n serializeSchema,\n subscription,\n createSubscription,\n getBasicResultQuery,\n}\n\nexport * from './types'\nexport * from './service'\nexport * from './websockerViewer'\n","import {ResolverOptions} from '@orion-js/resolvers'\nimport {InferSchemaType, SchemaFieldType} from '@orion-js/schema'\n\nexport class OrionSubscription<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n> {\n name: string\n params: TParamsSchema\n subscribe: (\n callParams: InferSchemaType<TParamsSchema>,\n viewer: InferSchemaType<TReturnsSchema>,\n ) => {}\n returns: TReturnsSchema\n publish: (\n params: InferSchemaType<TParamsSchema>,\n data: InferSchemaType<TReturnsSchema>,\n ) => Promise<void>\n}\n\nexport type CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => OrionSubscription<TParamsSchema, TReturnsSchema>\n\nexport interface OrionSubscriptionsMap {\n [key: string]: OrionSubscription\n}\n\nexport type OrionSubscriptionOptions<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n> = Omit<ResolverOptions<TParamsSchema, TReturnsSchema, TViewer>, 'resolve'> & {\n /**\n * This function is used to check if the user can subscribe to the subscription.\n * If not provided, the subscription will be public.\n * @param params - The parameters of the subscription.\n * @param viewer - The viewer of the subscription.\n * @returns true if the user can subscribe to the subscription, false otherwise.\n */\n canSubscribe?: (params: InferSchemaType<TParamsSchema>, viewer: TViewer) => Promise<boolean>\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createResolver,\n GlobalResolver,\n GlobalResolverOptions,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nexport {createResolver}\n\nexport const createQuery = createResolver\nexport const createMutation = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: Omit<GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>, 'mutation'>,\n) => {\n return createResolver({\n ...options,\n mutation: true,\n })\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nexport const internalResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Resolvers() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n serviceMetadata.set(target, {_serviceType: 'resolvers'})\n }\n}\n\nexport function Query(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Query(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Query(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n resolvers[propertyKey] = this[propertyKey]\n }\n\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function Mutation(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Mutation(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Mutation(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n mutation: true,\n resolve: this[propertyKey].bind(this),\n })\n }\n if (context.kind === 'field') {\n this[propertyKey].mutation = true\n resolvers[propertyKey] = this[propertyKey]\n }\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceResolvers(target: any): {\n [key: string]: GlobalResolver<any, any, any, any>\n} {\n const instance = getInstance(target)\n\n const className = instance.constructor.name\n const errorMessage = `You must pass a class decorated with @Resolvers to getServiceResolvers. Check the class ${className}`\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(errorMessage)\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'resolvers') {\n throw new Error(`${errorMessage}. Got class type ${instanceMetadata._serviceType}`)\n }\n\n const resolversMap = internalResolversMetadata.get(instance) || {}\n\n return resolversMap\n}\n","import {ResolverMiddleware} from '@orion-js/resolvers'\nimport {SchemaInAnyOrionForm} from '@orion-js/schema'\n\nconst resolversMetadata = new WeakMap<any, Record<string, any>>()\n\nfunction addTargetMetadata(\n target: any,\n propertyKey: string,\n metadataKey: string,\n metadata: any,\n isArray = false,\n) {\n const targetMetadata = resolversMetadata.get(target) || {}\n targetMetadata[propertyKey] = targetMetadata[propertyKey] || {}\n\n if (isArray) {\n targetMetadata[propertyKey][metadataKey] = targetMetadata[propertyKey][metadataKey] || []\n targetMetadata[propertyKey][metadataKey].unshift(metadata)\n } else {\n targetMetadata[propertyKey][metadataKey] = metadata\n }\n\n resolversMetadata.set(target, targetMetadata)\n}\n\nexport function getTargetMetadata(target: any, propertyKey: string, metadataKey: string) {\n const targetMetadata = resolversMetadata.get(target) || {}\n return targetMetadata[propertyKey]?.[metadataKey]\n}\n\nexport function UseMiddleware<TMiddleware extends ResolverMiddleware, This>(params: TMiddleware) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'middlewares', params, true)\n return method\n }\n}\n\nexport function ResolverParams<TParams extends SchemaInAnyOrionForm, This>(params: TParams) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'params', params, false)\n return method\n }\n}\n\nexport function ResolverReturns<This>(returns: any) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'returns', returns, false)\n return method\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createModelResolver as createModelResolverFromResolvers,\n ModelResolver as ModelResolverType,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\n\nexport const createModelResolver = createModelResolverFromResolvers\n\nexport interface ModelResolversOptions {\n // the model name to add resolvers. If not specified, the model name will be the schema name\n modelName?: string\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<\n any,\n {_serviceType: string; options: ModelResolversOptions; _modelName: string}\n>()\nconst modelResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function ModelResolvers(typedSchema: any, options: ModelResolversOptions = {}) {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n const className = context.name\n\n const modelName = (() => {\n if (options.modelName) {\n return options.modelName\n }\n\n if (typeof typedSchema.name === 'string') {\n return typedSchema.name\n }\n\n if (typedSchema.__modelName) {\n return typedSchema.__modelName\n }\n\n throw new Error(`You must specify a model name for the model resolvers (at: ${className})`)\n })()\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {\n _serviceType: 'modelResolvers',\n options: options,\n _modelName: modelName,\n })\n })\n }\n}\n\nexport function ModelResolver(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function ModelResolver(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'middlewares'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function ModelResolver(options = {}) {\n return (method: any, context: ClassMethodDecoratorContext | ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const modelResolvers = modelResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n modelResolvers[propertyKey] = createModelResolver({\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n modelResolvers[propertyKey] = this[propertyKey]\n }\n\n modelResolversMetadata.set(this, modelResolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceModelResolvers(target: any): {\n [key: string]: {\n [key: string]: ModelResolverType\n }\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'modelResolvers') {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const modelResolversMap = modelResolversMetadata.get(instance) || {}\n\n return {\n [instanceMetadata._modelName]: modelResolversMap,\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {OrionSubscription} from '../types/subscription'\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nconst subscriptionsMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Subscriptions() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {_serviceType: 'subscriptions'})\n })\n }\n}\n\nexport function Subscription(): (method: any, context: ClassFieldDecoratorContext) => any\nexport function Subscription() {\n return (_method: any, context: ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n context.addInitializer(function (this) {\n const repo = serviceMetadata.get(this.constructor)\n if (!repo || repo._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions if you want to use @Subscription',\n )\n }\n\n const subscriptions = subscriptionsMetadata.get(this) || {}\n\n subscriptions[propertyKey] = this[propertyKey]\n\n subscriptionsMetadata.set(this, subscriptions)\n\n this[propertyKey] = subscriptions[propertyKey]\n })\n }\n}\n\nexport function getServiceSubscriptions(target: any): {\n [key: string]: OrionSubscription\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const subscriptionsMap = subscriptionsMetadata.get(instance) || {}\n\n return subscriptionsMap\n}\n"],"mappings":";AAAA,SAAQ,iCAAiD;;;ACEzD,IAAI,SAAS;AAEN,IAAM,YAAY,SAAU,WAAyB;AAC1D,WAAS;AACX;AAEO,IAAM,YAAgC,WAAY;AACvD,SAAO;AACT;;;ACVA,SAAQ,kBAAiB;AAEV,SAAR,uBAAkB,MAAc,QAAQ;AAC7C,QAAM,OAAO,WAAW,MAAM;AAC9B,QAAM,cAAc,GAAG,IAAI,IAAI,IAAI;AACnC,SAAO;AACT;;;AFGA,IAAM,qBAAsD,CAK1D,YACG;AACH,QAAM,eAAe,CAAC;AAEtB,QAAM,sBAAsB,MAAM;AAChC,QAAI,CAAC,aAAa,MAAM;AACtB,YAAM,IAAI,MAAM,qDAAqD;AAAA,IACvE;AAEA,WAAO,aAAa;AAAA,EACtB;AAGA,eAAa,UAAU,OAAO,QAAQ,SAAS;AAC7C,UAAMA,UAAS,UAAU;AACzB,UAAM,cAAc,uBAAe,oBAAoB,GAAG,MAAM;AAChE,UAAMA,QAAO,QAAQ,aAAa,EAAC,CAAC,oBAAoB,CAAC,GAAG,KAAI,CAAC;AAAA,EACnE;AAEA,eAAa,YAAY,OAAO,QAAQ,WAAW;AACjD,UAAMA,UAAS,UAAU;AACzB,QAAI;AACF,UAAI,QAAQ,cAAc;AACxB,cAAM,eAAe,MAAM,QAAQ,aAAa,QAAQ,MAAM;AAC9D,YAAI,CAAC,cAAc;AACjB,iBAAOA,QAAO,cAAc,cAAc;AAAA,QAC5C;AAAA,MACF;AAEA,YAAM,cAAc,uBAAe,oBAAoB,GAAG,MAAM;AAChE,aAAOA,QAAO,cAAc,WAAW;AAAA,IACzC,SAAS,QAAQ;AACf,aAAOA,QAAO,cAAc,cAAc;AAAA,IAC5C;AAAA,EACF;AAEA,eAAa,SAAU,0BAA0B,QAAQ,MAAM,KAAK,CAAC;AACrE,eAAa,UAAU,0BAA0B,QAAQ,OAAO;AAEhE,SAAO;AACT;AAEA,IAAO,uBAAQ;;;AGxDf,SAAQ,eAAe,aAAY;AAMnC,SAAS,cAAc,MAAM;AAC3B,SAAO,OAAO,KAAK,UAAU,IAAI,EAAE,QAAQ,OAAO,KAAK,IAAI;AAC7D;AAEA,IAAM,UAAU,CAAC,gBAA0C,SAA8B,SAAS;AAEhG,QAAM,mBAAmB;AAEzB,QAAM,cAAc;AACpB,QAAM,wBAAwB;AAE9B,QAAM,cAAc,KAAK;AACzB,QAAM,kBAAkB,KAAK,YAAY,KAAK,UAAU,KAAK,WAAW,MAAM,CAAC,IAAI;AACnF,QAAM,gBAAgB,KAAK;AAC3B,QAAM,UAAU,CAAC,CAAC,QAAQ;AAE1B,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qCAe4B,gBAAgB;AAAA;AAAA;AAAA;AAAA,sCAIf,gBAAgB;AAAA;AAAA,IAGlD,UACI;AAAA,sGAEA,EACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAiCoB,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAmD3B,UACI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8HAkBoH,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOzI;AAAA;AAAA,SAGN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAgCa,cAAc,WAAW,CAAC;AAAA;AAAA,qBAEtB,cAAc,eAAe,CAAC;AAAA,yBAC1B,cAAc,aAAa,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOrD;AAEe,SAAR,sBAAkB,eAAyC,SAA8B;AAC9F;AAAA,IACE,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM,QAAQ,KAAK;AACjB,eAAO;AAAA,UACL,MAAM,QAAQ,eAAe,SAAS,IAAI,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACzNA,SAAQ,qBAAoB;;;ACA5B,SAAQ,qBAAAC,0BAAwB;;;ACAhC,SAAQ,eAAAC,cAAa,yBAAwB;AAC7C;AAAA,EACE,gBAAAC;AAAA,EACA,yCAAAC;AAAA,EACA,gBAAAC;AAAA,OAIK;;;ACRA,SAAS,KAAK,OAAM;AACzB,MAAI,UAAU,MAAK;AACjB,WAAO;AAAA,EACT,WAAW,UAAU,QAAU;AAC7B,WAAO;AAAA,EACT,WAAW,OAAO,MAAM,KAAK,GAAE;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,aAAa,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE;AAEpE,SAAO,eAAe,kBAAkB,YAAY;AACtD;;;ACXO,IAAM,EAAE,QAAQ,IAAI;;;ACA3B,SAAS,WAAW,GAAE;AACpB,SAAO,KAAK,MAAM;AACpB;AAEO,IAAM,YAAY,OAAO,aAAa;;;ACFtC,SAAS,WAAW,MAAM,YAAY,KAAI;AAC/C,SAAO,OAAO,SAAS,WACrB,KAAK,MAAM,SAAS,EAAE,IAAI,OAAK,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAC3D;AACJ;;;ACgBO,SAAS,SAAS,aAAa,MAAK;AACzC,MAAI,CAAC,QAAQ,IAAI;AACf,UAAM,IAAI,MAAM,qCAAsC,IAAK,EAAE;AAE/D,QAAM,cAAc,KAAK,WAAW;AACpC,MAAI,CAAC,CAAE,SAAS,OAAO,UAAU,QAAS,EAAE,SAAS,WAAW;AAC9D,WAAO,KAAK,QAAQ,WAAW;AAEjC,MAAI,QAAQ;AACZ,MAAI,aAAa;AACjB,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO,EAAE,QAAQ,UAAU,eAAe;AACxC,QAAI,OAAO,KAAM,KAAM,GAAG,WAAW;AACnC,mBAAa;AAEjB,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAK;AAC/B,QAAM,OAAO,CAAC;AACd,MAAI;AACJ,SAAO,EAAE,OAAO,KAAK,KAAK,GAAG;AAC3B,SAAK,KAAK,KAAK,KAAK;AAEtB,SAAO;AACT;AAEA,SAAS,aAAa,GAAG,GAAE;AACzB,MAAI,EAAE,SAAS,EAAE;AACf,WAAO;AAET,QAAM,QAAQ,mBAAmB,EAAE,OAAO,CAAC;AAC3C,QAAM,QAAQ,mBAAmB,EAAE,OAAO,CAAC;AAE3C,QAAM,WAAW,MAAM,OAAO,eAAa,SAAS,WAAW,KAAK,MAAM,EAAE;AAE5E,SAAO,SAAS,WAAW;AAC7B;AAEA,SAAS,cAAc,GAAG,GAAE;AAC1B,MAAI,EAAE,YAAY,EAAE,QAAS,QAAO;AACpC,MAAI,EAAE,aAAa,EAAE,SAAU,QAAO;AAEtC,SAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AACrC;AAEA,SAAS,UAAU,WAAU;AAC3B,MAAI,CAAC,UAAU,aAAc,QAAO,CAAE,KAAM;AAE5C,SAAO,CAAE,MAAM,UAAU,QAAQ,CAAE;AACrC;AAEA,SAAS,WAAW,YAAW;AAC7B,MAAI,WAAW,gBAAgB,OAAQ,QAAO,CAAE,KAAM;AAEtD,SAAO,CAAE,MAAM,WAAW,SAAS,CAAE;AACvC;AAEO,SAAS,OAAO,GAAG,GAAE;AAC1B,MAAI,UAAU,WAAW,EAAG,QAAO,QAAM,OAAO,GAAG,EAAE;AAErD,MAAI,OAAO,GAAG,GAAG,CAAC,EAAG,QAAO;AAE5B,QAAM,QAAQ,KAAK,CAAC;AAEpB,MAAI,UAAU,KAAK,CAAC,EAAG,QAAO;AAC9B,MAAI,UAAU;AACZ,WAAO,EAAE,SAAS,SAAY,QAAQ,EAAE,SAAS,EAAE;AAErD,MAAI,CAAE,OAAO,QAAQ,WAAY,EAAE,SAAS,KAAK,EAAG,QAAO;AAE3D,MAAI,CAAE,UAAU,QAAS,EAAE,SAAS,KAAK,GAAE;AACzC,QAAI,OAAO,GAAG,IAAI,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,EAAG,QAAO;AAElD,WAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AAAA,EACrC;AAEA,MAAI,CAAE,WAAW,QAAS,EAAE,SAAS,KAAK;AACxC,WAAO,EAAE,SAAS,MAAM,EAAE,SAAS;AAErC,MAAI,UAAU,SAAQ;AACpB,UAAM,SAAS,MAAM,KAAK,CAAC;AAC3B,UAAM,SAAS,MAAM,KAAK,CAAC;AAE3B,QAAI,OAAO,SAAS,MAAM,OAAO,SAAS;AACxC,aAAO;AAET,QAAI,gBAAgB;AACpB,WAAO,QAAQ,CAAC,gBAAgB,gBAAgB;AAC9C,UAAI;AACF,YACE,mBAAmB,OAAQ,WAAY,KACvC,CAAC,OAAO,gBAAgB,OAAQ,WAAY,CAAC;AAE7C,0BAAgB;AAAA;AAAA,IAEtB,CAAC;AAED,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,WAAW,CAAC;AAC3B,QAAM,SAAS,WAAW,CAAC;AAE3B,MAAI,OAAQ,CAAE;AACZ,WAAO,OAAQ,CAAE,IAAI,OAAQ,CAAE,MAAM,OAAQ,CAAE,IAAI;AAAA,WAC5C,OAAQ,CAAE,EAAG,QAAO;AAE7B,QAAM,QAAQ,UAAU,CAAC;AACzB,QAAM,QAAQ,UAAU,CAAC;AAEzB,MAAI,MAAO,CAAE;AACX,WAAO,MAAO,CAAE,IAAI,MAAO,CAAE,MAAM,MAAO,CAAE,IAAI;AAAA,WACzC,MAAO,CAAE,EAAG,QAAO;AAE5B,MAAI,aAAa,OAAM;AACrB,QAAI,EAAE,aAAa,OAAQ,QAAO;AAElC,WAAO,cAAc,GAAG,CAAC;AAAA,EAC3B;AAEA,MAAI,UAAU;AACZ,WAAO,aAAa,GAAG,CAAC;AAE1B,MAAI,UAAU,UAAS;AACrB,UAAM,QAAQ,OAAO,KAAK,CAAC;AAE3B,QAAI,MAAM,WAAW,OAAO,KAAK,CAAC,EAAE;AAClC,aAAO;AAET,QAAI,iBAAiB;AACrB,UAAM,QAAQ,kBAAgB;AAC5B,UAAI,gBAAe;AACjB,cAAM,SAAS,EAAG,YAAa;AAC/B,cAAM,SAAS,EAAG,YAAa;AAE/B,YAAI,WAAW,UAAU,CAAC,OAAO,QAAQ,MAAM;AAC7C,2BAAiB;AAAA,MAErB;AAAA,IACF,CAAC;AAED,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACvKO,SAAS,OAAO,OAAO,GAAE;AAC9B,MAAI,UAAU,WAAW,GAAE;AACzB,WAAO,aAAW,OAAO,OAAO,OAAO;AAAA,EACzC;AAEA,SAAO,KAAK,CAAC,MAAM;AACrB;;;ACRO,SAAS,QAAQ,GAAG,GAAE;AAC3B,SAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAC/B;;;ACAO,SAAS,SAAS,GAAG,MAAK;AAC/B,MAAI,QAAQ;AACZ,QAAM,EAAE,OAAO,IAAI;AAEnB,SAAO,EAAE,QAAQ;AACf,QAAI,QAAQ,KAAM,KAAM,GAAG,CAAC;AAC1B,aAAO;AAEX,SAAO;AACT;;;ACRO,SAAS,KAAK,aAAa,KAAI;AACpC,MAAI,UAAU,WAAW,EAAG,QAAO,UAAQ,KAAK,aAAa,IAAI;AAEjE,MAAI,QAAQ,QAAQ,QAAQ;AAC1B,WAAO;AAET,QAAM,mBAAmB,WAAW,aAAa,GAAG;AACpD,QAAM,aAAa,CAAC;AAEpB,aAAW,OAAO;AAChB,QAAI,CAAC,SAAS,KAAK,gBAAgB;AACjC,iBAAY,GAAI,IAAI,IAAK,GAAI;AAEjC,SAAO;AACT;;;ACfO,SAAS,QAAQ,OAAM;AAC5B,QAAM,YAAY,KAAK,KAAK;AAC5B,MAAI,CAAE,aAAa,OAAO,UAAU,MAAO,EAAE,SAAS,SAAS;AAC7D,WAAO;AACT,MAAI,CAAC,MAAO,QAAO;AAEnB,MAAI,cAAc,UAAS;AACzB,WAAO,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EACvC;AAEA,MAAI,cAAc,SAAQ;AACxB,WAAO,MAAM,WAAW;AAAA,EAC1B;AAEA,SAAO;AACT;;;ACjBA,SAAQ,yBAAwB;AAEhC,IAAM,UAAU,OAAO;AACvB,IAAM,UAAU,OAAO;AAEvB,IAAM,eAAe,SAASC,cAAa,OAAO;AAChD,MAAI,UAAU,IAAI;AAChB,UAAM,IAAI,UAAU,yEAAyE;AAAA,EAC/F;AACA,QAAM,MAAM,OAAO,KAAK;AACxB,MAAI,MAAM,WAAW,MAAM,SAAS;AAClC,UAAM,IAAI,UAAU,8DAA8D,OAAO,KAAK,CAAC;AAAA,EACjG;AACA,QAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,MAAI,QAAQ,KAAK;AACf,UAAM,IAAI,UAAU,gDAAgD,OAAO,KAAK,CAAC;AAAA,EACnF;AACA,SAAO;AACT;AAEA,IAAO,uBAAQ,IAAI,kBAAkB;AAAA,EACnC,MAAM;AAAA,EACN,aACE;AAAA,EAEF,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa,KAAK;AAChB,QAAI,IAAI,SAAS,YAAY;AAC3B,YAAM,MAAM,SAAS,IAAI,OAAO,EAAE;AAClC,UAAI,OAAO,WAAW,OAAO,SAAS;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF,CAAC;;;ACpCD,SAAQ,qBAAAC,0BAAwB;AAChC,SAAQ,uBAAsB;AAE9B,IAAO,qBAAQ,IAAIA,mBAAkB;AAAA,EACnC,MAAM;AAAA,EACN,WAAW,gBAAgB;AAAA,EAC3B,YAAY,gBAAgB;AAAA,EAC5B,cAAc,gBAAgB;AAChC,CAAC;;;ACRD,SAAQ,qBAAAC,oBAAmB,YAAW;AAEtC,SAAS,SAAS,OAAO;AACvB,SAAO;AACT;AAEA,SAAS,aAAa,KAAK,WAAW;AACpC,UAAQ,IAAI,MAAM;AAAA,IAChB,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AACR,aAAO,IAAI;AAAA,IACb,KAAK,KAAK;AAAA,IACV,KAAK,KAAK;AACR,aAAO,WAAW,IAAI,KAAK;AAAA,IAC7B,KAAK,KAAK,QAAQ;AAChB,YAAM,QAAQ,uBAAO,OAAO,IAAI;AAChC,UAAI,OAAO,QAAQ,WAAS;AAC1B,cAAM,MAAM,KAAK,KAAK,IAAI,aAAa,MAAM,OAAO,SAAS;AAAA,MAC/D,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,KAAK,KAAK;AACR,aAAO,IAAI,OAAO,IAAI,OAAK,aAAa,GAAG,SAAS,CAAC;AAAA,IACvD,KAAK,KAAK;AACR,aAAO;AAAA,IACT,KAAK,KAAK,UAAU;AAClB,YAAM,OAAO,IAAI,KAAK;AACtB,aAAO,YAAY,UAAU,IAAI,IAAI;AAAA,IACvC;AAAA,IACA;AACE,aAAO;AAAA,EACX;AACF;AAEA,IAAO,qBAAQ,IAAIA,mBAAkB;AAAA,EACnC,MAAM;AAAA,EACN,aACE;AAAA,EAGF,WAAW;AAAA,EACX,YAAY;AAAA,EACZ;AACF,CAAC;;;ACzCD,YAAY,aAAa;AAEzB,IAAM,EAAC,cAAc,eAAe,WAAW,eAAc,IAAI;AAEjE,IAAM,WAAW;AAAA,EACf,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,SAAS;AAAA,EACT,UAAU;AAAA,EACV,KAAK;AACP;AAEe,SAAR,kBAAkB,WAAW;AAClC,MAAI,SAAS,UAAU,IAAI,GAAG;AAC5B,WAAO,SAAS,UAAU,IAAI;AAAA,EAChC;AAEA,MAAI,UAAU,KAAK,WAAW,UAAU,GAAG;AACzC,WAAO,SAAS;AAAA,EAClB;AAEA,MAAI,UAAU,eAAe;AAC3B,UAAM,SAAS,UAAU,cAAc,OAAO;AAC9C,QAAI,OAAO,MAAM;AACf,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,eAAe,UAAU,IAAI,oCAAoC;AACnF;;;ACpCA,SAAQ,wBAAwB,mBAAkB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;;;ACLA,SAAS,gBAAgB,QAAwD;AACtF,MAAI,CAAC,OAAQ,QAAO,CAAC;AAGrB,MAAK,OAAe,WAAW;AAC7B,aAAU,OAAe,UAAU;AAAA,EACrC;AAEA,QAAM,OAAO,OAAO,KAAK,MAAM,EAAE,OAAO,SAAO,CAAC,IAAI,WAAW,IAAI,CAAC;AAEpE,SACE,KACG,IAAI,CAAC,QAAoB;AACxB,UAAM,QAAQ,OAAO,GAAG;AACxB,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC,EAEA,OAAO,WAAS,CAAC,MAAM,OAAO;AAErC;;;ADPA,IAAM,yBAAyB,oBAAI,IAGjC;AAEF,IAAM,cAAc,CAACC,OAAM,YAAiC;AAtB5D;AAuBE,MAAI,CAACA,MAAM,OAAM,IAAI,MAAM,mBAAmB;AAE9C,OAAI,KAAAA,SAAA,gBAAAA,MAAO,OAAO,cAAd,mBAAyB,WAAW;AACtC,UAAM,QAAQA,MAAK,OAAO,QAAQ,EAAE,UAAU;AAC9C,WAAO,YAAY,OAAO,OAAO;AAAA,EACnC;AAEA,MAAI,MAAM,QAAQA,KAAI,GAAG;AACvB,WAAO,IAAI,YAAY,YAAYA,MAAK,CAAC,GAAG,OAAO,CAAC;AAAA,EACtD;AAEA,MAAI,aAAaA,KAAI,GAAG;AACtB,UAAM,SAAS,sCAAsCA,KAAI;AACzD,UAAM,YAAY,GAAG,OAAO,WAAW;AAEvC,QAAI,OAAO,eAAe;AACxB,aAAO,OAAO;AAAA,IAChB;AAEA,QAAI,CAAC,OAAO,aAAa;AACvB,YAAM,IAAI;AAAA,QACR,4EAA4E,KAAK,UAAU,MAAM,CAAC;AAAA,MACpG;AAAA,IACF;AAEA,QAAI,uBAAuB,IAAI,SAAS,GAAG;AACzC,YAAM,EAAC,aAAAC,cAAa,QAAQ,iBAAgB,IAAI,uBAAuB,IAAI,SAAS;AACpF,UAAI,OAAO,kBAAkB,MAAM,GAAG;AACpC,eAAOA;AAAA,MACT;AACA,YAAM,IAAI,MAAM,iBAAiB,SAAS,sBAAsB;AAAA,IAClE;AAEA,UAAM,cAAc,uBAAuB,WAAW,QAAkB,OAAO;AAE/E,2BAAuB,IAAI,WAAW,EAAC,QAAQ,YAAW,CAAC;AAE3D,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,aAAaD,KAAI;AACpC,SAAO,kBAAU,UAAU;AAC7B;AAEA,IAAO,mBAAQ;AAER,IAAM,yBAAyB,CACpC,WACA,QACA,YAEA,IAAI,uBAAuB;AAAA,EACzB,MAAM;AAAA,EACN,QAAQ,MAAM,YAAY,QAAQ,OAAO;AAC3C,CAAC;AAEH,IAAM,cAAc,CAAC,QAAgB,YAAiC;AACpE,QAAM,SAAS,CAAC;AAEhB,QAAM,kBAAkB,MAAM;AAC5B,eAAW,SAAS,gBAAgB,MAAM,GAAG;AAC3C,UAAI;AACF,eAAO,MAAM,GAAG,IAAI,EAAC,MAAM,YAAY,MAAM,MAAM,OAAO,EAAC;AAAA,MAC7D,SAAS,OAAO;AACd,cAAM,IAAI,MAAM,0BAA0B,MAAM,GAAG,KAAK,MAAM,OAAO,EAAE;AAAA,MACzE;AAAA,IACF;AAAA,EACF;AAEA,kBAAgB;AAEhB,SAAO;AACT;;;AE3Fe,SAAR,gBAAkB,QAAgB,SAA8B;AACrE,MAAI,CAAC,OAAQ;AACb,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,EAAG;AAEtC,QAAM,SAAS,CAAC;AAEhB,aAAW,OAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAAE,SAAO,CAACA,KAAI,WAAW,IAAI,CAAC,GAAG;AAC1E,QAAI;AACF,YAAMC,QAAO,iBAAS,OAAO,GAAG,EAAE,MAAM,OAAO;AAC/C,aAAO,GAAG,IAAI,EAAC,MAAAA,MAAI;AAAA,IACrB,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,mDAAmD,GAAG,KAAK,MAAM,OAAO,EAAE;AAAA,IAC5F;AAAA,EACF;AACA,SAAO;AACT;;;ACnBA,OAAO,YAAY;AACnB,SAAQ,oBAAmB;AAEZ,SAAR,aAA8B,OAAO,MAAM;AAChD,QAAM,UAAU,sBAAsB,KAAK,IAAI,KAC7C,KAAK,SAAS,aAAa,KAAK,OAAO,WAAW,MAAM,EAC1D;AAEA,QAAM,OAAO,OACV,WAAW,MAAM,EACjB,OAAO,MAAM,SAAS,MAAM,EAC5B,OAAO,KAAK,EACZ,UAAU,GAAG,EAAE;AAClB,QAAM,OAAO;AAEb,MAAI,+BAAO,cAAc;AACvB,YAAQ,KAAK,SAAS,KAAK;AAC3B,UAAM,IAAI,aAAa,MAAM,SAAS;AAAA,MACpC,eAAe;AAAA,MACf,YAAY;AAAA,QACV,cAAc,CAAC,CAAC,MAAM;AAAA,QACtB,mBAAmB,CAAC,CAAC,MAAM;AAAA,QAC3B,MAAM,MAAM;AAAA,QACZ;AAAA,QACA,MAAM,MAAM,QAAQ;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AACA,UAAQ,MAAM,SAAS,KAAK;AAC5B,QAAM,IAAI,aAAa,GAAG,MAAM,OAAO,KAAK,IAAI,KAAK;AAAA;AAAA,IAEnD,YAAY;AAAA,MACV,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ACnCe,SAAR,0BAAkB,EAAC,UAAU,gBAAAC,iBAAgB,SAAS,OAAM,GAAG;AACpE,QAAMC,QAAOD,gBAAe,SAAS,SAAS,OAAO;AACrD,QAAM,OAAO,gBAAQ,SAAS,QAAQ,OAAO;AAC7C,SAAO;AAAA,IACL,MAAAC;AAAA,IACA;AAAA,IACA,MAAM,QAAQ,MAAM,QAAQ,SAAS,MAAM;AACzC,UAAI;AACF,cAAM,SAAS,MAAM,SAAS,QAAQ,MAAM,QAAQ,SAAS,IAAI;AACjE,eAAO;AAAA,MACT,SAAS,OAAO;AACd,qBAAa,OAAO,EAAC,SAAS,UAAU,SAAS,OAAM,CAAC;AACxD,cAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AChBA,SAAS,aAAa,QAA2C;AAC/D,MAAI,OAAO,OAAO,iBAAiB,YAAY;AAC7C,YAAQ,KAAK,uBAAuB;AACpC,WAAQ,OAAiB,aAAa;AAAA,EACxC;AAEA,MAAK,OAAe,aAAa;AAC/B,WAAQ,OAAe;AAAA,EACzB;AAEA,SAAO,CAAC;AACV;AAEO,SAAS,iBAAiB,QAAqB;AACpD,QAAM,YAAY,aAAa,MAAa;AAC5C,MAAI,CAAC,UAAW,QAAO,CAAC;AACxB,QAAM,OAAO,OAAO,KAAK,SAAS;AAElC,SAAO,KACJ,IAAI,SAAO;AACV,UAAM,WAAW,UAAU,GAAG;AAC9B,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC,EACA,OAAO,cAAY,CAAC,SAAS,OAAO;AACzC;;;AC3BO,SAAS,wBAAwB,QAAgB,SAAqC;AAC3F,MAAI,CAAC,QAAQ,eAAgB,QAAO,CAAC;AACrC,QAAM,YAAY,QAAQ,eAAe,OAAO,WAAW;AAC3D,MAAI,CAAC,UAAW,QAAO,CAAC;AAExB,QAAM,OAAO,OAAO,KAAK,SAAS;AAElC,SAAO,KACJ,IAAI,SAAO;AACV,UAAM,WAAW,UAAU,GAAG;AAC9B,aAAS,eAAe;AACxB,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC,EACA,OAAO,cAAY,CAAC,SAAS,OAAO;AACzC;;;ArBHO,IAAM,0BAA0B,CACrC,WACA,QACA,YAEA,IAAI,kBAAkB;AAAA,EACpB,MAAM;AAAA,EACN,QAAQ,MAAMC,aAAY,QAAQ,OAAO;AAC3C,CAAC;AAEH,IAAMA,eAAc,CAAC,QAAgB,YAAiC;AACpE,QAAM,SAAS,CAAC;AAEhB,QAAM,kBAAkB,MAAM;AAC5B,eAAW,SAAS,gBAAgB,MAAM,GAAG;AAC3C,UAAI;AACF,eAAO,MAAM,GAAG,IAAI,MAAM,kBACtB,0BAAkB,EAAC,UAAU,MAAM,iBAAiB,gBAAgB,SAAS,OAAM,CAAC,IACpF,EAAC,MAAM,eAAe,MAAM,MAAM,OAAO,EAAC;AAAA,MAChD,SAAS,OAAO;AACd,cAAM,IAAI,MAAM,0BAA0B,MAAM,GAAG,KAAK,MAAM,OAAO,EAAE;AAAA,MACzE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM;AAC7B,eAAW,YAAY,iBAAiB,MAAM,GAAG;AAC/C,UAAI;AACF,eAAO,SAAS,GAAG,IAAI,0BAAkB,EAAC,UAAU,gBAAgB,SAAS,OAAM,CAAC;AAAA,MACtF,SAAS,OAAO;AACd,cAAM,IAAI;AAAA,UACR,6CAA8C,SAAS,GAAG,MAAO,MAAM,OAAO;AAAA,QAChF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,0BAA0B,MAAM;AACpC,eAAW,YAAY,wBAAwB,QAAQ,OAAO,GAAG;AAC/D,UAAI;AACF,eAAO,SAAS,GAAG,IAAI,0BAAkB,EAAC,UAAU,gBAAgB,SAAS,OAAM,CAAC;AAAA,MACtF,SAAS,OAAO;AACd,cAAM,IAAI;AAAA,UACR,6CAA8C,SAAS,GAAG,MAAO,MAAM,OAAO;AAAA,QAChF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,kBAAgB;AAChB,mBAAiB;AACjB,0BAAwB;AAExB,SAAO;AACT;AAMA,IAAMC,0BAAyB,oBAAI,IAGjC;AAEa,SAAR,eAAgCC,OAAuB,SAA8B;AAC1F,MAAI,CAACA,MAAM,OAAM,IAAI,MAAM,mBAAmB;AAE9C,MAAI,MAAM,QAAQA,KAAI,GAAG;AACvB,WAAO,IAAIC,aAAY,eAAeD,MAAK,CAAC,GAAG,OAAO,CAAC;AAAA,EACzD;AAEA,MAAIE,cAAaF,KAAI,GAAG;AACtB,UAAM,SAASG,uCAAsCH,KAAI;AACzD,UAAM,YAAY,OAAO;AAEzB,QAAI,OAAO,eAAe;AACxB,aAAO,OAAO;AAAA,IAChB;AAEA,QAAI,CAAC,WAAW;AACd,YAAM,IAAI;AAAA,QACR,4EAA4E,KAAK,UAAU,MAAM,CAAC;AAAA,MACpG;AAAA,IACF;AAEA,QAAID,wBAAuB,IAAI,SAAS,GAAG;AACzC,YAAM,EAAC,aAAAK,cAAa,QAAQ,iBAAgB,IAAIL,wBAAuB,IAAI,SAAS;AACpF,UAAI,OAAO,kBAAkB,MAAM,GAAG;AACpC,eAAOK;AAAA,MACT;AACA,YAAM,IAAI,MAAM,iBAAiB,SAAS,sBAAsB;AAAA,IAClE;AAEA,UAAM,cAAc,wBAAwB,WAAW,QAAkB,OAAO;AAEhF,IAAAL,wBAAuB,IAAI,WAAW,EAAC,QAAQ,YAAW,CAAC;AAE3D,WAAO;AAAA,EACT;AAEA,SAAO,kBAAUM,cAAaL,KAAI,CAAC;AACrC;;;AsBrHA,IAAM,iBAAqC,CAAC;;;ACK5C,eAAO,qBAAwB,SAA8B,UAAmB;AAC9E,QAAM,EAAC,UAAS,IAAI;AACpB,QAAM,oBAAoB,OAAO,KAAK,SAAS,EAC5C,IAAI,SAAO;AACV,cAAU,GAAG,EAAE,eAAe;AAC9B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,UAAU,UAAU,GAAG;AAAA,IACzB;AAAA,EACF,CAAC,EACA,OAAO,CAAC,EAAC,SAAQ,MAAM,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,QAAQ,EACzD,OAAO,CAAC,EAAC,SAAQ,MAAM,CAAC,SAAS,OAAO;AAE3C,QAAM,SAAyD,CAAC;AAEhE,aAAW,EAAC,UAAU,KAAI,KAAK,mBAAmB;AAChD,mBAAe,IAAI,IAAI;AAEvB,UAAMM,QAAO,MAAM,eAAQ,SAAS,SAAS,OAAO;AACpD,UAAM,OAAO,MAAM,gBAAQ,SAAS,QAAQ,OAAO;AAEnD,WAAO,IAAI,IAAI;AAAA,MACb,MAAAA;AAAA,MACA;AAAA,MACA,MAAM,QAAQ,OAAO,QAAQ,SAAS,MAAM;AAC1C,YAAI;AACF,gBAAM,SAAS,MAAM,SAAS,QAAQ,QAAQ,SAAS,IAAI;AAC3D,iBAAO;AAAA,QACT,SAAS,OAAO;AACd,uBAAa,OAAO,EAAC,SAAS,UAAU,SAAS,KAAI,CAAC;AACtD,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;AxBvCA,eAAO,iBAAwB,SAA8B;AAC3D,QAAM,SAAS,MAAM,qBAAa,SAAS,KAAK;AAChD,MAAI,QAAQ,MAAM,EAAG,QAAO;AAC5B,SAAO,IAAIC,mBAAkB;AAAA,IAC3B,MAAM;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;AyBZA,SAAQ,qBAAAC,0BAAwB;AAKhC,eAAO,oBAAwB,SAA8B;AAC3D,QAAM,SAAS,MAAM,qBAAa,SAAS,IAAI;AAC/C,MAAI,QAAQ,MAAM,EAAG,QAAO;AAC5B,SAAO,IAAIC,mBAAkB;AAAA,IAC3B,MAAM;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;ACZA,SAAQ,qBAAAC,0BAAwB;;;ACIhC,eAAO,yBAAwB,SAA8B;AAC3D,QAAM,EAAC,cAAa,IAAI;AACxB,QAAM,SAAS,CAAC;AAEhB,aAAW,OAAO,OAAO,KAAK,aAAa,GAAG;AAC5C,UAAM,eAAe,cAAc,GAAG;AACtC,iBAAa,OAAO,aAAa,QAAQ;AAEzC,UAAMC,QAAO,MAAM,eAAQ,aAAa,SAAS,OAAO;AACxD,UAAM,OAAO,MAAM,gBAAQ,aAAa,QAAe,OAAO;AAC9D,WAAO,aAAa,IAAI,IAAI;AAAA,MAC1B,MAAAA;AAAA,MACA;AAAA,MACA,MAAM,UAAU,MAAM,QAAQ,QAAQ;AACpC,eAAO,MAAM,aAAa,UAAU,QAAQ,MAAM;AAAA,MACpD;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ADpBA,eAAO,wBAAwB,SAA0D;AACvF,MAAI,CAAC,QAAQ,cAAe,QAAO;AAEnC,QAAM,SAAS,MAAM,yBAAiB,OAAO;AAC7C,SAAO,IAAIC,mBAAkB;AAAA,IAC3B,MAAM;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;A3BNA,eAAO,oBAAwB,SAA8B;AAC3D,QAAM,QAAQ,MAAM,iBAAS,OAAO;AACpC,QAAM,WAAW,MAAM,oBAAY,OAAO;AAC1C,QAAM,eAAe,MAAM,wBAAgB,OAAO;AAClD,QAAM,SAAS,IAAI,cAAc,EAAC,OAAO,UAAU,aAAY,CAAC;AAChE,SAAO;AACT;;;A6BZe,SAAR,oBAAkB,aAAa;AACpC,MAAI,WAAW,EAAC,GAAG,YAAW;AAC9B,QAAM,QAAQ,YAAY;AAE1B,MAAI,SAAS,MAAM,mBAAmB;AACpC,aAAS,mBAAmB,MAAM;AAAA,EACpC;AAEA,MAAI,SAAS,MAAM,SAAS;AAC1B,eAAW,MAAM,QAAQ;AAAA,EAC3B;AACA,SAAO;AACT;;;ACNA,eAAO,yBAAwB,SAA8B;AAC3D,QAAM,SAAS,MAAM,oBAAY,OAAO;AACxC,QAAM,gBAAgB;AAAA,IACpB;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,SAAO;AAAA,IACL,GAAG;AAAA,IACH;AAAA,IACA;AAAA,EACF;AACF;;;ACzBA,SAAQ,cAAa;AAIrB,SAAQ,uBAAsB;AAC9B,SAAQ,iBAAgB;;;ACHxB,OAAO,wBAAwB,MAAM;AAE9B,IAAM,qBAAqB,OAAO,qBAAwC;AAC/E,MAAI;AACF,UAAM,SAAS,MAAM,OAAO,sBAAsB,gBAAgB;AAClE,QAAI,CAAC,OAAQ,QAAO,CAAC;AACrB,WAAO;AAAA,EACT,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,IAAM,wBAAwB,CAAC,kBAAwD;AAC5F,SAAO,wBAAwB;AACjC;;;ADTA,SAAQ,iBAAgB;AAET,SAAR,uBACL,eACA,SAIA,UACA;AACA,MAAI,CAAC,QAAQ,eAAe;AAC1B,WAAO,CAAC;AAAA,EACV;AAEA,QAAMC,UAAS,QAAQ,UAAU,IAAI,OAAO;AAC5C,YAAUA,OAAM;AAGhB,MAAI,CAAC,UAAU;AACb,eAAW,IAAI,gBAAgB;AAAA,MAC7B,QAAQ,UAAU;AAAA,MAClB,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AAIA,QAAM,gBAAgB;AAAA,IACpB;AAAA,MACE,QAAQ,cAAc;AAAA,MACtB,SAAS,OAAO,KAAK,KAAK,SAAS;AAEjC,eAAO,mBAAmB,IAAI,gBAAgB;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,SAAO;AAAA;AAAA,IAEL;AAAA,MACE,MAAM,kBAAkB;AACtB,eAAO;AAAA,UACL,MAAM,cAAc;AAClB,kBAAM,cAAc,QAAQ;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AErDA,SAAQ,QAAQ,aAAAC,YAAW,iBAAAC,gBAAe,SAAAC,cAAY;AAEtD,SAAQ,oBAAmB;AAC3B,SAAQ,yBAAwB;AAChC,SAAQ,yCAAwC;AAEhD,eAAO,qBAAwB,SAA8B;AAC3D,QAAM,gBAAgB,MAAM,yBAAiB,OAAO;AAEpD,QAAM,MAAM,QAAQ,OAAO,OAAO;AAClC,QAAM,aAAaF,WAAU;AAE7B,MAAI,QAAQ,aAAa;AACvB,0BAAc,eAAe,OAAO;AAAA,EACtC;AAEA,QAAM,aAAa,uBAAe,eAAe,OAAO;AAExD,QAAM,eAAe,aAAa,CAAC,kCAAkC,EAAC,WAAU,CAAC,CAAC,IAAI,CAAC;AAEvF,QAAM,SAAS,IAAI,aAAa;AAAA,IAC9B,GAAG;AAAA,IACH,SAAS,CAAC,GAAI,cAAc,WAAW,CAAC,GAAI,GAAG,cAAc,GAAG,UAAU;AAAA,EAC5E,CAAC;AAED,QAAM,OAAO,MAAM;AAEnB,QAAM,aAAa,kBAAkB,QAAQ;AAAA;AAAA,IAE3C,SAAS,CAAC,EAAC,KAAK,IAAG,MAAM,IAAI;AAAA,EAC/B,CAAC;AAED,EAAAC;AAAA,IACEC,OAAM;AAAA,MACJ;AAAA,MACA,QAAQ;AAAA,MACR,MAAM,QAAQ,QAAQ;AAAA,MACtB,YAAY;AAAA,MACZ,mBAAmB,QAAQ;AAAA,MAC3B,MAAM,QAAQ,KAAK,KAAK,QAAQ;AAC9B;AAAC,QAAC,IAAY,UAAU;AACxB,eAAO,WAAW,KAAK,KAAK,IAAI,IAAI;AAAA,MACtC;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AChDA,SAAQ,sBAAqB;AAC7B,SAAQ,iBAAgB;;;ACDxB,SAAQ,sBAAqB;AAC7B,IAAO,6BAAQ,eAAe,kBAAkB;AAAA,EAC9C,MAAM;AAAA,IACJ,MAAM;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA,kBAAkB;AAAA,IAChB,MAAM;AAAA,EACR;AACF,CAAC;;;ACdD,SAA+C,6BAAAC,kCAAgC;;;ACA/E;AAAA,EACE,gBAAAC;AAAA,EACA,yCAAAC;AAAA,EACA,gBAAAC;AAAA,OAEK;AAKP,eAAO,UAAiC,OAAmB;AACzD,QAAM,EAAC,MAAAC,MAAI,IAAI;AAEf,MAAI,MAAM,QAAQA,KAAI,GAAG;AACvB,UAAM,aAAa,MAAM,UAAU,EAAC,GAAG,OAAO,MAAMA,MAAK,CAAC,EAAC,CAAC;AAC5D,WAAO;AAAA,MACL,GAAG;AAAA,MACH,MAAM,CAAC,WAAW,IAAI;AAAA,MACtB,eAAe,IAAI,WAAW,aAAa;AAAA,IAC7C;AAAA,EACF;AAEA,QAAM,WAAWC,cAAaD,KAAI;AAElC,MAAI,UAAU;AACZ,UAAM,eAAeE,uCAAsCF,KAAI;AAC/D,UAAM,YAAY,aAAa;AAC/B,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,4DAA4D;AAAA,IAC9E;AAEA,UAAM,SAAS,CAAC;AAEhB,eAAWG,UAAS,gBAAgB,YAAY,GAAG;AACjD,aAAOA,OAAM,GAAG,IAAI,MAAM,UAAUA,MAAK;AAAA,IAC3C;AAEA,WAAO;AAAA,MACL,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK;AAAA,MACtB,MAAM;AAAA,MACN,eAAe,GAAG,SAAS;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,aAAaC,cAAaJ,KAAI;AACpC,QAAM,cAAc,MAAM,kBAAU,UAAU;AAE9C,QAAM,aAAa,OAAO,UAAU,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,IAAK,CAAC;AAEtE,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM,WAAW;AAAA,IACjB,eAAe,YAAY;AAAA,EAC7B;AACF;;;ADnDA,eAAO,gBAAuC,QAA6C;AACzF,MAAI,CAAC,OAAQ;AAEb,QAAM,SAASK,2BAA0B,MAAM;AAE/C,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,EAAG;AAEtC,QAAM,SAAS,CAAC;AAEhB,aAAW,OAAO,OAAO,KAAK,MAAM,EAAE,OAAO,CAAAC,SAAO,CAACA,KAAI,WAAW,IAAI,CAAC,GAAG;AAC1E,UAAM,QAAQ,OAAO,GAAG;AACxB,WAAO,GAAG,IAAI,MAAM,UAAS,KAAK;AAElC,UAAM,kBAAkB,+BAAO;AAC/B,SAAI,mDAAiB,qBAAoB,OAAO,GAAG,EAAE,MAAM;AACzD,aAAO,GAAG,EAAE,OAAO,OAAM,mDAAiB,iBAAiB;AAAA,IAC7D;AAAA,EACF;AAEA,SAAO;AACT;;;AFlBA,SAAQ,6BAAAC,4BAA2B,gBAAAC,qBAA4C;;;AIJ/E,SAAQ,6BAAAC,4BAA2B,gBAAAC,qBAAuC;AAE1E,eAAO,cAAqC,OAAmB;AAC7D,MAAI,CAAC,MAAM,KAAM,QAAO;AAExB,MAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAC7B,WAAO,cAAc;AAAA,MACnB,GAAG;AAAA,MACH,MAAM,MAAM,KAAK,CAAC;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,MAAI,CAACA,cAAa,MAAM,IAAI,GAAG;AAC7B,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,SAASD,2BAA0B,MAAM,IAAI;AAEnD,QAAM,SAAS,CAAC;AAChB,aAAWE,UAAS,gBAAgB,MAAM,GAAG;AAC3C,WAAO,KAAK,MAAM,cAAcA,MAAK,CAAC;AAAA,EACxC;AAEA,QAAM,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM;AAE1C,SAAO,GAAG,GAAG,KAAK,OAAO,KAAK,GAAG,CAAC;AACpC;;;AJnBA,SAAS,kBAAkBC,OAAuB;AAChD,QAAM,UAAU,MAAM,QAAQA,KAAI,IAAIA,MAAK,CAAC,IAAIA;AAChD,QAAM,SAASC,2BAA0B,OAAO;AAChD,MAAI,iCAAQ,YAAa,QAAO,OAAO;AACvC;AACF;AAEA,eAAe,4BAA4BD,OAAuB;AAChE,QAAM,UAAU,MAAM,QAAQA,KAAI,IAAIA,MAAK,CAAC,IAAIA;AAEhD,MAAIE,cAAa,OAAO,GAAG;AACzB,UAAM,SAASD,2BAA0B,OAAO;AAChD,WAAO,MAAM,cAAoB;AAAA,MAC/B,MAAM;AAAA,IACR,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,IAAO,iBAAQ,eAAe;AAAA,EAC5B,QAAQ;AAAA,IACN,MAAM;AAAA,MACJ,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM,QAAQ,EAAC,UAAU,KAAI,GAAG;AAC9B,UAAM,WAAW,eAAe,IAAI;AACpC,QAAI,CAAC,UAAU;AACb,YAAM,IAAI;AAAA,QACR;AAAA,QACA,GAAG,WAAW,aAAa,OAAO,WAAW,IAAI;AAAA,MACnD;AAAA,IACF;AACA,QAAI,CAAC,CAAC,SAAS,aAAa,CAAC,CAAC,UAAU;AACtC,YAAM,IAAI,UAAU,iBAAiB,IAAI,IAAI,QAAQ,WAAW,QAAQ,EAAE,aAAa;AAAA,IACzF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,kBAAkB,MAAM,4BAA4B,SAAS,OAAO;AAAA,MACpE,QAAQ,MAAM,gBAAgB,SAAS,MAAM;AAAA,MAC7C,QAAQ,kBAAkB,SAAS,OAAO;AAAA,IAC5C;AAAA,EACF;AACF,CAAC;;;AKvDD,IAAO,2BAAQ;AAAA,EACb;AACF;;;ACGA,YAAYE,cAAa;;;ACJlB,IAAM,oBAAN,MAGL;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAIF;;;AClBA,SAAQ,aAAa,eAAc;AACnC;AAAA,EAEE,kBAAAC;AAAA,OAGK;;;ACHP,IAAM,oBAAoB,oBAAI,QAAkC;AAEhE,SAAS,kBACP,QACA,aACA,aACA,UACAC,WAAU,OACV;AACA,QAAM,iBAAiB,kBAAkB,IAAI,MAAM,KAAK,CAAC;AACzD,iBAAe,WAAW,IAAI,eAAe,WAAW,KAAK,CAAC;AAE9D,MAAIA,UAAS;AACX,mBAAe,WAAW,EAAE,WAAW,IAAI,eAAe,WAAW,EAAE,WAAW,KAAK,CAAC;AACxF,mBAAe,WAAW,EAAE,WAAW,EAAE,QAAQ,QAAQ;AAAA,EAC3D,OAAO;AACL,mBAAe,WAAW,EAAE,WAAW,IAAI;AAAA,EAC7C;AAEA,oBAAkB,IAAI,QAAQ,cAAc;AAC9C;AAEO,SAAS,kBAAkB,QAAa,aAAqB,aAAqB;AAzBzF;AA0BE,QAAM,iBAAiB,kBAAkB,IAAI,MAAM,KAAK,CAAC;AACzD,UAAO,oBAAe,WAAW,MAA1B,mBAA8B;AACvC;AAEO,SAAS,cAA4D,QAAqB;AAC/F,SAAO,CAAC,QAAa,YAA8D;AACjF,UAAM,cAAc,OAAO,QAAQ,IAAI;AACvC,sBAAkB,QAAQ,aAAa,eAAe,QAAQ,IAAI;AAClE,WAAO;AAAA,EACT;AACF;AAEO,SAAS,eAA2D,QAAiB;AAC1F,SAAO,CAAC,QAAa,YAA8D;AACjF,UAAM,cAAc,OAAO,QAAQ,IAAI;AACvC,sBAAkB,QAAQ,aAAa,UAAU,QAAQ,KAAK;AAC9D,WAAO;AAAA,EACT;AACF;AAEO,SAAS,gBAAsB,SAAc;AAClD,SAAO,CAAC,QAAa,YAA8D;AACjF,UAAM,cAAc,OAAO,QAAQ,IAAI;AACvC,sBAAkB,QAAQ,aAAa,WAAW,SAAS,KAAK;AAChE,WAAO;AAAA,EACT;AACF;;;ADxCO,IAAM,cAAcC;AACpB,IAAM,iBAAiB,CAM5B,YACG;AACH,SAAOA,gBAAe;AAAA,IACpB,GAAG;AAAA,IACH,UAAU;AAAA,EACZ,CAAC;AACH;AAGA,IAAM,kBAAkB,oBAAI,QAAqC;AAC1D,IAAM,4BAA4B,oBAAI,QAAkC;AAExE,SAAS,YAAY;AAC1B,SAAO,CAAC,QAAa,YAAwC;AAC3D,YAAQ,EAAE,QAAQ,OAAO;AACzB,oBAAgB,IAAI,QAAQ,EAAC,cAAc,YAAW,CAAC;AAAA,EACzD;AACF;AASO,SAAS,MAAM,UAAU,CAAC,GAAG;AAClC,SAAO,CAAC,QAAa,YAAsE;AACzF,UAAM,cAAc,OAAO,QAAQ,IAAI;AAEvC,YAAQ,eAAe,WAAgB;AACrC,YAAM,YAAY,0BAA0B,IAAI,IAAI,KAAK,CAAC;AAE1D,UAAI,QAAQ,SAAS,UAAU;AAC7B,kBAAU,WAAW,IAAIA,gBAAe;AAAA,UACtC,YAAY;AAAA,UACZ,QAAQ,kBAAkB,QAAQ,aAAa,QAAQ,KAAK,CAAC;AAAA,UAC7D,SAAS,kBAAkB,QAAQ,aAAa,SAAS,KAAK;AAAA,UAC9D,aAAa,kBAAkB,QAAQ,aAAa,aAAa,KAAK,CAAC;AAAA,UACvE,GAAG;AAAA,UACH,SAAS,KAAK,WAAW,EAAE,KAAK,IAAI;AAAA,QACtC,CAAC;AAAA,MACH;AAEA,UAAI,QAAQ,SAAS,SAAS;AAC5B,kBAAU,WAAW,IAAI,KAAK,WAAW;AAAA,MAC3C;AAEA,gCAA0B,IAAI,MAAM,SAAS;AAAA,IAC/C,CAAC;AAED,WAAO;AAAA,EACT;AACF;AASO,SAAS,SAAS,UAAU,CAAC,GAAG;AACrC,SAAO,CAAC,QAAa,YAAsE;AACzF,UAAM,cAAc,OAAO,QAAQ,IAAI;AAEvC,YAAQ,eAAe,WAAgB;AACrC,YAAM,YAAY,0BAA0B,IAAI,IAAI,KAAK,CAAC;AAE1D,UAAI,QAAQ,SAAS,UAAU;AAC7B,kBAAU,WAAW,IAAIA,gBAAe;AAAA,UACtC,YAAY;AAAA,UACZ,QAAQ,kBAAkB,QAAQ,aAAa,QAAQ,KAAK,CAAC;AAAA,UAC7D,SAAS,kBAAkB,QAAQ,aAAa,SAAS,KAAK;AAAA,UAC9D,aAAa,kBAAkB,QAAQ,aAAa,aAAa,KAAK,CAAC;AAAA,UACvE,GAAG;AAAA,UACH,UAAU;AAAA,UACV,SAAS,KAAK,WAAW,EAAE,KAAK,IAAI;AAAA,QACtC,CAAC;AAAA,MACH;AACA,UAAI,QAAQ,SAAS,SAAS;AAC5B,aAAK,WAAW,EAAE,WAAW;AAC7B,kBAAU,WAAW,IAAI,KAAK,WAAW;AAAA,MAC3C;AACA,gCAA0B,IAAI,MAAM,SAAS;AAAA,IAC/C,CAAC;AAED,WAAO;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,QAElC;AACA,QAAM,WAAW,YAAY,MAAM;AAEnC,QAAM,YAAY,SAAS,YAAY;AACvC,QAAM,eAAe,2FAA2F,SAAS;AAEzH,MAAI,CAAC,gBAAgB,IAAI,SAAS,WAAW,GAAG;AAC9C,UAAM,IAAI,MAAM,YAAY;AAAA,EAC9B;AAEA,QAAM,mBAAmB,gBAAgB,IAAI,SAAS,WAAW;AACjE,MAAI,iBAAiB,iBAAiB,aAAa;AACjD,UAAM,IAAI,MAAM,GAAG,YAAY,oBAAoB,iBAAiB,YAAY,EAAE;AAAA,EACpF;AAEA,QAAM,eAAe,0BAA0B,IAAI,QAAQ,KAAK,CAAC;AAEjE,SAAO;AACT;;;AElIA,SAAQ,eAAAC,cAAa,WAAAC,gBAAc;AACnC;AAAA,EAEE,uBAAuB;AAAA,OAElB;AAGA,IAAM,sBAAsB;AAQnC,IAAMC,mBAAkB,oBAAI,QAG1B;AACF,IAAM,yBAAyB,oBAAI,QAAkC;AAE9D,SAAS,eAAe,aAAkB,UAAiC,CAAC,GAAG;AACpF,SAAO,CAAC,QAAa,YAAwC;AAC3D,IAAAC,SAAQ,EAAE,QAAQ,OAAO;AACzB,UAAM,YAAY,QAAQ;AAE1B,UAAM,aAAa,MAAM;AACvB,UAAI,QAAQ,WAAW;AACrB,eAAO,QAAQ;AAAA,MACjB;AAEA,UAAI,OAAO,YAAY,SAAS,UAAU;AACxC,eAAO,YAAY;AAAA,MACrB;AAEA,UAAI,YAAY,aAAa;AAC3B,eAAO,YAAY;AAAA,MACrB;AAEA,YAAM,IAAI,MAAM,8DAA8D,SAAS,GAAG;AAAA,IAC5F,GAAG;AAEH,YAAQ,eAAe,WAAgB;AACrC,MAAAD,iBAAgB,IAAI,MAAM;AAAA,QACxB,cAAc;AAAA,QACd;AAAA,QACA,YAAY;AAAA,MACd,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AASO,SAAS,cAAc,UAAU,CAAC,GAAG;AAC1C,SAAO,CAAC,QAAa,YAAsE;AACzF,UAAM,cAAc,OAAO,QAAQ,IAAI;AAEvC,YAAQ,eAAe,WAAgB;AACrC,YAAM,iBAAiB,uBAAuB,IAAI,IAAI,KAAK,CAAC;AAE5D,UAAI,QAAQ,SAAS,UAAU;AAC7B,uBAAe,WAAW,IAAI,oBAAoB;AAAA,UAChD,QAAQ,kBAAkB,QAAQ,aAAa,QAAQ,KAAK,CAAC;AAAA,UAC7D,SAAS,kBAAkB,QAAQ,aAAa,SAAS,KAAK;AAAA,UAC9D,aAAa,kBAAkB,QAAQ,aAAa,aAAa,KAAK,CAAC;AAAA,UACvE,GAAG;AAAA,UACH,SAAS,KAAK,WAAW,EAAE,KAAK,IAAI;AAAA,QACtC,CAAC;AAAA,MACH;AAEA,UAAI,QAAQ,SAAS,SAAS;AAC5B,uBAAe,WAAW,IAAI,KAAK,WAAW;AAAA,MAChD;AAEA,6BAAuB,IAAI,MAAM,cAAc;AAAA,IACjD,CAAC;AAED,WAAO;AAAA,EACT;AACF;AAEO,SAAS,yBAAyB,QAIvC;AACA,QAAM,WAAWE,aAAY,MAAM;AAEnC,MAAI,CAACF,iBAAgB,IAAI,SAAS,WAAW,GAAG;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmBA,iBAAgB,IAAI,SAAS,WAAW;AACjE,MAAI,iBAAiB,iBAAiB,kBAAkB;AACtD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,uBAAuB,IAAI,QAAQ,KAAK,CAAC;AAEnE,SAAO;AAAA,IACL,CAAC,iBAAiB,UAAU,GAAG;AAAA,EACjC;AACF;;;ACjHA,SAAQ,eAAAG,cAAa,WAAAC,gBAAc;AAInC,IAAMC,mBAAkB,oBAAI,QAAqC;AACjE,IAAM,wBAAwB,oBAAI,QAAkC;AAE7D,SAAS,gBAAgB;AAC9B,SAAO,CAAC,QAAa,YAAwC;AAC3D,IAAAD,SAAQ,EAAE,QAAQ,OAAO;AAEzB,YAAQ,eAAe,WAAgB;AACrC,MAAAC,iBAAgB,IAAI,MAAM,EAAC,cAAc,gBAAe,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;AAGO,SAAS,eAAe;AAC7B,SAAO,CAAC,SAAc,YAAwC;AAC5D,UAAM,cAAc,OAAO,QAAQ,IAAI;AACvC,YAAQ,eAAe,WAAgB;AACrC,YAAM,OAAOA,iBAAgB,IAAI,KAAK,WAAW;AACjD,UAAI,CAAC,QAAQ,KAAK,iBAAiB,iBAAiB;AAClD,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM,gBAAgB,sBAAsB,IAAI,IAAI,KAAK,CAAC;AAE1D,oBAAc,WAAW,IAAI,KAAK,WAAW;AAE7C,4BAAsB,IAAI,MAAM,aAAa;AAE7C,WAAK,WAAW,IAAI,cAAc,WAAW;AAAA,IAC/C,CAAC;AAAA,EACH;AACF;AAEO,SAAS,wBAAwB,QAEtC;AACA,QAAM,WAAWF,aAAY,MAAM;AAEnC,MAAI,CAACE,iBAAgB,IAAI,SAAS,WAAW,GAAG;AAC9C,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmBA,iBAAgB,IAAI,SAAS,WAAW;AACjE,MAAI,iBAAiB,iBAAiB,iBAAiB;AACrD,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmB,sBAAsB,IAAI,QAAQ,KAAK,CAAC;AAEjE,SAAO;AACT;;;ALpDA,IAAMC,sBAAqB;","names":["pubsub","GraphQLObjectType","GraphQLList","getFieldType","getSchemaWithMetadataFromAnyOrionForm","isSchemaLike","coerceBigInt","GraphQLScalarType","GraphQLScalarType","type","graphQLType","key","type","getGraphQLType","type","buildFields","registeredGraphQLTypes","type","GraphQLList","isSchemaLike","getSchemaWithMetadataFromAnyOrionForm","graphQLType","getFieldType","type","GraphQLObjectType","GraphQLObjectType","GraphQLObjectType","GraphQLObjectType","type","GraphQLObjectType","pubsub","getServer","registerRoute","route","getSchemaFromAnyOrionForm","getFieldType","getSchemaWithMetadataFromAnyOrionForm","isSchemaLike","type","isSchemaLike","getSchemaWithMetadataFromAnyOrionForm","field","getFieldType","getSchemaFromAnyOrionForm","key","getSchemaFromAnyOrionForm","isSchemaLike","getSchemaFromAnyOrionForm","isSchemaLike","field","type","getSchemaFromAnyOrionForm","isSchemaLike","GraphQL","createResolver","isArray","createResolver","getInstance","Service","serviceMetadata","Service","getInstance","getInstance","Service","serviceMetadata","createSubscription"]}
|
|
1
|
+
{"version":3,"sources":["../src/subscription/index.ts","../src/pubsub.ts","../src/subscription/getChannelName.ts","../src/startGraphiQL.ts","../src/buildSchema/index.ts","../src/buildSchema/getQuery.ts","../src/buildSchema/getType/index.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isArray.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/isInteger.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/createPath.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/equals.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isType.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/compare.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/_internals/includes.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/omit.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/buildSchema/getType/BigIntScalar.ts","../src/buildSchema/getType/DateScalar.ts","../src/buildSchema/getType/JSONScalar.ts","../src/buildSchema/getType/getScalar.ts","../src/buildSchema/getArgs/getField.ts","../src/resolversSchemas/getStaticFields.ts","../src/buildSchema/getArgs/index.ts","../src/errorHandler.ts","../src/buildSchema/getType/getTypeAsResolver.ts","../src/resolversSchemas/getDynamicFields.ts","../src/resolversSchemas/getModelLoadedResolvers.ts","../src/buildSchema/getResolvers/resolversStore.ts","../src/buildSchema/getResolvers/index.ts","../src/buildSchema/getMutation.ts","../src/buildSchema/getSubscription.ts","../src/buildSchema/getSubscriptions/index.ts","../src/getApolloOptions/formatError.ts","../src/getApolloOptions/index.ts","../src/startWebsocket.ts","../src/websockerViewer.ts","../src/startGraphQL.ts","../src/resolversSchemas/params.ts","../src/resolversSchemas/ResolverParamsInfo.ts","../src/resolversSchemas/serializeSchema.ts","../src/resolversSchemas/getField.ts","../src/resolversSchemas/getBasicResultQuery.ts","../src/resolversSchemas/index.ts","../src/index.ts","../src/types/subscription.ts","../src/service/global.ts","../src/service/middlewares.ts","../src/service/model.ts","../src/service/subscription.ts"],"sourcesContent":["import {getSchemaFromAnyOrionForm, SchemaFieldType} from '@orion-js/schema'\nimport {getPubsub} from '../pubsub'\nimport {\n CreateOrionSubscriptionFunction,\n OrionSubscription,\n OrionSubscriptionOptions,\n} from '../types/subscription'\nimport getChannelName from './getChannelName'\n\nconst createSubscription: CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType,\n TReturnsSchema extends SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => {\n const subscription = {} as OrionSubscription<TParamsSchema, TReturnsSchema>\n\n const getSubscriptionName = () => {\n if (!subscription.name) {\n throw new Error('This subscription is not yet initialized in GraphQL')\n }\n\n return subscription.name\n }\n\n // the publish function\n subscription.publish = async (params, data) => {\n const pubsub = getPubsub()\n const channelName = getChannelName(getSubscriptionName(), params)\n await pubsub.publish(channelName, {[getSubscriptionName()]: data})\n }\n\n subscription.subscribe = async (params, viewer) => {\n const pubsub = getPubsub()\n try {\n if (options.canSubscribe) {\n const canSubscribe = await options.canSubscribe(params, viewer)\n if (!canSubscribe) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n const channelName = getChannelName(getSubscriptionName(), params)\n return pubsub.asyncIterator(channelName)\n } catch (_error) {\n return pubsub.asyncIterator('unauthorized')\n }\n }\n\n subscription.params = (getSchemaFromAnyOrionForm(options.params) ?? {}) as TParamsSchema\n subscription.returns = getSchemaFromAnyOrionForm(options.returns) as TReturnsSchema\n\n return subscription as OrionSubscription<TParamsSchema, TReturnsSchema>\n}\n\nexport default createSubscription\n","import {PubSubEngine} from 'graphql-subscriptions'\n\nlet pubsub = null\n\nexport const setPubsub = function (newPubsub: PubSubEngine) {\n pubsub = newPubsub\n}\n\nexport const getPubsub: () => PubSubEngine = function () {\n return pubsub\n}\n","import {hashObject} from '@orion-js/helpers'\n\nexport default function (name: string, params) {\n const hash = hashObject(params)\n const channelName = `${name}_${hash}`\n return channelName\n}\n","import {registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\n\n// Ensures string values are safe to be used within a <script> tag.\n// TODO: I don't think that's the right escape function\nfunction safeSerialize(data) {\n return data ? JSON.stringify(data).replace(/\\//g, '\\\\/') : null\n}\n\nconst getHTML = (_apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions, data) => {\n // Current latest version of GraphiQL.\n const GRAPHIQL_VERSION = '0.11.11'\n\n const endpointURL = '/graphql'\n const subscriptionsEndpoint = '/subscriptions'\n\n const queryString = data.query\n const variablesString = data.variables ? JSON.stringify(data.variables, null, 2) : null\n const operationName = data.operationName\n const useSubs = !!options.subscriptions\n\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\" />\n <title>GraphiQL</title>\n <meta name=\"robots\" content=\"noindex\" />\n <style>\n html, body {\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n }\n </style>\n <link href=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.css\" rel=\"stylesheet\" />\n <script src=\"//unpkg.com/react@15.6.1/dist/react.min.js\"></script>\n <script src=\"//unpkg.com/jssha@2.3.1/src/sha512.js\"></script>\n <script src=\"//unpkg.com/react-dom@15.6.1/dist/react-dom.min.js\"></script>\n <script src=\"//unpkg.com/graphiql@${GRAPHIQL_VERSION}/graphiql.min.js\"></script>\n <script src=\"//cdn.jsdelivr.net/fetch/2.0.1/fetch.min.js\"></script>\n ${\n useSubs\n ? `<script src=\"//unpkg.com/subscriptions-transport-ws@0.5.4/browser/client.js\"></script>\n <script src=\"//unpkg.com/graphiql-subscriptions-fetcher@0.0.2/browser/client.js\"></script>`\n : ''\n }\n</head>\n<body>\n <script>\n // Collect the URL parameters\n var parameters = {};\n window.location.search.substr(1).split('&').forEach(function (entry) {\n var eq = entry.indexOf('=');\n if (eq >= 0) {\n parameters[decodeURIComponent(entry.slice(0, eq))] =\n decodeURIComponent(entry.slice(eq + 1));\n }\n });\n // Produce a Location query string from a parameter object.\n function locationQuery(params, location) {\n return (location ? location: '') + '?' + Object.keys(params).map(function (key) {\n return encodeURIComponent(key) + '=' +\n encodeURIComponent(params[key]);\n }).join('&');\n }\n // Derive a fetch URL from the current URL, sans the GraphQL parameters.\n var graphqlParamNames = {\n query: true,\n variables: true,\n operationName: true\n };\n var otherParams = {};\n for (var k in parameters) {\n if (parameters.hasOwnProperty(k) && graphqlParamNames[k] !== true) {\n otherParams[k] = parameters[k];\n }\n }\n // We don't use safe-serialize for location, because it's not client input.\n var fetchURL = '${endpointURL}'\n // Defines a GraphQL fetcher using the fetch API.\n function graphQLHttpFetcher(graphQLParams) {\n const body = JSON.stringify(graphQLParams)\n const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n }\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime()\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + body)\n const signature = shaObj.getHMAC('HEX')\n headers['X-ORION-NONCE'] = nonce\n headers['X-ORION-PUBLICKEY'] = publicKey\n headers['X-ORION-SIGNATURE'] = signature\n }\n return fetch(fetchURL, {\n method: 'post',\n headers,\n body,\n credentials: 'same-origin',\n }).then(function (response) {\n return response.text();\n }).then(function (responseBody) {\n try {\n const json = JSON.parse(responseBody);\n if (json.data && json.data.loginWithPassword) {\n const publicKey = json.data.loginWithPassword.publicKey\n const secretKey = json.data.loginWithPassword.secretKey\n if (publicKey && secretKey) {\n localStorage.setItem('GraphiQL:publicKey', publicKey)\n localStorage.setItem('GraphiQL:secretKey', secretKey)\n alert('Session saved in localStorage')\n }\n }\n if (json.error && json.error === 'AuthError') {\n localStorage.setItem('GraphiQL:publicKey', '')\n localStorage.setItem('GraphiQL:secretKey', '')\n alert('Logged out after receiving AuthError')\n }\n return json\n } catch (error) {\n return responseBody;\n }\n });\n }\n ${\n useSubs\n ? `\n let params = {}\n const publicKey = localStorage.getItem('GraphiQL:publicKey')\n const secretKey = localStorage.getItem('GraphiQL:secretKey')\n if (publicKey && secretKey) {\n const nonce = new Date().getTime() + 500\n const shaObj = new jsSHA('SHA-512', 'TEXT')\n shaObj.setHMACKey(secretKey, 'TEXT')\n shaObj.update(nonce + 'websockethandshake')\n const signature = shaObj.getHMAC('HEX')\n params = {\n nonce,\n publicKey,\n signature\n }\n }\n\n const protocol = window.location.protocol === 'https:' ? 'wss://' : 'ws://'\n let subscriptionsClient = new window.SubscriptionsTransportWs.SubscriptionClient(protocol + window.location.host + '${subscriptionsEndpoint}', {\n reconnect: true,\n connectionParams: params\n });\n let myCustomFetcher = window.GraphiQLSubscriptionsFetcher.graphQLFetcher(subscriptionsClient, graphQLHttpFetcher);\n var fetcher = myCustomFetcher\n `\n : `\n var fetcher = graphQLHttpFetcher\n `\n }\n\n // When the query and variables string is edited, update the URL bar so\n // that it can be easily shared.\n function onEditQuery(newQuery) {\n parameters.query = newQuery;\n updateURL();\n }\n function onEditVariables(newVariables) {\n parameters.variables = newVariables;\n updateURL();\n }\n function onEditOperationName(newOperationName) {\n parameters.operationName = newOperationName;\n updateURL();\n }\n function updateURL() {\n var cleanParams = Object.keys(parameters).filter(function(v) {\n return parameters[v];\n }).reduce(function(old, v) {\n old[v] = parameters[v];\n return old;\n }, {});\n history.replaceState(null, null, locationQuery(cleanParams) + window.location.hash);\n }\n // Render <GraphiQL /> into the body.\n ReactDOM.render(\n React.createElement(GraphiQL, {\n fetcher: fetcher,\n onEditQuery: onEditQuery,\n onEditVariables: onEditVariables,\n onEditOperationName: onEditOperationName,\n query: ${safeSerialize(queryString)},\n response: null,\n variables: ${safeSerialize(variablesString)},\n operationName: ${safeSerialize(operationName)},\n }),\n document.body\n );\n </script>\n</body>\n</html>`\n}\n\nexport default function (apolloOptions: ApolloServerOptions<any>, options: StartGraphQLOptions) {\n registerRoute(\n route({\n path: '/graphiql',\n method: 'get',\n async resolve(req) {\n return {\n body: getHTML(apolloOptions, options, req.query),\n }\n },\n }),\n )\n}\n","import {GraphQLSchema} from 'graphql'\nimport getQuery from './getQuery'\nimport getMutation from './getMutation'\nimport getSubscription from './getSubscription'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const query = await getQuery(options)\n const mutation = await getMutation(options)\n const subscription = await getSubscription(options)\n const schema = new GraphQLSchema({query, mutation, subscription})\n return schema\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, false)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Query',\n fields,\n })\n}\n","import {GraphQLList, GraphQLObjectType} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaFieldType,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport {equals} from 'rambdax'\nimport getScalar from './getScalar'\nimport getTypeAsResolver from './getTypeAsResolver'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\nimport {getDynamicFields} from '../../resolversSchemas/getDynamicFields'\nimport {getModelLoadedResolvers} from '../../resolversSchemas/getModelLoadedResolvers'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport const createGraphQLObjectType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = field.graphQLResolver\n ? getTypeAsResolver({resolver: field.graphQLResolver, getGraphQLType, options, schema})\n : {type: getGraphQLType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n const addDynamicFields = () => {\n for (const resolver of getDynamicFields(schema)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n const addModelLoadedResolvers = () => {\n for (const resolver of getModelLoadedResolvers(schema, options)) {\n try {\n fields[resolver.key] = getTypeAsResolver({resolver, getGraphQLType, options, schema})\n } catch (error) {\n throw new Error(\n `Error getting resolver type for resolver \\\"${resolver.key}\\\": ${error.message}`,\n )\n }\n }\n }\n\n addStaticFields()\n addDynamicFields()\n addModelLoadedResolvers()\n\n return fields\n}\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLObjectType}\n>()\n\nexport default function getGraphQLType(type: SchemaFieldType, options: StartGraphQLOptions) {\n if (!type) throw new Error('Type is undefined')\n\n if (Array.isArray(type)) {\n return new GraphQLList(getGraphQLType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schema.__modelName\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLObjectType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n return getScalar(getFieldType(type))\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","export const { isArray } = Array\n","function _isInteger(n){\n return n << 0 === n\n}\n\nexport const isInteger = Number.isInteger || _isInteger\n\n/**\n * Check if `index` is integer even if it is a string.\n */\nexport const isIndexInteger = index => Number.isInteger(Number(index))\n","import { isInteger } from './isInteger.js'\n\nexport function createPath(path, delimiter = '.'){\n return typeof path === 'string' ?\n path.split(delimiter).map(x => isInteger(x) ? Number(x) : x) :\n path\n}\n","import { isArray } from './_internals/isArray.js'\nimport { type } from './type.js'\n\nexport function _lastIndexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.lastIndexOf(valueToFind)\n\n const { length } = list\n let index = length\n let foundIndex = -1\n\n while (--index > -1 && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nexport function _indexOf(valueToFind, list){\n if (!isArray(list))\n throw new Error(`Cannot read property 'indexOf' of ${ list }`)\n\n const typeOfValue = type(valueToFind)\n if (![ 'Array', 'NaN', 'Object', 'RegExp' ].includes(typeOfValue))\n return list.indexOf(valueToFind)\n\n let index = -1\n let foundIndex = -1\n const { length } = list\n\n while (++index < length && foundIndex === -1)\n if (equals(list[ index ], valueToFind))\n foundIndex = index\n\n return foundIndex\n}\n\nfunction _arrayFromIterator(iter){\n const list = []\n let next\n while (!(next = iter.next()).done)\n list.push(next.value)\n\n return list\n}\n\nfunction _compareSets(a, b){\n if (a.size !== b.size)\n return false\n\n const aList = _arrayFromIterator(a.values())\n const bList = _arrayFromIterator(b.values())\n\n const filtered = aList.filter(aInstance => _indexOf(aInstance, bList) === -1)\n\n return filtered.length === 0\n}\n\nfunction compareErrors(a, b){\n if (a.message !== b.message) return false\n if (a.toString !== b.toString) return false\n\n return a.toString() === b.toString()\n}\n\nfunction parseDate(maybeDate){\n if (!maybeDate.toDateString) return [ false ]\n\n return [ true, maybeDate.getTime() ]\n}\n\nfunction parseRegex(maybeRegex){\n if (maybeRegex.constructor !== RegExp) return [ false ]\n\n return [ true, maybeRegex.toString() ]\n}\n\nexport function equals(a, b){\n if (arguments.length === 1) return _b => equals(a, _b)\n\n if (Object.is(a, b)) return true\n\n const aType = type(a)\n\n if (aType !== type(b)) return false\n if (aType === 'Function')\n return a.name === undefined ? false : a.name === b.name\n\n if ([ 'NaN', 'Null', 'Undefined' ].includes(aType)) return true\n\n if ([ 'BigInt', 'Number' ].includes(aType)){\n if (Object.is(-0, a) !== Object.is(-0, b)) return false\n\n return a.toString() === b.toString()\n }\n\n if ([ 'Boolean', 'String' ].includes(aType))\n return a.toString() === b.toString()\n\n if (aType === 'Array'){\n const aClone = Array.from(a)\n const bClone = Array.from(b)\n\n if (aClone.toString() !== bClone.toString())\n return false\n\n let loopArrayFlag = true\n aClone.forEach((aCloneInstance, aCloneIndex) => {\n if (loopArrayFlag)\n if (\n aCloneInstance !== bClone[ aCloneIndex ] &&\n !equals(aCloneInstance, bClone[ aCloneIndex ])\n )\n loopArrayFlag = false\n\n })\n\n return loopArrayFlag\n }\n\n const aRegex = parseRegex(a)\n const bRegex = parseRegex(b)\n\n if (aRegex[ 0 ])\n return bRegex[ 0 ] ? aRegex[ 1 ] === bRegex[ 1 ] : false\n else if (bRegex[ 0 ]) return false\n\n const aDate = parseDate(a)\n const bDate = parseDate(b)\n\n if (aDate[ 0 ])\n return bDate[ 0 ] ? aDate[ 1 ] === bDate[ 1 ] : false\n else if (bDate[ 0 ]) return false\n\n if (a instanceof Error){\n if (!(b instanceof Error)) return false\n\n return compareErrors(a, b)\n }\n\n if (aType === 'Set')\n return _compareSets(a, b)\n\n if (aType === 'Object'){\n const aKeys = Object.keys(a)\n\n if (aKeys.length !== Object.keys(b).length)\n return false\n\n let loopObjectFlag = true\n aKeys.forEach(aKeyInstance => {\n if (loopObjectFlag){\n const aValue = a[ aKeyInstance ]\n const bValue = b[ aKeyInstance ]\n\n if (aValue !== bValue && !equals(aValue, bValue))\n loopObjectFlag = false\n\n }\n })\n\n return loopObjectFlag\n }\n\n return false\n}\n","import { type } from './type.js'\n\nexport function isType(xType, x){\n if (arguments.length === 1){\n return xHolder => isType(xType, xHolder)\n }\n\n return type(x) === xType\n}\n","export function compare(a, b){\n return String(a) === String(b)\n}\n","import { compare } from './compare.js'\n\nexport function includes(a, list){\n let index = -1\n const { length } = list\n\n while (++index < length)\n if (compare(list[ index ], a))\n return true\n\n return false\n}\n","import { createPath } from './_internals/createPath.js'\nimport { includes } from './_internals/includes.js'\n\nexport function omit(propsToOmit, obj){\n if (arguments.length === 1) return _obj => omit(propsToOmit, _obj)\n\n if (obj === null || obj === undefined)\n return undefined\n\n const propsToOmitValue = createPath(propsToOmit, ',')\n const willReturn = {}\n\n for (const key in obj)\n if (!includes(key, propsToOmitValue))\n willReturn[ key ] = obj[ key ]\n\n return willReturn\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","import {GraphQLScalarType} from 'graphql'\n\nconst MAX_INT = Number.MAX_SAFE_INTEGER\nconst MIN_INT = Number.MIN_SAFE_INTEGER\n\nconst coerceBigInt = function coerceBigInt(value) {\n if (value === '') {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: (empty string)')\n }\n const num = Number(value)\n if (num > MAX_INT || num < MIN_INT) {\n throw new TypeError('BigInt cannot represent non 53-bit signed integer value: ' + String(value))\n }\n const int = Math.floor(num)\n if (int !== num) {\n throw new TypeError('BigInt cannot represent non-integer value: ' + String(value))\n }\n return int\n}\n\nexport default new GraphQLScalarType({\n name: 'BigInt',\n description:\n 'The `BigInt` scalar type represents non-fractional signed whole numeric ' +\n 'values. BigInt can represent values between -(2^53) + 1 and 2^53 - 1. ',\n serialize: coerceBigInt,\n parseValue: coerceBigInt,\n parseLiteral(ast) {\n if (ast.kind === 'IntValue') {\n const num = parseInt(ast.value, 10)\n if (num <= MAX_INT && num >= MIN_INT) {\n return num\n }\n }\n return null\n },\n})\n","import {GraphQLScalarType} from 'graphql'\nimport {GraphQLDateTime} from 'graphql-scalars'\n\nexport default new GraphQLScalarType({\n name: 'Date',\n serialize: GraphQLDateTime.serialize,\n parseValue: GraphQLDateTime.parseValue,\n parseLiteral: GraphQLDateTime.parseLiteral,\n})\n","import {GraphQLScalarType, Kind} from 'graphql'\n\nfunction identity(value) {\n return value\n}\n\nfunction parseLiteral(ast, variables) {\n switch (ast.kind) {\n case Kind.STRING:\n case Kind.BOOLEAN:\n return ast.value\n case Kind.INT:\n case Kind.FLOAT:\n return parseFloat(ast.value)\n case Kind.OBJECT: {\n const value = Object.create(null)\n ast.fields.forEach(field => {\n value[field.name.value] = parseLiteral(field.value, variables)\n })\n\n return value\n }\n case Kind.LIST:\n return ast.values.map(n => parseLiteral(n, variables))\n case Kind.NULL:\n return null\n case Kind.VARIABLE: {\n const name = ast.name.value\n return variables ? variables[name] : undefined\n }\n default:\n return undefined\n }\n}\n\nexport default new GraphQLScalarType({\n name: 'JSON',\n description:\n 'The `JSON` scalar type represents JSON values as specified by ' +\n '[ECMA-404](http://www.ecma-international.org/' +\n 'publications/files/ECMA-ST/ECMA-404.pdf).',\n serialize: identity,\n parseValue: identity,\n parseLiteral,\n})\n","import BigIntScalar from './BigIntScalar'\nimport DateScalar from './DateScalar'\nimport JSONScalar from './JSONScalar'\nimport * as GraphQL from 'graphql'\n\nconst {GraphQLFloat, GraphQLString, GraphQLID, GraphQLBoolean} = GraphQL\n\nconst fieldMap = {\n string: GraphQLString,\n email: GraphQLString,\n date: DateScalar,\n integer: BigIntScalar,\n number: GraphQLFloat,\n ID: GraphQLID,\n boolean: GraphQLBoolean,\n blackbox: JSONScalar,\n any: JSONScalar,\n}\n\nexport default function (fieldType) {\n if (fieldMap[fieldType.name]) {\n return fieldMap[fieldType.name]\n }\n\n if (fieldType.name.startsWith('typedId:')) {\n return fieldMap.string\n }\n\n if (fieldType.toGraphQLType) {\n const result = fieldType.toGraphQLType(GraphQL)\n if (result.then) {\n throw new Error('toGraphQLType cant return a promise')\n }\n return result\n }\n throw new Error(`Field type \"${fieldType.name}\" has no convertion to GraphQLType`)\n}\n","import {GraphQLInputObjectType, GraphQLList} from 'graphql'\nimport {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n Schema,\n SchemaWithMetadata,\n} from '@orion-js/schema'\nimport getScalar from '../getType/getScalar'\nimport {equals} from 'rambdax'\nimport {StartGraphQLOptions} from '../../types'\nimport {getStaticFields} from '../../resolversSchemas/getStaticFields'\n\n// we'll save the list of models that have been registered\n// to avoid duplicate registration of models.\n// if two models have the same name, but are different,\n// it will throw an error.\nconst registeredGraphQLTypes = new Map<\n string,\n {schema: SchemaWithMetadata; graphQLType: GraphQLInputObjectType}\n>()\n\nconst resolveType = (type, options: StartGraphQLOptions) => {\n if (!type) throw new Error('No type specified')\n\n if (type?.[Symbol.metadata]?._getModel) {\n const model = type[Symbol.metadata]._getModel()\n return resolveType(model, options)\n }\n\n if (Array.isArray(type)) {\n return new GraphQLList(resolveType(type[0], options))\n }\n\n if (isSchemaLike(type)) {\n const schema = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = `${schema.__modelName}Input`\n\n if (schema.__graphQLType) {\n return schema.__graphQLType\n }\n\n if (!schema.__modelName) {\n throw new Error(\n `Schema name is not defined. Register a name with schemaWithName. Schema: ${JSON.stringify(schema)}`,\n )\n }\n\n if (registeredGraphQLTypes.has(modelName)) {\n const {graphQLType, schema: registeredSchema} = registeredGraphQLTypes.get(modelName)\n if (equals(registeredSchema, schema)) {\n return graphQLType\n }\n throw new Error(`Schema named \"${modelName}\" already registered`)\n }\n\n const graphQLType = createGraphQLInputType(modelName, schema as Schema, options)\n\n registeredGraphQLTypes.set(modelName, {schema, graphQLType})\n\n return graphQLType\n }\n\n const schemaType = getFieldType(type)\n return getScalar(schemaType)\n}\n\nexport default resolveType\n\nexport const createGraphQLInputType = (\n modelName: string,\n schema: Schema,\n options: StartGraphQLOptions,\n) =>\n new GraphQLInputObjectType({\n name: modelName,\n fields: () => buildFields(schema, options),\n })\n\nconst buildFields = (schema: Schema, options: StartGraphQLOptions) => {\n const fields = {}\n\n const addStaticFields = () => {\n for (const field of getStaticFields(schema)) {\n try {\n fields[field.key] = {type: resolveType(field.type, options)}\n } catch (error) {\n throw new Error(`Error getting type for ${field.key}: ${error.message}`)\n }\n }\n }\n\n addStaticFields()\n\n return fields\n}\n","import {Schema, SchemaNode, SchemaWithMetadata} from '@orion-js/schema'\n\nexport function getStaticFields(schema: Schema | SchemaWithMetadata): Array<SchemaNode> {\n if (!schema) return []\n\n // retrocompatibility with model\n if ((schema as any).getSchema) {\n schema = (schema as any).getSchema()\n }\n\n const keys = Object.keys(schema).filter(key => !key.startsWith('__'))\n\n return (\n keys\n .map((key): SchemaNode => {\n const field = schema[key] as SchemaNode\n return {\n ...field,\n key,\n } as SchemaNode\n })\n // there is a compile error if we don't do this\n .filter(field => !field.private)\n )\n}\n","import {Schema} from '@orion-js/schema'\nimport getField from './getField'\nimport {StartGraphQLOptions} from '../../types'\n\nexport default function (params: Schema, options: StartGraphQLOptions) {\n if (!params) return\n if (Object.keys(params).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(params).filter(key => !key.startsWith('__'))) {\n try {\n const type = getField(params[key].type, options)\n fields[key] = {type}\n } catch (error) {\n throw new Error(`Error creating GraphQL resolver params argument ${key}: ${error.message}`)\n }\n }\n return fields\n}\n","import crypto from 'node:crypto'\nimport {GraphQLError} from 'graphql'\n\nexport default function errorHandler(error, data) {\n const message = `Error in resolver \"${data.name}\" ${\n data.schema ? `of model \"${data.schema.__modelName}\"` : ''\n }`\n\n const hash = crypto\n .createHash('sha1')\n .update(error.message, 'utf8')\n .digest('hex')\n .substring(0, 10)\n error.hash = hash\n\n if (error?.isOrionError) {\n console.warn(message, error)\n throw new GraphQLError(error.message, {\n originalError: error,\n extensions: {\n isOrionError: !!error.isOrionError,\n isValidationError: !!error.isValidationError,\n code: error.code,\n hash,\n info: error.getInfo(),\n },\n })\n }\n console.error(message, error)\n throw new GraphQLError(`${error.message} [${hash}]`, {\n // originalError: error,\n extensions: {\n isOrionError: false,\n isValidationError: false,\n code: 'INTERNAL_SERVER_ERROR',\n hash: hash,\n },\n })\n}\n","import getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {runWithOrionAsyncContext} from '@orion-js/logger'\n\nexport default function ({resolver, getGraphQLType, options, schema}) {\n const type = getGraphQLType(resolver.returns, options)\n const args = getArgs(resolver.params, options)\n return {\n type,\n args,\n async resolve(item, params, context, info) {\n try {\n return await runWithOrionAsyncContext(\n {\n controllerType: 'modelResolver' as const,\n viewer: context,\n params: params,\n parentData: item,\n modelResolverName: resolver.key,\n },\n async () => {\n return await resolver.resolve(item, params, context, info)\n },\n )\n } catch (error) {\n errorHandler(error, {context, resolver, options, schema})\n throw error\n }\n },\n }\n}\n","import {Model, ModelResolversMap} from '@orion-js/models'\nimport {Schema} from '@orion-js/schema'\n\nfunction getResolvers(schema: Schema | Model): ModelResolversMap {\n if (typeof schema.getResolvers === 'function') {\n console.warn('Models are deprecated')\n return (schema as Model).getResolvers()\n }\n\n if ((schema as any).__resolvers) {\n return (schema as any).__resolvers\n }\n\n return {}\n}\n\nexport function getDynamicFields(schema: Schema): any {\n const resolvers = getResolvers(schema as any)\n if (!resolvers) return []\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {StartGraphQLOptions} from '../types/startGraphQL'\nimport {Schema} from '@orion-js/schema'\n\nexport function getModelLoadedResolvers(schema: Schema, options: StartGraphQLOptions): any[] {\n if (!options.modelResolvers) return []\n const resolvers = options.modelResolvers[schema.__modelName]\n if (!resolvers) return []\n\n const keys = Object.keys(resolvers)\n\n return keys\n .map(key => {\n const resolver = resolvers[key]\n resolver.resolverName = key\n return {\n ...resolver,\n key,\n }\n })\n .filter(resolver => !resolver.private)\n}\n","import {GlobalResolversMap} from '@orion-js/models'\n\nconst resolversStore: GlobalResolversMap = {}\n\nexport {resolversStore}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport errorHandler from '../../errorHandler'\nimport {resolversStore} from './resolversStore'\nimport {GraphQLFieldConfig, ThunkObjMap} from 'graphql'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\nimport {runWithOrionAsyncContext} from '@orion-js/logger'\n\nexport default async function (options: StartGraphQLOptions, mutation: boolean) {\n const {resolvers} = options\n const filteredResolvers = Object.keys(resolvers)\n .map(key => {\n return {\n name: key,\n resolver: resolvers[key],\n }\n })\n .filter(({resolver}) => !!resolver.mutation === !!mutation)\n .filter(({resolver}) => !resolver.private)\n\n const fields: ThunkObjMap<GraphQLFieldConfig<any, any, any>> = {}\n\n for (const {resolver, name} of filteredResolvers) {\n resolversStore[name] = resolver\n\n const type = await getType(resolver.returns, options)\n const args = await getArgs(resolver.params, options)\n\n fields[name] = {\n type,\n args,\n async resolve(_root, params, context, info) {\n try {\n return await runWithOrionAsyncContext(\n {\n controllerType: 'resolver' as const,\n viewer: context,\n params: params,\n resolverName: name,\n },\n async () => {\n return await resolver.resolve(params, context, info)\n },\n )\n } catch (error) {\n errorHandler(error, {context, resolver, options, name})\n throw error\n }\n },\n }\n }\n\n return fields\n}\n","import {GraphQLObjectType} from 'graphql'\nimport getResolvers from './getResolvers'\nimport {isEmpty} from 'rambdax'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const fields = await getResolvers(options, true)\n if (isEmpty(fields)) return null\n return new GraphQLObjectType({\n name: 'Mutation',\n fields,\n })\n}\n","import {GraphQLObjectType} from 'graphql'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport getSubscriptions from './getSubscriptions'\n\nexport default async function (options: StartGraphQLOptions): Promise<GraphQLObjectType> {\n if (!options.subscriptions) return null\n\n const fields = await getSubscriptions(options)\n return new GraphQLObjectType({\n name: 'Subscription',\n fields,\n })\n}\n","import getType from '../getType'\nimport getArgs from '../getArgs'\nimport {StartGraphQLOptions} from '../../types/startGraphQL'\n\nexport default async function (options: StartGraphQLOptions) {\n const {subscriptions} = options\n const fields = {}\n\n for (const key of Object.keys(subscriptions)) {\n const subscription = subscriptions[key]\n subscription.name = subscription.name || key\n\n const type = await getType(subscription.returns, options)\n const args = await getArgs(subscription.params as any, options)\n fields[subscription.name] = {\n type,\n args,\n async subscribe(root, params, viewer) {\n return await subscription.subscribe(params, viewer)\n },\n }\n }\n\n return fields\n}\n","export default function (apolloError) {\n let response = {...apolloError}\n const error = apolloError.originalError\n\n if (error && error.isValidationError) {\n response.validationErrors = error.validationErrors\n }\n\n if (error && error.getInfo) {\n response = error.getInfo()\n }\n return response\n}\n","import buildSchema from '../buildSchema'\nimport {StartGraphQLOptions} from '../types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport formatError from './formatError'\nimport {omit} from 'rambdax'\n\nexport default async function (options: StartGraphQLOptions) {\n const schema = await buildSchema(options)\n const passedOptions = omit(\n [\n 'resolvers',\n 'modelResolvers',\n 'subscriptions',\n 'executeGraphQLCache',\n 'useGraphiql',\n 'app',\n 'pubsub',\n ],\n options,\n )\n return {\n ...passedOptions,\n schema,\n formatError,\n } as unknown as ApolloServerOptions<any>\n}\n","import {PubSub} from 'graphql-subscriptions'\nimport {setPubsub} from './pubsub'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServerOptions} from '@apollo/server'\nimport {WebSocketServer} from 'ws'\nimport {useServer} from 'graphql-ws/lib/use/ws'\nimport {getWebsockerViewer} from './websockerViewer'\nimport {getServer} from '@orion-js/http'\n\nexport default function (\n apolloOptions: ApolloServerOptions<any>,\n options: StartGraphQLOptions,\n /**\n * For testing purposes\n */\n wsServer?: any,\n) {\n if (!options.subscriptions) {\n return []\n }\n\n const pubsub = options.pubsub || new PubSub()\n setPubsub(pubsub)\n\n // Creating the WebSocket server\n if (!wsServer) {\n wsServer = new WebSocketServer({\n server: getServer(),\n path: '/subscriptions',\n })\n }\n\n // Hand in the schema we just created and have the\n // WebSocketServer start listening.\n const serverCleanup = useServer(\n {\n schema: apolloOptions.schema,\n context: async (ctx, msg, args) => {\n // This will be run every time the client sends a subscription request\n return getWebsockerViewer(ctx.connectionParams)\n },\n },\n wsServer,\n )\n return [\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n },\n }\n },\n },\n ]\n}\n","// Declare a type.\n\nglobal.getWebsocketViewerRef = () => null\n\nexport const getWebsockerViewer = async (connectionParams: any): Promise<any> => {\n try {\n const viewer = await global.getWebsocketViewerRef(connectionParams)\n if (!viewer) return {}\n return viewer\n } catch {\n return {}\n }\n}\n\nexport const setGetWebsockerViewer = (getViewerFunc: (connectionParams: any) => any): void => {\n global.getWebsocketViewerRef = getViewerFunc\n}\n","import startGraphiQL from './startGraphiQL'\nimport getApolloOptions from './getApolloOptions'\nimport startWebsocket from './startWebsocket'\nimport {getApp, getServer, registerRoute, route} from '@orion-js/http'\nimport {StartGraphQLOptions} from './types/startGraphQL'\nimport {ApolloServer} from '@apollo/server'\nimport {expressMiddleware} from '@apollo/server/express4'\nimport {ApolloServerPluginDrainHttpServer} from '@apollo/server/plugin/drainHttpServer'\n\nexport default async function (options: StartGraphQLOptions) {\n const apolloOptions = await getApolloOptions(options)\n\n const app = options.app || getApp()\n const httpServer = getServer()\n\n if (options.useGraphiql) {\n startGraphiQL(apolloOptions, options)\n }\n\n const subPlugins = startWebsocket(apolloOptions, options)\n\n const drainPlugins = httpServer ? [ApolloServerPluginDrainHttpServer({httpServer})] : []\n\n const server = new ApolloServer({\n ...apolloOptions,\n plugins: [...(apolloOptions.plugins || []), ...drainPlugins, ...subPlugins],\n })\n\n await server.start()\n\n const middleware = expressMiddleware(server, {\n // @ts-expect-error\n context: ({req, res}) => req._viewer,\n })\n\n registerRoute(\n route({\n app,\n method: 'all',\n path: options.path || '/graphql',\n bodyParser: 'json',\n bodyParserOptions: options.bodyParserOptions,\n async resolve(req, res, viewer) {\n ;(req as any)._viewer = viewer\n return middleware(req, res, req.next)\n },\n }),\n )\n}\n","import {createResolver} from '@orion-js/resolvers'\nimport {UserError} from '@orion-js/helpers'\nimport ResolverParams from './ResolverParamsInfo'\nimport {resolversStore} from '../buildSchema/getResolvers/resolversStore'\nimport serializeSchema from './serializeSchema'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaFieldType} from '@orion-js/schema'\nimport getBasicResultQuery from './getBasicResultQuery'\n\nfunction getResultTypeName(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n const schema = getSchemaFromAnyOrionForm(returns)\n if (schema?.__modelName) return schema.__modelName\n return\n}\n\nasync function getInternalBasicResultQuery(type: SchemaFieldType) {\n const returns = Array.isArray(type) ? type[0] : type\n\n if (isSchemaLike(returns)) {\n const schema = getSchemaFromAnyOrionForm(returns) as Schema\n return await getBasicResultQuery({\n type: schema,\n })\n }\n return ''\n}\n\nexport default createResolver({\n params: {\n name: {\n type: 'ID',\n },\n mutation: {\n type: Boolean,\n },\n },\n returns: ResolverParams,\n mutation: false,\n async resolve({mutation, name}) {\n const resolver = resolversStore[name]\n if (!resolver) {\n throw new UserError(\n 'notFound',\n `${mutation ? 'Mutation' : 'Query'} named \"${name}\" not found`,\n )\n }\n if (!!resolver.mutation !== !!mutation) {\n throw new UserError('incorrectType', `\"${name}\" is ${mutation ? 'not' : ''} a mutation`)\n }\n\n return {\n name,\n basicResultQuery: await getInternalBasicResultQuery(resolver.returns),\n params: await serializeSchema(resolver.params),\n result: getResultTypeName(resolver.returns),\n }\n },\n})\n","import {schemaWithName} from '@orion-js/schema'\nexport default schemaWithName('ResolverParams', {\n name: {\n type: 'string',\n },\n params: {\n type: 'blackbox',\n },\n result: {\n type: 'string',\n },\n basicResultQuery: {\n type: 'string',\n },\n})\n","import {FieldType, Schema, SchemaWithMetadata, getSchemaFromAnyOrionForm} from '@orion-js/schema'\nimport getField from './getField'\n\nexport default async function serializeSchema(params: Schema): Promise<SchemaWithMetadata> {\n if (!params) return\n\n const schema = getSchemaFromAnyOrionForm(params) as Schema\n\n if (Object.keys(schema).length === 0) return\n\n const fields = {}\n\n for (const key of Object.keys(schema).filter(key => !key.startsWith('__'))) {\n const field = schema[key]\n fields[key] = await getField(field)\n\n const typeAsFieldType = field?.type as FieldType\n if (typeAsFieldType?.toSerializedType && fields[key].type) {\n fields[key].type = await typeAsFieldType?.toSerializedType(field)\n }\n }\n\n return fields\n}\n","import {\n getFieldType,\n getSchemaWithMetadataFromAnyOrionForm,\n isSchemaLike,\n SchemaNode,\n} from '@orion-js/schema'\nimport {isType, omit} from 'rambdax'\nimport getScalar from '../buildSchema/getType/getScalar'\nimport {getStaticFields} from './getStaticFields'\n\nexport default async function getParams(field: SchemaNode) {\n const {type} = field\n\n if (Array.isArray(type)) {\n const serialized = await getParams({...field, type: type[0]})\n return {\n ...serialized,\n type: [serialized.type],\n __graphQLType: `[${serialized.__graphQLType}]`,\n }\n }\n\n const isSchema = isSchemaLike(type)\n\n if (isSchema) {\n const schemaOfType = getSchemaWithMetadataFromAnyOrionForm(type)\n const modelName = schemaOfType.__modelName\n if (!modelName) {\n throw new Error('The schema needs a model name to be serialized for GraphQL')\n }\n\n const fields = {}\n\n for (const field of getStaticFields(schemaOfType)) {\n fields[field.key] = await getParams(field)\n }\n\n return {\n ...omit(['key'], field),\n type: fields,\n __graphQLType: `${modelName}Input`,\n }\n }\n\n const schemaType = getFieldType(type)\n const graphQLType = await getScalar(schemaType)\n\n const withoutKey = isType('Object', field) ? omit(['key'], field) : ({} as any)\n\n return {\n ...withoutKey,\n type: schemaType.name,\n __graphQLType: graphQLType.name,\n }\n}\n","import {getStaticFields} from './getStaticFields'\nimport {getSchemaFromAnyOrionForm, isSchemaLike, Schema, SchemaNode} from '@orion-js/schema'\n\nexport default async function getBasicQuery(field: SchemaNode) {\n if (!field.type) return ''\n\n if (Array.isArray(field.type)) {\n return getBasicQuery({\n ...field,\n type: field.type[0],\n })\n }\n\n if (!isSchemaLike(field.type)) {\n return field.key\n }\n\n const schema = getSchemaFromAnyOrionForm(field.type) as Schema\n\n const fields = []\n for (const field of getStaticFields(schema)) {\n fields.push(await getBasicQuery(field))\n }\n\n const key = field.key ? `${field.key} ` : ''\n\n return `${key}{ ${fields.join(' ')} }`\n}\n","import params from './params'\n\nexport default {\n params,\n}\n","import subscription from './subscription'\nimport startGraphQL from './startGraphQL'\nimport startGraphiQL from './startGraphiQL'\nimport resolversSchemas from './resolversSchemas'\nimport ResolverParamsInfo from './resolversSchemas/ResolverParamsInfo'\nimport serializeSchema from './resolversSchemas/serializeSchema'\nimport getBasicResultQuery from './resolversSchemas/getBasicResultQuery'\nimport * as GraphQL from 'graphql'\n\nconst createSubscription = subscription\n\nexport {\n GraphQL,\n startGraphQL,\n startGraphiQL,\n resolversSchemas,\n ResolverParamsInfo,\n serializeSchema,\n subscription,\n createSubscription,\n getBasicResultQuery,\n}\n\nexport * from './types'\nexport * from './service'\nexport * from './websockerViewer'\n","import {ResolverOptions} from '@orion-js/resolvers'\nimport {InferSchemaType, SchemaFieldType} from '@orion-js/schema'\n\nexport class OrionSubscription<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n> {\n name: string\n params: TParamsSchema\n subscribe: (\n callParams: InferSchemaType<TParamsSchema>,\n viewer: InferSchemaType<TReturnsSchema>,\n ) => {}\n returns: TReturnsSchema\n publish: (\n params: InferSchemaType<TParamsSchema>,\n data: InferSchemaType<TReturnsSchema>,\n ) => Promise<void>\n}\n\nexport type CreateOrionSubscriptionFunction = <\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n>(\n options: OrionSubscriptionOptions<TParamsSchema, TReturnsSchema, TViewer>,\n) => OrionSubscription<TParamsSchema, TReturnsSchema>\n\nexport interface OrionSubscriptionsMap {\n [key: string]: OrionSubscription\n}\n\nexport type OrionSubscriptionOptions<\n TParamsSchema extends SchemaFieldType = SchemaFieldType,\n TReturnsSchema extends SchemaFieldType = SchemaFieldType,\n TViewer = any,\n> = Omit<ResolverOptions<TParamsSchema, TReturnsSchema, TViewer>, 'resolve'> & {\n /**\n * This function is used to check if the user can subscribe to the subscription.\n * If not provided, the subscription will be public.\n * @param params - The parameters of the subscription.\n * @param viewer - The viewer of the subscription.\n * @returns true if the user can subscribe to the subscription, false otherwise.\n */\n canSubscribe?: (params: InferSchemaType<TParamsSchema>, viewer: TViewer) => Promise<boolean>\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createResolver,\n GlobalResolver,\n GlobalResolverOptions,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\nimport {SchemaFieldType} from '@orion-js/schema'\n\nexport {createResolver}\n\nexport const createQuery = createResolver\nexport const createMutation = <\n TParams extends SchemaFieldType = any,\n TReturns extends SchemaFieldType = any,\n TViewer = any,\n TInfo = any,\n>(\n options: Omit<GlobalResolverOptions<TParams, TReturns, TViewer, TInfo>, 'mutation'>,\n) => {\n return createResolver({\n ...options,\n mutation: true,\n })\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nexport const internalResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Resolvers() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n serviceMetadata.set(target, {_serviceType: 'resolvers'})\n }\n}\n\nexport function Query(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Query(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Query(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n resolvers[propertyKey] = this[propertyKey]\n }\n\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function Mutation(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function Mutation(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'mutation'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function Mutation(options = {}) {\n return (method: any, context: ClassFieldDecoratorContext | ClassMethodDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const resolvers = internalResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n resolvers[propertyKey] = createResolver({\n resolverId: propertyKey,\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n mutation: true,\n resolve: this[propertyKey].bind(this),\n })\n }\n if (context.kind === 'field') {\n this[propertyKey].mutation = true\n resolvers[propertyKey] = this[propertyKey]\n }\n internalResolversMetadata.set(this, resolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceResolvers(target: any): {\n [key: string]: GlobalResolver<any, any, any, any>\n} {\n const instance = getInstance(target)\n\n const className = instance.constructor.name\n const errorMessage = `You must pass a class decorated with @Resolvers to getServiceResolvers. Check the class ${className}`\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(errorMessage)\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'resolvers') {\n throw new Error(`${errorMessage}. Got class type ${instanceMetadata._serviceType}`)\n }\n\n const resolversMap = internalResolversMetadata.get(instance) || {}\n\n return resolversMap\n}\n","import {ResolverMiddleware} from '@orion-js/resolvers'\nimport {SchemaInAnyOrionForm} from '@orion-js/schema'\n\nconst resolversMetadata = new WeakMap<any, Record<string, any>>()\n\nfunction addTargetMetadata(\n target: any,\n propertyKey: string,\n metadataKey: string,\n metadata: any,\n isArray = false,\n) {\n const targetMetadata = resolversMetadata.get(target) || {}\n targetMetadata[propertyKey] = targetMetadata[propertyKey] || {}\n\n if (isArray) {\n targetMetadata[propertyKey][metadataKey] = targetMetadata[propertyKey][metadataKey] || []\n targetMetadata[propertyKey][metadataKey].unshift(metadata)\n } else {\n targetMetadata[propertyKey][metadataKey] = metadata\n }\n\n resolversMetadata.set(target, targetMetadata)\n}\n\nexport function getTargetMetadata(target: any, propertyKey: string, metadataKey: string) {\n const targetMetadata = resolversMetadata.get(target) || {}\n return targetMetadata[propertyKey]?.[metadataKey]\n}\n\nexport function UseMiddleware<TMiddleware extends ResolverMiddleware, This>(params: TMiddleware) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'middlewares', params, true)\n return method\n }\n}\n\nexport function ResolverParams<TParams extends SchemaInAnyOrionForm, This>(params: TParams) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'params', params, false)\n return method\n }\n}\n\nexport function ResolverReturns<This>(returns: any) {\n return (method: any, context: ClassMethodDecoratorContext<This, typeof method>) => {\n const propertyKey = String(context.name)\n addTargetMetadata(method, propertyKey, 'returns', returns, false)\n return method\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {\n ResolverOptions,\n createModelResolver as createModelResolverFromResolvers,\n ModelResolver as ModelResolverType,\n} from '@orion-js/resolvers'\nimport {getTargetMetadata} from './middlewares'\n\nexport const createModelResolver = createModelResolverFromResolvers\n\nexport interface ModelResolversOptions {\n // the model name to add resolvers. If not specified, the model name will be the schema name\n modelName?: string\n}\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<\n any,\n {_serviceType: string; options: ModelResolversOptions; _modelName: string}\n>()\nconst modelResolversMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function ModelResolvers(typedSchema: any, options: ModelResolversOptions = {}) {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n const className = context.name\n\n const modelName = (() => {\n if (options.modelName) {\n return options.modelName\n }\n\n if (typeof typedSchema.name === 'string') {\n return typedSchema.name\n }\n\n if (typedSchema.__modelName) {\n return typedSchema.__modelName\n }\n\n throw new Error(`You must specify a model name for the model resolvers (at: ${className})`)\n })()\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {\n _serviceType: 'modelResolvers',\n options: options,\n _modelName: modelName,\n })\n })\n }\n}\n\nexport function ModelResolver(): (\n method: any,\n context: ClassFieldDecoratorContext | ClassMethodDecoratorContext,\n) => any\nexport function ModelResolver(\n options?: Omit<ResolverOptions<any>, 'resolve' | 'middlewares'>,\n): (method: any, context: ClassMethodDecoratorContext) => any\nexport function ModelResolver(options = {}) {\n return (method: any, context: ClassMethodDecoratorContext | ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n\n context.addInitializer(function (this) {\n const modelResolvers = modelResolversMetadata.get(this) || {}\n\n if (context.kind === 'method') {\n modelResolvers[propertyKey] = createModelResolver({\n params: getTargetMetadata(method, propertyKey, 'params') || {},\n returns: getTargetMetadata(method, propertyKey, 'returns') || 'string',\n middlewares: getTargetMetadata(method, propertyKey, 'middlewares') || [],\n ...options,\n resolve: this[propertyKey].bind(this),\n })\n }\n\n if (context.kind === 'field') {\n modelResolvers[propertyKey] = this[propertyKey]\n }\n\n modelResolversMetadata.set(this, modelResolvers)\n })\n\n return method\n }\n}\n\nexport function getServiceModelResolvers(target: any): {\n [key: string]: {\n [key: string]: ModelResolverType\n }\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'modelResolvers') {\n throw new Error(\n 'You must pass a class decorated with @ModelResolvers to getServiceModelResolvers',\n )\n }\n\n const modelResolversMap = modelResolversMetadata.get(instance) || {}\n\n return {\n [instanceMetadata._modelName]: modelResolversMap,\n }\n}\n","import {getInstance, Service} from '@orion-js/services'\nimport {OrionSubscription} from '../types/subscription'\n\n// Define metadata storage using WeakMaps\nconst serviceMetadata = new WeakMap<any, {_serviceType: string}>()\nconst subscriptionsMetadata = new WeakMap<any, Record<string, any>>()\n\nexport function Subscriptions() {\n return (target: any, context: ClassDecoratorContext<any>) => {\n Service()(target, context)\n\n context.addInitializer(function (this) {\n serviceMetadata.set(this, {_serviceType: 'subscriptions'})\n })\n }\n}\n\nexport function Subscription(): (method: any, context: ClassFieldDecoratorContext) => any\nexport function Subscription() {\n return (_method: any, context: ClassFieldDecoratorContext) => {\n const propertyKey = String(context.name)\n context.addInitializer(function (this) {\n const repo = serviceMetadata.get(this.constructor)\n if (!repo || repo._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions if you want to use @Subscription',\n )\n }\n\n const subscriptions = subscriptionsMetadata.get(this) || {}\n\n subscriptions[propertyKey] = this[propertyKey]\n\n subscriptionsMetadata.set(this, subscriptions)\n\n this[propertyKey] = subscriptions[propertyKey]\n })\n }\n}\n\nexport function getServiceSubscriptions(target: any): {\n [key: string]: OrionSubscription\n} {\n const instance = getInstance(target)\n\n if (!serviceMetadata.has(instance.constructor)) {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const instanceMetadata = serviceMetadata.get(instance.constructor)\n if (instanceMetadata._serviceType !== 'subscriptions') {\n throw new Error(\n 'You must pass a class decorated with @Subscriptions to getServiceSubscriptions',\n )\n }\n\n const subscriptionsMap = subscriptionsMetadata.get(instance) || {}\n\n return subscriptionsMap\n}\n"],"mappings":"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","names":["pubsub","GraphQLObjectType","GraphQLList","getFieldType","getSchemaWithMetadataFromAnyOrionForm","isSchemaLike","coerceBigInt","GraphQLScalarType","GraphQLScalarType","type","graphQLType","key","type","getGraphQLType","type","buildFields","registeredGraphQLTypes","type","GraphQLList","isSchemaLike","getSchemaWithMetadataFromAnyOrionForm","graphQLType","getFieldType","runWithOrionAsyncContext","type","GraphQLObjectType","GraphQLObjectType","GraphQLObjectType","GraphQLObjectType","type","GraphQLObjectType","pubsub","getServer","registerRoute","route","getSchemaFromAnyOrionForm","getFieldType","getSchemaWithMetadataFromAnyOrionForm","isSchemaLike","type","isSchemaLike","getSchemaWithMetadataFromAnyOrionForm","field","getFieldType","getSchemaFromAnyOrionForm","key","getSchemaFromAnyOrionForm","isSchemaLike","getSchemaFromAnyOrionForm","isSchemaLike","field","type","getSchemaFromAnyOrionForm","isSchemaLike","GraphQL","createResolver","isArray","createResolver","getInstance","Service","serviceMetadata","Service","getInstance","getInstance","Service","serviceMetadata","createSubscription"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@orion-js/graphql",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.7",
|
|
4
4
|
"main": "./dist/index.cjs",
|
|
5
5
|
"author": "nicolaslopezj",
|
|
6
6
|
"license": "MIT",
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
"graphql-ws": "^5.11.2",
|
|
14
14
|
"subscriptions-transport-ws": "^0.11.0",
|
|
15
15
|
"ws": "^8.11.0",
|
|
16
|
-
"@orion-js/env": "4.1.4",
|
|
17
|
-
"@orion-js/http": "4.1.6",
|
|
18
|
-
"@orion-js/models": "4.1.6",
|
|
19
16
|
"@orion-js/helpers": "4.1.4",
|
|
20
|
-
"@orion-js/
|
|
17
|
+
"@orion-js/env": "4.1.4",
|
|
18
|
+
"@orion-js/models": "4.1.7",
|
|
21
19
|
"@orion-js/schema": "4.1.4",
|
|
22
|
-
"@orion-js/
|
|
23
|
-
"@orion-js/
|
|
20
|
+
"@orion-js/http": "4.1.7",
|
|
21
|
+
"@orion-js/resolvers": "4.1.7",
|
|
22
|
+
"@orion-js/services": "4.1.4",
|
|
23
|
+
"@orion-js/typed-model": "4.1.7"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@apollo/client": "^3.7.3",
|