magic-renamer 18.0.10 → 18.0.13

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 (37) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/esm2022/lib/index.mjs +2 -1
  3. package/browser/esm2022/lib/magic-renamer.mjs +4 -1
  4. package/browser/esm2022/lib/rename-rule.mjs +105 -0
  5. package/browser/fesm2022/magic-renamer.mjs +109 -2
  6. package/browser/fesm2022/magic-renamer.mjs.map +1 -1
  7. package/browser/lib/index.d.ts +1 -0
  8. package/browser/lib/rename-rule.d.ts +32 -0
  9. package/client/esm2022/lib/index.mjs +2 -1
  10. package/client/esm2022/lib/magic-renamer.mjs +4 -1
  11. package/client/esm2022/lib/rename-rule.mjs +105 -0
  12. package/client/fesm2022/magic-renamer.mjs +109 -2
  13. package/client/fesm2022/magic-renamer.mjs.map +1 -1
  14. package/client/lib/index.d.ts +1 -0
  15. package/client/lib/rename-rule.d.ts +32 -0
  16. package/lib/index._auto-generated_.d.ts +0 -0
  17. package/lib/index._auto-generated_.js +6 -0
  18. package/lib/index._auto-generated_.js.map +1 -0
  19. package/lib/index.d.ts +1 -0
  20. package/lib/index.js +1 -0
  21. package/lib/index.js.map +1 -1
  22. package/lib/magic-renamer.d.ts +1 -1
  23. package/lib/magic-renamer.js +24 -27
  24. package/lib/magic-renamer.js.map +1 -1
  25. package/lib/{rename-rule.backend.d.ts → rename-rule.d.ts} +14 -1
  26. package/lib/{rename-rule.backend.js → rename-rule.js} +42 -6
  27. package/lib/rename-rule.js.map +1 -0
  28. package/package.json +3 -3
  29. package/tmp-environment.json +32 -29
  30. package/websql/esm2022/lib/index.mjs +2 -1
  31. package/websql/esm2022/lib/magic-renamer.mjs +4 -1
  32. package/websql/esm2022/lib/rename-rule.mjs +105 -0
  33. package/websql/fesm2022/magic-renamer.mjs +109 -2
  34. package/websql/fesm2022/magic-renamer.mjs.map +1 -1
  35. package/websql/lib/index.d.ts +1 -0
  36. package/websql/lib/rename-rule.d.ts +32 -0
  37. package/lib/rename-rule.backend.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  THIS FILE IS GENERATED. THIS FILE IS GENERATED. THIS FILE IS GENERATED.
2
2
 
3
- Assets from this folder are being shipped with this npm package (magic-renamer@18.0.10)
3
+ Assets from this folder are being shipped with this npm package (magic-renamer@18.0.13)
4
4
  created from this project.
5
5
 
6
6
  THIS FILE IS GENERATED.THIS FILE IS GENERATED. THIS FILE IS GENERATED.
@@ -1,4 +1,5 @@
1
+ export * from './rename-rule';
1
2
  export * from './magic-renamer';
2
3
  ;
3
4
  ({}); // @--end-of-file-for-module=magic-renamer lib/index.ts
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLGlCQUFpQixDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCAqIGZyb20gJy4vbWFnaWMtcmVuYW1lcic7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1tYWdpYy1yZW5hbWVyIGxpYi9pbmRleC50cyJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCAqIGZyb20gJy4vcmVuYW1lLXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tYWdpYy1yZW5hbWVyJztcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW1hZ2ljLXJlbmFtZXIgbGliL2luZGV4LnRzIl19
@@ -25,6 +25,9 @@ export class MagicRenamer {
25
25
  /* */
26
26
  /* */
27
27
  /* */
28
+ /* */
29
+ /* */
30
+ /* */
28
31
  ;
29
32
  ({}); // @--end-of-file-for-module=magic-renamer lib/magic-renamer.ts
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQTtBQUdELEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBSUwsTUFBTSxPQUFPLFlBQVk7Q0E4SnhCO0FBRUQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0osQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywrREFBK0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ21hZ2ljLXJlbmVtZXInLFxuICBMZXZlbC5fX05PVEhJTkdcbilcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IGNsYXNzIE1hZ2ljUmVuYW1lciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFJTCxNQUFNLE9BQU8sWUFBWTtDQStKeEI7QUFFRCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHSixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnbWFnaWMtcmVuZW1lcicsIExldmVsLl9fTk9USElORyk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5leHBvcnQgY2xhc3MgTWFnaWNSZW5hbWVyIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
@@ -0,0 +1,105 @@
1
+ import { Helpers } from 'tnp-helpers/browser';
2
+ import { _, UtilsString } from 'tnp-core/browser';
3
+ import { Log, Level } from 'ng2-logger/browser';
4
+ const log = Log.create('magic-renemer', Level.__NOTHING);
5
+ export class RenameRule {
6
+ static from(pArgs) {
7
+ pArgs = pArgs.replace(/\=\>/g, '->');
8
+ let args = pArgs.split(/(\'|\")(\ )+(\'|\")/).filter(f => !!f);
9
+ log.d('---- Rules ----');
10
+ args.forEach(a => {
11
+ log.d(a);
12
+ });
13
+ log.d('---------------');
14
+ return args
15
+ .filter(a => a.search('->') !== -1)
16
+ .map(a => {
17
+ const [from, to] = a.split('->');
18
+ if (!from || !to) {
19
+ Helpers.error(`Incorrect rule
20
+ "${from}" -> "${to}"
21
+ please follow pattern: 'test name -> my new name '`, false, true);
22
+ }
23
+ return new RenameRule(from.trim(), to.trim());
24
+ });
25
+ }
26
+ constructor(from, to) {
27
+ this.from = from;
28
+ this.to = to;
29
+ this.toString = () => {
30
+ return `${this.from} => ${this.to}`;
31
+ };
32
+ this.fromWhiteSpaceReplaced = from.trim().toLowerCase().replace(/\W/g, ' ');
33
+ this.toWhiteSpaceReplaced = to.trim().toLowerCase().replace(/\W/g, ' ');
34
+ }
35
+ applyTo(s) {
36
+ s = s.trim().toLowerCase().replace(/\W/g, '');
37
+ const res = s.search(this.from.replace(/\W/g, '')) !== -1;
38
+ return res;
39
+ }
40
+ includes(orgString) {
41
+ return !_.isUndefined(this.combinations.find(v => {
42
+ const [from, to] = v;
43
+ return orgString === to;
44
+ }));
45
+ }
46
+ get combinations() {
47
+ const thisTo = this.toWhiteSpaceReplaced;
48
+ const thisFrom = this.fromWhiteSpaceReplaced;
49
+ return [
50
+ [
51
+ UtilsString.kebabCaseNoSplitNumbers(thisFrom),
52
+ UtilsString.kebabCaseNoSplitNumbers(thisTo),
53
+ ], // my-entity => hello1-kitty
54
+ [_.kebabCase(thisFrom), _.kebabCase(thisTo)], // my-entity => hello-kitty
55
+ [_.camelCase(thisFrom), _.camelCase(thisTo)], // myEntity => helloKitty
56
+ [_.upperFirst(_.camelCase(thisFrom)), _.upperFirst(_.camelCase(thisTo))], // MyEntity => HelloKitty
57
+ [_.snakeCase(thisFrom), _.snakeCase(thisTo)], // my_entity => hello_kitty
58
+ [_.snakeCase(thisFrom).toUpperCase(), _.snakeCase(thisTo).toUpperCase()], // MY_ENTITY => HELLO_KITTY
59
+ [_.startCase(thisFrom), _.startCase(thisTo)], // My Entity => Hello Kitty
60
+ [_.upperCase(thisFrom), _.upperCase(thisTo)], // MY ENTITY => HELLO KITTY
61
+ [_.lowerCase(thisFrom), _.lowerCase(thisTo)], // my entity => hello kitty
62
+ [
63
+ _.camelCase(thisFrom).toLocaleLowerCase(),
64
+ _.camelCase(thisTo).toLocaleLowerCase(),
65
+ ], // myentity => hellokitty
66
+ ];
67
+ }
68
+ /**
69
+ * @param orgString input string
70
+ * @returns string with all possible combinations replaced
71
+ */
72
+ replaceInString(orgString) {
73
+ return this.replace({
74
+ orgString,
75
+ replaceallPossibliliteis: true,
76
+ });
77
+ }
78
+ /**
79
+ *
80
+ * @param orgString (file name OR file content)
81
+ * @param replaceallPossibliliteis when changin file notent (not name only)
82
+ * @returns
83
+ */
84
+ replace(options) {
85
+ let { fileName, orgString, replaceallPossibliliteis } = options;
86
+ replaceallPossibliliteis = !!replaceallPossibliliteis;
87
+ const combinations = this.combinations;
88
+ for (let index = 0; index < combinations.length; index++) {
89
+ const v = combinations[index];
90
+ let [from, to] = v;
91
+ if (orgString.search(from) !== -1) {
92
+ const regex = new RegExp(Helpers.escapeStringForRegEx(from));
93
+ log.i(`apply! "${regex.source}" to file ${fileName} => "${to}"`);
94
+ orgString = orgString.replace(new RegExp(Helpers.escapeStringForRegEx(from), 'g'), to);
95
+ if (!replaceallPossibliliteis) {
96
+ return orgString;
97
+ }
98
+ }
99
+ }
100
+ return orgString;
101
+ }
102
+ }
103
+ ;
104
+ ({}); // @--end-of-file-for-module=magic-renamer lib/rename-rule.ts
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9yZW5hbWUtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6RCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWE7UUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLENBQUM7UUFDM0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FB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QU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLE1BQU0sYUFBYSxRQUFRLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDakUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzNCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDbkQsRUFBRSxDQUNILENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQzlCLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZEQUE2RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWhlbHBlcnMvYnJvd3Nlcic7XG5pbXBvcnQgeyBfLCBVdGlsc1N0cmluZyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdtYWdpYy1yZW5lbWVyJywgTGV2ZWwuX19OT1RISU5HKTtcblxuZXhwb3J0IGNsYXNzIFJlbmFtZVJ1bGUge1xuICBzdGF0aWMgZnJvbShwQXJnczogc3RyaW5nKTogUmVuYW1lUnVsZVtdIHtcbiAgICBwQXJncyA9IHBBcmdzLnJlcGxhY2UoL1xcPVxcPi9nLCAnLT4nKTtcbiAgICBsZXQgYXJncyA9IHBBcmdzLnNwbGl0KC8oXFwnfFxcXCIpKFxcICkrKFxcJ3xcXFwiKS8pLmZpbHRlcihmID0+ICEhZikgYXMgc3RyaW5nW107XG4gICAgbG9nLmQoJy0tLS0gUnVsZXMgLS0tLScpO1xuICAgIGFyZ3MuZm9yRWFjaChhID0+IHtcbiAgICAgIGxvZy5kKGEpO1xuICAgIH0pO1xuICAgIGxvZy5kKCctLS0tLS0tLS0tLS0tLS0nKTtcbiAgICByZXR1cm4gYXJnc1xuICAgICAgLmZpbHRlcihhID0+IGEuc2VhcmNoKCctPicpICE9PSAtMSlcbiAgICAgIC5tYXAoYSA9PiB7XG4gICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBhLnNwbGl0KCctPicpO1xuICAgICAgICBpZiAoIWZyb20gfHwgIXRvKSB7XG4gICAgICAgICAgSGVscGVycy5lcnJvcihcbiAgICAgICAgICAgIGBJbmNvcnJlY3QgcnVsZVxuICAgICAgICBcIiR7ZnJvbX1cIiAtPiBcIiR7dG99XCJcbiAgICAgICAgcGxlYXNlIGZvbGxvdyBwYXR0ZXJuOiAndGVzdCBuYW1lIC0+IG15IG5ldyBuYW1lICdgLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSZW5hbWVSdWxlKGZyb20udHJpbSgpLCB0by50cmltKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVdoaXRlU3BhY2VSZXBsYWNlZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9XaGl0ZVNwYWNlUmVwbGFjZWQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGZyb206IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG86IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy5mcm9tV2hpdGVTcGFjZVJlcGxhY2VkID0gZnJvbS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFcvZywgJyAnKTtcbiAgICB0aGlzLnRvV2hpdGVTcGFjZVJlcGxhY2VkID0gdG8udHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxXL2csICcgJyk7XG4gIH1cblxuICBhcHBseVRvKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHMgPSBzLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcVy9nLCAnJyk7XG4gICAgY29uc3QgcmVzID0gcy5zZWFyY2godGhpcy5mcm9tLnJlcGxhY2UoL1xcVy9nLCAnJykpICE9PSAtMTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGAke3RoaXMuZnJvbX0gPT4gJHt0aGlzLnRvfWA7XG4gIH07XG5cbiAgaW5jbHVkZXMob3JnU3RyaW5nKSB7XG4gICAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKFxuICAgICAgdGhpcy5jb21iaW5hdGlvbnMuZmluZCh2ID0+IHtcbiAgICAgICAgY29uc3QgW2Zyb20sIHRvXSA9IHY7XG4gICAgICAgIHJldHVybiBvcmdTdHJpbmcgPT09IHRvO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb21iaW5hdGlvbnMoKSB7XG4gICAgY29uc3QgdGhpc1RvID0gdGhpcy50b1doaXRlU3BhY2VSZXBsYWNlZDtcbiAgICBjb25zdCB0aGlzRnJvbSA9IHRoaXMuZnJvbVdoaXRlU3BhY2VSZXBsYWNlZDtcbiAgICByZXR1cm4gW1xuXG4gICAgICBbXG4gICAgICAgIFV0aWxzU3RyaW5nLmtlYmFiQ2FzZU5vU3BsaXROdW1iZXJzKHRoaXNGcm9tKSxcbiAgICAgICAgVXRpbHNTdHJpbmcua2ViYWJDYXNlTm9TcGxpdE51bWJlcnModGhpc1RvKSxcbiAgICAgIF0sIC8vIG15LWVudGl0eSA9PiBoZWxsbzEta2l0dHlcbiAgICAgIFtfLmtlYmFiQ2FzZSh0aGlzRnJvbSksIF8ua2ViYWJDYXNlKHRoaXNUbyldLCAvLyBteS1lbnRpdHkgPT4gaGVsbG8ta2l0dHlcbiAgICAgIFtfLmNhbWVsQ2FzZSh0aGlzRnJvbSksIF8uY2FtZWxDYXNlKHRoaXNUbyldLCAvLyBteUVudGl0eSA9PiBoZWxsb0tpdHR5XG4gICAgICBbXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKHRoaXNGcm9tKSksIF8udXBwZXJGaXJzdChfLmNhbWVsQ2FzZSh0aGlzVG8pKV0sIC8vIE15RW50aXR5ID0+IEhlbGxvS2l0dHlcbiAgICAgIFtfLnNuYWtlQ2FzZSh0aGlzRnJvbSksIF8uc25ha2VDYXNlKHRoaXNUbyldLCAvLyBteV9lbnRpdHkgPT4gaGVsbG9fa2l0dHlcbiAgICAgIFtfLnNuYWtlQ2FzZSh0aGlzRnJvbSkudG9VcHBlckNhc2UoKSwgXy5zbmFrZUNhc2UodGhpc1RvKS50b1VwcGVyQ2FzZSgpXSwgLy8gTVlfRU5USVRZID0+IEhFTExPX0tJVFRZXG4gICAgICBbXy5zdGFydENhc2UodGhpc0Zyb20pLCBfLnN0YXJ0Q2FzZSh0aGlzVG8pXSwgLy8gTXkgRW50aXR5ID0+IEhlbGxvIEtpdHR5XG4gICAgICBbXy51cHBlckNhc2UodGhpc0Zyb20pLCBfLnVwcGVyQ2FzZSh0aGlzVG8pXSwgLy8gTVkgRU5USVRZID0+IEhFTExPIEtJVFRZXG4gICAgICBbXy5sb3dlckNhc2UodGhpc0Zyb20pLCBfLmxvd2VyQ2FzZSh0aGlzVG8pXSwgLy8gbXkgZW50aXR5ID0+IGhlbGxvIGtpdHR5XG4gICAgICBbXG4gICAgICAgIF8uY2FtZWxDYXNlKHRoaXNGcm9tKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgICAgICBfLmNhbWVsQ2FzZSh0aGlzVG8pLnRvTG9jYWxlTG93ZXJDYXNlKCksXG4gICAgICBdLCAvLyBteWVudGl0eSA9PiBoZWxsb2tpdHR5XG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3JnU3RyaW5nIGlucHV0IHN0cmluZ1xuICAgKiBAcmV0dXJucyBzdHJpbmcgd2l0aCBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIHJlcGxhY2VkXG4gICAqL1xuICByZXBsYWNlSW5TdHJpbmcob3JnU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlcGxhY2Uoe1xuICAgICAgb3JnU3RyaW5nLFxuICAgICAgcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvcmdTdHJpbmcgKGZpbGUgbmFtZSBPUiBmaWxlIGNvbnRlbnQpXG4gICAqIEBwYXJhbSByZXBsYWNlYWxsUG9zc2libGlsaXRlaXMgd2hlbiBjaGFuZ2luIGZpbGUgbm90ZW50IChub3QgbmFtZSBvbmx5KVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcmVwbGFjZShvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogZmlsZSBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICAgKi9cbiAgICBmaWxlTmFtZT86IHN0cmluZztcbiAgICBvcmdTdHJpbmc6IHN0cmluZztcbiAgICByZXBsYWNlYWxsUG9zc2libGlsaXRlaXM/OiBib29sZWFuO1xuICB9KSB7XG4gICAgbGV0IHsgZmlsZU5hbWUsIG9yZ1N0cmluZywgcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzIH0gPSBvcHRpb25zO1xuICAgIHJlcGxhY2VhbGxQb3NzaWJsaWxpdGVpcyA9ICEhcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzO1xuICAgIGNvbnN0IGNvbWJpbmF0aW9ucyA9IHRoaXMuY29tYmluYXRpb25zO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb21iaW5hdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB2ID0gY29tYmluYXRpb25zW2luZGV4XTtcbiAgICAgIGxldCBbZnJvbSwgdG9dID0gdjtcbiAgICAgIGlmIChvcmdTdHJpbmcuc2VhcmNoKGZyb20pICE9PSAtMSkge1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoSGVscGVycy5lc2NhcGVTdHJpbmdGb3JSZWdFeChmcm9tKSk7XG4gICAgICAgIGxvZy5pKGBhcHBseSEgXCIke3JlZ2V4LnNvdXJjZX1cIiB0byBmaWxlICR7ZmlsZU5hbWV9ID0+IFwiJHt0b31cImApO1xuICAgICAgICBvcmdTdHJpbmcgPSBvcmdTdHJpbmcucmVwbGFjZShcbiAgICAgICAgICBuZXcgUmVnRXhwKEhlbHBlcnMuZXNjYXBlU3RyaW5nRm9yUmVnRXgoZnJvbSksICdnJyksXG4gICAgICAgICAgdG8sXG4gICAgICAgICk7XG4gICAgICAgIGlmICghcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzKSB7XG4gICAgICAgICAgcmV0dXJuIG9yZ1N0cmluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JnU3RyaW5nO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1tYWdpYy1yZW5hbWVyIGxpYi9yZW5hbWUtcnVsZS50cyJdfQ==
@@ -1,5 +1,109 @@
1
+ import { Helpers } from 'tnp-helpers/browser';
2
+ import { _, UtilsString } from 'tnp-core/browser';
1
3
  import { Log, Level } from 'ng2-logger/browser';
2
4
 
5
+ const log$1 = Log.create('magic-renemer', Level.__NOTHING);
6
+ class RenameRule {
7
+ static from(pArgs) {
8
+ pArgs = pArgs.replace(/\=\>/g, '->');
9
+ let args = pArgs.split(/(\'|\")(\ )+(\'|\")/).filter(f => !!f);
10
+ log$1.d('---- Rules ----');
11
+ args.forEach(a => {
12
+ log$1.d(a);
13
+ });
14
+ log$1.d('---------------');
15
+ return args
16
+ .filter(a => a.search('->') !== -1)
17
+ .map(a => {
18
+ const [from, to] = a.split('->');
19
+ if (!from || !to) {
20
+ Helpers.error(`Incorrect rule
21
+ "${from}" -> "${to}"
22
+ please follow pattern: 'test name -> my new name '`, false, true);
23
+ }
24
+ return new RenameRule(from.trim(), to.trim());
25
+ });
26
+ }
27
+ constructor(from, to) {
28
+ this.from = from;
29
+ this.to = to;
30
+ this.toString = () => {
31
+ return `${this.from} => ${this.to}`;
32
+ };
33
+ this.fromWhiteSpaceReplaced = from.trim().toLowerCase().replace(/\W/g, ' ');
34
+ this.toWhiteSpaceReplaced = to.trim().toLowerCase().replace(/\W/g, ' ');
35
+ }
36
+ applyTo(s) {
37
+ s = s.trim().toLowerCase().replace(/\W/g, '');
38
+ const res = s.search(this.from.replace(/\W/g, '')) !== -1;
39
+ return res;
40
+ }
41
+ includes(orgString) {
42
+ return !_.isUndefined(this.combinations.find(v => {
43
+ const [from, to] = v;
44
+ return orgString === to;
45
+ }));
46
+ }
47
+ get combinations() {
48
+ const thisTo = this.toWhiteSpaceReplaced;
49
+ const thisFrom = this.fromWhiteSpaceReplaced;
50
+ return [
51
+ [
52
+ UtilsString.kebabCaseNoSplitNumbers(thisFrom),
53
+ UtilsString.kebabCaseNoSplitNumbers(thisTo),
54
+ ], // my-entity => hello1-kitty
55
+ [_.kebabCase(thisFrom), _.kebabCase(thisTo)], // my-entity => hello-kitty
56
+ [_.camelCase(thisFrom), _.camelCase(thisTo)], // myEntity => helloKitty
57
+ [_.upperFirst(_.camelCase(thisFrom)), _.upperFirst(_.camelCase(thisTo))], // MyEntity => HelloKitty
58
+ [_.snakeCase(thisFrom), _.snakeCase(thisTo)], // my_entity => hello_kitty
59
+ [_.snakeCase(thisFrom).toUpperCase(), _.snakeCase(thisTo).toUpperCase()], // MY_ENTITY => HELLO_KITTY
60
+ [_.startCase(thisFrom), _.startCase(thisTo)], // My Entity => Hello Kitty
61
+ [_.upperCase(thisFrom), _.upperCase(thisTo)], // MY ENTITY => HELLO KITTY
62
+ [_.lowerCase(thisFrom), _.lowerCase(thisTo)], // my entity => hello kitty
63
+ [
64
+ _.camelCase(thisFrom).toLocaleLowerCase(),
65
+ _.camelCase(thisTo).toLocaleLowerCase(),
66
+ ], // myentity => hellokitty
67
+ ];
68
+ }
69
+ /**
70
+ * @param orgString input string
71
+ * @returns string with all possible combinations replaced
72
+ */
73
+ replaceInString(orgString) {
74
+ return this.replace({
75
+ orgString,
76
+ replaceallPossibliliteis: true,
77
+ });
78
+ }
79
+ /**
80
+ *
81
+ * @param orgString (file name OR file content)
82
+ * @param replaceallPossibliliteis when changin file notent (not name only)
83
+ * @returns
84
+ */
85
+ replace(options) {
86
+ let { fileName, orgString, replaceallPossibliliteis } = options;
87
+ replaceallPossibliliteis = !!replaceallPossibliliteis;
88
+ const combinations = this.combinations;
89
+ for (let index = 0; index < combinations.length; index++) {
90
+ const v = combinations[index];
91
+ let [from, to] = v;
92
+ if (orgString.search(from) !== -1) {
93
+ const regex = new RegExp(Helpers.escapeStringForRegEx(from));
94
+ log$1.i(`apply! "${regex.source}" to file ${fileName} => "${to}"`);
95
+ orgString = orgString.replace(new RegExp(Helpers.escapeStringForRegEx(from), 'g'), to);
96
+ if (!replaceallPossibliliteis) {
97
+ return orgString;
98
+ }
99
+ }
100
+ }
101
+ return orgString;
102
+ }
103
+ }
104
+ ;
105
+ ({}); // @--end-of-file-for-module=magic-renamer lib/rename-rule.ts
106
+
3
107
  const log = Log.create('magic-renemer', Level.__NOTHING);
4
108
  /* */
5
109
  /* */
@@ -26,9 +130,12 @@ class MagicRenamer {
26
130
  /* */
27
131
  /* */
28
132
  /* */
133
+ /* */
134
+ /* */
135
+ /* */
29
136
  ;
30
137
  ({}); // @--end-of-file-for-module=magic-renamer lib/magic-renamer.ts
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQTtBQUdELEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBSUwsTUFBTSxPQUFPLFlBQVk7Q0E4SnhCO0FBRUQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0osQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywrREFBK0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ21hZ2ljLXJlbmVtZXInLFxuICBMZXZlbC5fX05PVEhJTkdcbilcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IGNsYXNzIE1hZ2ljUmVuYW1lciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFJTCxNQUFNLE9BQU8sWUFBWTtDQStKeEI7QUFFRCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHSixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnbWFnaWMtcmVuZW1lcicsIExldmVsLl9fTk9USElORyk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5leHBvcnQgY2xhc3MgTWFnaWNSZW5hbWVyIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
32
139
 
33
140
  ;
34
141
  ({}); // @--end-of-file-for-module=magic-renamer lib/index.ts
@@ -37,5 +144,5 @@ class MagicRenamer {
37
144
  * Generated bundle index. Do not edit.
38
145
  */
39
146
 
40
- export { MagicRenamer };
147
+ export { MagicRenamer, RenameRule };
41
148
  //# sourceMappingURL=magic-renamer.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magic-renamer.mjs","sources":["../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/lib/magic-renamer.ts","../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/lib/index.ts","../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/magic-renamer.ts"],"sourcesContent":["\n\n\nimport { Log, Level } from 'ng2-logger/browser';\nconst log = Log.create('magic-renemer',\n Level.__NOTHING\n)\n\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\nexport class MagicRenamer {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n}\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n ;({}); // @--end-of-file-for-module=magic-renamer lib/magic-renamer.ts","\n\nexport * from './magic-renamer';\n\n ;({}); // @--end-of-file-for-module=magic-renamer lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAIA,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,EACpC,KAAK,CAAC,SAAS,CAChB,CAAA;AAGD;AACA;AACA;AACA;AACA;MAIa,YAAY,CAAA;AA8JxB,CAAA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGC,CAAC;AAAA,CAAC,EAAE,EAAE;;;ACjMN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACJP;;AAEG;;;;"}
1
+ {"version":3,"file":"magic-renamer.mjs","sources":["../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/lib/rename-rule.ts","../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/lib/magic-renamer.ts","../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/lib/index.ts","../../../tmp-libs-for-dist/magic-renamer/projects/magic-renamer/src/magic-renamer.ts"],"sourcesContent":["\n\nimport { Helpers } from 'tnp-helpers/browser';\nimport { _, UtilsString } from 'tnp-core/browser';\nimport { Log, Level } from 'ng2-logger/browser';\nconst log = Log.create('magic-renemer', Level.__NOTHING);\n\nexport class RenameRule {\n static from(pArgs: string): RenameRule[] {\n pArgs = pArgs.replace(/\\=\\>/g, '->');\n let args = pArgs.split(/(\\'|\\\")(\\ )+(\\'|\\\")/).filter(f => !!f) as string[];\n log.d('---- Rules ----');\n args.forEach(a => {\n log.d(a);\n });\n log.d('---------------');\n return args\n .filter(a => a.search('->') !== -1)\n .map(a => {\n const [from, to] = a.split('->');\n if (!from || !to) {\n Helpers.error(\n `Incorrect rule\n \"${from}\" -> \"${to}\"\n please follow pattern: 'test name -> my new name '`,\n false,\n true,\n );\n }\n return new RenameRule(from.trim(), to.trim());\n });\n }\n\n public readonly fromWhiteSpaceReplaced: string;\n public readonly toWhiteSpaceReplaced: string;\n constructor(\n public readonly from: string,\n public readonly to: string,\n ) {\n this.fromWhiteSpaceReplaced = from.trim().toLowerCase().replace(/\\W/g, ' ');\n this.toWhiteSpaceReplaced = to.trim().toLowerCase().replace(/\\W/g, ' ');\n }\n\n applyTo(s: string): boolean {\n s = s.trim().toLowerCase().replace(/\\W/g, '');\n const res = s.search(this.from.replace(/\\W/g, '')) !== -1;\n return res;\n }\n\n toString = () => {\n return `${this.from} => ${this.to}`;\n };\n\n includes(orgString) {\n return !_.isUndefined(\n this.combinations.find(v => {\n const [from, to] = v;\n return orgString === to;\n }),\n );\n }\n\n get combinations() {\n const thisTo = this.toWhiteSpaceReplaced;\n const thisFrom = this.fromWhiteSpaceReplaced;\n return [\n\n [\n UtilsString.kebabCaseNoSplitNumbers(thisFrom),\n UtilsString.kebabCaseNoSplitNumbers(thisTo),\n ], // my-entity => hello1-kitty\n [_.kebabCase(thisFrom), _.kebabCase(thisTo)], // my-entity => hello-kitty\n [_.camelCase(thisFrom), _.camelCase(thisTo)], // myEntity => helloKitty\n [_.upperFirst(_.camelCase(thisFrom)), _.upperFirst(_.camelCase(thisTo))], // MyEntity => HelloKitty\n [_.snakeCase(thisFrom), _.snakeCase(thisTo)], // my_entity => hello_kitty\n [_.snakeCase(thisFrom).toUpperCase(), _.snakeCase(thisTo).toUpperCase()], // MY_ENTITY => HELLO_KITTY\n [_.startCase(thisFrom), _.startCase(thisTo)], // My Entity => Hello Kitty\n [_.upperCase(thisFrom), _.upperCase(thisTo)], // MY ENTITY => HELLO KITTY\n [_.lowerCase(thisFrom), _.lowerCase(thisTo)], // my entity => hello kitty\n [\n _.camelCase(thisFrom).toLocaleLowerCase(),\n _.camelCase(thisTo).toLocaleLowerCase(),\n ], // myentity => hellokitty\n ];\n }\n\n /**\n * @param orgString input string\n * @returns string with all possible combinations replaced\n */\n replaceInString(orgString: string): string {\n return this.replace({\n orgString,\n replaceallPossibliliteis: true,\n });\n }\n\n /**\n *\n * @param orgString (file name OR file content)\n * @param replaceallPossibliliteis when changin file notent (not name only)\n * @returns\n */\n replace(options: {\n /**\n * file name for debugging\n */\n fileName?: string;\n orgString: string;\n replaceallPossibliliteis?: boolean;\n }) {\n let { fileName, orgString, replaceallPossibliliteis } = options;\n replaceallPossibliliteis = !!replaceallPossibliliteis;\n const combinations = this.combinations;\n for (let index = 0; index < combinations.length; index++) {\n const v = combinations[index];\n let [from, to] = v;\n if (orgString.search(from) !== -1) {\n const regex = new RegExp(Helpers.escapeStringForRegEx(from));\n log.i(`apply! \"${regex.source}\" to file ${fileName} => \"${to}\"`);\n orgString = orgString.replace(\n new RegExp(Helpers.escapeStringForRegEx(from), 'g'),\n to,\n );\n if (!replaceallPossibliliteis) {\n return orgString;\n }\n }\n }\n return orgString;\n }\n}\n\n ;({}); // @--end-of-file-for-module=magic-renamer lib/rename-rule.ts","\n\n\nimport { Log, Level } from 'ng2-logger/browser';\nconst log = Log.create('magic-renemer', Level.__NOTHING);\n\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n\nexport class MagicRenamer {\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n}\n\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n ;({}); // @--end-of-file-for-module=magic-renamer lib/magic-renamer.ts","\n\nexport * from './rename-rule';\nexport * from './magic-renamer';\n\n ;({}); // @--end-of-file-for-module=magic-renamer lib/index.ts","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["log"],"mappings":";;;;AAKA,MAAMA,KAAG,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;MAE5C,UAAU,CAAA;IACrB,OAAO,IAAI,CAAC,KAAa,EAAA;QACvB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAa,CAAC;AAC3E,QAAAA,KAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,IAAG;AACf,YAAAA,KAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AACH,QAAAA,KAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACzB,QAAA,OAAO,IAAI;AACR,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAClC,GAAG,CAAC,CAAC,IAAG;AACP,YAAA,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjC,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE;gBAChB,OAAO,CAAC,KAAK,CACX,CAAA;AACD,SAAA,EAAA,IAAI,SAAS,EAAE,CAAA;AACiC,0DAAA,CAAA,EAC/C,KAAK,EACL,IAAI,CACL,CAAC;aACH;AACD,YAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;AAChD,SAAC,CAAC,CAAC;KACN;IAID,WACkB,CAAA,IAAY,EACZ,EAAU,EAAA;QADV,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAY5B,IAAQ,CAAA,QAAA,GAAG,MAAK;YACd,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAA,CAAE,CAAC;AACtC,SAAC,CAAC;AAZA,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KACzE;AAED,IAAA,OAAO,CAAC,CAAS,EAAA;AACf,QAAA,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,QAAA,OAAO,GAAG,CAAC;KACZ;AAMD,IAAA,QAAQ,CAAC,SAAS,EAAA;AAChB,QAAA,OAAO,CAAC,CAAC,CAAC,WAAW,CACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAG;AACzB,YAAA,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,SAAS,KAAK,EAAE,CAAC;SACzB,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC7C,OAAO;AAEL,YAAA;AACE,gBAAA,WAAW,CAAC,uBAAuB,CAAC,QAAQ,CAAC;AAC7C,gBAAA,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC;AAC5C,aAAA;AACD,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACxE,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA;AACE,gBAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE;AACzC,gBAAA,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;AACxC,aAAA;SACF,CAAC;KACH;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,SAAiB,EAAA;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,SAAS;AACT,YAAA,wBAAwB,EAAE,IAAI;AAC/B,SAAA,CAAC,CAAC;KACJ;AAED;;;;;AAKG;AACH,IAAA,OAAO,CAAC,OAOP,EAAA;QACC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC;AAChE,QAAA,wBAAwB,GAAG,CAAC,CAAC,wBAAwB,CAAC;AACtD,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACvC,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACxD,YAAA,MAAM,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACnB,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;AACjC,gBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7D,gBAAAA,KAAG,CAAC,CAAC,CAAC,CAAA,QAAA,EAAW,KAAK,CAAC,MAAM,CAAA,UAAA,EAAa,QAAQ,CAAA,KAAA,EAAQ,EAAE,CAAA,CAAA,CAAG,CAAC,CAAC;gBACjE,SAAS,GAAG,SAAS,CAAC,OAAO,CAC3B,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EACnD,EAAE,CACH,CAAC;gBACF,IAAI,CAAC,wBAAwB,EAAE;AAC7B,oBAAA,OAAO,SAAS,CAAC;iBAClB;aACF;SACF;AACD,QAAA,OAAO,SAAS,CAAC;KAClB;AACF,CAAA;AAEA,CAAC;AAAA,CAAC,EAAE,EAAE;;ACjIP,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AAEzD;AACA;AACA;AACA;AACA;MAIa,YAAY,CAAA;AA+JxB,CAAA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGC,CAAC;AAAA,CAAC,EAAE,EAAE;;;ACjMN,CAAC;AAAA,CAAC,EAAE,EAAE;;ACLP;;AAEG;;;;"}
@@ -1,2 +1,3 @@
1
1
  // @ts-nocheck
2
+ export * from './rename-rule';
2
3
  export * from './magic-renamer';
@@ -0,0 +1,32 @@
1
+ // @ts-nocheck
2
+ export declare class RenameRule {
3
+ readonly from: string;
4
+ readonly to: string;
5
+ static from(pArgs: string): RenameRule[];
6
+ readonly fromWhiteSpaceReplaced: string;
7
+ readonly toWhiteSpaceReplaced: string;
8
+ constructor(from: string, to: string);
9
+ applyTo(s: string): boolean;
10
+ toString: () => string;
11
+ includes(orgString: any): boolean;
12
+ get combinations(): string[][];
13
+ /**
14
+ * @param orgString input string
15
+ * @returns string with all possible combinations replaced
16
+ */
17
+ replaceInString(orgString: string): string;
18
+ /**
19
+ *
20
+ * @param orgString (file name OR file content)
21
+ * @param replaceallPossibliliteis when changin file notent (not name only)
22
+ * @returns
23
+ */
24
+ replace(options: {
25
+ /**
26
+ * file name for debugging
27
+ */
28
+ fileName?: string;
29
+ orgString: string;
30
+ replaceallPossibliliteis?: boolean;
31
+ }): string;
32
+ }
@@ -1,4 +1,5 @@
1
+ export * from './rename-rule';
1
2
  export * from './magic-renamer';
2
3
  ;
3
4
  ({}); // @--end-of-file-for-module=magic-renamer lib/index.ts
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLGlCQUFpQixDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCAqIGZyb20gJy4vbWFnaWMtcmVuYW1lcic7XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1tYWdpYy1yZW5hbWVyIGxpYi9pbmRleC50cyJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBRS9CLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsdURBQXVEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmV4cG9ydCAqIGZyb20gJy4vcmVuYW1lLXJ1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9tYWdpYy1yZW5hbWVyJztcblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPW1hZ2ljLXJlbmFtZXIgbGliL2luZGV4LnRzIl19
@@ -25,6 +25,9 @@ export class MagicRenamer {
25
25
  /* */
26
26
  /* */
27
27
  /* */
28
+ /* */
29
+ /* */
30
+ /* */
28
31
  ;
29
32
  ({}); // @--end-of-file-for-module=magic-renamer lib/magic-renamer.ts
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FDaEIsQ0FBQTtBQUdELEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBSUwsTUFBTSxPQUFPLFlBQVk7Q0E4SnhCO0FBRUQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0osQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywrREFBK0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBMb2csIExldmVsIH0gZnJvbSAnbmcyLWxvZ2dlci9icm93c2VyJztcbmNvbnN0IGxvZyA9IExvZy5jcmVhdGUoJ21hZ2ljLXJlbmVtZXInLFxuICBMZXZlbC5fX05PVEhJTkdcbilcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuZXhwb3J0IGNsYXNzIE1hZ2ljUmVuYW1lciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnaWMtcmVuYW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0L21hZ2ljLXJlbmFtZXIvcHJvamVjdHMvbWFnaWMtcmVuYW1lci9zcmMvbGliL21hZ2ljLXJlbmFtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFJTCxNQUFNLE9BQU8sWUFBWTtDQStKeEI7QUFFRCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFHSixDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtEQUErRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7IExvZywgTGV2ZWwgfSBmcm9tICduZzItbG9nZ2VyL2Jyb3dzZXInO1xuY29uc3QgbG9nID0gTG9nLmNyZWF0ZSgnbWFnaWMtcmVuZW1lcicsIExldmVsLl9fTk9USElORyk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5leHBvcnQgY2xhc3MgTWFnaWNSZW5hbWVyIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxufVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9bWFnaWMtcmVuYW1lciBsaWIvbWFnaWMtcmVuYW1lci50cyJdfQ==
@@ -0,0 +1,105 @@
1
+ import { Helpers } from 'tnp-helpers/browser';
2
+ import { _, UtilsString } from 'tnp-core/browser';
3
+ import { Log, Level } from 'ng2-logger/browser';
4
+ const log = Log.create('magic-renemer', Level.__NOTHING);
5
+ export class RenameRule {
6
+ static from(pArgs) {
7
+ pArgs = pArgs.replace(/\=\>/g, '->');
8
+ let args = pArgs.split(/(\'|\")(\ )+(\'|\")/).filter(f => !!f);
9
+ log.d('---- Rules ----');
10
+ args.forEach(a => {
11
+ log.d(a);
12
+ });
13
+ log.d('---------------');
14
+ return args
15
+ .filter(a => a.search('->') !== -1)
16
+ .map(a => {
17
+ const [from, to] = a.split('->');
18
+ if (!from || !to) {
19
+ Helpers.error(`Incorrect rule
20
+ "${from}" -> "${to}"
21
+ please follow pattern: 'test name -> my new name '`, false, true);
22
+ }
23
+ return new RenameRule(from.trim(), to.trim());
24
+ });
25
+ }
26
+ constructor(from, to) {
27
+ this.from = from;
28
+ this.to = to;
29
+ this.toString = () => {
30
+ return `${this.from} => ${this.to}`;
31
+ };
32
+ this.fromWhiteSpaceReplaced = from.trim().toLowerCase().replace(/\W/g, ' ');
33
+ this.toWhiteSpaceReplaced = to.trim().toLowerCase().replace(/\W/g, ' ');
34
+ }
35
+ applyTo(s) {
36
+ s = s.trim().toLowerCase().replace(/\W/g, '');
37
+ const res = s.search(this.from.replace(/\W/g, '')) !== -1;
38
+ return res;
39
+ }
40
+ includes(orgString) {
41
+ return !_.isUndefined(this.combinations.find(v => {
42
+ const [from, to] = v;
43
+ return orgString === to;
44
+ }));
45
+ }
46
+ get combinations() {
47
+ const thisTo = this.toWhiteSpaceReplaced;
48
+ const thisFrom = this.fromWhiteSpaceReplaced;
49
+ return [
50
+ [
51
+ UtilsString.kebabCaseNoSplitNumbers(thisFrom),
52
+ UtilsString.kebabCaseNoSplitNumbers(thisTo),
53
+ ], // my-entity => hello1-kitty
54
+ [_.kebabCase(thisFrom), _.kebabCase(thisTo)], // my-entity => hello-kitty
55
+ [_.camelCase(thisFrom), _.camelCase(thisTo)], // myEntity => helloKitty
56
+ [_.upperFirst(_.camelCase(thisFrom)), _.upperFirst(_.camelCase(thisTo))], // MyEntity => HelloKitty
57
+ [_.snakeCase(thisFrom), _.snakeCase(thisTo)], // my_entity => hello_kitty
58
+ [_.snakeCase(thisFrom).toUpperCase(), _.snakeCase(thisTo).toUpperCase()], // MY_ENTITY => HELLO_KITTY
59
+ [_.startCase(thisFrom), _.startCase(thisTo)], // My Entity => Hello Kitty
60
+ [_.upperCase(thisFrom), _.upperCase(thisTo)], // MY ENTITY => HELLO KITTY
61
+ [_.lowerCase(thisFrom), _.lowerCase(thisTo)], // my entity => hello kitty
62
+ [
63
+ _.camelCase(thisFrom).toLocaleLowerCase(),
64
+ _.camelCase(thisTo).toLocaleLowerCase(),
65
+ ], // myentity => hellokitty
66
+ ];
67
+ }
68
+ /**
69
+ * @param orgString input string
70
+ * @returns string with all possible combinations replaced
71
+ */
72
+ replaceInString(orgString) {
73
+ return this.replace({
74
+ orgString,
75
+ replaceallPossibliliteis: true,
76
+ });
77
+ }
78
+ /**
79
+ *
80
+ * @param orgString (file name OR file content)
81
+ * @param replaceallPossibliliteis when changin file notent (not name only)
82
+ * @returns
83
+ */
84
+ replace(options) {
85
+ let { fileName, orgString, replaceallPossibliliteis } = options;
86
+ replaceallPossibliliteis = !!replaceallPossibliliteis;
87
+ const combinations = this.combinations;
88
+ for (let index = 0; index < combinations.length; index++) {
89
+ const v = combinations[index];
90
+ let [from, to] = v;
91
+ if (orgString.search(from) !== -1) {
92
+ const regex = new RegExp(Helpers.escapeStringForRegEx(from));
93
+ log.i(`apply! "${regex.source}" to file ${fileName} => "${to}"`);
94
+ orgString = orgString.replace(new RegExp(Helpers.escapeStringForRegEx(from), 'g'), to);
95
+ if (!replaceallPossibliliteis) {
96
+ return orgString;
97
+ }
98
+ }
99
+ }
100
+ return orgString;
101
+ }
102
+ }
103
+ ;
104
+ ({}); // @--end-of-file-for-module=magic-renamer lib/rename-rule.ts
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuYW1lLXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC9tYWdpYy1yZW5hbWVyL3Byb2plY3RzL21hZ2ljLXJlbmFtZXIvc3JjL2xpYi9yZW5hbWUtcnVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV6RCxNQUFNLE9BQU8sVUFBVTtJQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQWE7UUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFhLENBQUM7UUFDM0UsR0FBRyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekIsT0FBTyxJQUFJO2FBQ1IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FB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QU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN6RCxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM3RCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLE1BQU0sYUFBYSxRQUFRLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDakUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQzNCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDbkQsRUFBRSxDQUNILENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7b0JBQzlCLE9BQU8sU0FBUyxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDZEQUE2RCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAndG5wLWhlbHBlcnMvYnJvd3Nlcic7XG5pbXBvcnQgeyBfLCBVdGlsc1N0cmluZyB9IGZyb20gJ3RucC1jb3JlL2Jyb3dzZXInO1xuaW1wb3J0IHsgTG9nLCBMZXZlbCB9IGZyb20gJ25nMi1sb2dnZXIvYnJvd3Nlcic7XG5jb25zdCBsb2cgPSBMb2cuY3JlYXRlKCdtYWdpYy1yZW5lbWVyJywgTGV2ZWwuX19OT1RISU5HKTtcblxuZXhwb3J0IGNsYXNzIFJlbmFtZVJ1bGUge1xuICBzdGF0aWMgZnJvbShwQXJnczogc3RyaW5nKTogUmVuYW1lUnVsZVtdIHtcbiAgICBwQXJncyA9IHBBcmdzLnJlcGxhY2UoL1xcPVxcPi9nLCAnLT4nKTtcbiAgICBsZXQgYXJncyA9IHBBcmdzLnNwbGl0KC8oXFwnfFxcXCIpKFxcICkrKFxcJ3xcXFwiKS8pLmZpbHRlcihmID0+ICEhZikgYXMgc3RyaW5nW107XG4gICAgbG9nLmQoJy0tLS0gUnVsZXMgLS0tLScpO1xuICAgIGFyZ3MuZm9yRWFjaChhID0+IHtcbiAgICAgIGxvZy5kKGEpO1xuICAgIH0pO1xuICAgIGxvZy5kKCctLS0tLS0tLS0tLS0tLS0nKTtcbiAgICByZXR1cm4gYXJnc1xuICAgICAgLmZpbHRlcihhID0+IGEuc2VhcmNoKCctPicpICE9PSAtMSlcbiAgICAgIC5tYXAoYSA9PiB7XG4gICAgICAgIGNvbnN0IFtmcm9tLCB0b10gPSBhLnNwbGl0KCctPicpO1xuICAgICAgICBpZiAoIWZyb20gfHwgIXRvKSB7XG4gICAgICAgICAgSGVscGVycy5lcnJvcihcbiAgICAgICAgICAgIGBJbmNvcnJlY3QgcnVsZVxuICAgICAgICBcIiR7ZnJvbX1cIiAtPiBcIiR7dG99XCJcbiAgICAgICAgcGxlYXNlIGZvbGxvdyBwYXR0ZXJuOiAndGVzdCBuYW1lIC0+IG15IG5ldyBuYW1lICdgLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBSZW5hbWVSdWxlKGZyb20udHJpbSgpLCB0by50cmltKCkpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVdoaXRlU3BhY2VSZXBsYWNlZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9XaGl0ZVNwYWNlUmVwbGFjZWQ6IHN0cmluZztcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGZyb206IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdG86IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy5mcm9tV2hpdGVTcGFjZVJlcGxhY2VkID0gZnJvbS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXFcvZywgJyAnKTtcbiAgICB0aGlzLnRvV2hpdGVTcGFjZVJlcGxhY2VkID0gdG8udHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxXL2csICcgJyk7XG4gIH1cblxuICBhcHBseVRvKHM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHMgPSBzLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xcVy9nLCAnJyk7XG4gICAgY29uc3QgcmVzID0gcy5zZWFyY2godGhpcy5mcm9tLnJlcGxhY2UoL1xcVy9nLCAnJykpICE9PSAtMTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgdG9TdHJpbmcgPSAoKSA9PiB7XG4gICAgcmV0dXJuIGAke3RoaXMuZnJvbX0gPT4gJHt0aGlzLnRvfWA7XG4gIH07XG5cbiAgaW5jbHVkZXMob3JnU3RyaW5nKSB7XG4gICAgcmV0dXJuICFfLmlzVW5kZWZpbmVkKFxuICAgICAgdGhpcy5jb21iaW5hdGlvbnMuZmluZCh2ID0+IHtcbiAgICAgICAgY29uc3QgW2Zyb20sIHRvXSA9IHY7XG4gICAgICAgIHJldHVybiBvcmdTdHJpbmcgPT09IHRvO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBjb21iaW5hdGlvbnMoKSB7XG4gICAgY29uc3QgdGhpc1RvID0gdGhpcy50b1doaXRlU3BhY2VSZXBsYWNlZDtcbiAgICBjb25zdCB0aGlzRnJvbSA9IHRoaXMuZnJvbVdoaXRlU3BhY2VSZXBsYWNlZDtcbiAgICByZXR1cm4gW1xuXG4gICAgICBbXG4gICAgICAgIFV0aWxzU3RyaW5nLmtlYmFiQ2FzZU5vU3BsaXROdW1iZXJzKHRoaXNGcm9tKSxcbiAgICAgICAgVXRpbHNTdHJpbmcua2ViYWJDYXNlTm9TcGxpdE51bWJlcnModGhpc1RvKSxcbiAgICAgIF0sIC8vIG15LWVudGl0eSA9PiBoZWxsbzEta2l0dHlcbiAgICAgIFtfLmtlYmFiQ2FzZSh0aGlzRnJvbSksIF8ua2ViYWJDYXNlKHRoaXNUbyldLCAvLyBteS1lbnRpdHkgPT4gaGVsbG8ta2l0dHlcbiAgICAgIFtfLmNhbWVsQ2FzZSh0aGlzRnJvbSksIF8uY2FtZWxDYXNlKHRoaXNUbyldLCAvLyBteUVudGl0eSA9PiBoZWxsb0tpdHR5XG4gICAgICBbXy51cHBlckZpcnN0KF8uY2FtZWxDYXNlKHRoaXNGcm9tKSksIF8udXBwZXJGaXJzdChfLmNhbWVsQ2FzZSh0aGlzVG8pKV0sIC8vIE15RW50aXR5ID0+IEhlbGxvS2l0dHlcbiAgICAgIFtfLnNuYWtlQ2FzZSh0aGlzRnJvbSksIF8uc25ha2VDYXNlKHRoaXNUbyldLCAvLyBteV9lbnRpdHkgPT4gaGVsbG9fa2l0dHlcbiAgICAgIFtfLnNuYWtlQ2FzZSh0aGlzRnJvbSkudG9VcHBlckNhc2UoKSwgXy5zbmFrZUNhc2UodGhpc1RvKS50b1VwcGVyQ2FzZSgpXSwgLy8gTVlfRU5USVRZID0+IEhFTExPX0tJVFRZXG4gICAgICBbXy5zdGFydENhc2UodGhpc0Zyb20pLCBfLnN0YXJ0Q2FzZSh0aGlzVG8pXSwgLy8gTXkgRW50aXR5ID0+IEhlbGxvIEtpdHR5XG4gICAgICBbXy51cHBlckNhc2UodGhpc0Zyb20pLCBfLnVwcGVyQ2FzZSh0aGlzVG8pXSwgLy8gTVkgRU5USVRZID0+IEhFTExPIEtJVFRZXG4gICAgICBbXy5sb3dlckNhc2UodGhpc0Zyb20pLCBfLmxvd2VyQ2FzZSh0aGlzVG8pXSwgLy8gbXkgZW50aXR5ID0+IGhlbGxvIGtpdHR5XG4gICAgICBbXG4gICAgICAgIF8uY2FtZWxDYXNlKHRoaXNGcm9tKS50b0xvY2FsZUxvd2VyQ2FzZSgpLFxuICAgICAgICBfLmNhbWVsQ2FzZSh0aGlzVG8pLnRvTG9jYWxlTG93ZXJDYXNlKCksXG4gICAgICBdLCAvLyBteWVudGl0eSA9PiBoZWxsb2tpdHR5XG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb3JnU3RyaW5nIGlucHV0IHN0cmluZ1xuICAgKiBAcmV0dXJucyBzdHJpbmcgd2l0aCBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIHJlcGxhY2VkXG4gICAqL1xuICByZXBsYWNlSW5TdHJpbmcob3JnU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlcGxhY2Uoe1xuICAgICAgb3JnU3RyaW5nLFxuICAgICAgcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvcmdTdHJpbmcgKGZpbGUgbmFtZSBPUiBmaWxlIGNvbnRlbnQpXG4gICAqIEBwYXJhbSByZXBsYWNlYWxsUG9zc2libGlsaXRlaXMgd2hlbiBjaGFuZ2luIGZpbGUgbm90ZW50IChub3QgbmFtZSBvbmx5KVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcmVwbGFjZShvcHRpb25zOiB7XG4gICAgLyoqXG4gICAgICogZmlsZSBuYW1lIGZvciBkZWJ1Z2dpbmdcbiAgICAgKi9cbiAgICBmaWxlTmFtZT86IHN0cmluZztcbiAgICBvcmdTdHJpbmc6IHN0cmluZztcbiAgICByZXBsYWNlYWxsUG9zc2libGlsaXRlaXM/OiBib29sZWFuO1xuICB9KSB7XG4gICAgbGV0IHsgZmlsZU5hbWUsIG9yZ1N0cmluZywgcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzIH0gPSBvcHRpb25zO1xuICAgIHJlcGxhY2VhbGxQb3NzaWJsaWxpdGVpcyA9ICEhcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzO1xuICAgIGNvbnN0IGNvbWJpbmF0aW9ucyA9IHRoaXMuY29tYmluYXRpb25zO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb21iaW5hdGlvbnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCB2ID0gY29tYmluYXRpb25zW2luZGV4XTtcbiAgICAgIGxldCBbZnJvbSwgdG9dID0gdjtcbiAgICAgIGlmIChvcmdTdHJpbmcuc2VhcmNoKGZyb20pICE9PSAtMSkge1xuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoSGVscGVycy5lc2NhcGVTdHJpbmdGb3JSZWdFeChmcm9tKSk7XG4gICAgICAgIGxvZy5pKGBhcHBseSEgXCIke3JlZ2V4LnNvdXJjZX1cIiB0byBmaWxlICR7ZmlsZU5hbWV9ID0+IFwiJHt0b31cImApO1xuICAgICAgICBvcmdTdHJpbmcgPSBvcmdTdHJpbmcucmVwbGFjZShcbiAgICAgICAgICBuZXcgUmVnRXhwKEhlbHBlcnMuZXNjYXBlU3RyaW5nRm9yUmVnRXgoZnJvbSksICdnJyksXG4gICAgICAgICAgdG8sXG4gICAgICAgICk7XG4gICAgICAgIGlmICghcmVwbGFjZWFsbFBvc3NpYmxpbGl0ZWlzKSB7XG4gICAgICAgICAgcmV0dXJuIG9yZ1N0cmluZztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3JnU3RyaW5nO1xuICB9XG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT1tYWdpYy1yZW5hbWVyIGxpYi9yZW5hbWUtcnVsZS50cyJdfQ==