mcdev 3.1.1 → 4.0.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.
Files changed (135) hide show
  1. package/.eslintrc.json +67 -7
  2. package/.github/ISSUE_TEMPLATE/bug.yml +5 -1
  3. package/.github/ISSUE_TEMPLATE/task.md +1 -1
  4. package/.github/PULL_REQUEST_TEMPLATE.md +5 -3
  5. package/.github/dependabot.yml +14 -0
  6. package/.github/workflows/code-analysis.yml +57 -0
  7. package/.husky/commit-msg +10 -0
  8. package/.husky/post-checkout +5 -0
  9. package/.husky/pre-commit +2 -1
  10. package/.prettierrc +8 -0
  11. package/.vscode/settings.json +1 -1
  12. package/LICENSE +2 -2
  13. package/README.md +134 -45
  14. package/boilerplate/config.json +5 -11
  15. package/boilerplate/files/.prettierrc +8 -0
  16. package/boilerplate/files/.vscode/extensions.json +0 -1
  17. package/boilerplate/files/.vscode/settings.json +28 -2
  18. package/boilerplate/files/README.md +2 -2
  19. package/boilerplate/forcedUpdates.json +10 -0
  20. package/boilerplate/npm-dependencies.json +5 -5
  21. package/docs/dist/documentation.md +2795 -1724
  22. package/jsconfig.json +1 -1
  23. package/lib/Builder.js +166 -75
  24. package/lib/Deployer.js +244 -96
  25. package/lib/MetadataTypeDefinitions.js +2 -0
  26. package/lib/MetadataTypeInfo.js +2 -0
  27. package/lib/Retriever.js +61 -84
  28. package/lib/cli.js +133 -25
  29. package/lib/index.js +242 -563
  30. package/lib/metadataTypes/AccountUser.js +101 -95
  31. package/lib/metadataTypes/Asset.js +677 -248
  32. package/lib/metadataTypes/AttributeGroup.js +23 -12
  33. package/lib/metadataTypes/Automation.js +456 -357
  34. package/lib/metadataTypes/Campaign.js +33 -93
  35. package/lib/metadataTypes/ContentArea.js +31 -11
  36. package/lib/metadataTypes/DataExtension.js +391 -376
  37. package/lib/metadataTypes/DataExtensionField.js +131 -54
  38. package/lib/metadataTypes/DataExtensionTemplate.js +22 -4
  39. package/lib/metadataTypes/DataExtract.js +67 -50
  40. package/lib/metadataTypes/DataExtractType.js +14 -8
  41. package/lib/metadataTypes/Discovery.js +21 -16
  42. package/lib/metadataTypes/Email.js +32 -12
  43. package/lib/metadataTypes/EmailSendDefinition.js +85 -80
  44. package/lib/metadataTypes/EventDefinition.js +69 -47
  45. package/lib/metadataTypes/FileTransfer.js +78 -54
  46. package/lib/metadataTypes/Filter.js +11 -4
  47. package/lib/metadataTypes/Folder.js +149 -117
  48. package/lib/metadataTypes/FtpLocation.js +14 -8
  49. package/lib/metadataTypes/ImportFile.js +69 -69
  50. package/lib/metadataTypes/Interaction.js +19 -4
  51. package/lib/metadataTypes/List.js +54 -13
  52. package/lib/metadataTypes/MetadataType.js +687 -479
  53. package/lib/metadataTypes/MobileCode.js +46 -0
  54. package/lib/metadataTypes/MobileKeyword.js +114 -0
  55. package/lib/metadataTypes/Query.js +204 -103
  56. package/lib/metadataTypes/Role.js +76 -61
  57. package/lib/metadataTypes/Script.js +146 -82
  58. package/lib/metadataTypes/SetDefinition.js +20 -8
  59. package/lib/metadataTypes/TriggeredSendDefinition.js +78 -58
  60. package/lib/metadataTypes/definitions/Asset.definition.js +21 -10
  61. package/lib/metadataTypes/definitions/AttributeGroup.definition.js +12 -0
  62. package/lib/metadataTypes/definitions/Automation.definition.js +10 -5
  63. package/lib/metadataTypes/definitions/Campaign.definition.js +44 -1
  64. package/lib/metadataTypes/definitions/DataExtension.definition.js +4 -0
  65. package/lib/metadataTypes/definitions/DataExtensionTemplate.definition.js +6 -0
  66. package/lib/metadataTypes/definitions/DataExtract.definition.js +18 -14
  67. package/lib/metadataTypes/definitions/Discovery.definition.js +12 -0
  68. package/lib/metadataTypes/definitions/EmailSendDefinition.definition.js +4 -0
  69. package/lib/metadataTypes/definitions/EventDefinition.definition.js +22 -0
  70. package/lib/metadataTypes/definitions/FileTransfer.definition.js +4 -0
  71. package/lib/metadataTypes/definitions/Filter.definition.js +4 -0
  72. package/lib/metadataTypes/definitions/Folder.definition.js +6 -0
  73. package/lib/metadataTypes/definitions/FtpLocation.definition.js +4 -0
  74. package/lib/metadataTypes/definitions/ImportFile.definition.js +10 -5
  75. package/lib/metadataTypes/definitions/Interaction.definition.js +4 -0
  76. package/lib/metadataTypes/definitions/MobileCode.definition.js +163 -0
  77. package/lib/metadataTypes/definitions/MobileKeyword.definition.js +253 -0
  78. package/lib/metadataTypes/definitions/Query.definition.js +4 -0
  79. package/lib/metadataTypes/definitions/Role.definition.js +5 -0
  80. package/lib/metadataTypes/definitions/Script.definition.js +4 -0
  81. package/lib/metadataTypes/definitions/SetDefinition.definition.js +28 -0
  82. package/lib/metadataTypes/definitions/TriggeredSendDefinition.definition.js +4 -0
  83. package/lib/retrieveChangelog.js +7 -6
  84. package/lib/util/auth.js +117 -0
  85. package/lib/util/businessUnit.js +55 -66
  86. package/lib/util/cache.js +194 -0
  87. package/lib/util/cli.js +90 -116
  88. package/lib/util/config.js +302 -0
  89. package/lib/util/devops.js +240 -50
  90. package/lib/util/file.js +120 -191
  91. package/lib/util/init.config.js +195 -69
  92. package/lib/util/init.git.js +45 -50
  93. package/lib/util/init.js +72 -59
  94. package/lib/util/init.npm.js +48 -39
  95. package/lib/util/util.js +280 -564
  96. package/package.json +44 -33
  97. package/test/dataExtension.test.js +152 -0
  98. package/test/mockRoot/.mcdev-auth.json +8 -0
  99. package/test/mockRoot/.mcdevrc.json +67 -0
  100. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/childBU_dataextension_test.dataExtension-meta.json +39 -0
  101. package/test/mockRoot/deploy/testInstance/testBU/dataExtension/testDataExtension.dataExtension-meta.json +23 -0
  102. package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.json +11 -0
  103. package/test/mockRoot/deploy/testInstance/testBU/query/testExistingQuery.query-meta.sql +4 -0
  104. package/test/mockRoot/deploy/testInstance/testBU/query/testQuery.query-meta.json +11 -0
  105. package/test/mockRoot/deploy/testInstance/testBU/query/testQuery.query-meta.sql +4 -0
  106. package/test/query.test.js +149 -0
  107. package/test/resourceFactory.js +142 -0
  108. package/test/resources/1111111/dataFolder/retrieve-response.xml +43 -0
  109. package/test/resources/9999999/automation/v1/queries/549f0568-607c-4940-afef-437965094dat/patch-response.json +18 -0
  110. package/test/resources/9999999/automation/v1/queries/get-response.json +24 -0
  111. package/test/resources/9999999/automation/v1/queries/post-response.json +18 -0
  112. package/test/resources/9999999/dataExtension/build-expected.json +51 -0
  113. package/test/resources/9999999/dataExtension/create-expected.json +23 -0
  114. package/test/resources/9999999/dataExtension/create-response.xml +54 -0
  115. package/test/resources/9999999/dataExtension/retrieve-expected.json +51 -0
  116. package/test/resources/9999999/dataExtension/retrieve-response.xml +47 -0
  117. package/test/resources/9999999/dataExtension/template-expected.json +51 -0
  118. package/test/resources/9999999/dataExtension/update-expected.json +55 -0
  119. package/test/resources/9999999/dataExtension/update-response.xml +52 -0
  120. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +93 -0
  121. package/test/resources/9999999/dataExtensionTemplate/retrieve-response.xml +303 -0
  122. package/test/resources/9999999/dataFolder/retrieve-response.xml +65 -0
  123. package/test/resources/9999999/query/build-expected.json +8 -0
  124. package/test/resources/9999999/query/get-expected.json +11 -0
  125. package/test/resources/9999999/query/patch-expected.json +11 -0
  126. package/test/resources/9999999/query/post-expected.json +11 -0
  127. package/test/resources/9999999/query/template-expected.json +8 -0
  128. package/test/resources/auth.json +32 -0
  129. package/test/resources/rest404-response.json +5 -0
  130. package/test/resources/retrieve-response.xml +21 -0
  131. package/test/utils.js +107 -0
  132. package/types/mcdev.d.js +301 -0
  133. package/CHANGELOG.md +0 -126
  134. package/PULL_REQUEST_TEMPLATE.md +0 -19
  135. package/test/util/file.js +0 -51
package/.eslintrc.json CHANGED
@@ -4,8 +4,14 @@
4
4
  "node": true,
5
5
  "mocha": true
6
6
  },
7
- "extends": ["eslint:recommended", "prettier", "ssjs"],
8
- "plugins": ["mocha", "prettier"],
7
+ "extends": [
8
+ "eslint:recommended",
9
+ "ssjs",
10
+ "plugin:jsdoc/recommended",
11
+ "plugin:prettier/recommended",
12
+ "plugin:unicorn/recommended"
13
+ ],
14
+ "plugins": [],
9
15
  "globals": {
10
16
  "Atomics": "readonly",
11
17
  "SharedArrayBuffer": "readonly"
@@ -14,12 +20,57 @@
14
20
  "ecmaVersion": 2020,
15
21
  "sourceType": "module"
16
22
  },
23
+ "root": true,
24
+ "settings": {
25
+ "jsdoc": {
26
+ "mode": "jsdoc",
27
+ "preferredTypes": {
28
+ "array": "Array",
29
+ "array.<>": "[]",
30
+ "Array.<>": "[]",
31
+ "array<>": "[]",
32
+ "Array<>": "[]",
33
+ "Object": "object",
34
+ "object.<>": "Object.<>",
35
+ "object<>": "Object.<>",
36
+ "Object<>": "Object.<>",
37
+ "promise": "Promise",
38
+ "promise.<>": "Promise.<>",
39
+ "promise<>": "Promise.<>",
40
+ "Promise<>": "Promise.<>"
41
+ }
42
+ }
43
+ },
17
44
  "rules": {
45
+ "unicorn/better-regex": "off",
46
+ "unicorn/catch-error-name": [
47
+ "error",
48
+ {
49
+ "name": "ex"
50
+ }
51
+ ],
52
+ "unicorn/explicit-length-check": "off",
53
+ "unicorn/no-null": "off",
54
+ "unicorn/prefer-module": "off",
55
+ "unicorn/prevent-abbreviations": "off",
56
+ "unicorn/filename-case": "off",
57
+ "unicorn/no-array-callback-reference": "off",
58
+ "unicorn/no-array-reduce": "off",
59
+ "unicorn/no-await-expression-member": "off",
60
+ "unicorn/no-hex-escape": "off",
61
+ "unicorn/no-nested-ternary": "off",
62
+ "unicorn/no-static-only-class": "off",
63
+ "unicorn/no-unused-properties": "warn",
64
+ "unicorn/numeric-separators-style": "off",
65
+ "unicorn/prefer-array-some": "off",
66
+ "unicorn/prefer-set-has": "off",
67
+ "unicorn/prefer-spread": "off",
68
+ "unicorn/unicorn/no-lonely-if": "off",
18
69
  "arrow-body-style": ["error", "as-needed"],
19
70
  "curly": "error",
20
- "mocha/no-exclusive-tests": "error",
21
- "no-console": "off",
22
- "require-jsdoc": [
71
+ "no-console": "error",
72
+ "jsdoc/check-line-alignment": 2,
73
+ "jsdoc/require-jsdoc": [
23
74
  "warn",
24
75
  {
25
76
  "require": {
@@ -31,7 +82,6 @@
31
82
  }
32
83
  }
33
84
  ],
34
- "valid-jsdoc": "error",
35
85
  "spaced-comment": ["warn", "always", { "block": { "exceptions": ["*"], "balanced": true } }]
36
86
  },
37
87
  "overrides": [
@@ -40,7 +90,17 @@
40
90
  "rules": {
41
91
  "no-var": "error",
42
92
  "prefer-const": "error",
43
- "prettier/prettier": "warn"
93
+ "prettier/prettier": "warn",
94
+ "prefer-arrow-callback": "warn"
95
+ }
96
+ },
97
+ {
98
+ "files": ["test/*.js"],
99
+
100
+ "extends": ["plugin:mocha/recommended"],
101
+ "plugins": ["mocha"],
102
+ "rules": {
103
+ "mocha/no-mocha-arrows": "off"
44
104
  }
45
105
  }
46
106
  ]
@@ -39,7 +39,11 @@ body:
39
39
  label: Version
40
40
  description: What version of our software are you running? (mcdev --version)
41
41
  options:
42
- - 3.1.0 (Default)
42
+ - 4.0.0
43
+ - 3.1.3
44
+ - 3.1.2
45
+ - 3.1.1
46
+ - 3.1.0
43
47
  - 3.0.3
44
48
  - 3.0.2
45
49
  - 3.0.1
@@ -2,7 +2,7 @@
2
2
  name: Task
3
3
  about: Technical improvements without functional impact / changes to the Documentation
4
4
  title: "[TASK] "
5
- labels: NEW, chores
5
+ labels: NEW, chore
6
6
  assignees: ''
7
7
 
8
8
  ---
@@ -5,11 +5,13 @@
5
5
  _Please delete options that are not relevant._
6
6
 
7
7
  - [ ] Documentation update
8
- - [ ] Bug fix
8
+ - [ ] Bugfix
9
9
  - [ ] New metadata support
10
10
  - [ ] Enhanced metadata
11
11
  - [ ] Add a CLI option
12
12
  - [ ] Add something to the core
13
+ - [ ] Technical debt removed
14
+ - [ ] Dependencies added / updated
13
15
  - [ ] Other, please explain:
14
16
 
15
17
  ## What changes did you make? (Give an overview)
@@ -23,8 +25,8 @@ _Please delete options that are not relevant._
23
25
  ## Checklist
24
26
 
25
27
  - [ ] I have performed a self-review of my own code
28
+ - [ ] ran `npm run test` to with 0 tests failing
26
29
  - [ ] I have commented my code, particularly in hard-to-understand areas
27
30
  - [ ] ESLint & Prettier are not outputting errors or warnings
28
31
  - [ ] README.md updated (if applicable)
29
- - [ ] CHANGELOG.md updated
30
- - [ ] ran `npm run docs` to update developer docs
32
+ - [ ] Release Notes updated
@@ -0,0 +1,14 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: 'npm' # See documentation for possible values
9
+ directory: '/' # Location of package manifests
10
+ schedule:
11
+ interval: 'daily'
12
+ target-branch: 'develop'
13
+ labels:
14
+ - 'chore'
@@ -0,0 +1,57 @@
1
+ # For most projects, this workflow file will not need changing; you simply need
2
+ # to commit it to your repository.
3
+ #
4
+ # You may wish to alter this file to override the set of languages analyzed,
5
+ # or to provide custom queries or build logic.
6
+ #
7
+ # ******** NOTE ********
8
+ # We have attempted to detect the languages in your repository. Please check
9
+ # the `language` matrix defined below to confirm you have the correct set of
10
+ # supported CodeQL languages.
11
+ #
12
+ name: 'CodeAnalysis'
13
+
14
+ on:
15
+ push:
16
+ branches: [main, develop]
17
+ pull_request:
18
+ # The branches below must be a subset of the branches above
19
+ branches: [main, develop]
20
+
21
+ jobs:
22
+ analyzeAndTest:
23
+ name: Analyze & Test
24
+ runs-on: ubuntu-latest
25
+ permissions:
26
+ actions: read
27
+ contents: read
28
+ security-events: write
29
+
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ language: ['javascript']
34
+
35
+ steps:
36
+ - name: Checkout repository
37
+ uses: actions/checkout@v2
38
+
39
+ - uses: actions/setup-node@v2
40
+ with:
41
+ node-version: 16
42
+ registry-url: https://registry.npmjs.org/
43
+
44
+ - run: npm ci --ignore-scripts
45
+
46
+ - run: npm run lint
47
+
48
+ # Initializes the CodeQL tools for scanning.
49
+ - name: Initialize CodeQL
50
+ uses: github/codeql-action/init@v2
51
+ with:
52
+ languages: ${{ matrix.language }}
53
+ - name: Perform CodeQL Analysis
54
+ uses: github/codeql-action/analyze@v2
55
+
56
+ # Assuming code passes, run tests
57
+ - run: npm run test
@@ -0,0 +1,10 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+ INPUT_FILE=$1
4
+ START_LINE=`head -n1 $INPUT_FILE`
5
+ PATTERN="^(#[[:digit:]]|Merge)"
6
+
7
+ if ! [[ "$START_LINE" =~ $PATTERN ]] ; then
8
+ echo "Bad commit message, see example: \"#431 commit message\", you provided: \"$START_LINE\""
9
+ exit 1
10
+ fi
@@ -0,0 +1,5 @@
1
+ #!/bin/sh
2
+ git config commit.template .git/templatemessage
3
+ TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '(?<=[feature|bugfix|task]\/)\d{2,5}'`
4
+ echo "[POST_CHECKOUT] Setting template commit to $TICKETID"
5
+ echo "#$TICKETID: " > ".git/templatemessage"
package/.husky/pre-commit CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/bin/sh
2
2
  . "$(dirname "$0")/_/husky.sh"
3
-
3
+ npm run docs
4
+ git update-index --add docs/dist/documentation.md
4
5
  npx --no lint-staged
package/.prettierrc CHANGED
@@ -21,6 +21,14 @@
21
21
  "options": {
22
22
  "tabWidth": 2
23
23
  }
24
+ },
25
+ {
26
+ "files": "*.sql",
27
+ "options": {
28
+ "formatter": "sql-formatter",
29
+ "language": "tsql",
30
+ "uppercase": true
31
+ }
24
32
  }
25
33
  ]
26
34
  }
@@ -42,7 +42,7 @@
42
42
  "outline.showVariables": false,
43
43
  "breadcrumbs.showVariables": false,
44
44
  "breadcrumbs.showProperties": false,
45
- "githubIssues.issueBranchTitle": "bugfix/i${issueNumber}-${sanitizedIssueTitle}",
45
+ "githubIssues.issueBranchTitle": "feature/${issueNumber}-${sanitizedIssueTitle}",
46
46
  "githubIssues.queries": [
47
47
  {
48
48
  "label": "My Issues",
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2021 Accenture
3
+ Copyright (c) 2022 Accenture
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.