return (host: Tree, context: SchematicContext) => { if (options.module) { options.module = findModuleFromOptions(host, options); } const templateSource = apply(url('./files'), [ options.spec ? noop() : filter(path => !path.endsWith('__spec.ts')), template({ ...stringUtils, 'if-flat': (s: string) => stringUtils.group( options.flat ? '' : s, options.group ? 'effects' : '' ), ...(options as object), dot: () => '.', }), move(sourceDir), ]); return chain([ branchAndMerge( chain([ filter( path => path.endsWith('.module.ts') && !path.endsWith('-routing.module.ts') ), addImportToNgModule(options), mergeWith(templateSource), ]) ), ])(host, context); };
return (host: Tree, context: SchematicContext) => { const workspace = getWorkspace(host); if (!options.project) { throw new SchematicsException('Option (project) is required.'); } const project = workspace.projects[options.project]; if (options.path === undefined) { options.path = buildDefaultPath(project); } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; const templateSource = apply(url('./files'), [ template({ ...strings, ...options, }), move(parsedPath.path), ]); return chain([ branchAndMerge(chain([ mergeWith(templateSource), ])), options.lintFix ? applyLintFix(options.path) : noop(), ]); };
return (host: Tree) => { if (!options.project) { throw new SchematicsException('Option (project) is required.'); } const project = getProject(host, options.project); if (options.path === undefined) { options.path = buildDefaultPath(project); } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; // todo remove these when we remove the deprecations options.skipTests = options.skipTests || !options.spec; const templateSource = apply(url('./files'), [ options.skipTests ? filter(path => !path.endsWith('.spec.ts')) : noop(), template({ ...strings, ...options, }), move(parsedPath.path), ]); return chain([ branchAndMerge(chain([ mergeWith(templateSource), ])), options.lintFix ? applyLintFix(options.path) : noop(), ]); };
return (tree: Tree, context: SchematicContext) => { options.path = '/src/framework/theme/components/'; options.prefix = 'nb'; options.selector = options.selector || buildSelector(options); const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; options.className = buildClassName(options); const templateSource = apply(url('./files'), [ template({ ...strings, ...options, }), ]); return chain([ branchAndMerge(chain([ mergeWith(templateSource), ])), ])(tree, context); };
return (host: Tree, context: SchematicContext) => { options.path = getProjectPath(host, options); const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; const templateSource = apply(url('./files'), [ options.spec ? noop() : filter(path => !path.endsWith('__spec.ts')), template({ 'if-flat': (s: string) => stringUtils.group( options.flat ? '' : s, options.group ? 'actions' : '' ), ...stringUtils, ...(options as object), dot: () => '.', } as any), move(parsedPath.path), ]); return chain([branchAndMerge(chain([mergeWith(templateSource)]))])( host, context ); };
return (host: Tree, context: SchematicContext) => { const workspace = getWorkspace(host); if (!options.project) { throw new SchematicsException('Option (project) is required.'); } const project = workspace.projects[options.project]; if (options.path === undefined) { const projectDirName = project.projectType === 'application' ? 'app' : 'lib'; options.path = `/${project.root}/src/${projectDirName}`; } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; options.prefix = options.prefix ? options.prefix : ''; options.type = !!options.type ? `.${options.type}` : ''; const templateSource = apply(url('./files'), [ template({ ...strings, ...options, }), move(parsedPath.path), ]); return chain([ branchAndMerge(chain([ mergeWith(templateSource), ])), ])(host, context); };
return (host: Tree) => { if (!options.project) { throw new SchematicsException('Option (project) is required.'); } const project = getProject(host, options.project); if (options.path === undefined) { options.path = buildDefaultPath(project); } const parsedPath = parseName(options.path, options.name); options.name = parsedPath.name; options.path = parsedPath.path; options.prefix = options.prefix ? options.prefix : ''; options.type = !!options.type ? `.${options.type}` : ''; const templateSource = apply(url('./files'), [ template({ ...strings, ...options, }), move(parsedPath.path), ]); return chain([ branchAndMerge(chain([ mergeWith(templateSource), ])), options.lintFix ? applyLintFix(options.path) : noop(), ]); };
return (host: Tree, context: SchematicContext) => { const workspace = getWorkspace(host); if (Object.keys(workspace.projects).length <= 0) { throw new SchematicsException('Could not find any project.'); } if (!schema.project) { schema.project = Object.keys(workspace.projects)[0]; } const project = workspace.projects[schema.project]; resolveSchema(host, project, schema); schema.componentName = buildComponentName(schema, (project as any).prefix); const templateSource = apply(url('./files'), [ schema.spec ? noop() : filter(path => !path.endsWith('.spec.ts')), schema.inlineStyle ? filter(path => !path.endsWith('.__styleext__')) : noop(), schema.inlineTemplate ? filter(path => !path.endsWith('.html')) : noop(), template({ ...strings, 'if-flat': (s: string) => (schema.flat ? '' : s), ...schema, }), move(null, schema.path + '/'), ]); return chain([ branchAndMerge( chain([addDeclaration(schema), mergeWith(templateSource)]), ), ])(host, context); };
return (host: Tree, context: SchematicContext) => { if (options.module) { options.module = findModuleFromOptions(host, options); } const templateSource = apply(url('./files'), [ options.spec ? noop() : filter(path => !path.endsWith('__spec.ts')), template({ ...stringUtils, 'if-flat': (s: string) => (options.flat ? '' : s), 'group-actions': (name: string) => stringUtils.group(name, options.group ? 'actions' : ''), 'group-models': (name: string) => stringUtils.group(name, options.group ? 'models' : ''), 'group-reducers': (s: string) => stringUtils.group(s, options.group ? 'reducers' : ''), ...(options as object), dot: () => '.', }), move(sourceDir), ]); return chain([ addReducerToState({ ...options }), addReducerImportToNgModule({ ...options }), branchAndMerge(chain([mergeWith(templateSource)])), ])(host, context); };
return (host: Tree, context: SchematicContext) => { const workspace = getWorkspace(host); if (!options.project) { throw new SchematicsException('Option "project" is required.'); } const project = workspace.projects[options.project]; if (project.projectType !== 'application') { throw new SchematicsException(`PWA requires a project type of "application".`); } const assetPath = join(project.root as Path, 'src', 'assets'); const sourcePath = join(project.root as Path, 'src'); options.title = options.title || options.project; const templateSource = apply(url('./files/assets'), [ template({ ...options, }), move(assetPath), ]); return chain([ addServiceWorker(options), branchAndMerge(chain([ mergeWith(templateSource), ])), mergeWith(apply(url('./files/root'), [ template({...options}), move(sourcePath), ])), updateIndexFile(options), addManifestToAssetsConfig(options), ])(host, context); };