UNPKG

apollo-angular

Version:

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

1 lines 5.31 kB
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../schematics/install/index.cts"],"names":[],"mappings":"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","sourcesContent":["import { chain, Rule, SchematicContext, Tree } from '@angular-devkit/schematics';\nimport { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';\nimport { addRootProvider } from '@schematics/angular/utility';\nimport { isStandaloneApp } from '@schematics/angular/utility/ng-ast-utils';\nimport { getMainFilePath } from '@schematics/angular/utility/standalone/util';\nimport { getJsonFile } from '../utils/index.cjs';\nimport { Schema } from './schema.cjs';\n\nexport function factory(options: Schema): Rule {\n return chain([\n assertStandaloneApp(options),\n addDependencies(options),\n addProvideHttpClient(options),\n addProvideApollo(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\nfunction assertStandaloneApp(options: Schema): Rule {\n return async (host: Tree) => {\n const mainPath = await getMainFilePath(host, options.project);\n if (!isStandaloneApp(host, mainPath)) {\n throw new Error('Only standalone application are supported');\n }\n\n return host;\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 addProvideApollo(options: Schema): Rule {\n return async () => {\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 };\n}\n\nfunction addProvideHttpClient(options: Schema): Rule {\n return async () => {\n return addRootProvider(options.project, ({ code, external }) => {\n return code`${external('provideHttpClient', '@angular/common/http')}()`;\n });\n };\n}\n"]}