@ui5/task-adaptation 1.5.1 → 1.5.2-rc.1

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 (35) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/annotationManager.d.ts +1 -2
  3. package/dist/annotationManager.js +8 -13
  4. package/dist/appVariantManager.d.ts +15 -2
  5. package/dist/appVariantManager.js +46 -27
  6. package/dist/baseAppManager.d.ts +9 -1
  7. package/dist/baseAppManager.js +57 -18
  8. package/dist/bundle.js +97 -59
  9. package/dist/index.js +33 -2
  10. package/dist/model/configuration.d.ts +1 -0
  11. package/dist/processors/abapProcessor.d.ts +1 -1
  12. package/dist/processors/abapProcessor.js +3 -2
  13. package/dist/processors/cfProcessor.d.ts +3 -1
  14. package/dist/processors/cfProcessor.js +70 -9
  15. package/dist/processors/processor.d.ts +1 -1
  16. package/dist/util/cfUtil.d.ts +47 -0
  17. package/dist/util/cfUtil.js +121 -0
  18. package/dist/util/commonUtil.d.ts +1 -2
  19. package/dist/util/commonUtil.js +9 -40
  20. package/dist/util/filesUtil.d.ts +16 -0
  21. package/dist/util/filesUtil.js +83 -0
  22. package/dist/util/i18nMerger.js +2 -2
  23. package/dist/util/movingHandler/fileMoveHandler.d.ts +8 -0
  24. package/dist/util/movingHandler/fileMoveHandler.js +77 -0
  25. package/dist/util/renamingHandlers/manifestRenamingHandler.d.ts +6 -0
  26. package/dist/util/renamingHandlers/manifestRenamingHandler.js +20 -0
  27. package/dist/util/renamingHandlers/renamingHandler.d.ts +4 -0
  28. package/dist/util/renamingHandlers/renamingHandler.js +2 -0
  29. package/dist/util/renamingUtil.d.ts +3 -0
  30. package/dist/util/renamingUtil.js +111 -0
  31. package/package.json +8 -4
  32. package/scripts/publish.ts +256 -0
  33. package/scripts/rollup/overrides/sap/base/config.js +52 -14
  34. package/scripts/rollup.ts +1 -2
  35. package/scripts/test-integration-prep.sh +4 -0
@@ -0,0 +1,256 @@
1
+ import { promises as fs } from "fs";
2
+ import path from "path";
3
+ import yargs from "yargs";
4
+ import { hideBin } from "yargs/helpers";
5
+ import { Octokit } from "@octokit/rest";
6
+ import { retry } from "@octokit/plugin-retry";
7
+
8
+ const OctokitClass = Octokit.plugin(retry);
9
+
10
+
11
+ /**
12
+ * Recursively get all file paths in the workspace root, excluding:
13
+ * - test/lib/integration
14
+ * - test/fixtures
15
+ * - test/expected
16
+ * - test/lib/index.perf.ts
17
+ * Returns relative paths from the root.
18
+ */
19
+ async function getAllRootFilesExceptTestExclusions(root: string): Promise<string[]> {
20
+ const excludeDirs = [
21
+ "test/lib/integration",
22
+ "test/fixtures",
23
+ "test/expected",
24
+ ".git",
25
+ "coverage",
26
+ ".DS_Store",
27
+ "node_modules",
28
+ ".nyc_output",
29
+ "coverage",
30
+ "dist",
31
+ "dist-debug",
32
+ "dist.zip",
33
+ ".env",
34
+ "test/resources/metadata/download"
35
+ ];
36
+ const excludeFiles = [
37
+ "test/lib/index.perf.ts",
38
+ "scripts/test-integration-prep.sh",
39
+ "Jenkinsfile"
40
+ ];
41
+
42
+ async function walk(dir: string): Promise<string[]> {
43
+ const dirents = await fs.readdir(dir, { withFileTypes: true });
44
+ const files: string[] = [];
45
+ for (const dirent of dirents) {
46
+ const relPath = path.relative(root, path.join(dir, dirent.name));
47
+ if (excludeDirs.some(ex => relPath === ex || relPath.startsWith(ex + path.sep))) {
48
+ continue;
49
+ }
50
+ if (excludeFiles.includes(relPath)) {
51
+ continue;
52
+ }
53
+ if (dirent.isDirectory()) {
54
+ files.push(...await walk(path.join(dir, dirent.name)));
55
+ } else {
56
+ files.push(relPath);
57
+ }
58
+ }
59
+ return files;
60
+ }
61
+ return walk(root);
62
+ }
63
+
64
+ const FILES = await getAllRootFilesExceptTestExclusions(process.cwd());
65
+
66
+
67
+ interface PublishArgs {
68
+ p?: string;
69
+ dryRun?: boolean;
70
+ tag?: string;
71
+ branch?: string;
72
+ [key: string]: unknown;
73
+ }
74
+
75
+ async function publish() {
76
+ const argv = yargs(hideBin(process.argv))
77
+ .option("p", {
78
+ type: "string",
79
+ description: "GitHub token (-p)",
80
+ alias: "p"
81
+ })
82
+ .option("dryRun", {
83
+ type: "boolean",
84
+ description: "Run without publishing",
85
+ default: false
86
+ })
87
+ .option("tag", {
88
+ type: "string",
89
+ description: "Publish with a specific tag"
90
+ })
91
+ .option("branch", {
92
+ type: "string",
93
+ description: "Branch to update (default: main)",
94
+ default: "main",
95
+ alias: "b"
96
+ })
97
+ .help()
98
+ .alias("h", "help")
99
+ .parseSync() as PublishArgs;
100
+
101
+ if (argv.dryRun) {
102
+ console.log("Dry run: no publishing will be performed.");
103
+ return;
104
+ }
105
+ const auth = argv.p;
106
+ if (auth) {
107
+ const octokit = new OctokitClass({ auth });
108
+ const ORGANIZATION = "SAP";
109
+ const REPO = "ui5-task-adaptation";
110
+ await uploadToRepo(octokit, ORGANIZATION, REPO, argv.branch);
111
+ if (argv.tag) {
112
+ console.log(`Published with tag: ${argv.tag}`);
113
+ }
114
+ } else {
115
+ console.log("Github token is not provided.");
116
+ }
117
+ }
118
+
119
+
120
+ async function getLatestVersion(): Promise<string> {
121
+ const pkg = await fs.readFile(path.join(process.cwd(), "package.json"), { encoding: "utf-8" });
122
+ const pkgJson = JSON.parse(pkg);
123
+ return pkgJson.version;
124
+ }
125
+
126
+
127
+ async function uploadToRepo(
128
+ octokit: InstanceType<typeof OctokitClass>,
129
+ org: string,
130
+ repo: string,
131
+ branch: string = "main"
132
+ ): Promise<void> {
133
+ const fileBlobs = await Promise.all(Object.values(FILES).map(file => toBlob(octokit, org, repo, path.join(process.cwd(), file))));
134
+ const currentCommit = await getCurrentCommit(octokit, org, repo, branch);
135
+ const newTree = await createNewTree(
136
+ octokit,
137
+ org,
138
+ repo,
139
+ fileBlobs,
140
+ FILES,
141
+ currentCommit.treeSha
142
+ );
143
+ const currentVersion = await getLatestVersion();
144
+ const commitMessage = `Release ${currentVersion}`;
145
+ const newCommit = await createNewCommit(
146
+ octokit,
147
+ org,
148
+ repo,
149
+ commitMessage,
150
+ newTree.sha,
151
+ currentCommit.commitSha
152
+ );
153
+ await setBranchToCommit(octokit, org, repo, branch, newCommit.sha);
154
+ }
155
+
156
+
157
+ async function getCurrentCommit(
158
+ octokit: InstanceType<typeof OctokitClass>,
159
+ org: string,
160
+ repo: string,
161
+ branch: string = "main"
162
+ ): Promise<{ commitSha: string; treeSha: string }> {
163
+ const { data: refData } = await octokit.git.getRef({
164
+ owner: org,
165
+ repo,
166
+ ref: `heads/${branch}`,
167
+ });
168
+ const commitSha = refData.object.sha
169
+ const { data: commitData } = await octokit.git.getCommit({
170
+ owner: org,
171
+ repo,
172
+ commit_sha: commitSha,
173
+ });
174
+ return {
175
+ commitSha,
176
+ treeSha: commitData.tree.sha,
177
+ }
178
+ }
179
+
180
+
181
+ async function toBlob(
182
+ octokit: InstanceType<typeof OctokitClass>,
183
+ org: string,
184
+ repo: string,
185
+ filePath: string
186
+ ): Promise<{ sha: string }> {
187
+ const content = await fs.readFile(filePath, { encoding: "utf8" });
188
+ const blobData = await octokit.git.createBlob({
189
+ owner: org,
190
+ repo,
191
+ content,
192
+ encoding: "utf-8",
193
+ })
194
+ return blobData.data;
195
+ }
196
+
197
+
198
+ async function createNewTree(
199
+ octokit: InstanceType<typeof OctokitClass>,
200
+ owner: string,
201
+ repo: string,
202
+ blobs: { sha: string }[],
203
+ paths: string[],
204
+ parentTreeSha: string
205
+ ): Promise<any> {
206
+ const tree = blobs.map(({ sha }, i) => ({
207
+ path: paths[i],
208
+ mode: "100644" as const,
209
+ type: "blob" as const,
210
+ sha,
211
+ }));
212
+ const { data } = await octokit.git.createTree({
213
+ owner,
214
+ repo,
215
+ tree,
216
+ base_tree: parentTreeSha,
217
+ })
218
+ return data;
219
+ }
220
+
221
+
222
+ async function createNewCommit(
223
+ octokit: InstanceType<typeof OctokitClass>,
224
+ org: string,
225
+ repo: string,
226
+ message: string,
227
+ currentTreeSha: string,
228
+ currentCommitSha: string
229
+ ): Promise<any> {
230
+ const commit = await octokit.git.createCommit({
231
+ owner: org,
232
+ repo,
233
+ message,
234
+ tree: currentTreeSha,
235
+ parents: [currentCommitSha],
236
+ });
237
+ return commit.data;
238
+ };
239
+
240
+
241
+ async function setBranchToCommit(
242
+ octokit: InstanceType<typeof OctokitClass>,
243
+ org: string,
244
+ repo: string,
245
+ branch: string = "main",
246
+ commitSha: string
247
+ ): Promise<any> {
248
+ return octokit.git.updateRef({
249
+ owner: org,
250
+ repo,
251
+ ref: `heads/${branch}`,
252
+ sha: commitSha,
253
+ });
254
+ }
255
+
256
+ publish();
@@ -1,21 +1,59 @@
1
- export default class config {
2
- config = new Map();
3
- static get Type() {
4
- return {
5
- String: "string"
6
- }
7
- }
8
- static get({ name }) {
9
- return name === "sapUiLogLevel" ? "Error" : undefined;
10
- }
11
- static getWritableInstance() {
1
+ /*!
2
+ * ${copyright}
3
+ */
4
+ sap.ui.define([
5
+ ], (
6
+ ) => {
7
+ "use strict";
8
+
9
+ /**
10
+ * The base Configuration.
11
+ *
12
+ * @author SAP SE
13
+ * @version ${version}
14
+ * @private
15
+ * @ui5-restricted sap.ui.core, sap.fl, sap.ui.intergration, sap.ui.export
16
+ * @alias module:sap/base/config
17
+ * @borrows module:sap/base/config/_Configuration.get as get
18
+ * @borrows module:sap/base/config/_Configuration.Type as Type
19
+ * @namespace
20
+ */
21
+
22
+ const _Configuration = { _: {} };
23
+
24
+ const internalConfig = new Map();
25
+
26
+ /**
27
+ * Returns a writable base configuration instance
28
+ * @returns {module:sap/base/config} The writable base configuration
29
+ * @private
30
+ * @ui5-restricted sap.ui.core, sap.fl
31
+ */
32
+ _Configuration.getWritableInstance = () => {
12
33
  return {
13
34
  get(obj) {
14
- config.get(obj.name);
35
+ internalConfig.get(obj.name);
15
36
  },
16
37
  set(name, obj) {
17
- config.set(name, obj);
38
+ internalConfig.set(name, obj);
18
39
  }
19
40
  }
41
+ };
42
+
43
+ /**
44
+ * Attaches the <code>fnFunction</code> event handler to the {@link #event:invalidated invalidated} event
45
+ *
46
+ * @param {function} fnFunction The function to be called when the event occurs
47
+ * @private
48
+ */
49
+ function attachInvalidated() {
20
50
  }
21
- }
51
+ _Configuration._.attachInvalidated = attachInvalidated;
52
+
53
+ const origInvalidate = _Configuration._.invalidate;
54
+ _Configuration._.invalidate = () => {
55
+ origInvalidate();
56
+ };
57
+
58
+ return _Configuration;
59
+ });
package/scripts/rollup.ts CHANGED
@@ -119,8 +119,7 @@ export default class Builder {
119
119
  "bundleDefinition.js",
120
120
  "./dist/bundle.js",
121
121
  [
122
- "sap/ui/performance/Measurement",
123
- "sap/base/config"
122
+ "sap/ui/performance/Measurement"
124
123
  ]
125
124
  );
126
125
  this.copyTypeDefinition();
@@ -0,0 +1,4 @@
1
+ for d in test/fixtures/*/ ; do
2
+ echo "$d"
3
+ npm --prefix $d i
4
+ done