@exogee/graphweaver-apollo
Advanced tools
Comparing version 0.1.17 to 0.1.18
@@ -10,2 +10,5 @@ import { AuthChecker } from 'type-graphql'; | ||
config?: any; | ||
hooks?: { | ||
beforeRead?: <C extends BaseContext>(context: C) => void; | ||
}; | ||
} | ||
@@ -12,0 +15,0 @@ export interface GraphweaverConfig { |
@@ -48,3 +48,2 @@ "use strict"; | ||
}; | ||
var _a, _b, _c; | ||
import_logger.logger.trace(`Graphweaver constructor called`); | ||
@@ -69,8 +68,8 @@ if (!config) { | ||
(0, import_plugins.corsPlugin)(this.config.corsOptions), | ||
...((_a = this.config.apolloServerOptions) == null ? void 0 : _a.plugins) || [] | ||
...this.config.apolloServerOptions?.plugins || [] | ||
]; | ||
const resolvers = this.config.resolvers || []; | ||
if (((_b = this.config.adminMetadata) == null ? void 0 : _b.enabled) && this.config.resolvers) { | ||
if (this.config.adminMetadata?.enabled && this.config.resolvers) { | ||
import_logger.logger.trace(`Graphweaver adminMetadata is enabled`); | ||
resolvers.push(import_metadata_service.AdminUiMetadataResolver); | ||
resolvers.push((0, import_metadata_service.getAdminUiMetadataResolver)(this.config.adminMetadata?.hooks)); | ||
} | ||
@@ -92,3 +91,3 @@ import_logger.logger.trace(`Graphweaver buildSchemaSync with ${resolvers.length} resolvers`); | ||
resolvers, | ||
authChecker: (_c = config.authChecker) != null ? _c : () => true | ||
authChecker: config.authChecker ?? (() => true) | ||
}); | ||
@@ -95,0 +94,0 @@ } |
@@ -0,13 +1,17 @@ | ||
import { BaseContext } from '@exogee/graphweaver'; | ||
import { AdminUiEntityMetadata } from './entity'; | ||
export declare class AdminUiMetadataResolver { | ||
getAdminUiMetadata(): Promise<{ | ||
entities: AdminUiEntityMetadata[]; | ||
enums: { | ||
name: string; | ||
values: { | ||
import { AdminMetadata } from '..'; | ||
export declare const getAdminUiMetadataResolver: (hooks?: AdminMetadata['hooks']) => { | ||
new (): { | ||
getAdminUiMetadata<C extends BaseContext>(context: C): Promise<{ | ||
entities: AdminUiEntityMetadata[]; | ||
enums: { | ||
name: string; | ||
value: any; | ||
values: { | ||
name: string; | ||
value: any; | ||
}[]; | ||
}[]; | ||
}[]; | ||
}>; | ||
} | ||
}>; | ||
}; | ||
}; |
@@ -28,5 +28,6 @@ "use strict"; | ||
}; | ||
var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index); | ||
var resolver_exports = {}; | ||
__export(resolver_exports, { | ||
AdminUiMetadataResolver: () => AdminUiMetadataResolver | ||
getAdminUiMetadataResolver: () => getAdminUiMetadataResolver | ||
}); | ||
@@ -57,80 +58,83 @@ module.exports = __toCommonJS(resolver_exports); | ||
}; | ||
let AdminUiMetadataResolver = class { | ||
async getAdminUiMetadata() { | ||
const metadata = (0, import_type_graphql.getMetadataStorage)(); | ||
const objectTypeData = {}; | ||
for (const objectType of metadata.objectTypes) { | ||
objectTypeData[objectType.name] = objectType; | ||
} | ||
const enumMetadata = /* @__PURE__ */ new Map(); | ||
for (const registeredEnum of metadata.enums) { | ||
enumMetadata.set(registeredEnum.enumObj, registeredEnum); | ||
} | ||
const entities = metadata.objectTypes.map((objectType) => { | ||
var _a, _b, _c, _d, _e, _f; | ||
const name = objectType.name; | ||
const adminUISettings = import_graphweaver.AdminUISettingsMap.get(name); | ||
const backendId = (_c = (_b = (_a = import_graphweaver.EntityMetadataMap.get(name)) == null ? void 0 : _a.provider) == null ? void 0 : _b.backendId) != null ? _c : null; | ||
const summaryField = (_e = (_d = objectType.fields) == null ? void 0 : _d.find( | ||
(field) => (0, import_graphweaver.isSummaryField)(objectType.target, field.name) | ||
)) == null ? void 0 : _e.name; | ||
const fields = (_f = objectType.fields) == null ? void 0 : _f.map((field) => { | ||
var _a2, _b2, _c2, _d2, _e2; | ||
const typeValue = field.getType(); | ||
const entityName = typeValue.name ? typeValue.name : (_a2 = enumMetadata.get(typeValue)) == null ? void 0 : _a2.name; | ||
const fieldObject = { | ||
name: field.name, | ||
type: entityName | ||
}; | ||
const relatedObject = objectTypeData[entityName]; | ||
if (field.typeOptions.array) { | ||
if (!relatedObject) { | ||
throw new Error(`Unknown entityName ${entityName}`); | ||
const getAdminUiMetadataResolver = (hooks) => { | ||
let AdminUiMetadataResolver = class { | ||
async getAdminUiMetadata(context) { | ||
hooks?.beforeRead?.(context); | ||
const metadata = (0, import_type_graphql.getMetadataStorage)(); | ||
const objectTypeData = {}; | ||
for (const objectType of metadata.objectTypes) { | ||
objectTypeData[objectType.name] = objectType; | ||
} | ||
const enumMetadata = /* @__PURE__ */ new Map(); | ||
for (const registeredEnum of metadata.enums) { | ||
enumMetadata.set(registeredEnum.enumObj, registeredEnum); | ||
} | ||
const entities = metadata.objectTypes.map((objectType) => { | ||
const name = objectType.name; | ||
const adminUISettings = import_graphweaver.AdminUISettingsMap.get(name); | ||
const backendId = import_graphweaver.EntityMetadataMap.get(name)?.provider?.backendId ?? null; | ||
const summaryField = objectType.fields?.find( | ||
(field) => (0, import_graphweaver.isSummaryField)(objectType.target, field.name) | ||
)?.name; | ||
const fields = objectType.fields?.map((field) => { | ||
const typeValue = field.getType(); | ||
const entityName = typeValue.name ? typeValue.name : enumMetadata.get(typeValue)?.name; | ||
const fieldObject = { | ||
name: field.name, | ||
type: entityName | ||
}; | ||
const relatedObject = objectTypeData[entityName]; | ||
if (field.typeOptions.array) { | ||
if (!relatedObject) { | ||
throw new Error(`Unknown entityName ${entityName}`); | ||
} | ||
const relatedEntity = relatedObject.fields?.find((field2) => { | ||
const fieldType = field2.getType(); | ||
return fieldType.name === name; | ||
}); | ||
if (relatedEntity?.typeOptions) { | ||
fieldObject.relationshipType = relatedEntity.typeOptions.array ? import_graphweaver.RelationshipType.MANY_TO_MANY : import_graphweaver.RelationshipType.ONE_TO_MANY; | ||
} | ||
fieldObject.relatedEntity = entityName; | ||
} else if (relatedObject) { | ||
fieldObject.relationshipType = import_graphweaver.RelationshipType.MANY_TO_ONE; | ||
} | ||
const relatedEntity = (_b2 = relatedObject.fields) == null ? void 0 : _b2.find((field2) => { | ||
const fieldType = field2.getType(); | ||
return fieldType.name === name; | ||
}); | ||
if (relatedEntity == null ? void 0 : relatedEntity.typeOptions) { | ||
fieldObject.relationshipType = relatedEntity.typeOptions.array ? import_graphweaver.RelationshipType.MANY_TO_MANY : import_graphweaver.RelationshipType.ONE_TO_MANY; | ||
} | ||
fieldObject.relatedEntity = entityName; | ||
} else if (relatedObject) { | ||
fieldObject.relationshipType = import_graphweaver.RelationshipType.MANY_TO_ONE; | ||
} | ||
fieldObject.filter = ((_e2 = (_d2 = (_c2 = adminUISettings == null ? void 0 : adminUISettings.fields) == null ? void 0 : _c2[field.name]) == null ? void 0 : _d2.filter) == null ? void 0 : _e2.hide) ? void 0 : { | ||
type: mapFilterType(fieldObject, metadata.enums) | ||
fieldObject.filter = adminUISettings?.fields?.[field.name]?.filter?.hide ? void 0 : { | ||
type: mapFilterType(fieldObject, metadata.enums) | ||
}; | ||
return fieldObject; | ||
}); | ||
return { | ||
name, | ||
backendId, | ||
summaryField, | ||
fields | ||
}; | ||
return fieldObject; | ||
}); | ||
}).filter((entity) => !!entity.backendId); | ||
const enums = metadata.enums.map((registeredEnum) => ({ | ||
name: registeredEnum.name, | ||
values: Object.entries(registeredEnum.enumObj).map(([name, value]) => ({ | ||
name, | ||
value | ||
})) | ||
})); | ||
return { | ||
name, | ||
backendId, | ||
summaryField, | ||
fields | ||
entities, | ||
enums | ||
}; | ||
}).filter((entity) => !!entity.backendId); | ||
const enums = metadata.enums.map((registeredEnum) => ({ | ||
name: registeredEnum.name, | ||
values: Object.entries(registeredEnum.enumObj).map(([name, value]) => ({ | ||
name, | ||
value | ||
})) | ||
})); | ||
return { | ||
entities, | ||
enums | ||
}; | ||
} | ||
} | ||
}; | ||
__decorateClass([ | ||
(0, import_type_graphql.Query)(() => import_metadata.AdminUiMetadata, { name: "_graphweaver" }), | ||
__decorateParam(0, (0, import_type_graphql.Ctx)()) | ||
], AdminUiMetadataResolver.prototype, "getAdminUiMetadata", 1); | ||
AdminUiMetadataResolver = __decorateClass([ | ||
(0, import_type_graphql.Resolver)((of) => import_metadata.AdminUiMetadata) | ||
], AdminUiMetadataResolver); | ||
return AdminUiMetadataResolver; | ||
}; | ||
__decorateClass([ | ||
(0, import_type_graphql.Query)(() => import_metadata.AdminUiMetadata, { name: "_graphweaver" }) | ||
], AdminUiMetadataResolver.prototype, "getAdminUiMetadata", 1); | ||
AdminUiMetadataResolver = __decorateClass([ | ||
(0, import_type_graphql.Resolver)((of) => import_metadata.AdminUiMetadata) | ||
], AdminUiMetadataResolver); | ||
// Annotate the CommonJS export names for ESM import in node: | ||
0 && (module.exports = { | ||
AdminUiMetadataResolver | ||
getAdminUiMetadataResolver | ||
}); | ||
//# sourceMappingURL=resolver.js.map |
@@ -31,4 +31,3 @@ "use strict"; | ||
willSendResponse: async ({ response }) => { | ||
var _a, _b, _c, _d, _e, _f, _g; | ||
(_a = response.http) == null ? void 0 : _a.headers.set( | ||
response.http?.headers.set( | ||
"Access-Control-Allow-Headers", | ||
@@ -47,3 +46,3 @@ [ | ||
); | ||
(_b = response.http) == null ? void 0 : _b.headers.set( | ||
response.http?.headers.set( | ||
"Access-Control-Expose-Headers", | ||
@@ -56,13 +55,13 @@ [ | ||
const defaultOrigin = "http://localhost:9000"; | ||
const origin = ((_c = request.http) == null ? void 0 : _c.headers.get("origin")) || defaultOrigin; | ||
(_d = response.http) == null ? void 0 : _d.headers.set("Access-Control-Allow-Credentials", "true"); | ||
const origin = request.http?.headers.get("origin") || defaultOrigin; | ||
response.http?.headers.set("Access-Control-Allow-Credentials", "true"); | ||
if (validateOrigin(origin)) { | ||
import_logger.logger.trace(`Adding CORS allow origin header: ${origin}`); | ||
(_e = response.http) == null ? void 0 : _e.headers.set("Access-Control-Allow-Origin", origin); | ||
response.http?.headers.set("Access-Control-Allow-Origin", origin); | ||
} else if (origin === defaultOrigin) { | ||
import_logger.logger.trace(`Adding CORS allow origin header: ${origin}`); | ||
(_f = response.http) == null ? void 0 : _f.headers.set("Access-Control-Allow-Origin", origin); | ||
response.http?.headers.set("Access-Control-Allow-Origin", origin); | ||
} else { | ||
import_logger.logger.trace(`No CORS match, adding allow header false`); | ||
(_g = response.http) == null ? void 0 : _g.headers.set("Access-Control-Allow-Headers", "false"); | ||
response.http?.headers.set("Access-Control-Allow-Headers", "false"); | ||
} | ||
@@ -69,0 +68,0 @@ } |
@@ -38,3 +38,3 @@ "use strict"; | ||
willSendResponse: async () => { | ||
release == null ? void 0 : release(); | ||
release?.(); | ||
release = void 0; | ||
@@ -41,0 +41,0 @@ } |
{ | ||
"name": "@exogee/graphweaver-apollo", | ||
"version": "0.1.17", | ||
"version": "0.1.18", | ||
"description": "Apollo Server support for @exogee/graphweaver", | ||
@@ -24,4 +24,4 @@ "license": "MIT", | ||
"type-graphql": "2.0.0-beta.2", | ||
"@exogee/graphweaver": "0.1.17", | ||
"@exogee/logger": "0.1.17" | ||
"@exogee/graphweaver": "0.1.18", | ||
"@exogee/logger": "0.1.18" | ||
}, | ||
@@ -28,0 +28,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
66825
1001
2
+ Added@exogee/graphweaver@0.1.18(transitive)
+ Added@exogee/logger@0.1.18(transitive)
- Removed@exogee/graphweaver@0.1.17(transitive)
- Removed@exogee/logger@0.1.17(transitive)
Updated@exogee/graphweaver@0.1.18
Updated@exogee/logger@0.1.18