{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../schematics/install/index.cts"],"names":[],"mappings":"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","sourcesContent":["import { dirname } from 'path';\nimport {\n  apply,\n  chain,\n  mergeWith,\n  move,\n  Rule,\n  SchematicContext,\n  template,\n  Tree,\n  url,\n} from '@angular-devkit/schematics';\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\nimport { addRootProvider } from '@schematics/angular/utility';\nimport { getAppModulePath, isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils';\nimport { getMainFilePath } from '@schematics/angular/utility/standalone/util';\nimport { addModuleImportToRootModule } from '../utils/ast.cjs';\nimport { getJsonFile } from '../utils/index.cjs';\nimport { Schema } from './schema.cjs';\n\nexport function factory(options: Schema): Rule {\n  return chain([\n    addDependencies(options),\n    addSetupFiles(options),\n    importHttpClient(options),\n    importSetup(options),\n  ]);\n}\n\nexport function createDependenciesMap(options: Schema): Record<string, string> {\n  return {\n    'apollo-angular': '^9.0.0',\n    '@apollo/client': '^4.0.1',\n    graphql: `^${options.graphql ?? '16.0.0'}`,\n  };\n}\n\n/**\n * Add all necessary node packages\n * as dependencies in the package.json\n * and installs them by running `npm install`.\n */\nfunction addDependencies(options: Schema): Rule {\n  return (host: Tree, context: SchematicContext) => {\n    const packageJsonPath = 'package.json';\n    const packageJson = getJsonFile(host, packageJsonPath);\n\n    packageJson.dependencies = packageJson.dependencies || {};\n\n    const dependenciesMap = createDependenciesMap(options);\n    for (const dependency in dependenciesMap) {\n      if (dependenciesMap.hasOwnProperty(dependency)) {\n        const version = dependenciesMap[dependency];\n        if (!packageJson.dependencies[dependency]) {\n          packageJson.dependencies[dependency] = version;\n        }\n      }\n    }\n\n    // save the changed file\n    host.overwrite(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n    // schedule `npm install`\n    context.addTask(new NodePackageInstallTask());\n\n    return host;\n  };\n}\n\nfunction addSetupFiles(options: Schema): Rule {\n  return async (host: Tree) => {\n    const mainPath = await getMainFilePath(host, options.project);\n    const appModuleDirectory = dirname(mainPath) + '/app';\n    if (isStandaloneApp(host, mainPath)) {\n      const templateSource = apply(url('./files/standalone'), [\n        template({\n          endpoint: options.endpoint,\n        }),\n        move(appModuleDirectory),\n      ]);\n\n      return mergeWith(templateSource);\n    } else {\n      const appModulePath = getAppModulePath(host, mainPath);\n      const appModuleDirectory = dirname(appModulePath);\n      const templateSource = apply(url('./files/module'), [\n        template({\n          endpoint: options.endpoint,\n        }),\n        move(appModuleDirectory),\n      ]);\n\n      return mergeWith(templateSource);\n    }\n  };\n}\n\nfunction importSetup(options: Schema): Rule {\n  return async (host: Tree) => {\n    const mainPath = await getMainFilePath(host, options.project);\n    if (isStandaloneApp(host, mainPath)) {\n      return addRootProvider(options.project, ({ code, external }) => {\n        return code`${external('provideApollo', 'apollo-angular')}(() => {\n      const httpLink = ${external('inject', '@angular/core')}(${external('HttpLink', 'apollo-angular/http')});\n\n      return {\n        link: httpLink.create({\n          uri: '<%= endpoint %>',\n        }),\n        cache: new ${external('InMemoryCache', '@apollo/client')}(),\n      };\n    })`;\n      });\n    } else {\n      return addModuleImportToRootModule(\n        host,\n        'GraphQLModule',\n        './graphql.module',\n        options.project,\n      );\n    }\n  };\n}\n\nfunction importHttpClient(options: Schema): Rule {\n  return async (host: Tree) => {\n    const mainPath = await getMainFilePath(host, options.project);\n    if (isStandaloneApp(host, mainPath)) {\n      return addRootProvider(options.project, ({ code, external }) => {\n        return code`${external('provideHttpClient', '@angular/common/http')}()`;\n      });\n    } else {\n      return addModuleImportToRootModule(\n        host,\n        'HttpClientModule',\n        '@angular/common/http',\n        options.project,\n      );\n    }\n  };\n}\n"]}