| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import { generate } from '@graphql-codegen/cli';
- import fs from 'fs';
- import { buildClientSchema, graphqlSync, introspectionQuery } from 'graphql';
- import { mergeSchemas } from 'graphql-tools';
- import path from 'path';
- import { ADMIN_API_PATH, API_PORT, SHOP_API_PATH } from '../../packages/common/src/shared-constants';
- import { downloadIntrospectionSchema } from './download-introspection-schema';
- const CLIENT_QUERY_FILES = path.join(__dirname, '../../admin-ui/src/app/data/definitions/**/*.ts');
- const E2E_ADMIN_QUERY_FILES = path.join(__dirname, '../../packages/core/e2e/**/!(plugin.e2e-spec|shop-definitions).ts');
- const E2E_SHOP_QUERY_FILES = [
- // path.join(__dirname, '../../packages/core/e2e/graphql/fragments.ts'),
- path.join(__dirname, '../../packages/core/e2e/graphql/shop-definitions.ts'),
- ];
- const ADMIN_SCHEMA_OUTPUT_FILE = path.join(__dirname, '../../schema-admin.json');
- const SHOP_SCHEMA_OUTPUT_FILE = path.join(__dirname, '../../schema-shop.json');
- // tslint:disable:no-console
- Promise.all([
- downloadIntrospectionSchema(ADMIN_API_PATH, ADMIN_SCHEMA_OUTPUT_FILE),
- downloadIntrospectionSchema(SHOP_API_PATH, SHOP_SCHEMA_OUTPUT_FILE),
- ])
- .then(([adminSchemaSuccess, shopSchemaSuccess]) => {
- if (!adminSchemaSuccess || !shopSchemaSuccess) {
- console.log('Attempting to generate types from existing schema json files...');
- }
- const adminSchemaJson = JSON.parse(fs.readFileSync(ADMIN_SCHEMA_OUTPUT_FILE, 'utf-8'));
- const shopSchemaJson = JSON.parse(fs.readFileSync(SHOP_SCHEMA_OUTPUT_FILE, 'utf-8'));
- const adminSchema = buildClientSchema(adminSchemaJson.data);
- const shopSchema = buildClientSchema(shopSchemaJson.data);
- const config = {
- namingConvention: {
- enumValues: 'keep',
- },
- strict: true,
- };
- const commonPlugins = [
- { add: '// tslint:disable' },
- 'typescript',
- ];
- const clientPlugins = [
- ...commonPlugins,
- 'typescript-operations',
- 'typescript-compatibility',
- ];
- return generate({
- overwrite: true,
- generates: {
- [path.join(__dirname, '../../packages/core/e2e/graphql/generated-e2e-admin-types.ts')]: {
- schema: [ADMIN_SCHEMA_OUTPUT_FILE],
- documents: E2E_ADMIN_QUERY_FILES,
- plugins: clientPlugins,
- config,
- },
- [path.join(__dirname, '../../packages/core/e2e/graphql/generated-e2e-shop-types.ts')]: {
- schema: [SHOP_SCHEMA_OUTPUT_FILE],
- documents: E2E_SHOP_QUERY_FILES,
- plugins: clientPlugins,
- config,
- },
- [path.join(__dirname, '../../admin-ui/src/app/common/generated-types.ts')]: {
- schema: [ADMIN_SCHEMA_OUTPUT_FILE, path.join(__dirname, 'client-schema.ts')],
- documents: CLIENT_QUERY_FILES,
- plugins: clientPlugins,
- config,
- },
- [path.join(__dirname, '../../packages/common/src/generated-types.ts')]: {
- schema: [ADMIN_SCHEMA_OUTPUT_FILE],
- plugins: commonPlugins,
- config,
- },
- [path.join(__dirname, '../../packages/common/src/generated-shop-types.ts')]: {
- schema: [SHOP_SCHEMA_OUTPUT_FILE],
- plugins: commonPlugins,
- config,
- },
- },
- });
- })
- .then(
- result => {
- process.exit(0);
- },
- err => {
- console.error(err);
- process.exit(1);
- },
- );
|