generate-graphql-types.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { generate } from 'graphql-code-generator';
  2. import { TypeScriptNamingConventionMap } from 'graphql-codegen-typescript-common';
  3. import path from 'path';
  4. import { API_PATH, API_PORT } from '../shared/shared-constants';
  5. import { downloadIntrospectionSchema } from './download-introspection-schema';
  6. const CLIENT_QUERY_FILES = path.join(__dirname, '../admin-ui/src/app/data/definitions/**/*.ts');
  7. const SCHEMA_OUTPUT_FILE = path.join(__dirname, '../schema.json');
  8. // tslint:disable:no-console
  9. downloadIntrospectionSchema(SCHEMA_OUTPUT_FILE)
  10. .then(downloaded => {
  11. if (!downloaded) {
  12. console.log('Attempting to generate types from existing schema.json...');
  13. }
  14. return generate({
  15. schema: [SCHEMA_OUTPUT_FILE, path.join(__dirname, 'client-schema.ts')],
  16. overwrite: true,
  17. documents: CLIENT_QUERY_FILES,
  18. generates: {
  19. [path.join(__dirname, '../shared/generated-types.ts')]: {
  20. plugins: [
  21. { add: '// tslint:disable' },
  22. 'time',
  23. 'typescript-common',
  24. 'typescript-client',
  25. 'typescript-server'],
  26. config: {
  27. namingConvention: {
  28. enumValues: 'keep',
  29. } as TypeScriptNamingConventionMap,
  30. },
  31. },
  32. },
  33. });
  34. })
  35. .then(
  36. result => {
  37. process.exit(0);
  38. },
  39. err => {
  40. console.error(err);
  41. process.exit(1);
  42. },
  43. );