UNPKG

10.5 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../modules/store/migrations/8_0_0-rc/index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\nimport {\n Rule,\n chain,\n Tree,\n SchematicsException,\n} from '@angular-devkit/schematics';\nimport {\n RemoveChange,\n InsertChange,\n visitTSSourceFiles,\n commitChanges,\n} from '../../schematics-core';\n\nfunction replaceWithRuntimeChecks(): Rule {\n return (tree: Tree) => {\n // only add runtime checks when ngrx-store-freeze is used\n visitTSSourceFiles<boolean>(tree, removeUsages) &&\n visitTSSourceFiles(tree, insertRuntimeChecks);\n };\n}\n\nfunction removeNgRxStoreFreezePackage(): Rule {\n return (tree: Tree) => {\n const pkgPath = '/package.json';\n const buffer = tree.read(pkgPath);\n if (buffer === null) {\n throw new SchematicsException('Could not read package.json');\n }\n const content = buffer.toString();\n const pkg = JSON.parse(content);\n\n if (pkg === null || typeof pkg !== 'object' || Array.isArray(pkg)) {\n throw new SchematicsException('Error reading package.json');\n }\n\n const dependencyCategories = ['dependencies', 'devDependencies'];\n\n dependencyCategories.forEach((category) => {\n if (pkg[category] && pkg[category]['ngrx-store-freeze']) {\n delete pkg[category]['ngrx-store-freeze'];\n }\n });\n\n tree.overwrite(pkgPath, JSON.stringify(pkg, null, 2));\n return tree;\n };\n}\n\nexport default function (): Rule {\n return chain([removeNgRxStoreFreezePackage(), replaceWithRuntimeChecks()]);\n}\n\nfunction removeUsages(\n sourceFile: ts.SourceFile,\n tree: Tree,\n ngrxStoreFreezeIsUsed?: boolean\n) {\n if (\n sourceFile.fileName.endsWith('.spec.ts') ||\n sourceFile.fileName.endsWith('.test.ts')\n ) {\n return ngrxStoreFreezeIsUsed;\n }\n\n const importRemovements = findStoreFreezeImportsToRemove(sourceFile);\n if (importRemovements.length === 0) {\n return ngrxStoreFreezeIsUsed;\n }\n\n const usageReplacements = findStoreFreezeUsagesToRemove(sourceFile);\n const changes = [...importRemovements, ...usageReplacements];\n return commitChanges(tree, sourceFile.fileName, changes);\n}\n\nfunction insertRuntimeChecks(sourceFile: ts.SourceFile, tree: Tree) {\n if (\n sourceFile.fileName.endsWith('.spec.ts') ||\n sourceFile.fileName.endsWith('.test.ts')\n ) {\n return;\n }\n\n const changes = findRuntimeCHecksToInsert(sourceFile);\n return commitChanges(tree, sourceFile.fileName, changes);\n}\n\nfunction findStoreFreezeImportsToRemove(sourceFile: ts.SourceFile) {\n const imports = sourceFile.statements\n .filter(ts.isImportDeclaration)\n .filter(({ moduleSpecifier }) => {\n return (\n moduleSpecifier.getText(sourceFile) === `'ngrx-store-freeze'` ||\n moduleSpecifier.getText(sourceFile) === `\"ngrx-store-freeze\"`\n );\n });\n\n const removements = imports.map(\n (i) =>\n new RemoveChange(sourceFile.fileName, i.getStart(sourceFile), i.getEnd())\n );\n return removements;\n}\n\nfunction findStoreFreezeUsagesToRemove(sourceFile: ts.SourceFile) {\n const changes: (RemoveChange | InsertChange)[] = [];\n ts.forEachChild(sourceFile, crawl);\n return changes;\n\n function crawl(node: ts.Node) {\n ts.forEachChild(node, crawl);\n\n if (!ts.isArrayLiteralExpression(node)) return;\n\n const elements = node.elements.map((elem) => elem.getText(sourceFile));\n const elementsWithoutStoreFreeze = elements.filter(\n (elemText) => elemText !== 'storeFreeze'\n );\n\n if (elements.length !== elementsWithoutStoreFreeze.length) {\n changes.push(\n new RemoveChange(\n sourceFile.fileName,\n node.getStart(sourceFile),\n node.getEnd()\n )\n );\n changes.push(\n new InsertChange(\n sourceFile.fileName,\n node.getStart(sourceFile),\n `[${elementsWithoutStoreFreeze.join(', ')}]`\n )\n );\n }\n }\n}\n\nfunction findRuntimeCHecksToInsert(sourceFile: ts.SourceFile) {\n const changes: InsertChange[] = [];\n ts.forEachChild(sourceFile, crawl);\n return changes;\n\n function crawl(node: ts.Node) {\n ts.forEachChild(node, crawl);\n\n if (!ts.isCallExpression(node)) return;\n\n const expression = node.expression;\n if (\n !(\n ts.isPropertyAccessExpression(expression) &&\n expression.expression.getText(sourceFile) === 'StoreModule' &&\n expression.name.getText(sourceFile) === 'forRoot'\n )\n ) {\n return;\n }\n\n const runtimeChecks = `runtimeChecks: { strictStateImmutability: true, strictActionImmutability: true }`;\n\n // covers StoreModule.forRoot(ROOT_REDUCERS)\n if (node.arguments.length === 1) {\n changes.push(\n new InsertChange(\n sourceFile.fileName,\n node.arguments[0].getEnd(),\n `, { ${runtimeChecks}}`\n )\n );\n } else if (node.arguments.length === 2) {\n const storeConfig = node.arguments[1];\n if (ts.isObjectLiteralExpression(storeConfig)) {\n // covers StoreModule.forRoot(ROOT_REDUCERS, {})\n if (storeConfig.properties.length === 0) {\n changes.push(\n new InsertChange(\n sourceFile.fileName,\n storeConfig.getEnd() - 1,\n `${runtimeChecks} `\n )\n );\n } else {\n // covers StoreModule.forRoot(ROOT_REDUCERS, { metaReducers })\n const lastProperty =\n storeConfig.properties[storeConfig.properties.length - 1];\n\n changes.push(\n new InsertChange(\n sourceFile.fileName,\n lastProperty.getEnd(),\n `, ${runtimeChecks}`\n )\n );\n }\n }\n }\n }\n}\n"]}
\No newline at end of file