UNPKG

apollo-angular

Version:

Use your GraphQL data in your Angular app, with the Apollo Client

1 lines 7.75 kB
{"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"]}