@ngrx/data 20.1.0 → 21.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngrx-data.mjs +86 -86
- package/package.json +8 -8
- package/schematics/ng-add/index.js +39 -42
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.js +0 -2
- package/schematics-core/index.js +24 -75
- package/schematics-core/index.js.map +1 -1
- package/schematics-core/utility/ast-utils.js +28 -44
- package/schematics-core/utility/ast-utils.js.map +1 -1
- package/schematics-core/utility/change.js +8 -15
- package/schematics-core/utility/change.js.map +1 -1
- package/schematics-core/utility/config.js +4 -8
- package/schematics-core/utility/config.js.map +1 -1
- package/schematics-core/utility/find-component.js +17 -22
- package/schematics-core/utility/find-component.js.map +1 -1
- package/schematics-core/utility/find-module.js +19 -24
- package/schematics-core/utility/find-module.js.map +1 -1
- package/schematics-core/utility/json-utilts.js +1 -4
- package/schematics-core/utility/json-utilts.js.map +1 -1
- package/schematics-core/utility/libs-version.js +1 -4
- package/schematics-core/utility/libs-version.js.map +1 -1
- package/schematics-core/utility/ngrx-utils.js +28 -36
- package/schematics-core/utility/ngrx-utils.js.map +1 -1
- package/schematics-core/utility/package.js +1 -4
- package/schematics-core/utility/package.js.map +1 -1
- package/schematics-core/utility/parse-name.js +5 -8
- package/schematics-core/utility/parse-name.js.map +1 -1
- package/schematics-core/utility/project.js +9 -15
- package/schematics-core/utility/project.js.map +1 -1
- package/schematics-core/utility/standalone.js +13 -18
- package/schematics-core/utility/standalone.js.map +1 -1
- package/schematics-core/utility/strings.js +9 -20
- package/schematics-core/utility/strings.js.map +1 -1
- package/schematics-core/utility/update.js +4 -7
- package/schematics-core/utility/update.js.map +1 -1
- package/schematics-core/utility/visitors.js +16 -30
- package/schematics-core/utility/visitors.js.map +1 -1
- package/types/ngrx-data.d.ts +3465 -0
- package/index.d.ts +0 -6
- package/public_api.d.ts +0 -1
- package/src/actions/entity-action-factory.d.ts +0 -38
- package/src/actions/entity-action-guard.d.ts +0 -33
- package/src/actions/entity-action-operators.d.ts +0 -30
- package/src/actions/entity-action.d.ts +0 -37
- package/src/actions/entity-cache-action.d.ts +0 -147
- package/src/actions/entity-cache-change-set.d.ts +0 -66
- package/src/actions/entity-op.d.ts +0 -70
- package/src/actions/merge-strategy.d.ts +0 -20
- package/src/actions/update-response-data.d.ts +0 -20
- package/src/dataservices/data-service-error.d.ts +0 -18
- package/src/dataservices/default-data-service-config.d.ts +0 -27
- package/src/dataservices/default-data.service.d.ts +0 -57
- package/src/dataservices/entity-cache-data.service.d.ts +0 -58
- package/src/dataservices/entity-data.service.d.ts +0 -48
- package/src/dataservices/http-url-generator.d.ts +0 -94
- package/src/dataservices/interfaces.d.ts +0 -61
- package/src/dataservices/persistence-result-handler.service.d.ts +0 -30
- package/src/dispatchers/entity-cache-dispatcher.d.ts +0 -114
- package/src/dispatchers/entity-commands.d.ts +0 -217
- package/src/dispatchers/entity-dispatcher-base.d.ts +0 -269
- package/src/dispatchers/entity-dispatcher-default-options.d.ts +0 -23
- package/src/dispatchers/entity-dispatcher-factory.d.ts +0 -46
- package/src/dispatchers/entity-dispatcher.d.ts +0 -58
- package/src/effects/entity-cache-effects.d.ts +0 -46
- package/src/effects/entity-effects-scheduler.d.ts +0 -4
- package/src/effects/entity-effects.d.ts +0 -55
- package/src/entity-data-config.d.ts +0 -15
- package/src/entity-data-without-effects.module.d.ts +0 -15
- package/src/entity-data.module.d.ts +0 -15
- package/src/entity-metadata/entity-definition.d.ts +0 -16
- package/src/entity-metadata/entity-definition.service.d.ts +0 -62
- package/src/entity-metadata/entity-filters.d.ts +0 -12
- package/src/entity-metadata/entity-metadata.d.ts +0 -19
- package/src/entity-services/entity-collection-service-base.d.ts +0 -299
- package/src/entity-services/entity-collection-service-elements-factory.d.ts +0 -28
- package/src/entity-services/entity-collection-service-factory.d.ts +0 -22
- package/src/entity-services/entity-collection-service.d.ts +0 -37
- package/src/entity-services/entity-services-base.d.ts +0 -79
- package/src/entity-services/entity-services-elements.d.ts +0 -41
- package/src/entity-services/entity-services.d.ts +0 -50
- package/src/index.d.ts +0 -65
- package/src/provide-entity-data.d.ts +0 -78
- package/src/reducers/constants.d.ts +0 -8
- package/src/reducers/entity-cache-reducer.d.ts +0 -50
- package/src/reducers/entity-cache.d.ts +0 -4
- package/src/reducers/entity-change-tracker-base.d.ts +0 -181
- package/src/reducers/entity-change-tracker.d.ts +0 -169
- package/src/reducers/entity-collection-creator.d.ts +0 -15
- package/src/reducers/entity-collection-reducer-methods.d.ts +0 -365
- package/src/reducers/entity-collection-reducer-registry.d.ts +0 -47
- package/src/reducers/entity-collection-reducer.d.ts +0 -14
- package/src/reducers/entity-collection.d.ts +0 -41
- package/src/selectors/entity-cache-selector.d.ts +0 -7
- package/src/selectors/entity-selectors$.d.ts +0 -63
- package/src/selectors/entity-selectors.d.ts +0 -117
- package/src/utils/correlation-id-generator.d.ts +0 -20
- package/src/utils/default-logger.d.ts +0 -9
- package/src/utils/default-pluralizer.d.ts +0 -18
- package/src/utils/guid-fns.d.ts +0 -24
- package/src/utils/interfaces.d.ts +0 -16
- package/src/utils/utilities.d.ts +0 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitors.js","sourceRoot":"","sources":["../../../../../modules/data/schematics-core/utility/visitors.ts"],"names":[],"mappings":"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","sourcesContent":["import * as ts from 'typescript';\nimport { normalize, resolve } from '@angular-devkit/core';\nimport { Tree, DirEntry } from '@angular-devkit/schematics';\n\nexport function visitTSSourceFiles<Result = void>(\n tree: Tree,\n visitor: (\n sourceFile: ts.SourceFile,\n tree: Tree,\n result?: Result\n ) => Result | undefined\n): Result | undefined {\n let result: Result | undefined = undefined;\n for (const sourceFile of visit(tree.root)) {\n result = visitor(sourceFile, tree, result);\n }\n\n return result;\n}\n\nexport function visitTemplates(\n tree: Tree,\n visitor: (\n template: {\n fileName: string;\n content: string;\n inline: boolean;\n start: number;\n },\n tree: Tree\n ) => void\n): void {\n visitTSSourceFiles(tree, (source) => {\n visitComponents(source, (_, decoratorExpressionNode) => {\n ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {\n if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name)) {\n if (\n n.name.text === 'template' &&\n ts.isStringLiteralLike(n.initializer)\n ) {\n // Need to add an offset of one to the start because the template quotes are\n // not part of the template content.\n const templateStartIdx = n.initializer.getStart() + 1;\n visitor(\n {\n fileName: source.fileName,\n content: n.initializer.text,\n inline: true,\n start: templateStartIdx,\n },\n tree\n );\n return;\n } else if (\n n.name.text === 'templateUrl' &&\n ts.isStringLiteralLike(n.initializer)\n ) {\n const parts = normalize(source.fileName).split('/').slice(0, -1);\n const templatePath = resolve(\n normalize(parts.join('/')),\n normalize(n.initializer.text)\n );\n if (!tree.exists(templatePath)) {\n return;\n }\n\n const fileContent = tree.read(templatePath);\n if (!fileContent) {\n return;\n }\n\n visitor(\n {\n fileName: templatePath,\n content: fileContent.toString(),\n inline: false,\n start: 0,\n },\n tree\n );\n return;\n }\n }\n\n ts.forEachChild(n, findTemplates);\n });\n });\n });\n}\n\nexport function visitNgModuleImports(\n sourceFile: ts.SourceFile,\n callback: (\n importNode: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void\n) {\n visitNgModuleProperty(sourceFile, callback, 'imports');\n}\n\nexport function visitNgModuleExports(\n sourceFile: ts.SourceFile,\n callback: (\n exportNode: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void\n) {\n visitNgModuleProperty(sourceFile, callback, 'exports');\n}\n\nfunction visitNgModuleProperty(\n sourceFile: ts.SourceFile,\n callback: (\n nodes: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void,\n property: string\n) {\n visitNgModules(sourceFile, (_, decoratorExpressionNode) => {\n ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {\n if (\n ts.isPropertyAssignment(n) &&\n ts.isIdentifier(n.name) &&\n n.name.text === property &&\n ts.isArrayLiteralExpression(n.initializer)\n ) {\n callback(n, n.initializer.elements);\n return;\n }\n\n ts.forEachChild(n, findTemplates);\n });\n });\n}\nexport function visitComponents(\n sourceFile: ts.SourceFile,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n visitDecorator(sourceFile, 'Component', callback);\n}\n\nexport function visitNgModules(\n sourceFile: ts.SourceFile,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n visitDecorator(sourceFile, 'NgModule', callback);\n}\n\nexport function visitDecorator(\n sourceFile: ts.SourceFile,\n decoratorName: string,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n ts.forEachChild(sourceFile, function findClassDeclaration(node) {\n if (!ts.isClassDeclaration(node)) {\n ts.forEachChild(node, findClassDeclaration);\n }\n\n const classDeclarationNode = node as ts.ClassDeclaration;\n const decorators = ts.getDecorators(classDeclarationNode);\n\n if (!decorators || !decorators.length) {\n return;\n }\n\n const componentDecorator = decorators.find((d) => {\n return (\n ts.isCallExpression(d.expression) &&\n ts.isIdentifier(d.expression.expression) &&\n d.expression.expression.text === decoratorName\n );\n });\n\n if (!componentDecorator) {\n return;\n }\n\n const { expression } = componentDecorator;\n if (!ts.isCallExpression(expression)) {\n return;\n }\n\n const [arg] = expression.arguments;\n if (!arg || !ts.isObjectLiteralExpression(arg)) {\n return;\n }\n\n callback(classDeclarationNode, arg);\n });\n}\n\nexport function visitImportDeclaration(\n node: ts.Node,\n callback: (\n importDeclaration: ts.ImportDeclaration,\n moduleName?: string\n ) => void\n) {\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier.getText();\n const moduleName = moduleSpecifier.replaceAll('\"', '').replaceAll(\"'\", '');\n\n callback(node, moduleName);\n }\n\n ts.forEachChild(node, (child) => {\n visitImportDeclaration(child, callback);\n });\n}\n\nexport function visitImportSpecifier(\n node: ts.ImportDeclaration,\n callback: (importSpecifier: ts.ImportSpecifier) => void\n) {\n const { importClause } = node;\n if (!importClause) {\n return;\n }\n\n const importClauseChildren = importClause.getChildren();\n for (const namedImport of importClauseChildren) {\n if (ts.isNamedImports(namedImport)) {\n const namedImportChildren = namedImport.elements;\n for (const importSpecifier of namedImportChildren) {\n if (ts.isImportSpecifier(importSpecifier)) {\n callback(importSpecifier);\n }\n }\n }\n }\n}\n\nexport function visitTypeReference(\n node: ts.Node,\n callback: (typeReference: ts.TypeReferenceNode) => void\n) {\n if (ts.isTypeReferenceNode(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitTypeReference(child, callback);\n });\n}\n\nexport function visitTypeLiteral(\n node: ts.Node,\n callback: (typeLiteral: ts.TypeLiteralNode) => void\n) {\n if (ts.isTypeLiteralNode(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitTypeLiteral(child, callback);\n });\n}\n\nexport function visitCallExpression(\n node: ts.Node,\n callback: (callExpression: ts.CallExpression) => void\n) {\n if (ts.isCallExpression(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitCallExpression(child, callback);\n });\n}\n\nfunction* visit(directory: DirEntry): IterableIterator<ts.SourceFile> {\n for (const path of directory.subfiles) {\n if (path.endsWith('.ts') && !path.endsWith('.d.ts')) {\n const entry = directory.file(path);\n if (entry) {\n const content = entry.content;\n const source = ts.createSourceFile(\n entry.path,\n content.toString().replace(/^\\uFEFF/, ''),\n ts.ScriptTarget.Latest,\n true\n );\n yield source;\n }\n }\n }\n\n for (const path of directory.subdirs) {\n if (path === 'node_modules') {\n continue;\n }\n\n yield* visit(directory.dir(path));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"visitors.js","sourceRoot":"","sources":["../../../../../modules/data/schematics-core/utility/visitors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,UAAU,kBAAkB,CAChC,IAAU,EACV,OAIuB;;IAEvB,IAAI,MAAM,GAAuB,SAAS,CAAC;;QAC3C,KAAyB,IAAA,KAAA,SAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,gBAAA,4BAAE,CAAC;YAAvC,IAAM,UAAU,WAAA;YACnB,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;;;;;;;;;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,IAAU,EACV,OAQS;IAET,kBAAkB,CAAC,IAAI,EAAE,UAAC,MAAM;QAC9B,eAAe,CAAC,MAAM,EAAE,UAAC,CAAC,EAAE,uBAAuB;YACjD,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,SAAS,aAAa,CAAC,CAAC;gBAC/D,IAAI,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1D,IACE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;wBAC1B,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EACrC,CAAC;wBACD,4EAA4E;wBAC5E,oCAAoC;wBACpC,IAAM,gBAAgB,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;wBACtD,OAAO,CACL;4BACE,QAAQ,EAAE,MAAM,CAAC,QAAQ;4BACzB,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI;4BAC3B,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,gBAAgB;yBACxB,EACD,IAAI,CACL,CAAC;wBACF,OAAO;oBACT,CAAC;yBAAM,IACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa;wBAC7B,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,EACrC,CAAC;wBACD,IAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAM,YAAY,GAAG,OAAO,CAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC1B,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9B,CAAC;wBACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC/B,OAAO;wBACT,CAAC;wBAED,IAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;4BACjB,OAAO;wBACT,CAAC;wBAED,OAAO,CACL;4BACE,QAAQ,EAAE,YAAY;4BACtB,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;4BAC/B,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,CAAC;yBACT,EACD,IAAI,CACL,CAAC;wBACF,OAAO;oBACT,CAAC;gBACH,CAAC;gBAED,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAyB,EACzB,QAGS;IAET,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,UAAyB,EACzB,QAGS;IAET,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAyB,EACzB,QAGS,EACT,QAAgB;IAEhB,cAAc,CAAC,UAAU,EAAE,UAAC,CAAC,EAAE,uBAAuB;QACpD,EAAE,CAAC,YAAY,CAAC,uBAAuB,EAAE,SAAS,aAAa,CAAC,CAAC;YAC/D,IACE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;gBACxB,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,WAAW,CAAC,EAC1C,CAAC;gBACD,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACpC,OAAO;YACT,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,UAAyB,EACzB,QAGS;IAET,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAyB,EACzB,QAGS;IAET,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAyB,EACzB,aAAqB,EACrB,QAGS;IAET,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,SAAS,oBAAoB,CAAC,IAAI;QAC5D,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;QAC9C,CAAC;QAED,IAAM,oBAAoB,GAAG,IAA2B,CAAC;QACzD,IAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAM,kBAAkB,GAAG,UAAU,CAAC,IAAI,CAAC,UAAC,CAAC;YAC3C,OAAO,CACL,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;gBACjC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;gBACxC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,aAAa,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAEO,IAAA,UAAU,GAAK,kBAAkB,WAAvB,CAAwB;QAC1C,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAEK,IAAA,KAAA,OAAQ,UAAU,CAAC,SAAS,IAAA,EAA3B,GAAG,QAAwB,CAAC;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAa,EACb,QAGS;IAET,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,IAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QACvD,IAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE3E,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7B,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAC,KAAK;QAC1B,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAA0B,EAC1B,QAAuD;;IAE/C,IAAA,YAAY,GAAK,IAAI,aAAT,CAAU;IAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,IAAM,oBAAoB,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;;QACxD,KAA0B,IAAA,yBAAA,SAAA,oBAAoB,CAAA,0DAAA,4FAAE,CAAC;YAA5C,IAAM,WAAW,iCAAA;YACpB,IAAI,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,IAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC;;oBACjD,KAA8B,IAAA,uCAAA,SAAA,mBAAmB,CAAA,CAAA,wDAAA,yFAAE,CAAC;wBAA/C,IAAM,eAAe,gCAAA;wBACxB,IAAI,EAAE,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAE,CAAC;4BAC1C,QAAQ,CAAC,eAAe,CAAC,CAAC;wBAC5B,CAAC;oBACH,CAAC;;;;;;;;;YACH,CAAC;QACH,CAAC;;;;;;;;;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,QAAuD;IAEvD,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAC,KAAK;QAC1B,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAa,EACb,QAAmD;IAEnD,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAC,KAAK;QAC1B,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAa,EACb,QAAqD;IAErD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,UAAC,KAAK;QAC1B,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAU,KAAK,CAAC,SAAmB;;;;;;;gBACd,KAAA,SAAA,SAAS,CAAC,QAAQ,CAAA;;;;gBAA1B,IAAI;qBACT,CAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA,EAA/C,wBAA+C;gBAC3C,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC/B,KAAK,EAAL,wBAAK;gBACD,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;gBACxB,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAChC,KAAK,CAAC,IAAI,EACV,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,EACzC,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;gBACF,qBAAM,MAAM,EAAA;;gBAAZ,SAAY,CAAC;;;;;;;;;;;;;;;;;;gBAKA,KAAA,SAAA,SAAS,CAAC,OAAO,CAAA;;;;gBAAzB,IAAI;gBACb,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC5B,yBAAS;gBACX,CAAC;gBAED,sBAAA,SAAO,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA,EAAA;;gBAAjC,SAAiC,CAAC;;;;;;;;;;;;;;;;;;;CAErC","sourcesContent":["import * as ts from 'typescript';\nimport { normalize, resolve } from '@angular-devkit/core';\nimport { Tree, DirEntry } from '@angular-devkit/schematics';\n\nexport function visitTSSourceFiles<Result = void>(\n tree: Tree,\n visitor: (\n sourceFile: ts.SourceFile,\n tree: Tree,\n result?: Result\n ) => Result | undefined\n): Result | undefined {\n let result: Result | undefined = undefined;\n for (const sourceFile of visit(tree.root)) {\n result = visitor(sourceFile, tree, result);\n }\n\n return result;\n}\n\nexport function visitTemplates(\n tree: Tree,\n visitor: (\n template: {\n fileName: string;\n content: string;\n inline: boolean;\n start: number;\n },\n tree: Tree\n ) => void\n): void {\n visitTSSourceFiles(tree, (source) => {\n visitComponents(source, (_, decoratorExpressionNode) => {\n ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {\n if (ts.isPropertyAssignment(n) && ts.isIdentifier(n.name)) {\n if (\n n.name.text === 'template' &&\n ts.isStringLiteralLike(n.initializer)\n ) {\n // Need to add an offset of one to the start because the template quotes are\n // not part of the template content.\n const templateStartIdx = n.initializer.getStart() + 1;\n visitor(\n {\n fileName: source.fileName,\n content: n.initializer.text,\n inline: true,\n start: templateStartIdx,\n },\n tree\n );\n return;\n } else if (\n n.name.text === 'templateUrl' &&\n ts.isStringLiteralLike(n.initializer)\n ) {\n const parts = normalize(source.fileName).split('/').slice(0, -1);\n const templatePath = resolve(\n normalize(parts.join('/')),\n normalize(n.initializer.text)\n );\n if (!tree.exists(templatePath)) {\n return;\n }\n\n const fileContent = tree.read(templatePath);\n if (!fileContent) {\n return;\n }\n\n visitor(\n {\n fileName: templatePath,\n content: fileContent.toString(),\n inline: false,\n start: 0,\n },\n tree\n );\n return;\n }\n }\n\n ts.forEachChild(n, findTemplates);\n });\n });\n });\n}\n\nexport function visitNgModuleImports(\n sourceFile: ts.SourceFile,\n callback: (\n importNode: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void\n) {\n visitNgModuleProperty(sourceFile, callback, 'imports');\n}\n\nexport function visitNgModuleExports(\n sourceFile: ts.SourceFile,\n callback: (\n exportNode: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void\n) {\n visitNgModuleProperty(sourceFile, callback, 'exports');\n}\n\nfunction visitNgModuleProperty(\n sourceFile: ts.SourceFile,\n callback: (\n nodes: ts.PropertyAssignment,\n elementExpressions: ts.NodeArray<ts.Expression>\n ) => void,\n property: string\n) {\n visitNgModules(sourceFile, (_, decoratorExpressionNode) => {\n ts.forEachChild(decoratorExpressionNode, function findTemplates(n) {\n if (\n ts.isPropertyAssignment(n) &&\n ts.isIdentifier(n.name) &&\n n.name.text === property &&\n ts.isArrayLiteralExpression(n.initializer)\n ) {\n callback(n, n.initializer.elements);\n return;\n }\n\n ts.forEachChild(n, findTemplates);\n });\n });\n}\nexport function visitComponents(\n sourceFile: ts.SourceFile,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n visitDecorator(sourceFile, 'Component', callback);\n}\n\nexport function visitNgModules(\n sourceFile: ts.SourceFile,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n visitDecorator(sourceFile, 'NgModule', callback);\n}\n\nexport function visitDecorator(\n sourceFile: ts.SourceFile,\n decoratorName: string,\n callback: (\n classDeclarationNode: ts.ClassDeclaration,\n decoratorExpressionNode: ts.ObjectLiteralExpression\n ) => void\n) {\n ts.forEachChild(sourceFile, function findClassDeclaration(node) {\n if (!ts.isClassDeclaration(node)) {\n ts.forEachChild(node, findClassDeclaration);\n }\n\n const classDeclarationNode = node as ts.ClassDeclaration;\n const decorators = ts.getDecorators(classDeclarationNode);\n\n if (!decorators || !decorators.length) {\n return;\n }\n\n const componentDecorator = decorators.find((d) => {\n return (\n ts.isCallExpression(d.expression) &&\n ts.isIdentifier(d.expression.expression) &&\n d.expression.expression.text === decoratorName\n );\n });\n\n if (!componentDecorator) {\n return;\n }\n\n const { expression } = componentDecorator;\n if (!ts.isCallExpression(expression)) {\n return;\n }\n\n const [arg] = expression.arguments;\n if (!arg || !ts.isObjectLiteralExpression(arg)) {\n return;\n }\n\n callback(classDeclarationNode, arg);\n });\n}\n\nexport function visitImportDeclaration(\n node: ts.Node,\n callback: (\n importDeclaration: ts.ImportDeclaration,\n moduleName?: string\n ) => void\n) {\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier.getText();\n const moduleName = moduleSpecifier.replaceAll('\"', '').replaceAll(\"'\", '');\n\n callback(node, moduleName);\n }\n\n ts.forEachChild(node, (child) => {\n visitImportDeclaration(child, callback);\n });\n}\n\nexport function visitImportSpecifier(\n node: ts.ImportDeclaration,\n callback: (importSpecifier: ts.ImportSpecifier) => void\n) {\n const { importClause } = node;\n if (!importClause) {\n return;\n }\n\n const importClauseChildren = importClause.getChildren();\n for (const namedImport of importClauseChildren) {\n if (ts.isNamedImports(namedImport)) {\n const namedImportChildren = namedImport.elements;\n for (const importSpecifier of namedImportChildren) {\n if (ts.isImportSpecifier(importSpecifier)) {\n callback(importSpecifier);\n }\n }\n }\n }\n}\n\nexport function visitTypeReference(\n node: ts.Node,\n callback: (typeReference: ts.TypeReferenceNode) => void\n) {\n if (ts.isTypeReferenceNode(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitTypeReference(child, callback);\n });\n}\n\nexport function visitTypeLiteral(\n node: ts.Node,\n callback: (typeLiteral: ts.TypeLiteralNode) => void\n) {\n if (ts.isTypeLiteralNode(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitTypeLiteral(child, callback);\n });\n}\n\nexport function visitCallExpression(\n node: ts.Node,\n callback: (callExpression: ts.CallExpression) => void\n) {\n if (ts.isCallExpression(node)) {\n callback(node);\n }\n\n ts.forEachChild(node, (child) => {\n visitCallExpression(child, callback);\n });\n}\n\nfunction* visit(directory: DirEntry): IterableIterator<ts.SourceFile> {\n for (const path of directory.subfiles) {\n if (path.endsWith('.ts') && !path.endsWith('.d.ts')) {\n const entry = directory.file(path);\n if (entry) {\n const content = entry.content;\n const source = ts.createSourceFile(\n entry.path,\n content.toString().replace(/^\\uFEFF/, ''),\n ts.ScriptTarget.Latest,\n true\n );\n yield source;\n }\n }\n }\n\n for (const path of directory.subdirs) {\n if (path === 'node_modules') {\n continue;\n }\n\n yield* visit(directory.dir(path));\n }\n}\n"]}
|