@minecraft/api-docs-generator 1.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.
- package/CHANGELOG.json +20 -0
- package/CHANGELOG.md +13 -0
- package/README.md +92 -0
- package/lib/ChangelogStrategy.d.ts +39 -0
- package/lib/ChangelogStrategy.js +114 -0
- package/lib/ChangelogStrategy.js.map +1 -0
- package/lib/Config.d.ts +76 -0
- package/lib/Config.js +68 -0
- package/lib/Config.js.map +1 -0
- package/lib/Context.d.ts +28 -0
- package/lib/Context.js +323 -0
- package/lib/Context.js.map +1 -0
- package/lib/FileLoader.d.ts +13 -0
- package/lib/FileLoader.js +91 -0
- package/lib/FileLoader.js.map +1 -0
- package/lib/Logger.d.ts +65 -0
- package/lib/Logger.js +179 -0
- package/lib/Logger.js.map +1 -0
- package/lib/MinecraftRelease.d.ts +37 -0
- package/lib/MinecraftRelease.js +157 -0
- package/lib/MinecraftRelease.js.map +1 -0
- package/lib/PrettierConfiguration.d.ts +2 -0
- package/lib/PrettierConfiguration.js +17 -0
- package/lib/PrettierConfiguration.js.map +1 -0
- package/lib/changelog.d.ts +11 -0
- package/lib/changelog.js +459 -0
- package/lib/changelog.js.map +1 -0
- package/lib/cli.d.ts +2 -0
- package/lib/cli.js +172 -0
- package/lib/cli.js.map +1 -0
- package/lib/filters/CommandFilters.d.ts +2 -0
- package/lib/filters/CommandFilters.js +171 -0
- package/lib/filters/CommandFilters.js.map +1 -0
- package/lib/filters/CommonFilters.d.ts +2 -0
- package/lib/filters/CommonFilters.js +2518 -0
- package/lib/filters/CommonFilters.js.map +1 -0
- package/lib/filters/Filters.d.ts +17 -0
- package/lib/filters/Filters.js +5 -0
- package/lib/filters/Filters.js.map +1 -0
- package/lib/filters/MarkdownFilters.d.ts +2 -0
- package/lib/filters/MarkdownFilters.js +63 -0
- package/lib/filters/MarkdownFilters.js.map +1 -0
- package/lib/filters/TypeScriptFilters.d.ts +2 -0
- package/lib/filters/TypeScriptFilters.js +387 -0
- package/lib/filters/TypeScriptFilters.js.map +1 -0
- package/lib/filters/index.d.ts +4 -0
- package/lib/filters/index.js +23 -0
- package/lib/filters/index.js.map +1 -0
- package/lib/generator.d.ts +8 -0
- package/lib/generator.js +511 -0
- package/lib/generator.js.map +1 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.js +50 -0
- package/lib/index.js.map +1 -0
- package/lib/modules/IMinecraftModule.d.ts +123 -0
- package/lib/modules/IMinecraftModule.js +71 -0
- package/lib/modules/IMinecraftModule.js.map +1 -0
- package/lib/modules/KeyToTypeMapping.d.ts +77 -0
- package/lib/modules/KeyToTypeMapping.js +5 -0
- package/lib/modules/KeyToTypeMapping.js.map +1 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.d.ts +57 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.js +28 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.js.map +1 -0
- package/lib/modules/MinecraftBlockModule.d.ts +139 -0
- package/lib/modules/MinecraftBlockModule.js +37 -0
- package/lib/modules/MinecraftBlockModule.js.map +1 -0
- package/lib/modules/MinecraftChangelogTypes.d.ts +60 -0
- package/lib/modules/MinecraftChangelogTypes.js +17 -0
- package/lib/modules/MinecraftChangelogTypes.js.map +1 -0
- package/lib/modules/MinecraftCommandModule.d.ts +270 -0
- package/lib/modules/MinecraftCommandModule.js +87 -0
- package/lib/modules/MinecraftCommandModule.js.map +1 -0
- package/lib/modules/MinecraftDimensionsModule.d.ts +44 -0
- package/lib/modules/MinecraftDimensionsModule.js +11 -0
- package/lib/modules/MinecraftDimensionsModule.js.map +1 -0
- package/lib/modules/MinecraftDocsTypes.d.ts +475 -0
- package/lib/modules/MinecraftDocsTypes.js +77 -0
- package/lib/modules/MinecraftDocsTypes.js.map +1 -0
- package/lib/modules/MinecraftEffectsModule.d.ts +44 -0
- package/lib/modules/MinecraftEffectsModule.js +11 -0
- package/lib/modules/MinecraftEffectsModule.js.map +1 -0
- package/lib/modules/MinecraftEnchantmentsModule.d.ts +44 -0
- package/lib/modules/MinecraftEnchantmentsModule.js +11 -0
- package/lib/modules/MinecraftEnchantmentsModule.js.map +1 -0
- package/lib/modules/MinecraftEngineDataModules.d.ts +2 -0
- package/lib/modules/MinecraftEngineDataModules.js +5 -0
- package/lib/modules/MinecraftEngineDataModules.js.map +1 -0
- package/lib/modules/MinecraftEntitiesModule.d.ts +44 -0
- package/lib/modules/MinecraftEntitiesModule.js +11 -0
- package/lib/modules/MinecraftEntitiesModule.js.map +1 -0
- package/lib/modules/MinecraftItemsModule.d.ts +44 -0
- package/lib/modules/MinecraftItemsModule.js +11 -0
- package/lib/modules/MinecraftItemsModule.js.map +1 -0
- package/lib/modules/MinecraftSchemaObject.d.ts +16 -0
- package/lib/modules/MinecraftSchemaObject.js +5 -0
- package/lib/modules/MinecraftSchemaObject.js.map +1 -0
- package/lib/modules/MinecraftScriptModule.d.ts +3677 -0
- package/lib/modules/MinecraftScriptModule.js +374 -0
- package/lib/modules/MinecraftScriptModule.js.map +1 -0
- package/lib/modules/MinecraftVanillaDataModules.d.ts +4 -0
- package/lib/modules/MinecraftVanillaDataModules.js +9 -0
- package/lib/modules/MinecraftVanillaDataModules.js.map +1 -0
- package/lib/modules/index.d.ts +15 -0
- package/lib/modules/index.js +34 -0
- package/lib/modules/index.js.map +1 -0
- package/lib/plugins/MarkupGenerator.d.ts +28 -0
- package/lib/plugins/MarkupGenerator.js +5 -0
- package/lib/plugins/MarkupGenerator.js.map +1 -0
- package/lib/plugins/Plugin.d.ts +16 -0
- package/lib/plugins/Plugin.js +5 -0
- package/lib/plugins/Plugin.js.map +1 -0
- package/lib/plugins/index.d.ts +2 -0
- package/lib/plugins/index.js +21 -0
- package/lib/plugins/index.js.map +1 -0
- package/lib/test/commonFilterUnitTests.spec.d.ts +1 -0
- package/lib/test/commonFilterUnitTests.spec.js +85 -0
- package/lib/test/commonFilterUnitTests.spec.js.map +1 -0
- package/lib/test/diffingUnitTests.test.d.ts +1 -0
- package/lib/test/diffingUnitTests.test.js +238 -0
- package/lib/test/diffingUnitTests.test.js.map +1 -0
- package/lib/test/scanObjectUnitTests.test.d.ts +1 -0
- package/lib/test/scanObjectUnitTests.test.js +162 -0
- package/lib/test/scanObjectUnitTests.test.js.map +1 -0
- package/lib/test/versionParsing.test.d.ts +1 -0
- package/lib/test/versionParsing.test.js +147 -0
- package/lib/test/versionParsing.test.js.map +1 -0
- package/lib/utilities/AppendVersion.d.ts +8 -0
- package/lib/utilities/AppendVersion.js +46 -0
- package/lib/utilities/AppendVersion.js.map +1 -0
- package/lib/utilities/Complete.d.ts +7 -0
- package/lib/utilities/Complete.js +5 -0
- package/lib/utilities/Complete.js.map +1 -0
- package/lib/utilities/DeepCopyJson.d.ts +4 -0
- package/lib/utilities/DeepCopyJson.js +46 -0
- package/lib/utilities/DeepCopyJson.js.map +1 -0
- package/lib/utilities/GetFiles.d.ts +3 -0
- package/lib/utilities/GetFiles.js +44 -0
- package/lib/utilities/GetFiles.js.map +1 -0
- package/lib/utilities/LongestCommonSubsequence.d.ts +3 -0
- package/lib/utilities/LongestCommonSubsequence.js +123 -0
- package/lib/utilities/LongestCommonSubsequence.js.map +1 -0
- package/lib/utilities/MergeArrays.d.ts +1 -0
- package/lib/utilities/MergeArrays.js +15 -0
- package/lib/utilities/MergeArrays.js.map +1 -0
- package/lib/utilities/RemoveProperty.d.ts +1 -0
- package/lib/utilities/RemoveProperty.js +16 -0
- package/lib/utilities/RemoveProperty.js.map +1 -0
- package/lib/utilities/ScanObject.d.ts +13 -0
- package/lib/utilities/ScanObject.js +101 -0
- package/lib/utilities/ScanObject.js.map +1 -0
- package/lib/utilities/SortComparers.d.ts +3 -0
- package/lib/utilities/SortComparers.js +21 -0
- package/lib/utilities/SortComparers.js.map +1 -0
- package/lib/utilities/index.d.ts +9 -0
- package/lib/utilities/index.js +28 -0
- package/lib/utilities/index.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
const utils = __importStar(require("../utilities"));
|
|
32
|
+
const semver_1 = __importDefault(require("semver"));
|
|
33
|
+
const vitest_1 = require("vitest");
|
|
34
|
+
const versionEqualityTestCases = [
|
|
35
|
+
{
|
|
36
|
+
testDescription: 'Appending to beta version with minecraft preview version',
|
|
37
|
+
expectedString: '1.2.3-beta.4.5.6-preview.7',
|
|
38
|
+
inputModuleVersion: semver_1.default.parse('1.2.3-beta'),
|
|
39
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6-preview.7'),
|
|
40
|
+
onlyUsePrereleaseInfo: false,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
testDescription: 'Appending to beta version with minecraft non-preview version',
|
|
44
|
+
expectedString: '1.2.3-beta.4.5.6-stable',
|
|
45
|
+
inputModuleVersion: semver_1.default.parse('1.2.3-beta'),
|
|
46
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6'),
|
|
47
|
+
onlyUsePrereleaseInfo: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
testDescription: 'Appending to non-beta version with minecraft preview version',
|
|
51
|
+
expectedString: '1.2.3-rc.4.5.6-preview.7',
|
|
52
|
+
inputModuleVersion: semver_1.default.parse('1.2.3'),
|
|
53
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6-preview.7'),
|
|
54
|
+
onlyUsePrereleaseInfo: false,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
testDescription: 'Appending to non-beta version with minecraft non-preview version',
|
|
58
|
+
expectedString: '1.2.3',
|
|
59
|
+
inputModuleVersion: semver_1.default.parse('1.2.3'),
|
|
60
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6'),
|
|
61
|
+
onlyUsePrereleaseInfo: false,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
testDescription: 'Only leveraging pre-release information for minecraft version',
|
|
65
|
+
expectedString: '1.2.3-preview.20',
|
|
66
|
+
inputModuleVersion: semver_1.default.parse('1.2.3'),
|
|
67
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6-preview.20'),
|
|
68
|
+
onlyUsePrereleaseInfo: true,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
testDescription: 'Does not use minecraft version override if it is not a pre-release version',
|
|
72
|
+
expectedString: '1.2.3',
|
|
73
|
+
inputModuleVersion: semver_1.default.parse('1.2.3'),
|
|
74
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6'),
|
|
75
|
+
onlyUsePrereleaseInfo: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
testDescription: 'Removes prerelease info from minecraft version override when only using prerelease info from input',
|
|
79
|
+
expectedString: '1.2.3-preview.20',
|
|
80
|
+
inputModuleVersion: semver_1.default.parse('1.2.3-beta.0'),
|
|
81
|
+
inputMinecraftVersion: semver_1.default.parse('4.5.6-preview.20'),
|
|
82
|
+
onlyUsePrereleaseInfo: true,
|
|
83
|
+
},
|
|
84
|
+
];
|
|
85
|
+
(0, vitest_1.describe)(`Version Parsing`, () => {
|
|
86
|
+
for (const versionTest of versionEqualityTestCases) {
|
|
87
|
+
(0, vitest_1.it)(versionTest.testDescription, function () {
|
|
88
|
+
(0, vitest_1.expect)(versionTest.expectedString).toEqual(utils.appendMinecraftVersion(versionTest.inputModuleVersion, versionTest.inputMinecraftVersion, versionTest.onlyUsePrereleaseInfo));
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
(0, vitest_1.it)('Sorts Versions Correctly', () => {
|
|
92
|
+
const versionOrderTestCases = [
|
|
93
|
+
{
|
|
94
|
+
expectedOrder: 2,
|
|
95
|
+
moduleVersion: semver_1.default.parse('1.0.0-beta'),
|
|
96
|
+
minecraftVersion: semver_1.default.parse('1.1.0-preview.1'),
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
expectedOrder: 0,
|
|
100
|
+
moduleVersion: semver_1.default.parse('1.0.0-beta'),
|
|
101
|
+
minecraftVersion: semver_1.default.parse('1.0.0-preview.1'),
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
expectedOrder: 1,
|
|
105
|
+
moduleVersion: semver_1.default.parse('1.0.0-beta'),
|
|
106
|
+
minecraftVersion: semver_1.default.parse('1.0.0'),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
expectedOrder: 5,
|
|
110
|
+
moduleVersion: semver_1.default.parse('1.0.0'),
|
|
111
|
+
minecraftVersion: semver_1.default.parse('1.2.0'),
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
expectedOrder: 3,
|
|
115
|
+
moduleVersion: semver_1.default.parse('1.0.0-beta'),
|
|
116
|
+
minecraftVersion: semver_1.default.parse('1.1.0'),
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
expectedOrder: 4,
|
|
120
|
+
moduleVersion: semver_1.default.parse('1.0.0'),
|
|
121
|
+
minecraftVersion: semver_1.default.parse('1.2.0-preview.1'),
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
expectedOrder: 6,
|
|
125
|
+
moduleVersion: semver_1.default.parse('1.1.0-beta'),
|
|
126
|
+
minecraftVersion: semver_1.default.parse('1.1.0-preview.1'),
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
const sortedVersions = versionOrderTestCases.sort((a, b) => {
|
|
130
|
+
const aVersion = utils.appendMinecraftVersion(a.moduleVersion, a.minecraftVersion);
|
|
131
|
+
const bVersion = utils.appendMinecraftVersion(b.moduleVersion, b.minecraftVersion);
|
|
132
|
+
return semver_1.default.compare(aVersion, bVersion);
|
|
133
|
+
});
|
|
134
|
+
for (let i = 0; i < sortedVersions.length; ++i) {
|
|
135
|
+
(0, vitest_1.expect)(i).toEqual(sortedVersions[i].expectedOrder);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
(0, vitest_1.it)("Beta Minecraft release modules are 'less than' non-beta release modules", () => {
|
|
139
|
+
const betaMinecraftRelease = semver_1.default.parse('1.2.3-preview.4');
|
|
140
|
+
const nonBetaMinecraftRelease = semver_1.default.parse('1.2.3');
|
|
141
|
+
const betaModule = utils.appendMinecraftVersion(semver_1.default.parse('1.0.0-beta'), betaMinecraftRelease);
|
|
142
|
+
const nonBetaModule = utils.appendMinecraftVersion(semver_1.default.parse('1.0.0-beta'), nonBetaMinecraftRelease);
|
|
143
|
+
(0, vitest_1.expect)(semver_1.default.lt(betaModule, nonBetaModule)).toBeTruthy();
|
|
144
|
+
(0, vitest_1.expect)(semver_1.default.gt(nonBetaModule, betaModule)).toBeTruthy();
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=versionParsing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionParsing.test.js","sourceRoot":"","sources":["../../src/test/versionParsing.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import semver from 'semver';
|
|
2
|
+
/**
|
|
3
|
+
* Appends unique build info to pre-release tags to ensure unique module names per release.
|
|
4
|
+
*
|
|
5
|
+
* If 'onlyUsePrereleaseInfo' is set to true, we only use the prerelease part of the Minecraft version,
|
|
6
|
+
* e.g. "-preview.5" out of "1.2.3-preview.5"
|
|
7
|
+
*/
|
|
8
|
+
export declare function appendMinecraftVersion(parsedVersion: semver.SemVer, minecraftVersion: semver.SemVer, onlyUsePrereleaseInfo?: boolean): string;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.appendMinecraftVersion = appendMinecraftVersion;
|
|
9
|
+
const semver_1 = __importDefault(require("semver"));
|
|
10
|
+
/**
|
|
11
|
+
* Appends unique build info to pre-release tags to ensure unique module names per release.
|
|
12
|
+
*
|
|
13
|
+
* If 'onlyUsePrereleaseInfo' is set to true, we only use the prerelease part of the Minecraft version,
|
|
14
|
+
* e.g. "-preview.5" out of "1.2.3-preview.5"
|
|
15
|
+
*/
|
|
16
|
+
function appendMinecraftVersion(parsedVersion, minecraftVersion, onlyUsePrereleaseInfo) {
|
|
17
|
+
const versionToAppend = onlyUsePrereleaseInfo && minecraftVersion.prerelease.length > 0
|
|
18
|
+
? minecraftVersion.prerelease.join('.')
|
|
19
|
+
: minecraftVersion.toString();
|
|
20
|
+
let correctedVersion = !onlyUsePrereleaseInfo
|
|
21
|
+
? parsedVersion
|
|
22
|
+
: semver_1.default.parse(`${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}`);
|
|
23
|
+
if (minecraftVersion.prerelease.length === 2) {
|
|
24
|
+
// Pre-release Minecraft
|
|
25
|
+
if (correctedVersion.prerelease.length > 0) {
|
|
26
|
+
// Pre-release module
|
|
27
|
+
correctedVersion = semver_1.default.parse(`${correctedVersion.format()}.${versionToAppend}`);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// Stable module
|
|
31
|
+
correctedVersion = semver_1.default.parse(`${correctedVersion.format()}-${onlyUsePrereleaseInfo ? '' : 'rc.'}${versionToAppend}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else if (minecraftVersion.prerelease.length === 0) {
|
|
35
|
+
// Stable Minecraft
|
|
36
|
+
if (correctedVersion.prerelease.length > 0) {
|
|
37
|
+
// Pre-release module
|
|
38
|
+
correctedVersion = semver_1.default.parse(`${correctedVersion.format()}.${versionToAppend}-stable`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
throw new Error(`Unexpected prerelease tag in Minecraft version '${minecraftVersion.format()}'.`);
|
|
43
|
+
}
|
|
44
|
+
return correctedVersion.format();
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=AppendVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppendVersion.js","sourceRoot":"","sources":["../../src/utilities/AppendVersion.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;AAUlC,wDAoCC;AA5CD,oDAA4B;AAE5B;;;;;GAKG;AACH,SAAgB,sBAAsB,CAClC,aAA4B,EAC5B,gBAA+B,EAC/B,qBAA+B;IAE/B,MAAM,eAAe,GACjB,qBAAqB,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QAC3D,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAEtC,IAAI,gBAAgB,GAAG,CAAC,qBAAqB;QACzC,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,gBAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IAE3F,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,wBAAwB;QACxB,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,qBAAqB;YACrB,gBAAgB,GAAG,gBAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACJ,gBAAgB;YAChB,gBAAgB,GAAG,gBAAM,CAAC,KAAK,CAC3B,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,eAAe,EAAE,CACzF,CAAC;QACN,CAAC;IACL,CAAC;SAAM,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,mBAAmB;QACnB,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,qBAAqB;YACrB,gBAAgB,GAAG,gBAAM,CAAC,KAAK,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,IAAI,eAAe,SAAS,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,mDAAmD,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtG,CAAC;IAED,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small helper that makes every field in a struct non-optional, but re-adds undefined in the explicit type.
|
|
3
|
+
* This allows us to ensure we don't miss any fields on generation update, but still allow for undefined values
|
|
4
|
+
*/
|
|
5
|
+
export type Complete<T> = {
|
|
6
|
+
[P in keyof Required<T>]: T[P] extends Required<T>[P] ? T[P] : T[P] | undefined;
|
|
7
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Complete.js","sourceRoot":"","sources":["../../src/utilities/Complete.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.deepCopyJson = deepCopyJson;
|
|
29
|
+
const log = __importStar(require("../Logger"));
|
|
30
|
+
function deepCopyJson(value) {
|
|
31
|
+
// eslint-disable-next-line unicorn/no-null
|
|
32
|
+
if (value === undefined || value === null) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
return JSON.parse(
|
|
37
|
+
// eslint-disable-next-line unicorn/no-null
|
|
38
|
+
JSON.stringify(value, (_key, value) => (typeof value === 'undefined' ? null : value)));
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
if (e instanceof Error) {
|
|
42
|
+
log.error(`deepCopyJson failed: ${e.message} @ ${e.stack}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=DeepCopyJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeepCopyJson.js","sourceRoot":"","sources":["../../src/utilities/DeepCopyJson.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;AAMlC,oCAeC;AAnBD,+CAAiC;AAIjC,SAAgB,YAAY,CAAI,KAAQ;IACpC,2CAA2C;IAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK;QACb,2CAA2C;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAY,EAAE,KAAc,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACtF,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;YACrB,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.readFile = readFile;
|
|
9
|
+
exports.getFiles = getFiles;
|
|
10
|
+
exports.getFilesRecursively = getFilesRecursively;
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
function readFile(filePath) {
|
|
14
|
+
try {
|
|
15
|
+
const fileData = fs_1.default.readFileSync(filePath);
|
|
16
|
+
return fileData;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function getFiles(dir) {
|
|
23
|
+
try {
|
|
24
|
+
const files = fs_1.default.readdirSync(dir);
|
|
25
|
+
return files;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function getFilesRecursively(dir) {
|
|
32
|
+
try {
|
|
33
|
+
const dirents = fs_1.default.readdirSync(dir, { withFileTypes: true });
|
|
34
|
+
const files = dirents.map(dirent => {
|
|
35
|
+
const res = path_1.default.resolve(dir, dirent.name);
|
|
36
|
+
return dirent.isDirectory() ? getFilesRecursively(res) : res;
|
|
37
|
+
});
|
|
38
|
+
return Array.prototype.concat(...files);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=GetFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetFiles.js","sourceRoot":"","sources":["../../src/utilities/GetFiles.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;AAKlC,4BAOC;AAED,4BAOC;AAED,kDAWC;AAhCD,4CAAoB;AACpB,gDAAwB;AAExB,SAAgB,QAAQ,CAAC,QAAgB;IACrC,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAW;IAChC,IAAI,CAAC;QACD,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC3C,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAC/B,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAa,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type GenericObject = Record<string, unknown>;
|
|
2
|
+
export declare function longestCommonSubsequence(oldArray: GenericObject[], newArray: GenericObject[], key: string): unknown[];
|
|
3
|
+
export declare function diffArray(oldArray: GenericObject[] | undefined, newArray: GenericObject[] | undefined, key: string): GenericObject[];
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.longestCommonSubsequence = longestCommonSubsequence;
|
|
6
|
+
exports.diffArray = diffArray;
|
|
7
|
+
// https://en.wikipedia.org/wiki/Longest_common_subsequence
|
|
8
|
+
// returns the longest common subsequence of the two arrays (returns the keys)
|
|
9
|
+
// this can be used to generate additions and removals as everything that is returned from this
|
|
10
|
+
// is the key of common elements found in both arrays
|
|
11
|
+
function longestCommonSubsequence(oldArray, newArray, key) {
|
|
12
|
+
// create LCS comparison array initialized to 0
|
|
13
|
+
const c = new Array(oldArray.length + 1);
|
|
14
|
+
for (let i = 0; i < c.length; ++i) {
|
|
15
|
+
c[i] = new Array(newArray.length + 1);
|
|
16
|
+
for (let j = 0; j < c[i].length; ++j) {
|
|
17
|
+
c[i][j] = 0;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
for (let i = 1; i <= oldArray.length; ++i) {
|
|
21
|
+
for (let j = 1; j <= newArray.length; ++j) {
|
|
22
|
+
if (oldArray[i - 1][key] === newArray[j - 1][key]) {
|
|
23
|
+
c[i][j] = c[i - 1][j - 1] + 1;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
c[i][j] = Math.max(c[i][j - 1], c[i - 1][j]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// backtrack to build LCS values (we backtrace because the matrix traversal starts
|
|
31
|
+
// from the end which represents the longest of the common subsequences)
|
|
32
|
+
let i = oldArray.length;
|
|
33
|
+
let j = newArray.length;
|
|
34
|
+
const ret = [];
|
|
35
|
+
while (i !== 0 && j !== 0) {
|
|
36
|
+
if (oldArray[i - 1][key] === newArray[j - 1][key]) {
|
|
37
|
+
ret.push(oldArray[i - 1][key]);
|
|
38
|
+
i -= 1;
|
|
39
|
+
j -= 1;
|
|
40
|
+
}
|
|
41
|
+
// this helps us traverse the matrix by finding the next largest LCS at the current point
|
|
42
|
+
else if (c[i][j - 1] > c[i - 1][j]) {
|
|
43
|
+
j -= 1;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
i -= 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// the return value we constructed is backwards because we traversed the matrix backwards, so we reverse this
|
|
50
|
+
return ret.reverse();
|
|
51
|
+
}
|
|
52
|
+
// https://en.wikipedia.org/wiki/Diff
|
|
53
|
+
// Using the LCS from above, we can see what was removed from oldArray as objects not found in the LCS
|
|
54
|
+
// and what was added are objects in newArray not found in LCS
|
|
55
|
+
// key is the object we are comparing with
|
|
56
|
+
// returns an array holding the diffed information the following format:
|
|
57
|
+
// array: [
|
|
58
|
+
// {
|
|
59
|
+
// "key": "name",
|
|
60
|
+
// ...
|
|
61
|
+
// },
|
|
62
|
+
// {
|
|
63
|
+
// "key": "name",
|
|
64
|
+
// "$added": true,
|
|
65
|
+
// ...
|
|
66
|
+
// },
|
|
67
|
+
// {
|
|
68
|
+
// "key": "name",
|
|
69
|
+
// "$removed": true,
|
|
70
|
+
// ...
|
|
71
|
+
// },
|
|
72
|
+
//]
|
|
73
|
+
function diffArray(oldArray, newArray, key) {
|
|
74
|
+
const oldArrayOrEmpty = oldArray ?? [];
|
|
75
|
+
const newArrayOrEmpty = newArray ?? [];
|
|
76
|
+
const lcs = longestCommonSubsequence(oldArrayOrEmpty, newArrayOrEmpty, key);
|
|
77
|
+
let i = 0;
|
|
78
|
+
let j = 0;
|
|
79
|
+
const ret = [];
|
|
80
|
+
const makeRemoval = (item) => {
|
|
81
|
+
const objectRemoved = {
|
|
82
|
+
...item,
|
|
83
|
+
$removed: true,
|
|
84
|
+
};
|
|
85
|
+
ret.push(objectRemoved);
|
|
86
|
+
++i;
|
|
87
|
+
};
|
|
88
|
+
const makeAddition = (item) => {
|
|
89
|
+
const objectAdded = {
|
|
90
|
+
...item,
|
|
91
|
+
$added: true,
|
|
92
|
+
};
|
|
93
|
+
ret.push(objectAdded);
|
|
94
|
+
++j;
|
|
95
|
+
};
|
|
96
|
+
// lcs is sorted against both arrays, so we can safely traverse each array
|
|
97
|
+
// up until we find the common element
|
|
98
|
+
for (const common of lcs) {
|
|
99
|
+
// removals, things in old but not in new or common up to our current common
|
|
100
|
+
while (i < oldArrayOrEmpty.length && common !== oldArrayOrEmpty[i][key]) {
|
|
101
|
+
makeRemoval(oldArrayOrEmpty[i]);
|
|
102
|
+
}
|
|
103
|
+
// additions, things in new but not in common or old up to our current common
|
|
104
|
+
while (j < newArrayOrEmpty.length && common !== newArrayOrEmpty[j][key]) {
|
|
105
|
+
makeAddition(newArrayOrEmpty[j]);
|
|
106
|
+
}
|
|
107
|
+
// finally add the common element
|
|
108
|
+
ret.push(oldArrayOrEmpty[i]);
|
|
109
|
+
++i;
|
|
110
|
+
++j;
|
|
111
|
+
}
|
|
112
|
+
// add any remaining removals
|
|
113
|
+
while (i < oldArrayOrEmpty.length) {
|
|
114
|
+
makeRemoval(oldArrayOrEmpty[i]);
|
|
115
|
+
}
|
|
116
|
+
// add any remaining additions
|
|
117
|
+
while (j < newArrayOrEmpty.length) {
|
|
118
|
+
makeAddition(newArrayOrEmpty[j]);
|
|
119
|
+
}
|
|
120
|
+
// final array complete
|
|
121
|
+
return ret;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=LongestCommonSubsequence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LongestCommonSubsequence.js","sourceRoot":"","sources":["../../src/utilities/LongestCommonSubsequence.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAQlC,4DAyCC;AAuBD,8BAuDC;AA3HD,2DAA2D;AAC3D,8EAA8E;AAC9E,+FAA+F;AAC/F,qDAAqD;AACrD,SAAgB,wBAAwB,CAAC,QAAyB,EAAE,QAAyB,EAAE,GAAW;IACtG,+CAA+C;IAC/C,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAa,CAAC;QAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACJ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;QACL,CAAC;IACL,CAAC;IAED,kFAAkF;IAClF,wEAAwE;IACxE,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxB,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IACxB,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC,IAAI,CAAC,CAAC;YACP,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;QACD,yFAAyF;aACpF,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACJ,CAAC,IAAI,CAAC,CAAC;QACX,CAAC;IACL,CAAC;IAED,6GAA6G;IAC7G,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;AACzB,CAAC;AAED,qCAAqC;AACrC,sGAAsG;AACtG,8DAA8D;AAC9D,0CAA0C;AAC1C,wEAAwE;AACxE,WAAW;AACX,OAAO;AACP,wBAAwB;AACxB,aAAa;AACb,QAAQ;AACR,OAAO;AACP,wBAAwB;AACxB,yBAAyB;AACzB,aAAa;AACb,QAAQ;AACR,OAAO;AACP,wBAAwB;AACxB,2BAA2B;AAC3B,aAAa;AACb,QAAQ;AACR,GAAG;AACH,SAAgB,SAAS,CAAC,QAAqC,EAAE,QAAqC,EAAE,GAAW;IAC/G,MAAM,eAAe,GAAoB,QAAQ,IAAI,EAAE,CAAC;IACxD,MAAM,eAAe,GAAoB,QAAQ,IAAI,EAAE,CAAC;IACxD,MAAM,GAAG,GAAG,wBAAwB,CAAC,eAAe,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,GAAG,GAAoB,EAAE,CAAC;IAEhC,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG;YAClB,GAAG,IAAI;YACP,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxB,EAAE,CAAC,CAAC;IACR,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAE,EAAE;QACzC,MAAM,WAAW,GAAG;YAChB,GAAG,IAAI;YACP,MAAM,EAAE,IAAI;SACf,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,EAAE,CAAC,CAAC;IACR,CAAC,CAAC;IAEF,0EAA0E;IAC1E,sCAAsC;IACtC,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;QACvB,4EAA4E;QAC5E,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,6EAA6E;QAC7E,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,IAAI,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,iCAAiC;QACjC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,EAAE,CAAC,CAAC;QACJ,EAAE,CAAC,CAAC;IACR,CAAC;IAED,6BAA6B;IAC7B,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAChC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,8BAA8B;IAC9B,OAAO,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAChC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,uBAAuB;IACvB,OAAO,GAAG,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function mergeOptionalArrays<T>(parent: T[] | undefined | null, merge: T[] | undefined | null): T[] | undefined;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.mergeOptionalArrays = mergeOptionalArrays;
|
|
6
|
+
function mergeOptionalArrays(parent, merge) {
|
|
7
|
+
if (parent && merge) {
|
|
8
|
+
return [...parent, ...merge];
|
|
9
|
+
}
|
|
10
|
+
if (parent) {
|
|
11
|
+
return parent;
|
|
12
|
+
}
|
|
13
|
+
return merge;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=MergeArrays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MergeArrays.js","sourceRoot":"","sources":["../../src/utilities/MergeArrays.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,kDAUC;AAVD,SAAgB,mBAAmB,CAAI,MAA8B,EAAE,KAA6B;IAChG,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function removePropertyRecursive(value: Record<string, unknown>, propertyName: string): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.removePropertyRecursive = removePropertyRecursive;
|
|
6
|
+
function removePropertyRecursive(value, propertyName) {
|
|
7
|
+
for (const prop in value) {
|
|
8
|
+
if (prop === propertyName) {
|
|
9
|
+
delete value[prop];
|
|
10
|
+
}
|
|
11
|
+
else if (typeof value[prop] === 'object') {
|
|
12
|
+
removePropertyRecursive(value[prop], propertyName);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=RemoveProperty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoveProperty.js","sourceRoot":"","sources":["../../src/utilities/RemoveProperty.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAElC,0DAQC;AARD,SAAgB,uBAAuB,CAAC,KAA8B,EAAE,YAAoB;IACxF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACzC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAA4B,EAAE,YAAY,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { KeyToParentTypeMapping, KeyToTypeMapping } from '../modules/KeyToTypeMapping';
|
|
2
|
+
export declare function scanObjectForMemberArray(object: Record<string, unknown>, callback: (parentObject: Record<string, Array<unknown>>, propertyName: string) => void): void;
|
|
3
|
+
/**
|
|
4
|
+
* Scan for all objects with a property with the specified name.
|
|
5
|
+
*
|
|
6
|
+
* If KeyType exists as a key of KeyToTypeMapping, the parent object is a Record with a key of the mapped type,
|
|
7
|
+
* If KeyType also exists as a key of KeyToParentTypeMapping, the parent object is the type defined in that mapping
|
|
8
|
+
* Otherwise if the KeyType is not a key of either mapping, the parent object is a dictionary with unknown keys
|
|
9
|
+
*/
|
|
10
|
+
export declare function scanObjectForMemberWithName<KeyType extends string, ParentType = KeyType extends keyof KeyToTypeMapping ? KeyType extends keyof KeyToParentTypeMapping ? KeyToParentTypeMapping[KeyType] : Record<KeyType, KeyToTypeMapping[KeyType]> : Record<string, unknown>>(object: Record<string, unknown>, memberName: KeyType, callback: (parentObject: ParentType) => void): void;
|
|
11
|
+
export declare function scanObjectForMembersWithNamesNoChangelog<KeyType1 extends keyof KeyToTypeMapping, KeyType2 extends keyof KeyToTypeMapping, ParentType = Pick<KeyToTypeMapping, KeyType1 | KeyType2>>(object: Record<string, unknown>, memberName1: KeyType1, memberName2: KeyType2, callback: (parentObject: ParentType) => void): void;
|
|
12
|
+
export declare function scanObjectForMembersWithNames<KeyType1 extends keyof KeyToTypeMapping, KeyType2 extends keyof KeyToTypeMapping, ParentType = Pick<KeyToTypeMapping, KeyType1 | KeyType2>>(object: Record<string, unknown>, memberName1: KeyType1, memberName2: KeyType2, callback: (parentObject: ParentType) => void): void;
|
|
13
|
+
export declare function scanObjectForMemberWithAnyNamesFromList(object: Record<string, unknown>, memberNames: string[], callback: (parentObject: Record<string, unknown>, propertyName: string) => void): void;
|