@open-rlb/nestjs-amqp 1.0.13 → 1.0.15

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.
Files changed (81) hide show
  1. package/modules/broker/index.d.ts +2 -0
  2. package/modules/broker/index.js +2 -0
  3. package/modules/broker/index.js.map +1 -1
  4. package/modules/broker/services/broker.service.js +1 -1
  5. package/modules/broker/services/broker.service.js.map +1 -1
  6. package/package.json +14 -5
  7. package/schematics/collection.json +10 -0
  8. package/schematics/defaults.d.ts +14 -0
  9. package/schematics/defaults.js +18 -0
  10. package/schematics/defaults.js.map +1 -0
  11. package/schematics/defaults.ts +14 -0
  12. package/schematics/nest-add/index.d.ts +3 -0
  13. package/schematics/nest-add/index.js +315 -0
  14. package/schematics/nest-add/index.js.map +1 -0
  15. package/schematics/nest-add/index.ts +440 -0
  16. package/schematics/nest-add/init.schema.d.ts +15 -0
  17. package/schematics/nest-add/init.schema.js +3 -0
  18. package/schematics/nest-add/init.schema.js.map +1 -0
  19. package/schematics/nest-add/init.schema.ts +52 -0
  20. package/schematics/nest-add/schema.d.ts +5 -0
  21. package/schematics/nest-add/schema.js +3 -0
  22. package/schematics/nest-add/schema.js.map +1 -0
  23. package/schematics/nest-add/schema.json +20 -0
  24. package/schematics/nest-add/schema.ts +9 -0
  25. package/schematics/utils/dependencies.utils.d.ts +15 -0
  26. package/schematics/utils/dependencies.utils.js +43 -0
  27. package/schematics/utils/dependencies.utils.js.map +1 -0
  28. package/schematics/utils/dependencies.utils.ts +61 -0
  29. package/schematics/utils/formatting.d.ts +2 -0
  30. package/schematics/utils/formatting.js +23 -0
  31. package/schematics/utils/formatting.js.map +1 -0
  32. package/schematics/utils/formatting.spec.ts +45 -0
  33. package/schematics/utils/formatting.ts +31 -0
  34. package/schematics/utils/index.d.ts +9 -0
  35. package/schematics/utils/index.js +26 -0
  36. package/schematics/utils/index.js.map +1 -0
  37. package/schematics/utils/index.ts +9 -0
  38. package/schematics/utils/json-file.util.d.ts +15 -0
  39. package/schematics/utils/json-file.util.js +69 -0
  40. package/schematics/utils/json-file.util.js.map +1 -0
  41. package/schematics/utils/json-file.util.ts +100 -0
  42. package/schematics/utils/metadata.manager.d.ts +13 -0
  43. package/schematics/utils/metadata.manager.js +175 -0
  44. package/schematics/utils/metadata.manager.js.map +1 -0
  45. package/schematics/utils/metadata.manager.spec.ts +357 -0
  46. package/schematics/utils/metadata.manager.ts +241 -0
  47. package/schematics/utils/module-import.declarator.d.ts +10 -0
  48. package/schematics/utils/module-import.declarator.js +40 -0
  49. package/schematics/utils/module-import.declarator.js.map +1 -0
  50. package/schematics/utils/module-import.declarator.spec.ts +122 -0
  51. package/schematics/utils/module-import.declarator.ts +44 -0
  52. package/schematics/utils/module-metadata.declarator.d.ts +4 -0
  53. package/schematics/utils/module-metadata.declarator.js +13 -0
  54. package/schematics/utils/module-metadata.declarator.js.map +1 -0
  55. package/schematics/utils/module-metadata.declarator.spec.ts +404 -0
  56. package/schematics/utils/module-metadata.declarator.ts +14 -0
  57. package/schematics/utils/module.declarator.d.ts +23 -0
  58. package/schematics/utils/module.declarator.js +33 -0
  59. package/schematics/utils/module.declarator.js.map +1 -0
  60. package/schematics/utils/module.declarator.spec.ts +52 -0
  61. package/schematics/utils/module.declarator.ts +44 -0
  62. package/schematics/utils/module.finder.d.ts +13 -0
  63. package/schematics/utils/module.finder.js +25 -0
  64. package/schematics/utils/module.finder.js.map +1 -0
  65. package/schematics/utils/module.finder.spec.ts +59 -0
  66. package/schematics/utils/module.finder.ts +32 -0
  67. package/schematics/utils/name.parser.d.ts +12 -0
  68. package/schematics/utils/name.parser.js +18 -0
  69. package/schematics/utils/name.parser.js.map +1 -0
  70. package/schematics/utils/name.parser.spec.ts +50 -0
  71. package/schematics/utils/name.parser.ts +26 -0
  72. package/schematics/utils/path.solver.d.ts +4 -0
  73. package/schematics/utils/path.solver.js +15 -0
  74. package/schematics/utils/path.solver.js.map +1 -0
  75. package/schematics/utils/path.solver.spec.ts +11 -0
  76. package/schematics/utils/path.solver.ts +15 -0
  77. package/schematics/utils/source-root.helpers.d.ts +6 -0
  78. package/schematics/utils/source-root.helpers.js +25 -0
  79. package/schematics/utils/source-root.helpers.js.map +1 -0
  80. package/schematics/utils/source-root.helpers.ts +30 -0
  81. package/tsconfig.build.tsbuildinfo +1 -1
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeToKebabOrSnakeCase = normalizeToKebabOrSnakeCase;
4
+ exports.normalizeToKebabCase = normalizeToKebabCase;
5
+ function normalizeToKebabOrSnakeCase(str) {
6
+ const STRING_DASHERIZE_REGEXP = /\s/g;
7
+ const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
8
+ return str
9
+ ?.trim()
10
+ ?.replace(STRING_DECAMELIZE_REGEXP, '$1-$2')
11
+ ?.toLowerCase()
12
+ ?.replace(STRING_DASHERIZE_REGEXP, '-');
13
+ }
14
+ function normalizeToKebabCase(str) {
15
+ const STRING_DASHERIZE_REGEXP = /\s|_/g;
16
+ const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
17
+ return str
18
+ ?.trim()
19
+ ?.replace(STRING_DECAMELIZE_REGEXP, '$1-$2')
20
+ ?.toLowerCase()
21
+ ?.replace(STRING_DASHERIZE_REGEXP, '-');
22
+ }
23
+ //# sourceMappingURL=formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/utils/formatting.ts"],"names":[],"mappings":";;AAOA,kEAQC;AAOD,oDAQC;AAvBD,SAAgB,2BAA2B,CAAC,GAAW;IACrD,MAAM,uBAAuB,GAAG,KAAK,CAAC;IACtC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;IACrD,OAAO,GAAG;QACR,EAAE,IAAI,EAAE;QACR,EAAE,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAC5C,EAAE,WAAW,EAAE;QACf,EAAE,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC;AAOD,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,MAAM,uBAAuB,GAAG,OAAO,CAAC;IACxC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;IACrD,OAAO,GAAG;QACR,EAAE,IAAI,EAAE;QACR,EAAE,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC;QAC5C,EAAE,WAAW,EAAE;QACf,EAAE,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { normalizeToKebabOrSnakeCase } from '.';
2
+
3
+ describe('normalizeToKebabOrSnakeCase', () => {
4
+ it('should convert camelCase to kebab-case', () => {
5
+ const input = 'camelCaseString';
6
+ const output = normalizeToKebabOrSnakeCase(input);
7
+ expect(output).toBe('camel-case-string');
8
+ });
9
+
10
+ it('should replace spaces with dashes', () => {
11
+ const input = 'string with spaces';
12
+ const output = normalizeToKebabOrSnakeCase(input);
13
+ expect(output).toBe('string-with-spaces');
14
+ });
15
+
16
+ it('should keep underscores', () => {
17
+ const input = 'string_with_underscores';
18
+ const output = normalizeToKebabOrSnakeCase(input);
19
+ expect(output).toBe('string_with_underscores');
20
+ });
21
+
22
+ it('should handle empty string', () => {
23
+ const input = '';
24
+ const output = normalizeToKebabOrSnakeCase(input);
25
+ expect(output).toBe('');
26
+ });
27
+
28
+ it('should handle strings with leading/trailing spaces', () => {
29
+ const input = ' leading and trailing spaces ';
30
+ const output = normalizeToKebabOrSnakeCase(input);
31
+ expect(output).toBe('leading-and-trailing-spaces');
32
+ });
33
+
34
+ it('should handle nil value', () => {
35
+ const input = null;
36
+ const output = normalizeToKebabOrSnakeCase(input);
37
+ expect(output).toBe(undefined);
38
+ });
39
+
40
+ it('should handle undefined value', () => {
41
+ const input = undefined;
42
+ const output = normalizeToKebabOrSnakeCase(input);
43
+ expect(output).toBe(undefined);
44
+ });
45
+ });
@@ -0,0 +1,31 @@
1
+ /**
2
+ *
3
+ * @param str
4
+ * @returns formated string
5
+ * @description normalizes input to supported path and file name format.
6
+ * Changes camelCase strings to kebab-case, replaces spaces with dash and keeps underscores.
7
+ */
8
+ export function normalizeToKebabOrSnakeCase(str: string) {
9
+ const STRING_DASHERIZE_REGEXP = /\s/g;
10
+ const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
11
+ return str
12
+ ?.trim()
13
+ ?.replace(STRING_DECAMELIZE_REGEXP, '$1-$2')
14
+ ?.toLowerCase()
15
+ ?.replace(STRING_DASHERIZE_REGEXP, '-');
16
+ }
17
+ /**
18
+ *
19
+ * @param str
20
+ * @returns kebab-cased string
21
+ * @description Converts camelCase or PascalCase to kebab-case, replaces spaces with dash, and removes underscores.
22
+ */
23
+ export function normalizeToKebabCase(str: string) {
24
+ const STRING_DASHERIZE_REGEXP = /\s|_/g;
25
+ const STRING_DECAMELIZE_REGEXP = /([a-z\d])([A-Z])/g;
26
+ return str
27
+ ?.trim()
28
+ ?.replace(STRING_DECAMELIZE_REGEXP, '$1-$2')
29
+ ?.toLowerCase()
30
+ ?.replace(STRING_DASHERIZE_REGEXP, '-');
31
+ }
@@ -0,0 +1,9 @@
1
+ export * from './metadata.manager';
2
+ export * from './module-import.declarator';
3
+ export * from './module-metadata.declarator';
4
+ export * from './module.declarator';
5
+ export * from './module.finder';
6
+ export * from './name.parser';
7
+ export * from './path.solver';
8
+ export * from './source-root.helpers';
9
+ export * from './formatting';
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./metadata.manager"), exports);
18
+ __exportStar(require("./module-import.declarator"), exports);
19
+ __exportStar(require("./module-metadata.declarator"), exports);
20
+ __exportStar(require("./module.declarator"), exports);
21
+ __exportStar(require("./module.finder"), exports);
22
+ __exportStar(require("./name.parser"), exports);
23
+ __exportStar(require("./path.solver"), exports);
24
+ __exportStar(require("./source-root.helpers"), exports);
25
+ __exportStar(require("./formatting"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,6DAA2C;AAC3C,+DAA6C;AAC7C,sDAAoC;AACpC,kDAAgC;AAChC,gDAA8B;AAC9B,gDAA8B;AAC9B,wDAAsC;AACtC,+CAA6B"}
@@ -0,0 +1,9 @@
1
+ export * from './metadata.manager';
2
+ export * from './module-import.declarator';
3
+ export * from './module-metadata.declarator';
4
+ export * from './module.declarator';
5
+ export * from './module.finder';
6
+ export * from './name.parser';
7
+ export * from './path.solver';
8
+ export * from './source-root.helpers';
9
+ export * from './formatting';
@@ -0,0 +1,15 @@
1
+ import { JsonValue } from '@angular-devkit/core';
2
+ import { Tree } from '@angular-devkit/schematics';
3
+ export type InsertionIndex = (properties: string[]) => number;
4
+ export type JSONPath = (string | number)[];
5
+ export declare class JSONFile {
6
+ private readonly host;
7
+ private readonly path;
8
+ content: string;
9
+ constructor(host: Tree, path: string);
10
+ private _jsonAst;
11
+ private get JsonAst();
12
+ get(jsonPath: JSONPath): unknown;
13
+ modify(jsonPath: JSONPath, value: JsonValue | undefined, insertInOrder?: InsertionIndex | false): void;
14
+ remove(jsonPath: JSONPath): void;
15
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSONFile = void 0;
4
+ const jsonc_parser_1 = require("jsonc-parser");
5
+ class JSONFile {
6
+ constructor(host, path) {
7
+ this.host = host;
8
+ this.path = path;
9
+ const buffer = this.host.read(this.path);
10
+ if (buffer) {
11
+ this.content = buffer.toString();
12
+ }
13
+ else {
14
+ throw new Error(`Could not read '${path}'.`);
15
+ }
16
+ }
17
+ get JsonAst() {
18
+ if (this._jsonAst) {
19
+ return this._jsonAst;
20
+ }
21
+ const errors = [];
22
+ this._jsonAst = (0, jsonc_parser_1.parseTree)(this.content, errors, {
23
+ allowTrailingComma: true,
24
+ });
25
+ if (errors.length) {
26
+ const { error, offset } = errors[0];
27
+ throw new Error(`Failed to parse "${this.path}" as JSON AST Object. ${(0, jsonc_parser_1.printParseErrorCode)(error)} at location: ${offset}.`);
28
+ }
29
+ return this._jsonAst;
30
+ }
31
+ get(jsonPath) {
32
+ const jsonAstNode = this.JsonAst;
33
+ if (!jsonAstNode) {
34
+ return undefined;
35
+ }
36
+ if (jsonPath.length === 0) {
37
+ return (0, jsonc_parser_1.getNodeValue)(jsonAstNode);
38
+ }
39
+ const node = (0, jsonc_parser_1.findNodeAtLocation)(jsonAstNode, jsonPath);
40
+ return node === undefined ? undefined : (0, jsonc_parser_1.getNodeValue)(node);
41
+ }
42
+ modify(jsonPath, value, insertInOrder) {
43
+ let getInsertionIndex;
44
+ if (insertInOrder === undefined) {
45
+ const property = jsonPath.slice(-1)[0];
46
+ getInsertionIndex = (properties) => [...properties, property].sort().findIndex((p) => p === property);
47
+ }
48
+ else if (insertInOrder !== false) {
49
+ getInsertionIndex = insertInOrder;
50
+ }
51
+ const edits = (0, jsonc_parser_1.modify)(this.content, jsonPath, value, {
52
+ getInsertionIndex,
53
+ formattingOptions: {
54
+ insertSpaces: true,
55
+ tabSize: 2,
56
+ },
57
+ });
58
+ this.content = (0, jsonc_parser_1.applyEdits)(this.content, edits);
59
+ this.host.overwrite(this.path, this.content);
60
+ this._jsonAst = undefined;
61
+ }
62
+ remove(jsonPath) {
63
+ if (this.get(jsonPath) !== undefined) {
64
+ this.modify(jsonPath, undefined);
65
+ }
66
+ }
67
+ }
68
+ exports.JSONFile = JSONFile;
69
+ //# sourceMappingURL=json-file.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-file.util.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/utils/json-file.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { JsonValue } from '@angular-devkit/core';
2
+ import { Tree } from '@angular-devkit/schematics';
3
+ import {
4
+ Node,
5
+ ParseError,
6
+ applyEdits,
7
+ findNodeAtLocation,
8
+ getNodeValue,
9
+ modify,
10
+ parseTree,
11
+ printParseErrorCode,
12
+ } from 'jsonc-parser';
13
+
14
+ export type InsertionIndex = (properties: string[]) => number;
15
+ export type JSONPath = (string | number)[];
16
+
17
+ export class JSONFile {
18
+ content: string;
19
+
20
+ constructor(private readonly host: Tree, private readonly path: string) {
21
+ const buffer = this.host.read(this.path);
22
+ if (buffer) {
23
+ this.content = buffer.toString();
24
+ } else {
25
+ throw new Error(`Could not read '${path}'.`);
26
+ }
27
+ }
28
+
29
+ private _jsonAst: Node | undefined;
30
+ private get JsonAst(): Node | undefined {
31
+ if (this._jsonAst) {
32
+ return this._jsonAst;
33
+ }
34
+
35
+ const errors: ParseError[] = [];
36
+ this._jsonAst = parseTree(this.content, errors, {
37
+ allowTrailingComma: true,
38
+ });
39
+ if (errors.length) {
40
+ const { error, offset } = errors[0];
41
+ throw new Error(
42
+ `Failed to parse "${
43
+ this.path
44
+ }" as JSON AST Object. ${printParseErrorCode(
45
+ error,
46
+ )} at location: ${offset}.`,
47
+ );
48
+ }
49
+
50
+ return this._jsonAst;
51
+ }
52
+
53
+ get(jsonPath: JSONPath): unknown {
54
+ const jsonAstNode = this.JsonAst;
55
+ if (!jsonAstNode) {
56
+ return undefined;
57
+ }
58
+
59
+ if (jsonPath.length === 0) {
60
+ return getNodeValue(jsonAstNode);
61
+ }
62
+
63
+ const node = findNodeAtLocation(jsonAstNode, jsonPath);
64
+
65
+ return node === undefined ? undefined : getNodeValue(node);
66
+ }
67
+
68
+ modify(
69
+ jsonPath: JSONPath,
70
+ value: JsonValue | undefined,
71
+ insertInOrder?: InsertionIndex | false,
72
+ ): void {
73
+ let getInsertionIndex: InsertionIndex | undefined;
74
+ if (insertInOrder === undefined) {
75
+ const property = jsonPath.slice(-1)[0];
76
+ getInsertionIndex = (properties) =>
77
+ [...properties, property].sort().findIndex((p) => p === property);
78
+ } else if (insertInOrder !== false) {
79
+ getInsertionIndex = insertInOrder;
80
+ }
81
+
82
+ const edits = modify(this.content, jsonPath, value, {
83
+ getInsertionIndex,
84
+ formattingOptions: {
85
+ insertSpaces: true,
86
+ tabSize: 2,
87
+ },
88
+ });
89
+
90
+ this.content = applyEdits(this.content, edits);
91
+ this.host.overwrite(this.path, this.content);
92
+ this._jsonAst = undefined;
93
+ }
94
+
95
+ remove(jsonPath: JSONPath): void {
96
+ if (this.get(jsonPath) !== undefined) {
97
+ this.modify(jsonPath, undefined);
98
+ }
99
+ }
100
+ }
@@ -0,0 +1,13 @@
1
+ import { DeclarationOptions } from './module.declarator';
2
+ export declare class MetadataManager {
3
+ private content;
4
+ constructor(content: string);
5
+ insert(metadata: string, symbol: string, staticOptions?: DeclarationOptions['staticOptions']): string | undefined;
6
+ private findFirstDecoratorMetadata;
7
+ private getSourceNodes;
8
+ private insertMetadataToEmptyModuleDecorator;
9
+ private insertNewMetadataToDecorator;
10
+ private insertSymbolToMetadata;
11
+ private mergeSymbolAndExpr;
12
+ private addBlankLines;
13
+ }
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataManager = void 0;
4
+ const typescript_1 = require("typescript");
5
+ class MetadataManager {
6
+ constructor(content) {
7
+ this.content = content;
8
+ }
9
+ insert(metadata, symbol, staticOptions) {
10
+ const source = (0, typescript_1.createSourceFile)('filename.ts', this.content, typescript_1.ScriptTarget.ES2017);
11
+ const moduleDecoratorNode = this.findFirstDecoratorMetadata(source, 'Module');
12
+ if (!moduleDecoratorNode) {
13
+ return;
14
+ }
15
+ const matchingProperties = moduleDecoratorNode.properties
16
+ .filter((prop) => prop.kind === typescript_1.SyntaxKind.PropertyAssignment)
17
+ .filter((prop) => {
18
+ const name = prop.name;
19
+ switch (name.kind) {
20
+ case typescript_1.SyntaxKind.Identifier:
21
+ return name.getText(source) === metadata;
22
+ case typescript_1.SyntaxKind.StringLiteral:
23
+ return name.text === metadata;
24
+ default:
25
+ return false;
26
+ }
27
+ });
28
+ symbol = this.mergeSymbolAndExpr(symbol, staticOptions);
29
+ const addBlankLinesIfDynamic = () => {
30
+ symbol = staticOptions ? this.addBlankLines(symbol) : symbol;
31
+ };
32
+ if (matchingProperties.length === 0) {
33
+ const expr = moduleDecoratorNode;
34
+ if (expr.properties.length === 0) {
35
+ addBlankLinesIfDynamic();
36
+ return this.insertMetadataToEmptyModuleDecorator(expr, metadata, symbol);
37
+ }
38
+ else {
39
+ addBlankLinesIfDynamic();
40
+ return this.insertNewMetadataToDecorator(expr, source, metadata, symbol);
41
+ }
42
+ }
43
+ else {
44
+ return this.insertSymbolToMetadata(source, matchingProperties, symbol, staticOptions);
45
+ }
46
+ }
47
+ findFirstDecoratorMetadata(source, identifier) {
48
+ for (const node of this.getSourceNodes(source)) {
49
+ const isDecoratorFactoryNode = node.kind === typescript_1.SyntaxKind.Decorator &&
50
+ node.expression.kind === typescript_1.SyntaxKind.CallExpression;
51
+ if (!isDecoratorFactoryNode)
52
+ continue;
53
+ const expr = node.expression;
54
+ const isExpectedExpression = expr.arguments[0]?.kind === typescript_1.SyntaxKind.ObjectLiteralExpression;
55
+ if (!isExpectedExpression)
56
+ continue;
57
+ if (expr.expression.kind === typescript_1.SyntaxKind.Identifier) {
58
+ const escapedText = expr.expression.escapedText;
59
+ const isTargetIdentifier = escapedText
60
+ ? escapedText.toLowerCase() === identifier.toLowerCase()
61
+ : true;
62
+ if (isTargetIdentifier) {
63
+ return expr.arguments[0];
64
+ }
65
+ }
66
+ }
67
+ }
68
+ getSourceNodes(sourceFile) {
69
+ const nodes = [sourceFile];
70
+ const result = [];
71
+ while (nodes.length > 0) {
72
+ const node = nodes.shift();
73
+ if (node) {
74
+ result.push(node);
75
+ if (node.getChildCount(sourceFile) >= 0) {
76
+ nodes.unshift(...node.getChildren(sourceFile));
77
+ }
78
+ }
79
+ }
80
+ return result;
81
+ }
82
+ insertMetadataToEmptyModuleDecorator(expr, metadata, symbol) {
83
+ const position = expr.getEnd() - 1;
84
+ const toInsert = ` ${metadata}: [${symbol}]`;
85
+ return this.content.split('').reduce((content, char, index) => {
86
+ if (index === position) {
87
+ return `${content}\n${toInsert}\n${char}`;
88
+ }
89
+ else {
90
+ return `${content}${char}`;
91
+ }
92
+ }, '');
93
+ }
94
+ insertNewMetadataToDecorator(expr, source, metadata, symbol) {
95
+ const node = expr.properties[expr.properties.length - 1];
96
+ const position = node.getEnd();
97
+ const text = node.getFullText(source);
98
+ const matches = text.match(/^\r?\n\s*/);
99
+ let toInsert;
100
+ if (matches) {
101
+ toInsert = `,${matches[0]}${metadata}: [${symbol}]`;
102
+ }
103
+ else {
104
+ toInsert = `, ${metadata}: [${symbol}]`;
105
+ }
106
+ return this.content.split('').reduce((content, char, index) => {
107
+ if (index === position) {
108
+ return `${content}${toInsert}${char}`;
109
+ }
110
+ else {
111
+ return `${content}${char}`;
112
+ }
113
+ }, '');
114
+ }
115
+ insertSymbolToMetadata(source, matchingProperties, symbol, staticOptions) {
116
+ const assignment = matchingProperties[0];
117
+ let node;
118
+ const arrLiteral = assignment.initializer;
119
+ if (!arrLiteral.elements) {
120
+ return this.content;
121
+ }
122
+ if (arrLiteral.elements.length === 0) {
123
+ node = arrLiteral;
124
+ }
125
+ else {
126
+ node = arrLiteral.elements;
127
+ }
128
+ if (Array.isArray(node)) {
129
+ const nodeArray = node;
130
+ const symbolsArray = nodeArray.map((childNode) => childNode.getText(source));
131
+ if (symbolsArray.includes(symbol)) {
132
+ return this.content;
133
+ }
134
+ node = node[node.length - 1];
135
+ }
136
+ let toInsert;
137
+ let position = node.getEnd();
138
+ if (node.kind === typescript_1.SyntaxKind.ArrayLiteralExpression) {
139
+ position--;
140
+ toInsert = staticOptions ? this.addBlankLines(symbol) : `${symbol}`;
141
+ }
142
+ else {
143
+ const text = node.getFullText(source);
144
+ const itemSeparator = (text.match(/^\r?\n(\r?)\s+/) ||
145
+ text.match(/^\r?\n/) ||
146
+ ' ')[0];
147
+ toInsert = `,${itemSeparator}${symbol}`;
148
+ }
149
+ return this.content.split('').reduce((content, char, index) => {
150
+ if (index === position) {
151
+ return `${content}${toInsert}${char}`;
152
+ }
153
+ else {
154
+ return `${content}${char}`;
155
+ }
156
+ }, '');
157
+ }
158
+ mergeSymbolAndExpr(symbol, staticOptions) {
159
+ if (!staticOptions) {
160
+ return symbol;
161
+ }
162
+ const spacing = 6;
163
+ let options = JSON.stringify(staticOptions.value, null, spacing);
164
+ options = options.replace(/\"([^(\")"]+)\":/g, '$1:');
165
+ options = options.replace(/\"/g, `'`);
166
+ options = options.slice(0, options.length - 1) + ' }';
167
+ symbol += `.${staticOptions.name}(${options})`;
168
+ return symbol;
169
+ }
170
+ addBlankLines(expr) {
171
+ return `\n ${expr}\n `;
172
+ }
173
+ }
174
+ exports.MetadataManager = MetadataManager;
175
+ //# sourceMappingURL=metadata.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.manager.js","sourceRoot":"","sources":["../../../libs/rlb-nestjs-amqp/src/schematics/utils/metadata.manager.ts"],"names":[],"mappings":"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"}