@salesforce/source-deploy-retrieve 5.0.0-orb.2 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +186 -101
- package/LICENSE.txt +12 -0
- package/README.md +2 -2
- package/lib/src/client/deployStrategies/auraDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/auraDeploy.js +99 -109
- package/lib/src/client/deployStrategies/auraDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/baseDeploy.d.ts +1 -1
- package/lib/src/client/deployStrategies/baseDeploy.js +37 -38
- package/lib/src/client/deployStrategies/baseDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/containerDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/containerDeploy.js +58 -73
- package/lib/src/client/deployStrategies/containerDeploy.js.map +1 -1
- package/lib/src/client/deployStrategies/index.js +4 -3
- package/lib/src/client/deployStrategies/index.js.map +1 -1
- package/lib/src/client/deployStrategies/lwcDeploy.d.ts +2 -2
- package/lib/src/client/deployStrategies/lwcDeploy.js +98 -109
- package/lib/src/client/deployStrategies/lwcDeploy.js.map +1 -1
- package/lib/src/client/diagnosticUtil.d.ts +1 -1
- package/lib/src/client/diagnosticUtil.js +11 -11
- package/lib/src/client/diagnosticUtil.js.map +1 -1
- package/lib/src/client/index.d.ts +1 -1
- package/lib/src/client/index.js +1 -1
- package/lib/src/client/index.js.map +1 -1
- package/lib/src/client/metadataApiDeploy.d.ts +4 -4
- package/lib/src/client/metadataApiDeploy.js +57 -73
- package/lib/src/client/metadataApiDeploy.js.map +1 -1
- package/lib/src/client/metadataApiRetrieve.d.ts +10 -3
- package/lib/src/client/metadataApiRetrieve.js +102 -111
- package/lib/src/client/metadataApiRetrieve.js.map +1 -1
- package/lib/src/client/metadataTransfer.d.ts +2 -2
- package/lib/src/client/metadataTransfer.js +102 -118
- package/lib/src/client/metadataTransfer.js.map +1 -1
- package/lib/src/client/retrieveUtil.d.ts +1 -1
- package/lib/src/client/retrieveUtil.js +17 -17
- package/lib/src/client/retrieveUtil.js.map +1 -1
- package/lib/src/client/toolingApi.d.ts +2 -2
- package/lib/src/client/toolingApi.js +71 -94
- package/lib/src/client/toolingApi.js.map +1 -1
- package/lib/src/client/types.js +1 -14
- package/lib/src/client/types.js.map +1 -1
- package/lib/src/collections/componentSet.d.ts +16 -10
- package/lib/src/collections/componentSet.js +160 -114
- package/lib/src/collections/componentSet.js.map +1 -1
- package/lib/src/collections/index.js +1 -0
- package/lib/src/collections/index.js.map +1 -1
- package/lib/src/collections/lazyCollection.js +5 -1
- package/lib/src/collections/lazyCollection.js.map +1 -1
- package/lib/src/collections/types.d.ts +8 -0
- package/lib/src/common/constants.js +1 -1
- package/lib/src/common/constants.js.map +1 -1
- package/lib/src/common/index.d.ts +1 -1
- package/lib/src/common/index.js +1 -0
- package/lib/src/common/index.js.map +1 -1
- package/lib/src/convert/convertContext.d.ts +9 -10
- package/lib/src/convert/convertContext.js +165 -173
- package/lib/src/convert/convertContext.js.map +1 -1
- package/lib/src/convert/index.js +1 -0
- package/lib/src/convert/index.js.map +1 -1
- package/lib/src/convert/metadataConverter.d.ts +3 -18
- package/lib/src/convert/metadataConverter.js +112 -110
- package/lib/src/convert/metadataConverter.js.map +1 -1
- package/lib/src/convert/streams.d.ts +4 -4
- package/lib/src/convert/streams.js +111 -147
- package/lib/src/convert/streams.js.map +1 -1
- package/lib/src/convert/transformers/baseMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/decomposedMetadataTransformer.d.ts +2 -2
- package/lib/src/convert/transformers/decomposedMetadataTransformer.js +124 -149
- package/lib/src/convert/transformers/decomposedMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/defaultMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/defaultMetadataTransformer.js +11 -23
- package/lib/src/convert/transformers/defaultMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/index.js +1 -0
- package/lib/src/convert/transformers/index.js.map +1 -1
- package/lib/src/convert/transformers/metadataTransformerFactory.js +1 -1
- package/lib/src/convert/transformers/metadataTransformerFactory.js.map +1 -1
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.js +18 -29
- package/lib/src/convert/transformers/nonDecomposedMetadataTransformer.js.map +1 -1
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.d.ts +1 -1
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js +78 -135
- package/lib/src/convert/transformers/staticResourceMetadataTransformer.js.map +1 -1
- package/lib/src/convert/types.d.ts +1 -1
- package/lib/src/errors/index.js.map +1 -1
- package/lib/src/i18n/i18n.js +3 -2
- package/lib/src/i18n/i18n.js.map +1 -1
- package/lib/src/i18n/index.js +3 -4
- package/lib/src/i18n/index.js.map +1 -1
- package/lib/src/i18n/localization.js +4 -4
- package/lib/src/i18n/localization.js.map +1 -1
- package/lib/src/index.js +1 -4
- package/lib/src/index.js.map +1 -1
- package/lib/src/registry/index.js +1 -4
- package/lib/src/registry/index.js.map +1 -1
- package/lib/src/registry/{registry.json → metadataRegistry.json} +376 -20
- package/lib/src/registry/nonSupportedTypes.d.ts +11 -0
- package/lib/src/registry/nonSupportedTypes.js +53 -0
- package/lib/src/registry/nonSupportedTypes.js.map +1 -0
- package/lib/src/registry/registry.d.ts +357 -1
- package/lib/src/registry/registry.js +2 -2
- package/lib/src/registry/registry.js.map +1 -1
- package/lib/src/registry/registryAccess.d.ts +12 -0
- package/lib/src/registry/registryAccess.js +25 -2
- package/lib/src/registry/registryAccess.js.map +1 -1
- package/lib/src/registry/types.d.ts +47 -0
- package/lib/src/registry/types.js +0 -35
- package/lib/src/registry/types.js.map +1 -1
- package/lib/src/resolve/adapters/baseSourceAdapter.d.ts +3 -2
- package/lib/src/resolve/adapters/baseSourceAdapter.js +55 -19
- package/lib/src/resolve/adapters/baseSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/bundleSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/bundleSourceAdapter.js +0 -6
- package/lib/src/resolve/adapters/bundleSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/decomposedSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/decomposedSourceAdapter.js +8 -14
- package/lib/src/resolve/adapters/decomposedSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/defaultSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/defaultSourceAdapter.js +0 -6
- package/lib/src/resolve/adapters/defaultSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/index.js +1 -0
- package/lib/src/resolve/adapters/index.js.map +1 -1
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.js +2 -2
- package/lib/src/resolve/adapters/matchingContentSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/mixedContentSourceAdapter.d.ts +1 -1
- package/lib/src/resolve/adapters/mixedContentSourceAdapter.js +6 -6
- package/lib/src/resolve/adapters/mixedContentSourceAdapter.js.map +1 -1
- package/lib/src/resolve/adapters/sourceAdapterFactory.js +2 -2
- package/lib/src/resolve/adapters/sourceAdapterFactory.js.map +1 -1
- package/lib/src/resolve/forceIgnore.d.ts +0 -5
- package/lib/src/resolve/forceIgnore.js +14 -100
- package/lib/src/resolve/forceIgnore.js.map +1 -1
- package/lib/src/resolve/index.d.ts +1 -1
- package/lib/src/resolve/index.js +1 -0
- package/lib/src/resolve/index.js.map +1 -1
- package/lib/src/resolve/manifestResolver.d.ts +1 -0
- package/lib/src/resolve/manifestResolver.js +42 -31
- package/lib/src/resolve/manifestResolver.js.map +1 -1
- package/lib/src/resolve/metadataResolver.d.ts +12 -7
- package/lib/src/resolve/metadataResolver.js +39 -19
- package/lib/src/resolve/metadataResolver.js.map +1 -1
- package/lib/src/resolve/sourceComponent.d.ts +46 -7
- package/lib/src/resolve/sourceComponent.js +126 -65
- package/lib/src/resolve/sourceComponent.js.map +1 -1
- package/lib/src/resolve/treeContainers.d.ts +1 -1
- package/lib/src/resolve/treeContainers.js +21 -32
- package/lib/src/resolve/treeContainers.js.map +1 -1
- package/lib/src/resolve/types.d.ts +2 -2
- package/lib/src/utils/collections.js +1 -1
- package/lib/src/utils/collections.js.map +1 -1
- package/lib/src/utils/fileSystemHandler.js +1 -1
- package/lib/src/utils/fileSystemHandler.js.map +1 -1
- package/lib/src/utils/index.d.ts +1 -1
- package/lib/src/utils/index.js +2 -0
- package/lib/src/utils/index.js.map +1 -1
- package/lib/src/utils/metadata.js +1 -3
- package/lib/src/utils/metadata.js.map +1 -1
- package/lib/src/utils/path.d.ts +26 -1
- package/lib/src/utils/path.js +40 -5
- package/lib/src/utils/path.js.map +1 -1
- package/package.json +44 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixedContentSourceAdapter.js","sourceRoot":"","sources":["../../../../src/resolve/adapters/mixedContentSourceAdapter.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH
|
|
1
|
+
{"version":3,"file":"mixedContentSourceAdapter.js","sourceRoot":"","sources":["../../../../src/resolve/adapters/mixedContentSourceAdapter.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+BAA8C;AAC9C,yCAAwD;AACxD,2CAA4C;AAE5C,wDAAqD;AACrD,2DAAwD;AAExD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,yBAA0B,SAAQ,qCAAiB;IACpD,sBAAsB,CAAC,OAAmB;QAClD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAA,eAAQ,EAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;SAC9E;QACD,OAAO,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAES,QAAQ,CAAC,OAAmB,EAAE,SAA2B;QACjE,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,WAAW,MAAK,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAA,EAAE;YAClC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAA,eAAQ,EAAC,WAAW,CAAC,EAAE,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,CAAC;SACtF;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;YAClC,MAAM,IAAI,iCAAwB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACxD;QAED,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,OAAO,GAAG,WAAW,CAAC;SACjC;aAAM;YACL,SAAS,GAAG,IAAI,iCAAe,CAC7B;gBACE,IAAI,EAAE,IAAA,eAAQ,EAAC,WAAW,CAAC;gBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,WAAW;aACrB,EACD,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,CACjB,CAAC;SACH;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;OAOG;IACO,iBAAiB,CAAC,IAAgB;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAG,CAAC,CAAC;QAClC,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,UAAG,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACK,uBAAuB,CAAC,IAAgB;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,IAAA,eAAQ,EAAC,eAAe,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;CACF;AAhED,8DAgEC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SourceAdapterFactory = void 0;
|
|
4
|
+
const errors_1 = require("../../errors");
|
|
5
|
+
const forceIgnore_1 = require("../forceIgnore");
|
|
4
6
|
const bundleSourceAdapter_1 = require("./bundleSourceAdapter");
|
|
5
7
|
const decomposedSourceAdapter_1 = require("./decomposedSourceAdapter");
|
|
6
8
|
const matchingContentSourceAdapter_1 = require("./matchingContentSourceAdapter");
|
|
7
9
|
const mixedContentSourceAdapter_1 = require("./mixedContentSourceAdapter");
|
|
8
10
|
const defaultSourceAdapter_1 = require("./defaultSourceAdapter");
|
|
9
|
-
const errors_1 = require("../../errors");
|
|
10
|
-
const forceIgnore_1 = require("../forceIgnore");
|
|
11
11
|
var AdapterId;
|
|
12
12
|
(function (AdapterId) {
|
|
13
13
|
AdapterId["Bundle"] = "bundle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sourceAdapterFactory.js","sourceRoot":"","sources":["../../../../src/resolve/adapters/sourceAdapterFactory.ts"],"names":[],"mappings":";;;AAOA,+DAA4D;AAC5D,uEAAoE;AACpE,iFAA8E;AAC9E,2EAAwE;AACxE,iEAA8D;
|
|
1
|
+
{"version":3,"file":"sourceAdapterFactory.js","sourceRoot":"","sources":["../../../../src/resolve/adapters/sourceAdapterFactory.ts"],"names":[],"mappings":";;;AAOA,yCAA6C;AAC7C,gDAA6C;AAG7C,+DAA4D;AAC5D,uEAAoE;AACpE,iFAA8E;AAC9E,2EAAwE;AACxE,iEAA8D;AAE9D,IAAK,SAMJ;AAND,WAAK,SAAS;IACZ,8BAAiB,CAAA;IACjB,sCAAyB,CAAA;IACzB,gCAAmB,CAAA;IACnB,wDAA2C,CAAA;IAC3C,0CAA6B,CAAA;AAC/B,CAAC,EANI,SAAS,KAAT,SAAS,QAMb;AAED,MAAa,oBAAoB;IAI/B,YAAmB,QAAwB,EAAE,IAAmB;QAC9D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,UAAU,CAAC,IAAkB,EAAE,WAAW,GAAG,IAAI,yBAAW,EAAE;;QACnE,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAoB,CAAC;QACxD,QAAQ,SAAS,EAAE;YACjB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,IAAI,yCAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9E,KAAK,SAAS,CAAC,UAAU;gBACvB,OAAO,IAAI,iDAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAClF,KAAK,SAAS,CAAC,mBAAmB;gBAChC,OAAO,IAAI,2DAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACvF,KAAK,SAAS,CAAC,YAAY;gBACzB,OAAO,IAAI,qDAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,IAAI,2CAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E,KAAK,SAAS;gBACZ,OAAO,IAAI,2CAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/E;gBACE,MAAM,IAAI,sBAAa,CAAC,uBAAuB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC5E;IACH,CAAC;CACF;AA5BD,oDA4BC"}
|
|
@@ -3,9 +3,7 @@ export declare class ForceIgnore {
|
|
|
3
3
|
static readonly FILE_NAME = ".forceignore";
|
|
4
4
|
private readonly parser;
|
|
5
5
|
private readonly forceIgnoreDirectory;
|
|
6
|
-
private readonly gitignoreParser;
|
|
7
6
|
private readonly contents?;
|
|
8
|
-
private readonly useNewParser;
|
|
9
7
|
private DEFAULT_IGNORE;
|
|
10
8
|
constructor(forceIgnorePath?: string);
|
|
11
9
|
/**
|
|
@@ -18,7 +16,4 @@ export declare class ForceIgnore {
|
|
|
18
16
|
static findAndCreate(seed: SourcePath): ForceIgnore;
|
|
19
17
|
denies(fsPath: SourcePath): boolean;
|
|
20
18
|
accepts(fsPath: SourcePath): boolean;
|
|
21
|
-
private parseContents;
|
|
22
|
-
private resolveConflict;
|
|
23
|
-
private emitWarning;
|
|
24
19
|
}
|
|
@@ -7,36 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.ForceIgnore = void 0;
|
|
10
|
-
const index_1 = require("ignore/index");
|
|
11
10
|
const path_1 = require("path");
|
|
12
|
-
const
|
|
11
|
+
const index_1 = require("ignore/index");
|
|
12
|
+
const graceful_fs_1 = require("graceful-fs");
|
|
13
13
|
const fileSystemHandler_1 = require("../utils/fileSystemHandler");
|
|
14
|
-
// @ts-ignore this doesn't have typings
|
|
15
|
-
const gitignoreParser = require("gitignore-parser");
|
|
16
|
-
const core_1 = require("@salesforce/core");
|
|
17
|
-
let warn = true;
|
|
18
|
-
const troubleEmittedForPattern = new Set();
|
|
19
14
|
class ForceIgnore {
|
|
20
15
|
constructor(forceIgnorePath = '') {
|
|
21
|
-
this.DEFAULT_IGNORE = [
|
|
22
|
-
'**/*.dup',
|
|
23
|
-
'**/.*',
|
|
24
|
-
'**/package2-descriptor.json',
|
|
25
|
-
'**/package2-manifest.json',
|
|
26
|
-
];
|
|
16
|
+
this.DEFAULT_IGNORE = ['**/*.dup', '**/.*', '**/package2-descriptor.json', '**/package2-manifest.json'];
|
|
27
17
|
try {
|
|
28
|
-
this.contents =
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
this.gitignoreParser = gitignoreParser.compile(this.parseContents(this.contents));
|
|
36
|
-
this.forceIgnoreDirectory = path_1.dirname(forceIgnorePath);
|
|
37
|
-
// read the file to determine which parser to use
|
|
38
|
-
this.useNewParser = this.contents.includes('# .forceignore v2');
|
|
39
|
-
// END REMOVE
|
|
18
|
+
this.contents = (0, graceful_fs_1.readFileSync)(forceIgnorePath, 'utf-8');
|
|
19
|
+
// check if file `.forceignore` exists
|
|
20
|
+
if (this.contents !== undefined) {
|
|
21
|
+
// add the default ignore paths, and then parse the .forceignore file
|
|
22
|
+
this.parser = (0, index_1.default)().add(`${this.contents}\n${this.DEFAULT_IGNORE.join('\n')}`);
|
|
23
|
+
this.forceIgnoreDirectory = (0, path_1.dirname)(forceIgnorePath);
|
|
24
|
+
}
|
|
40
25
|
}
|
|
41
26
|
catch (e) {
|
|
42
27
|
// TODO: log no force ignore
|
|
@@ -51,26 +36,15 @@ class ForceIgnore {
|
|
|
51
36
|
*/
|
|
52
37
|
static findAndCreate(seed) {
|
|
53
38
|
let potentialForceIgnorePath = '';
|
|
54
|
-
const projectConfigPath = fileSystemHandler_1.searchUp(seed, ForceIgnore.FILE_NAME);
|
|
39
|
+
const projectConfigPath = (0, fileSystemHandler_1.searchUp)(seed, ForceIgnore.FILE_NAME);
|
|
55
40
|
if (projectConfigPath) {
|
|
56
|
-
potentialForceIgnorePath = path_1.join(path_1.dirname(projectConfigPath), ForceIgnore.FILE_NAME);
|
|
41
|
+
potentialForceIgnorePath = (0, path_1.join)((0, path_1.dirname)(projectConfigPath), ForceIgnore.FILE_NAME);
|
|
57
42
|
}
|
|
58
43
|
return new ForceIgnore(potentialForceIgnorePath);
|
|
59
44
|
}
|
|
60
45
|
denies(fsPath) {
|
|
61
46
|
try {
|
|
62
|
-
|
|
63
|
-
let denies = false;
|
|
64
|
-
let fctResult = false;
|
|
65
|
-
// if there's a parser, and we're not trying to .forceignore the .forceignore
|
|
66
|
-
const relativePath = path_1.relative(this.forceIgnoreDirectory, fsPath);
|
|
67
|
-
if (this.parser && this.gitignoreParser && !!relativePath) {
|
|
68
|
-
denies = this.parser.ignores(relativePath);
|
|
69
|
-
fctResult = this.gitignoreParser.denies(relativePath);
|
|
70
|
-
// send to look for differences, analytics
|
|
71
|
-
this.resolveConflict(denies, fctResult, relativePath);
|
|
72
|
-
}
|
|
73
|
-
return this.useNewParser ? denies : fctResult;
|
|
47
|
+
return this.parser.ignores((0, path_1.relative)(this.forceIgnoreDirectory, fsPath));
|
|
74
48
|
}
|
|
75
49
|
catch (e) {
|
|
76
50
|
return false;
|
|
@@ -78,72 +52,12 @@ class ForceIgnore {
|
|
|
78
52
|
}
|
|
79
53
|
accepts(fsPath) {
|
|
80
54
|
try {
|
|
81
|
-
|
|
82
|
-
let accepts = true;
|
|
83
|
-
let fctResult = true;
|
|
84
|
-
const relativePath = path_1.relative(this.forceIgnoreDirectory, fsPath);
|
|
85
|
-
if (this.parser && this.gitignoreParser && !!relativePath) {
|
|
86
|
-
accepts = !this.parser.ignores(relativePath);
|
|
87
|
-
fctResult = this.gitignoreParser.accepts(relativePath);
|
|
88
|
-
// send to look for differences, analytics
|
|
89
|
-
this.resolveConflict(accepts, fctResult, relativePath);
|
|
90
|
-
}
|
|
91
|
-
return this.useNewParser ? accepts : fctResult;
|
|
55
|
+
return !this.parser.ignores((0, path_1.relative)(this.forceIgnoreDirectory, fsPath));
|
|
92
56
|
}
|
|
93
57
|
catch (e) {
|
|
94
58
|
return true;
|
|
95
59
|
}
|
|
96
60
|
}
|
|
97
|
-
// REMOVE THIS AFTER GITIGNORE-PARSER DEPRECATED
|
|
98
|
-
parseContents(contents) {
|
|
99
|
-
return contents
|
|
100
|
-
.split('\n')
|
|
101
|
-
.map((line) => line.trim())
|
|
102
|
-
.map((line) => line.replace(/[\\\/]/g, path_1.sep))
|
|
103
|
-
.map((line) => line.replace(/^\\/, ''))
|
|
104
|
-
.join('\n');
|
|
105
|
-
}
|
|
106
|
-
// AFTER GITIGNORE-PARSER DEPRECATED, remove this method
|
|
107
|
-
resolveConflict(newLibraryResults, oldLibraryResults, fsPath) {
|
|
108
|
-
const ignoreItems = this.contents.split('\n');
|
|
109
|
-
const troubledIgnoreLines = new Set();
|
|
110
|
-
if (newLibraryResults !== oldLibraryResults && ignoreItems) {
|
|
111
|
-
ignoreItems
|
|
112
|
-
.filter((ignoreItem) => ignoreItem.length)
|
|
113
|
-
.forEach((ignoreItem) => {
|
|
114
|
-
// we need to run the both of the compilers for a single line to find the problem entry
|
|
115
|
-
const gitignoreResult = gitignoreParser
|
|
116
|
-
.compile(this.parseContents(ignoreItem))
|
|
117
|
-
.accepts(fsPath);
|
|
118
|
-
const ignoreResult = !index_1.default().add([ignoreItem]).ignores(fsPath);
|
|
119
|
-
// print the warning only once per forceignore line item
|
|
120
|
-
if (ignoreResult !== gitignoreResult && !troubledIgnoreLines.has(ignoreItem)) {
|
|
121
|
-
// only show the warning once, it could come from denies() or accepts()
|
|
122
|
-
if (warn) {
|
|
123
|
-
warn = false;
|
|
124
|
-
this.emitWarning('We\'re replacing the current ".forceignore" parser with one that uses the same patterns as "git" uses with ".gitignore". Until we remove the old one, both parsers are available. But we recommend you start using the new parser soon by adding this line to the top of your ".forceignore" file: "# .forceignore v2". Read about the new ".gitgnore" pattern format here: https://git-scm.com/docs/gitignore. Then fix the following lines in your ".forceignore" file because they don\'t adhere to the new formatting rules.');
|
|
125
|
-
}
|
|
126
|
-
if (!troubleEmittedForPattern.has(ignoreItem)) {
|
|
127
|
-
troubleEmittedForPattern.add(ignoreItem);
|
|
128
|
-
this.emitWarning('\t' + ignoreItem);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
troubledIgnoreLines.add(ignoreItem);
|
|
132
|
-
});
|
|
133
|
-
// send analytics, if they exist.
|
|
134
|
-
core_1.Lifecycle.getInstance().emit('telemetry', {
|
|
135
|
-
eventName: 'FORCE_IGNORE_DIFFERENCE',
|
|
136
|
-
content: this.contents,
|
|
137
|
-
oldLibraryResults,
|
|
138
|
-
newLibraryResults,
|
|
139
|
-
ignoreLines: Array.from(troubledIgnoreLines),
|
|
140
|
-
file: fsPath,
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
emitWarning(warning) {
|
|
145
|
-
process.emitWarning(warning);
|
|
146
|
-
}
|
|
147
61
|
}
|
|
148
62
|
exports.ForceIgnore = ForceIgnore;
|
|
149
63
|
ForceIgnore.FILE_NAME = '.forceignore';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forceIgnore.js","sourceRoot":"","sources":["../../../src/resolve/forceIgnore.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,wCAA8C;AAC9C
|
|
1
|
+
{"version":3,"file":"forceIgnore.js","sourceRoot":"","sources":["../../../src/resolve/forceIgnore.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+BAA+C;AAC/C,wCAA8C;AAC9C,6CAA2C;AAE3C,kEAAsD;AAEtD,MAAa,WAAW;IAQtB,YAAmB,eAAe,GAAG,EAAE;QAF/B,mBAAc,GAAa,CAAC,UAAU,EAAE,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,CAAC,CAAC;QAGnH,IAAI;YACF,IAAI,CAAC,QAAQ,GAAG,IAAA,0BAAY,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACvD,sCAAsC;YACtC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;gBAC/B,qEAAqE;gBACrE,IAAI,CAAC,MAAM,GAAG,IAAA,eAAM,GAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClF,IAAI,CAAC,oBAAoB,GAAG,IAAA,cAAO,EAAC,eAAe,CAAC,CAAC;aACtD;SACF;QAAC,OAAO,CAAC,EAAE;YACV,4BAA4B;SAC7B;IACH,CAAC;IAED;;;;;;OAMG;IACI,MAAM,CAAC,aAAa,CAAC,IAAgB;QAC1C,IAAI,wBAAwB,GAAG,EAAE,CAAC;QAClC,MAAM,iBAAiB,GAAG,IAAA,4BAAQ,EAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QAChE,IAAI,iBAAiB,EAAE;YACrB,wBAAwB,GAAG,IAAA,WAAI,EAAC,IAAA,cAAO,EAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;SACpF;QACD,OAAO,IAAI,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACnD,CAAC;IAEM,MAAM,CAAC,MAAkB;QAC9B,IAAI;YACF,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;SACzE;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,OAAO,CAAC,MAAkB;QAC/B,IAAI;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAA,eAAQ,EAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;SAC1E;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,CAAC;SACb;IACH,CAAC;;AApDH,kCAqDC;AApDwB,qBAAS,GAAG,cAAc,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { MetadataResolver } from './metadataResolver';
|
|
2
2
|
export { ManifestResolver } from './manifestResolver';
|
|
3
|
-
export { TreeContainer, NodeFSTreeContainer, VirtualTreeContainer, ZipTreeContainer
|
|
3
|
+
export { TreeContainer, NodeFSTreeContainer, VirtualTreeContainer, ZipTreeContainer } from './treeContainers';
|
|
4
4
|
export { SourceComponent } from './sourceComponent';
|
|
5
5
|
export { MetadataComponent, MetadataMember, ComponentLike, MetadataXml, VirtualFile, VirtualDirectory, SourceAdapter, } from './types';
|
|
6
6
|
export { ForceIgnore } from './forceIgnore';
|
package/lib/src/resolve/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForceIgnore = exports.SourceComponent = exports.ZipTreeContainer = exports.VirtualTreeContainer = exports.NodeFSTreeContainer = exports.TreeContainer = exports.ManifestResolver = exports.MetadataResolver = void 0;
|
|
3
4
|
/*
|
|
4
5
|
* Copyright (c) 2020, salesforce.com, inc.
|
|
5
6
|
* All rights reserved.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolve/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/resolve/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,mDAA8G;AAArG,+GAAA,aAAa,OAAA;AAAE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AACnF,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAUxB,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
|
|
@@ -5,21 +5,12 @@
|
|
|
5
5
|
* Licensed under the BSD 3-Clause license.
|
|
6
6
|
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
7
|
*/
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.ManifestResolver = void 0;
|
|
19
|
-
const registry_1 = require("../registry");
|
|
20
|
-
const treeContainers_1 = require("./treeContainers");
|
|
21
10
|
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
11
|
+
const registry_1 = require("../registry");
|
|
22
12
|
const utils_1 = require("../utils");
|
|
13
|
+
const treeContainers_1 = require("./treeContainers");
|
|
23
14
|
/**
|
|
24
15
|
* Resolve MetadataComponents from a manifest file (package.xml)
|
|
25
16
|
*/
|
|
@@ -28,28 +19,48 @@ class ManifestResolver {
|
|
|
28
19
|
this.tree = tree;
|
|
29
20
|
this.registry = registry;
|
|
30
21
|
}
|
|
31
|
-
resolve(manifestPath) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
components.push({ fullName, type });
|
|
22
|
+
async resolve(manifestPath) {
|
|
23
|
+
const components = [];
|
|
24
|
+
const file = await this.tree.readFile(manifestPath);
|
|
25
|
+
const parsedManifest = (0, fast_xml_parser_1.parse)(file.toString(), {
|
|
26
|
+
stopNodes: ['version'],
|
|
27
|
+
}).Package;
|
|
28
|
+
const packageTypeMembers = (0, utils_1.normalizeToArray)(parsedManifest.types);
|
|
29
|
+
const apiVersion = parsedManifest.version;
|
|
30
|
+
for (const typeMembers of packageTypeMembers) {
|
|
31
|
+
const typeName = typeMembers.name;
|
|
32
|
+
const type = this.registry.getTypeByName(typeName);
|
|
33
|
+
const parentType = type.folderType ? this.registry.getTypeByName(type.folderType) : undefined;
|
|
34
|
+
const members = (0, utils_1.normalizeToArray)(typeMembers.members);
|
|
35
|
+
for (const fullName of members) {
|
|
36
|
+
let mdType = type;
|
|
37
|
+
if (this.isNestedInFolder(fullName, type, parentType, members)) {
|
|
38
|
+
mdType = parentType;
|
|
49
39
|
}
|
|
40
|
+
components.push({ fullName, type: mdType });
|
|
50
41
|
}
|
|
51
|
-
|
|
52
|
-
}
|
|
42
|
+
}
|
|
43
|
+
return { components, apiVersion };
|
|
44
|
+
}
|
|
45
|
+
// Use the folderType instead of the type from the manifest when:
|
|
46
|
+
// 1. InFolder types: (report, dashboard, emailTemplate, document)
|
|
47
|
+
// 1a. type.inFolder === true (from metadataRegistry.json) AND
|
|
48
|
+
// 1b. The fullName doesn't contain a forward slash character AND
|
|
49
|
+
// 1c. The fullName with a slash appended is contained in another member entry
|
|
50
|
+
// OR
|
|
51
|
+
// 2. Non-InFolder, folder types: (territory2, territory2Model, territory2Type, territory2Rule)
|
|
52
|
+
// 2a. type.inFolder !== true (from metadataRegistry.json) AND
|
|
53
|
+
// 2b. type.folderType has a value (from metadataRegistry.json) AND
|
|
54
|
+
// 2c. This type's parent type has a folderType that doesn't match its ID.
|
|
55
|
+
isNestedInFolder(fullName, type, parentType, members) {
|
|
56
|
+
// Quick short-circuit for non-folderTypes
|
|
57
|
+
if (!type.folderType) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
const isInFolderType = type.inFolder;
|
|
61
|
+
const isNestedInFolder = !fullName.includes('/') || members.some((m) => m.includes(`${fullName}/`));
|
|
62
|
+
const isNonMatchingFolder = parentType && parentType.folderType !== parentType.id;
|
|
63
|
+
return (isInFolderType && isNestedInFolder) || (!isInFolderType && isNonMatchingFolder);
|
|
53
64
|
}
|
|
54
65
|
}
|
|
55
66
|
exports.ManifestResolver = ManifestResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifestResolver.js","sourceRoot":"","sources":["../../../src/resolve/manifestResolver.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"manifestResolver.js","sourceRoot":"","sources":["../../../src/resolve/manifestResolver.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,qDAAoD;AACpD,0CAA2D;AAC3D,oCAA4C;AAC5C,qDAAsE;AA6BtE;;GAEG;AACH,MAAa,gBAAgB;IAI3B,YAAmB,OAAsB,IAAI,oCAAmB,EAAE,EAAE,QAAQ,GAAG,IAAI,yBAAc,EAAE;QACjG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,YAAoB;QACvC,MAAM,UAAU,GAAwB,EAAE,CAAC;QAE3C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAEpD,MAAM,cAAc,GAClB,IAAA,uBAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YACxB,SAAS,EAAE,CAAC,SAAS,CAAC;SACvB,CACF,CAAC,OAAO,CAAC;QACV,MAAM,kBAAkB,GAAG,IAAA,wBAAgB,EAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC;QAE1C,KAAK,MAAM,WAAW,IAAI,kBAAkB,EAAE;YAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9F,MAAM,OAAO,GAAG,IAAA,wBAAgB,EAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAEtD,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE;gBAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;gBAClB,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;oBAC9D,MAAM,GAAG,UAAU,CAAC;iBACrB;gBACD,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;aAC7C;SACF;QAED,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IACpC,CAAC;IAED,iEAAiE;IACjE,mEAAmE;IACnE,iEAAiE;IACjE,oEAAoE;IACpE,iFAAiF;IACjF,KAAK;IACL,gGAAgG;IAChG,iEAAiE;IACjE,sEAAsE;IACtE,6EAA6E;IACrE,gBAAgB,CAAC,QAAgB,EAAE,IAAkB,EAAE,UAAwB,EAAE,OAAiB;QACxG,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC;QACpG,MAAM,mBAAmB,GAAG,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,EAAE,CAAC;QAElF,OAAO,CAAC,cAAc,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,mBAAmB,CAAC,CAAC;IAC1F,CAAC;CACF;AA9DD,4CA8DC"}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
import { SourceComponent } from './sourceComponent';
|
|
2
|
-
import { TreeContainer } from './treeContainers';
|
|
3
1
|
import { RegistryAccess } from '../registry/registryAccess';
|
|
4
2
|
import { ComponentSet } from '../collections';
|
|
3
|
+
import { SourceComponent } from './sourceComponent';
|
|
4
|
+
import { TreeContainer } from './treeContainers';
|
|
5
5
|
/**
|
|
6
6
|
* Resolver for metadata type and component objects.
|
|
7
|
+
*
|
|
7
8
|
* @internal
|
|
8
9
|
*/
|
|
9
10
|
export declare class MetadataResolver {
|
|
11
|
+
private registry;
|
|
12
|
+
private tree;
|
|
13
|
+
private useFsForceIgnore;
|
|
10
14
|
forceIgnoredPaths: Set<string>;
|
|
11
15
|
private forceIgnore;
|
|
12
16
|
private sourceAdapterFactory;
|
|
13
|
-
private
|
|
14
|
-
private registry;
|
|
17
|
+
private folderContentTypeDirNames;
|
|
15
18
|
/**
|
|
16
19
|
* @param registry Custom registry data
|
|
17
20
|
* @param tree `TreeContainer` to traverse with
|
|
18
21
|
*/
|
|
19
|
-
constructor(registry?: RegistryAccess, tree?: TreeContainer);
|
|
22
|
+
constructor(registry?: RegistryAccess, tree?: TreeContainer, useFsForceIgnore?: boolean);
|
|
20
23
|
/**
|
|
21
24
|
* Get the metadata component(s) from a file path.
|
|
22
25
|
*
|
|
@@ -49,12 +52,14 @@ export declare class MetadataResolver {
|
|
|
49
52
|
* @param fsPath File path of a potential content metadata file
|
|
50
53
|
*/
|
|
51
54
|
private parseAsContentMetadataXml;
|
|
55
|
+
private getFolderContentTypeDirNames;
|
|
52
56
|
/**
|
|
53
57
|
* Identify metadata xml for a folder component:
|
|
54
|
-
*
|
|
58
|
+
* .../email/TestFolder-meta.xml
|
|
59
|
+
* .../reports/foo/bar-meta.xml
|
|
55
60
|
*
|
|
56
61
|
* Do not match this pattern:
|
|
57
|
-
*
|
|
62
|
+
* .../tabs/TestFolder.tab-meta.xml
|
|
58
63
|
*/
|
|
59
64
|
private parseAsFolderMetadataXml;
|
|
60
65
|
private isMetadata;
|
|
@@ -10,12 +10,13 @@ exports.MetadataResolver = void 0;
|
|
|
10
10
|
const path_1 = require("path");
|
|
11
11
|
const errors_1 = require("../errors");
|
|
12
12
|
const utils_1 = require("../utils");
|
|
13
|
+
const registryAccess_1 = require("../registry/registryAccess");
|
|
13
14
|
const sourceAdapterFactory_1 = require("./adapters/sourceAdapterFactory");
|
|
14
15
|
const forceIgnore_1 = require("./forceIgnore");
|
|
15
16
|
const treeContainers_1 = require("./treeContainers");
|
|
16
|
-
const registryAccess_1 = require("../registry/registryAccess");
|
|
17
17
|
/**
|
|
18
18
|
* Resolver for metadata type and component objects.
|
|
19
|
+
*
|
|
19
20
|
* @internal
|
|
20
21
|
*/
|
|
21
22
|
class MetadataResolver {
|
|
@@ -23,9 +24,10 @@ class MetadataResolver {
|
|
|
23
24
|
* @param registry Custom registry data
|
|
24
25
|
* @param tree `TreeContainer` to traverse with
|
|
25
26
|
*/
|
|
26
|
-
constructor(registry = new registryAccess_1.RegistryAccess(), tree = new treeContainers_1.NodeFSTreeContainer()) {
|
|
27
|
+
constructor(registry = new registryAccess_1.RegistryAccess(), tree = new treeContainers_1.NodeFSTreeContainer(), useFsForceIgnore = true) {
|
|
27
28
|
this.registry = registry;
|
|
28
29
|
this.tree = tree;
|
|
30
|
+
this.useFsForceIgnore = useFsForceIgnore;
|
|
29
31
|
this.sourceAdapterFactory = new sourceAdapterFactory_1.SourceAdapterFactory(this.registry, tree);
|
|
30
32
|
this.forceIgnoredPaths = new Set();
|
|
31
33
|
}
|
|
@@ -39,7 +41,8 @@ class MetadataResolver {
|
|
|
39
41
|
if (!this.tree.exists(fsPath)) {
|
|
40
42
|
throw new errors_1.TypeInferenceError('error_path_not_found', fsPath);
|
|
41
43
|
}
|
|
42
|
-
|
|
44
|
+
// use the default ignore if we aren't using a real one
|
|
45
|
+
this.forceIgnore = this.useFsForceIgnore ? forceIgnore_1.ForceIgnore.findAndCreate(fsPath) : new forceIgnore_1.ForceIgnore();
|
|
43
46
|
if (this.tree.isDirectory(fsPath) && !this.resolveDirectoryAsComponent(fsPath)) {
|
|
44
47
|
return this.getComponentsFromPathRecursive(fsPath, inclusiveFilter);
|
|
45
48
|
}
|
|
@@ -54,7 +57,7 @@ class MetadataResolver {
|
|
|
54
57
|
return components;
|
|
55
58
|
}
|
|
56
59
|
for (const file of this.tree.readDirectory(dir)) {
|
|
57
|
-
const fsPath = path_1.join(dir, file);
|
|
60
|
+
const fsPath = (0, path_1.join)(dir, file);
|
|
58
61
|
if (ignore.has(fsPath)) {
|
|
59
62
|
continue;
|
|
60
63
|
}
|
|
@@ -86,15 +89,15 @@ class MetadataResolver {
|
|
|
86
89
|
}
|
|
87
90
|
// don't traverse further if not in a root type directory. performance optimization
|
|
88
91
|
// for mixed content types and ensures we don't add duplicates of the component.
|
|
89
|
-
const typeDir = path_1.basename(path_1.dirname(component.type.inFolder ? path_1.dirname(fsPath) : fsPath));
|
|
92
|
+
const typeDir = (0, path_1.basename)((0, path_1.dirname)(component.type.inFolder ? (0, path_1.dirname)(fsPath) : fsPath));
|
|
90
93
|
if (component.type.strictDirectoryName && typeDir !== component.type.directoryName) {
|
|
91
94
|
return components;
|
|
92
95
|
}
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
98
|
}
|
|
96
|
-
for (const
|
|
97
|
-
components.push(...this.getComponentsFromPathRecursive(
|
|
99
|
+
for (const directory of dirQueue) {
|
|
100
|
+
components.push(...this.getComponentsFromPathRecursive(directory, inclusiveFilter));
|
|
98
101
|
}
|
|
99
102
|
return components;
|
|
100
103
|
}
|
|
@@ -124,7 +127,7 @@ class MetadataResolver {
|
|
|
124
127
|
* @param fsPath File path of a potential metadata xml file
|
|
125
128
|
*/
|
|
126
129
|
parseAsRootMetadataXml(fsPath) {
|
|
127
|
-
return !!utils_1.parseMetadataXml(fsPath);
|
|
130
|
+
return !!(0, utils_1.parseMetadataXml)(fsPath);
|
|
128
131
|
}
|
|
129
132
|
resolveType(fsPath) {
|
|
130
133
|
let resolvedType;
|
|
@@ -135,7 +138,7 @@ class MetadataResolver {
|
|
|
135
138
|
// types with folders only have folder components living at the top level.
|
|
136
139
|
// if the fsPath is a folder component, let a future strategy deal with it
|
|
137
140
|
// const isFolderType = this.getTypeFromName(typeId).inFolder;
|
|
138
|
-
if (!type.inFolder || utils_1.parentName(fsPath) !== type.directoryName) {
|
|
141
|
+
if (!type.inFolder || (0, utils_1.parentName)(fsPath) !== type.directoryName) {
|
|
139
142
|
resolvedType = type;
|
|
140
143
|
}
|
|
141
144
|
break;
|
|
@@ -143,7 +146,7 @@ class MetadataResolver {
|
|
|
143
146
|
}
|
|
144
147
|
// attempt 2 - check if it's a metadata xml file
|
|
145
148
|
if (!resolvedType) {
|
|
146
|
-
const parsedMetaXml = utils_1.parseMetadataXml(fsPath);
|
|
149
|
+
const parsedMetaXml = (0, utils_1.parseMetadataXml)(fsPath);
|
|
147
150
|
if (parsedMetaXml) {
|
|
148
151
|
resolvedType = this.registry.getTypeBySuffix(parsedMetaXml.suffix);
|
|
149
152
|
}
|
|
@@ -158,7 +161,7 @@ class MetadataResolver {
|
|
|
158
161
|
}
|
|
159
162
|
// attempt 3 - try treating the file extension name as a suffix
|
|
160
163
|
if (!resolvedType) {
|
|
161
|
-
resolvedType = this.registry.getTypeBySuffix(utils_1.extName(fsPath));
|
|
164
|
+
resolvedType = this.registry.getTypeBySuffix((0, utils_1.extName)(fsPath));
|
|
162
165
|
}
|
|
163
166
|
return resolvedType;
|
|
164
167
|
}
|
|
@@ -197,26 +200,43 @@ class MetadataResolver {
|
|
|
197
200
|
* @param fsPath File path of a potential content metadata file
|
|
198
201
|
*/
|
|
199
202
|
parseAsContentMetadataXml(fsPath) {
|
|
200
|
-
return !!this.registry.getTypeBySuffix(utils_1.extName(fsPath));
|
|
203
|
+
return !!this.registry.getTypeBySuffix((0, utils_1.extName)(fsPath));
|
|
204
|
+
}
|
|
205
|
+
// Get the array of directoryNames for types that have folderContentType
|
|
206
|
+
getFolderContentTypeDirNames() {
|
|
207
|
+
if (!this.folderContentTypeDirNames) {
|
|
208
|
+
this.folderContentTypeDirNames = this.registry.getFolderContentTypes().map((t) => t.directoryName);
|
|
209
|
+
}
|
|
210
|
+
return this.folderContentTypeDirNames;
|
|
201
211
|
}
|
|
202
212
|
/**
|
|
203
213
|
* Identify metadata xml for a folder component:
|
|
204
|
-
*
|
|
214
|
+
* .../email/TestFolder-meta.xml
|
|
215
|
+
* .../reports/foo/bar-meta.xml
|
|
205
216
|
*
|
|
206
217
|
* Do not match this pattern:
|
|
207
|
-
*
|
|
218
|
+
* .../tabs/TestFolder.tab-meta.xml
|
|
208
219
|
*/
|
|
209
220
|
parseAsFolderMetadataXml(fsPath) {
|
|
210
|
-
|
|
221
|
+
let folderName;
|
|
222
|
+
const match = new RegExp(/(.+)-meta\.xml/).exec((0, path_1.basename)(fsPath));
|
|
211
223
|
if (match && !match[1].includes('.')) {
|
|
212
224
|
const parts = fsPath.split(path_1.sep);
|
|
213
|
-
|
|
225
|
+
if (parts.length > 1) {
|
|
226
|
+
const folderContentTypesDirs = this.getFolderContentTypeDirNames();
|
|
227
|
+
// check if the path contains a folder content name as a directory
|
|
228
|
+
// e.g., `/reports/` and if it does return that folder name.
|
|
229
|
+
folderContentTypesDirs.some((dirName) => {
|
|
230
|
+
if (fsPath.includes(`${path_1.sep}${dirName}${path_1.sep}`)) {
|
|
231
|
+
folderName = dirName;
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
214
235
|
}
|
|
236
|
+
return folderName;
|
|
215
237
|
}
|
|
216
238
|
isMetadata(fsPath) {
|
|
217
|
-
return (!!utils_1.parseMetadataXml(fsPath) ||
|
|
218
|
-
this.parseAsContentMetadataXml(fsPath) ||
|
|
219
|
-
!!this.parseAsFolderMetadataXml(fsPath));
|
|
239
|
+
return (!!(0, utils_1.parseMetadataXml)(fsPath) || this.parseAsContentMetadataXml(fsPath) || !!this.parseAsFolderMetadataXml(fsPath));
|
|
220
240
|
}
|
|
221
241
|
}
|
|
222
242
|
exports.MetadataResolver = MetadataResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadataResolver.js","sourceRoot":"","sources":["../../../src/resolve/metadataResolver.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+BAAoD;AACpD,sCAA+C;AAC/C,oCAAiE;AACjE,0EAAuE;AACvE,+CAA4C;AAE5C,qDAAsE;
|
|
1
|
+
{"version":3,"file":"metadataResolver.js","sourceRoot":"","sources":["../../../src/resolve/metadataResolver.ts"],"names":[],"mappings":"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"}
|