@umbraco/playwright-testhelpers 2.0.0-beta.3 → 2.0.0-beta.31

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 (151) hide show
  1. package/dist/lib/helpers/ApiHelpers.d.ts +20 -4
  2. package/dist/lib/helpers/ApiHelpers.js +28 -4
  3. package/dist/lib/helpers/ApiHelpers.js.map +1 -1
  4. package/dist/lib/helpers/ConstantHelper.d.ts +11 -0
  5. package/dist/lib/helpers/ConstantHelper.js +16 -0
  6. package/dist/lib/helpers/ConstantHelper.js.map +1 -0
  7. package/dist/lib/helpers/DataTypeApiHelper.d.ts +14 -14
  8. package/dist/lib/helpers/DataTypeApiHelper.js +114 -133
  9. package/dist/lib/helpers/DataTypeApiHelper.js.map +1 -1
  10. package/dist/lib/helpers/DataTypeUiHelper.d.ts +140 -0
  11. package/dist/lib/helpers/DataTypeUiHelper.js +439 -0
  12. package/dist/lib/helpers/DataTypeUiHelper.js.map +1 -0
  13. package/dist/lib/helpers/DictionaryApiHelper.d.ts +12 -8
  14. package/dist/lib/helpers/DictionaryApiHelper.js +104 -66
  15. package/dist/lib/helpers/DictionaryApiHelper.js.map +1 -1
  16. package/dist/lib/helpers/DictionaryUiHelper.d.ts +31 -0
  17. package/dist/lib/helpers/DictionaryUiHelper.js +92 -0
  18. package/dist/lib/helpers/DictionaryUiHelper.js.map +1 -0
  19. package/dist/lib/helpers/DocumentApiHelper.d.ts +2 -0
  20. package/dist/lib/helpers/DocumentApiHelper.js +17 -0
  21. package/dist/lib/helpers/DocumentApiHelper.js.map +1 -1
  22. package/dist/lib/helpers/DocumentTypeApiHelper.d.ts +25 -0
  23. package/dist/lib/helpers/DocumentTypeApiHelper.js +223 -0
  24. package/dist/lib/helpers/DocumentTypeApiHelper.js.map +1 -0
  25. package/dist/lib/helpers/DocumentTypeUiHelper.d.ts +23 -0
  26. package/dist/lib/helpers/DocumentTypeUiHelper.js +62 -0
  27. package/dist/lib/helpers/DocumentTypeUiHelper.js.map +1 -0
  28. package/dist/lib/helpers/ExamineManagementUiHelper.d.ts +15 -0
  29. package/dist/lib/helpers/ExamineManagementUiHelper.js +38 -0
  30. package/dist/lib/helpers/ExamineManagementUiHelper.js.map +1 -0
  31. package/dist/lib/helpers/HealthCheckApiHelper.d.ts +13 -0
  32. package/dist/lib/helpers/HealthCheckApiHelper.js +47 -0
  33. package/dist/lib/helpers/HealthCheckApiHelper.js.map +1 -0
  34. package/dist/lib/helpers/HealthCheckUiHelper.d.ts +23 -0
  35. package/dist/lib/helpers/HealthCheckUiHelper.js +59 -0
  36. package/dist/lib/helpers/HealthCheckUiHelper.js.map +1 -0
  37. package/dist/lib/helpers/IndexerApiHelper.d.ts +7 -0
  38. package/dist/lib/helpers/IndexerApiHelper.js +19 -0
  39. package/dist/lib/helpers/IndexerApiHelper.js.map +1 -0
  40. package/dist/lib/helpers/LanguageApiHelper.d.ts +8 -4
  41. package/dist/lib/helpers/LanguageApiHelper.js +46 -26
  42. package/dist/lib/helpers/LanguageApiHelper.js.map +1 -1
  43. package/dist/lib/helpers/LanguageUiHelper.d.ts +23 -0
  44. package/dist/lib/helpers/LanguageUiHelper.js +64 -0
  45. package/dist/lib/helpers/LanguageUiHelper.js.map +1 -0
  46. package/dist/lib/helpers/LogViewerUiHelper.d.ts +37 -0
  47. package/dist/lib/helpers/LogViewerUiHelper.js +102 -0
  48. package/dist/lib/helpers/LogViewerUiHelper.js.map +1 -0
  49. package/dist/lib/helpers/LoginUiHelper.d.ts +11 -0
  50. package/dist/lib/helpers/LoginUiHelper.js +30 -0
  51. package/dist/lib/helpers/LoginUiHelper.js.map +1 -0
  52. package/dist/lib/helpers/MediaApiHelper.d.ts +7 -0
  53. package/dist/lib/helpers/MediaApiHelper.js +28 -0
  54. package/dist/lib/helpers/MediaApiHelper.js.map +1 -0
  55. package/dist/lib/helpers/MediaTypeApiHelper.d.ts +22 -0
  56. package/dist/lib/helpers/MediaTypeApiHelper.js +194 -0
  57. package/dist/lib/helpers/MediaTypeApiHelper.js.map +1 -0
  58. package/dist/lib/helpers/MediaTypeUiHelper.d.ts +15 -0
  59. package/dist/lib/helpers/MediaTypeUiHelper.js +39 -0
  60. package/dist/lib/helpers/MediaTypeUiHelper.js.map +1 -0
  61. package/dist/lib/helpers/ModelsBuilderApiHelper.d.ts +6 -0
  62. package/dist/lib/helpers/ModelsBuilderApiHelper.js +15 -0
  63. package/dist/lib/helpers/ModelsBuilderApiHelper.js.map +1 -0
  64. package/dist/lib/helpers/ModelsBuilderUiHelper.d.ts +11 -0
  65. package/dist/lib/helpers/ModelsBuilderUiHelper.js +27 -0
  66. package/dist/lib/helpers/ModelsBuilderUiHelper.js.map +1 -0
  67. package/dist/lib/helpers/ObjectTypesApiHelper.d.ts +7 -0
  68. package/dist/lib/helpers/ObjectTypesApiHelper.js +25 -0
  69. package/dist/lib/helpers/ObjectTypesApiHelper.js.map +1 -0
  70. package/dist/lib/helpers/PackageApiHelper.d.ts +3 -2
  71. package/dist/lib/helpers/PackageApiHelper.js +6 -3
  72. package/dist/lib/helpers/PackageApiHelper.js.map +1 -1
  73. package/dist/lib/helpers/PackageUiHelper.d.ts +49 -0
  74. package/dist/lib/helpers/PackageUiHelper.js +134 -0
  75. package/dist/lib/helpers/PackageUiHelper.js.map +1 -0
  76. package/dist/lib/helpers/PartialViewApiHelper.d.ts +14 -10
  77. package/dist/lib/helpers/PartialViewApiHelper.js +124 -98
  78. package/dist/lib/helpers/PartialViewApiHelper.js.map +1 -1
  79. package/dist/lib/helpers/PartialViewUiHelper.d.ts +19 -0
  80. package/dist/lib/helpers/PartialViewUiHelper.js +57 -0
  81. package/dist/lib/helpers/PartialViewUiHelper.js.map +1 -0
  82. package/dist/lib/helpers/ProfilingUiHelper.d.ts +11 -0
  83. package/dist/lib/helpers/ProfilingUiHelper.js +27 -0
  84. package/dist/lib/helpers/ProfilingUiHelper.js.map +1 -0
  85. package/dist/lib/helpers/PublishedCacheApiHelper.d.ts +6 -0
  86. package/dist/lib/helpers/PublishedCacheApiHelper.js +15 -0
  87. package/dist/lib/helpers/PublishedCacheApiHelper.js.map +1 -0
  88. package/dist/lib/helpers/PublishedStatusUiHelper.d.ts +19 -0
  89. package/dist/lib/helpers/PublishedStatusUiHelper.js +47 -0
  90. package/dist/lib/helpers/PublishedStatusUiHelper.js.map +1 -0
  91. package/dist/lib/helpers/RelationTypeApiHelper.d.ts +15 -0
  92. package/dist/lib/helpers/{RelationType.js → RelationTypeApiHelper.js} +45 -58
  93. package/dist/lib/helpers/RelationTypeApiHelper.js.map +1 -0
  94. package/dist/lib/helpers/RelationTypeUiHelper.d.ts +21 -0
  95. package/dist/lib/helpers/RelationTypeUiHelper.js +55 -0
  96. package/dist/lib/helpers/RelationTypeUiHelper.js.map +1 -0
  97. package/dist/lib/helpers/ScriptApiHelper.d.ts +15 -10
  98. package/dist/lib/helpers/ScriptApiHelper.js +144 -97
  99. package/dist/lib/helpers/ScriptApiHelper.js.map +1 -1
  100. package/dist/lib/helpers/ScriptUiHelper.d.ts +16 -0
  101. package/dist/lib/helpers/ScriptUiHelper.js +51 -0
  102. package/dist/lib/helpers/ScriptUiHelper.js.map +1 -0
  103. package/dist/lib/helpers/StylesheetApiHelper.d.ts +15 -10
  104. package/dist/lib/helpers/StylesheetApiHelper.js +139 -103
  105. package/dist/lib/helpers/StylesheetApiHelper.js.map +1 -1
  106. package/dist/lib/helpers/StylesheetUiHelper.d.ts +22 -0
  107. package/dist/lib/helpers/StylesheetUiHelper.js +68 -0
  108. package/dist/lib/helpers/StylesheetUiHelper.js.map +1 -0
  109. package/dist/lib/helpers/TelemetryDataUiHelper.d.ts +10 -0
  110. package/dist/lib/helpers/TelemetryDataUiHelper.js +25 -0
  111. package/dist/lib/helpers/TelemetryDataUiHelper.js.map +1 -0
  112. package/dist/lib/helpers/TemplateApiHelper.d.ts +7 -5
  113. package/dist/lib/helpers/TemplateApiHelper.js +75 -51
  114. package/dist/lib/helpers/TemplateApiHelper.js.map +1 -1
  115. package/dist/lib/helpers/TemplateUiHelper.d.ts +21 -0
  116. package/dist/lib/helpers/TemplateUiHelper.js +66 -0
  117. package/dist/lib/helpers/TemplateUiHelper.js.map +1 -0
  118. package/dist/lib/helpers/TemporaryFileApiHelper.d.ts +1 -1
  119. package/dist/lib/helpers/TemporaryFileApiHelper.js +6 -10
  120. package/dist/lib/helpers/TemporaryFileApiHelper.js.map +1 -1
  121. package/dist/lib/helpers/UiBaseLocators.d.ts +163 -0
  122. package/dist/lib/helpers/UiBaseLocators.js +487 -0
  123. package/dist/lib/helpers/UiBaseLocators.js.map +1 -0
  124. package/dist/lib/helpers/UiHelpers.d.ts +48 -6
  125. package/dist/lib/helpers/UiHelpers.js +75 -16
  126. package/dist/lib/helpers/UiHelpers.js.map +1 -1
  127. package/dist/lib/helpers/UserApiHelper.d.ts +7 -3
  128. package/dist/lib/helpers/UserApiHelper.js +35 -13
  129. package/dist/lib/helpers/UserApiHelper.js.map +1 -1
  130. package/dist/lib/helpers/UserGroupApiHelper.d.ts +5 -3
  131. package/dist/lib/helpers/UserGroupApiHelper.js +20 -19
  132. package/dist/lib/helpers/UserGroupApiHelper.js.map +1 -1
  133. package/dist/lib/helpers/UserGroupUiHelper.d.ts +20 -0
  134. package/dist/lib/helpers/UserGroupUiHelper.js +56 -0
  135. package/dist/lib/helpers/UserGroupUiHelper.js.map +1 -0
  136. package/dist/lib/helpers/UserUiHelper.d.ts +41 -0
  137. package/dist/lib/helpers/UserUiHelper.js +116 -0
  138. package/dist/lib/helpers/UserUiHelper.js.map +1 -0
  139. package/dist/lib/helpers/WelcomeDashboardUiHelper.d.ts +9 -0
  140. package/dist/lib/helpers/WelcomeDashboardUiHelper.js +22 -0
  141. package/dist/lib/helpers/WelcomeDashboardUiHelper.js.map +1 -0
  142. package/dist/lib/helpers/index.d.ts +1 -0
  143. package/dist/lib/helpers/index.js +3 -1
  144. package/dist/lib/helpers/index.js.map +1 -1
  145. package/dist/lib/helpers/testExtension.js.map +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/dist/umbraco.config.js +1 -1
  148. package/dist/umbraco.config.js.map +1 -1
  149. package/package.json +9 -7
  150. package/dist/lib/helpers/RelationType.d.ts +0 -15
  151. package/dist/lib/helpers/RelationType.js.map +0 -1
@@ -6,139 +6,175 @@ class StylesheetApiHelper {
6
6
  constructor(api) {
7
7
  this.api = api;
8
8
  }
9
- async ensureNameNotExistsAtRoot(name) {
10
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');
11
- const json = await response.json();
12
- for (const sb of json.items) {
13
- if (sb.name === name) {
14
- if (sb.isFolder == false) {
15
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + sb.path);
9
+ async get(path) {
10
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
11
+ return await response.json();
12
+ }
13
+ async doesExist(path) {
14
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
15
+ return response.status() === 200;
16
+ }
17
+ async create(name, content, parentPath = "/") {
18
+ const stylesheetData = {
19
+ "name": name,
20
+ "parent": {
21
+ "path": parentPath
22
+ },
23
+ "content": content
24
+ };
25
+ const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
26
+ // Returns the path of the created stylesheet
27
+ const path = response.headers().location.split("/v1/stylesheet/").pop();
28
+ return decodeURIComponent(path);
29
+ }
30
+ async updateName(path, newName) {
31
+ const stylesheetData = {
32
+ "name": newName
33
+ };
34
+ const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path) + '/rename', stylesheetData);
35
+ // Returns the path of the created Stylesheet
36
+ const newPath = response.headers().location.split("/v1/stylesheet/").pop();
37
+ if (newPath !== undefined) {
38
+ return decodeURIComponent(newPath);
39
+ }
40
+ return undefined;
41
+ }
42
+ async updateContent(path, newContent) {
43
+ const stylesheetData = {
44
+ "content": newContent
45
+ };
46
+ return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path), stylesheetData);
47
+ }
48
+ async delete(path) {
49
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));
50
+ }
51
+ async getChildren(path) {
52
+ const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?parentPath=${path}&skip=0&take=10000`);
53
+ const items = await response.json();
54
+ return items.items;
55
+ }
56
+ async doesNameExist(name) {
57
+ return await this.getByName(name);
58
+ }
59
+ async getAllAtRoot() {
60
+ return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');
61
+ }
62
+ async getByName(name) {
63
+ const rootStylesheet = await this.getAllAtRoot();
64
+ const jsonStylesheet = await rootStylesheet.json();
65
+ for (const stylesheet of jsonStylesheet.items) {
66
+ if (stylesheet.name === name) {
67
+ if (stylesheet.isFolder) {
68
+ return this.getFolder(stylesheet.path);
16
69
  }
17
70
  else {
18
- if (sb.hasChildren == true) {
19
- return await this.recurseFolderChildren(sb.path);
20
- }
21
- else {
22
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + sb.path);
23
- }
71
+ return this.get(stylesheet.path);
24
72
  }
25
73
  }
26
- }
27
- return null;
28
- }
29
- async nameExistsAtRoot(name) {
30
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');
31
- const json = await response.json();
32
- for (const sb of json.items) {
33
- if (sb.name === name) {
34
- return true;
74
+ else if (stylesheet.isFolder && stylesheet.hasChildren) {
75
+ const result = await this.recurseChildren(name, stylesheet.path, false);
76
+ if (result) {
77
+ return result;
78
+ }
35
79
  }
36
80
  }
37
81
  return false;
38
82
  }
39
- async exists(path) {
40
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
41
- return response.status() === 200;
42
- }
43
- async get(path) {
44
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
45
- const json = await response.json();
46
- if (json !== null) {
47
- return json;
83
+ async ensureNameNotExists(name) {
84
+ const rootStylesheet = await this.getAllAtRoot();
85
+ const jsonStylesheet = await rootStylesheet.json();
86
+ for (const stylesheet of jsonStylesheet.items) {
87
+ if (stylesheet.name === name) {
88
+ if (stylesheet.isFolder) {
89
+ return await this.recurseDeleteChildren(stylesheet);
90
+ }
91
+ return await this.delete(stylesheet.path);
92
+ }
93
+ else if (stylesheet.hasChildren) {
94
+ await this.recurseChildren(name, stylesheet.path, true);
95
+ }
48
96
  }
49
97
  return null;
50
98
  }
51
- async getByNameAtRoot(name) {
52
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');
53
- const json = await response.json();
54
- for (const sb of json.items) {
55
- if (sb.name === name) {
56
- if (sb.isFolder === false) {
57
- const stylesheet = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + sb.path);
58
- return await stylesheet.json();
99
+ async recurseChildren(name, path, toDelete) {
100
+ const items = await this.getChildren(path);
101
+ for (const child of items) {
102
+ if (child.name === name) {
103
+ if (!toDelete) {
104
+ if (child.isFolder) {
105
+ return await this.getFolder(child.path);
106
+ }
107
+ return await this.get(child.path);
59
108
  }
60
- else {
61
- const stylesheetFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + sb.path);
62
- return await stylesheetFolder.json();
109
+ if (child.isFolder) {
110
+ return await this.recurseDeleteChildren(child);
63
111
  }
112
+ return await this.delete(child.path);
113
+ }
114
+ else if (child.hasChildren) {
115
+ return await this.recurseChildren(name, child.path, toDelete);
64
116
  }
65
117
  }
66
- return null;
67
- }
68
- async create(name, content, parentPath = "") {
69
- const stylesheetData = {
70
- "name": name,
71
- "content": content,
72
- "parentPath": parentPath
73
- };
74
- const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
75
- // Returns the path of the created stylesheet
76
- return response.headers().location.split("=").pop();
77
- }
78
- async update(stylesheet) {
79
- const stylesheetData = {
80
- "name": stylesheet.name,
81
- "content": stylesheet.content,
82
- "existingPath": stylesheet.path
83
- };
84
- return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);
118
+ return false;
85
119
  }
86
- async delete(path) {
87
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);
120
+ async recurseDeleteChildren(stylesheetFolder) {
121
+ if (!stylesheetFolder.hasChildren) {
122
+ return await this.deleteFolder(stylesheetFolder.path);
123
+ }
124
+ const items = await this.getChildren(stylesheetFolder.path);
125
+ for (const child of items) {
126
+ if (child.hasChildren) {
127
+ await this.recurseDeleteChildren(child);
128
+ }
129
+ else if (child.isFolder) {
130
+ await this.deleteFolder(child.path);
131
+ }
132
+ else {
133
+ await this.delete(child.path);
134
+ }
135
+ }
136
+ return await this.deleteFolder(stylesheetFolder.path);
88
137
  }
89
138
  // Folder
90
139
  async getFolder(path) {
91
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
92
- const json = await response.json();
93
- if (json !== null) {
94
- return json;
95
- }
96
- return null;
140
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
141
+ return await response.json();
97
142
  }
98
- async folderExists(path) {
99
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
143
+ async doesFolderExist(path) {
144
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
100
145
  return response.status() === 200;
101
146
  }
102
- async getFolderChildren(path) {
103
- const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/children?path=' + path + '&skip=0&take=10000');
104
- const json = await response.json();
105
- if (json !== null) {
106
- return json;
107
- }
108
- return null;
109
- }
110
- async createFolder(name, parentPath = "") {
147
+ async createFolder(name, parentPath = "/") {
111
148
  const stylesheetFolderData = {
112
149
  "name": name,
113
- "parentPath": parentPath
150
+ "parent": {
151
+ "path": parentPath
152
+ }
114
153
  };
115
154
  const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);
116
- // Returns the id of the created stylesheetFolder
117
- const json = await response.json();
118
- return json.path;
155
+ // Returns the path of the created Stylesheet folder
156
+ const path = response.headers().location.split("/v1/stylesheet/folder/").pop();
157
+ if (path !== undefined) {
158
+ return decodeURIComponent(path);
159
+ }
160
+ return undefined;
119
161
  }
120
162
  async deleteFolder(path) {
121
- return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
122
- }
123
- async recurseFolderChildren(path) {
124
- const parentStylesheet = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/children?path=' + path + '&skip=0&take=10000');
125
- const itemsJson = await parentStylesheet.json();
126
- for (const child of itemsJson.items) {
127
- if (child.path !== null) {
128
- if (child.isFolder == true) {
129
- if (child.hasChildren == true) {
130
- await this.recurseFolderChildren(child.path);
131
- }
132
- else {
133
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + child.path);
134
- }
135
- }
136
- else {
137
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/?path=' + child.path);
138
- }
163
+ return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));
164
+ }
165
+ async doesRuleNameExist(path, name) {
166
+ const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/rich-text/rules?path=' + encodeURIComponent(path));
167
+ const rulesJson = await response.json();
168
+ for (const rule of rulesJson.rules) {
169
+ if (rule.name === name) {
170
+ return true;
139
171
  }
140
172
  }
141
- await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);
173
+ return false;
174
+ }
175
+ async createDefaultStylesheet(name) {
176
+ await this.ensureNameNotExists(name);
177
+ return await this.create(name, "/*\n");
142
178
  }
143
179
  }
144
180
  exports.StylesheetApiHelper = StylesheetApiHelper;
@@ -1 +1 @@
1
- {"version":3,"file":"StylesheetApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetApiHelper.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IAC9B,GAAG,CAAY;IAEf,YAAY,GAAe;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,IAAY;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,mEAAmE,CAAC,CAAC;QAC5H,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,IAAI,EAAE,CAAC,QAAQ,IAAI,KAAK,EAAE;oBACxB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;iBAC1G;qBAAM;oBACL,IAAI,EAAE,CAAC,WAAW,IAAI,IAAI,EAAE;wBAC1B,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;qBAClD;yBAAM;wBACL,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;qBACjH;iBACF;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,mEAAmE,CAAC,CAAC;QAC5H,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,IAAI,CAAC,CAAC;QAC7G,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QACpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,IAAI,CAAC,CAAC;QAC7G,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,mEAAmE,CAAC,CAAC;QAC5H,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE;gBACpB,IAAI,EAAE,CAAC,QAAQ,KAAK,KAAK,EAAE;oBACzB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAClH,OAAO,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;iBAChC;qBAAM;oBACL,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC/H,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;iBACtC;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,aAAqB,EAAE;QACjE,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,UAAU;SACzB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,uCAAuC,EAAE,cAAc,CAAC,CAAC;QACjH,6CAA6C;QAC7C,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAU;QACrB,MAAM,cAAc,GAAG;YACrB,MAAM,EAAE,UAAU,CAAC,IAAI;YACvB,SAAS,EAAE,UAAU,CAAC,OAAO;YAC7B,cAAc,EAAE,UAAU,CAAC,IAAI;SAChC,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,uCAAuC,EAAE,cAAc,CAAC,CAAC;IACxG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,6CAA6C,GAAG,IAAI,CAAC,CAAC;IACxG,CAAC;IAED,SAAS;IACT,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,IAAI,CAAC,CAAC;QACpH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,IAAI,CAAC,CAAC;QACpH,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC;IACnC,CAAC;IAGD,KAAK,CAAC,iBAAiB,CAAC,IAAY;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,2DAA2D,GAAG,IAAI,GAAG,oBAAoB,CAAC,CAAC;QAClJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,UAAU,GAAG,EAAE;QAC9C,MAAM,oBAAoB,GACxB;YACE,MAAM,EAAE,IAAI;YACZ,YAAY,EAAE,UAAU;SACzB,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8CAA8C,EAAE,oBAAoB,CAAC,CAAC;QAC9H,iDAAiD;QACjD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,IAAI,CAAC,CAAC;IAC/G,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAY;QACtC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,2DAA2D,GAAG,IAAI,GAAG,oBAAoB,CAAC,CAAC;QAC1J,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAEhD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;gBACvB,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;oBAC1B,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE;wBAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC9C;yBAAM;wBACL,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC7G;iBACF;qBAAM;oBACL,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,8CAA8C,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;iBACvG;aACF;SACF;QACD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,oDAAoD,GAAG,IAAI,CAAC,CAAC;IACxG,CAAC;CACF;AA9JD,kDA8JC","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class StylesheetApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async ensureNameNotExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.isFolder == false) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + sb.path);\n } else {\n if (sb.hasChildren == true) {\n return await this.recurseFolderChildren(sb.path);\n } else {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + sb.path);\n }\n }\n }\n }\n return null;\n }\n\n async nameExistsAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n return true;\n }\n }\n return false;\n }\n\n async exists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n return response.status() === 200;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async getByNameAtRoot(name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n const json = await response.json();\n\n for (const sb of json.items) {\n if (sb.name === name) {\n if (sb.isFolder === false) {\n const stylesheet = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + sb.path);\n return await stylesheet.json();\n } else {\n const stylesheetFolder = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + sb.path);\n return await stylesheetFolder.json();\n }\n }\n }\n return null;\n }\n\n async create(name: string, content: string, parentPath: string = \"\") {\n const stylesheetData = {\n \"name\": name,\n \"content\": content,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n // Returns the path of the created stylesheet\n return response.headers().location.split(\"=\").pop();\n }\n\n async update(stylesheet) {\n const stylesheetData = {\n \"name\": stylesheet.name,\n \"content\": stylesheet.content,\n \"existingPath\": stylesheet.path\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet?path=' + path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async folderExists(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n return response.status() === 200;\n }\n\n\n async getFolderChildren(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/children?path=' + path + '&skip=0&take=10000');\n const json = await response.json();\n\n if (json !== null) {\n return json;\n }\n return null;\n }\n\n async createFolder(name: string, parentPath = \"\") {\n const stylesheetFolderData =\n {\n \"name\": name,\n \"parentPath\": parentPath\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);\n // Returns the id of the created stylesheetFolder\n const json = await response.json();\n return json.path;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n }\n\n async recurseFolderChildren(path: string) {\n const parentStylesheet = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/children?path=' + path + '&skip=0&take=10000');\n const itemsJson = await parentStylesheet.json();\n\n for (const child of itemsJson.items) {\n if (child.path !== null) {\n if (child.isFolder == true) {\n if (child.hasChildren == true) {\n await this.recurseFolderChildren(child.path);\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + child.path);\n }\n } else {\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/?path=' + child.path);\n }\n }\n }\n await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder?path=' + path);\n }\n}"]}
1
+ {"version":3,"file":"StylesheetApiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetApiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {ApiHelpers} from \"./ApiHelpers\";\n\nexport class StylesheetApiHelper {\n api: ApiHelpers\n\n constructor(api: ApiHelpers) {\n this.api = api;\n }\n\n async get(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async create(name: string, content: string, parentPath: string = \"/\") {\n const stylesheetData = {\n \"name\": name,\n \"parent\": {\n \"path\": parentPath\n },\n \"content\": content\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet', stylesheetData);\n // Returns the path of the created stylesheet\n const path = response.headers().location.split(\"/v1/stylesheet/\").pop() as string;\n return decodeURIComponent(path);\n }\n\n async updateName(path: string, newName: string) {\n const stylesheetData = {\n \"name\": newName\n };\n const response = await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path) + '/rename', stylesheetData);\n // Returns the path of the created Stylesheet\n const newPath = response.headers().location.split(\"/v1/stylesheet/\").pop();\n if (newPath !== undefined) {\n return decodeURIComponent(newPath);\n }\n return undefined;\n }\n\n async updateContent(path: string, newContent: string) {\n const stylesheetData = {\n \"content\": newContent\n };\n return await this.api.put(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path), stylesheetData);\n }\n\n async delete(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/' + encodeURIComponent(path));\n }\n\n async getChildren(path: string) {\n const response = await this.api.get(`${this.api.baseUrl}/umbraco/management/api/v1/tree/stylesheet/children?parentPath=${path}&skip=0&take=10000`);\n const items = await response.json();\n return items.items;\n }\n\n async doesNameExist(name: string) {\n return await this.getByName(name);\n }\n\n async getAllAtRoot() {\n return await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/tree/stylesheet/root?skip=0&take=10000');\n }\n\n async getByName(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return this.getFolder(stylesheet.path);\n } else {\n return this.get(stylesheet.path);\n }\n } else if (stylesheet.isFolder && stylesheet.hasChildren) {\n const result = await this.recurseChildren(name, stylesheet.path, false);\n if (result) {\n return result;\n }\n }\n }\n return false;\n }\n\n async ensureNameNotExists(name: string) {\n const rootStylesheet = await this.getAllAtRoot();\n const jsonStylesheet = await rootStylesheet.json();\n\n for (const stylesheet of jsonStylesheet.items) {\n if (stylesheet.name === name) {\n if (stylesheet.isFolder) {\n return await this.recurseDeleteChildren(stylesheet);\n }\n return await this.delete(stylesheet.path);\n } else if (stylesheet.hasChildren) {\n await this.recurseChildren(name, stylesheet.path, true);\n\n }\n }\n return null;\n }\n\n private async recurseChildren(name: string, path: string, toDelete: boolean) {\n const items = await this.getChildren(path);\n\n for (const child of items) {\n if (child.name === name) {\n if (!toDelete) {\n if (child.isFolder) {\n return await this.getFolder(child.path);\n }\n return await this.get(child.path);\n }\n if (child.isFolder) {\n return await this.recurseDeleteChildren(child);\n }\n return await this.delete(child.path);\n\n } else if (child.hasChildren) {\n return await this.recurseChildren(name, child.path, toDelete);\n }\n }\n return false;\n }\n\n private async recurseDeleteChildren(stylesheetFolder) {\n if (!stylesheetFolder.hasChildren) {\n return await this.deleteFolder(stylesheetFolder.path);\n }\n const items = await this.getChildren(stylesheetFolder.path);\n\n for (const child of items) {\n if (child.hasChildren) {\n await this.recurseDeleteChildren(child);\n } else if (child.isFolder) {\n await this.deleteFolder(child.path);\n } else {\n await this.delete(child.path);\n }\n }\n return await this.deleteFolder(stylesheetFolder.path);\n }\n\n // Folder\n async getFolder(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n return await response.json();\n }\n\n async doesFolderExist(path: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n return response.status() === 200;\n }\n\n async createFolder(name: string, parentPath = \"/\") {\n const stylesheetFolderData =\n {\n \"name\": name,\n \"parent\":\n {\n \"path\": parentPath\n }\n };\n const response = await this.api.post(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder', stylesheetFolderData);\n // Returns the path of the created Stylesheet folder\n const path = response.headers().location.split(\"/v1/stylesheet/folder/\").pop();\n\n if (path !== undefined) {\n return decodeURIComponent(path);\n }\n return undefined;\n }\n\n async deleteFolder(path: string) {\n return await this.api.delete(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/folder/' + encodeURIComponent(path));\n }\n\n async doesRuleNameExist(path: string, name: string) {\n const response = await this.api.get(this.api.baseUrl + '/umbraco/management/api/v1/stylesheet/rich-text/rules?path=' + encodeURIComponent(path));\n const rulesJson = await response.json();\n\n for (const rule of rulesJson.rules) {\n if (rule.name === name) {\n return true;\n }\n }\n return false;\n }\n\n async createDefaultStylesheet(name: string) {\n await this.ensureNameNotExists(name);\n return await this.create(name, \"/*\\n\");\n }\n}"]}
@@ -0,0 +1,22 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class StylesheetUiHelper extends UiBaseLocators {
4
+ private readonly newStylesheetBtn;
5
+ private readonly stylesheetNameTxt;
6
+ private readonly addRuleBtn;
7
+ private readonly ruleNameTxt;
8
+ private readonly ruleSelectorTxt;
9
+ private readonly ruleStylesTxt;
10
+ private readonly newRichTextEditorStylesheetBtn;
11
+ constructor(page: Page);
12
+ clickActionsMenuForStylesheet(name: string): Promise<void>;
13
+ clickActionsMenuAtRoot(): Promise<void>;
14
+ clickRootFolderCaretButton(): Promise<void>;
15
+ clickNewStylesheetButton(): Promise<void>;
16
+ clickNewRichTextEditorStylesheetButton(): Promise<void>;
17
+ enterStylesheetName(stylesheetName: string): Promise<void>;
18
+ enterStylesheetContent(stylesheetContent: string): Promise<void>;
19
+ addNewRule(ruleName: string, ruleSelector: string, ruleStyles: string): Promise<void>;
20
+ openStylesheetByNameAtRoot(stylesheetName: string): Promise<void>;
21
+ deleteStylesheet(): Promise<void>;
22
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StylesheetUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class StylesheetUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ newStylesheetBtn;
8
+ stylesheetNameTxt;
9
+ addRuleBtn;
10
+ ruleNameTxt;
11
+ ruleSelectorTxt;
12
+ ruleStylesTxt;
13
+ newRichTextEditorStylesheetBtn;
14
+ constructor(page) {
15
+ super(page);
16
+ this.stylesheetNameTxt = page.getByLabel('stylesheet name');
17
+ this.addRuleBtn = page.getByLabel('Add rule');
18
+ this.ruleNameTxt = page.getByLabel('Rule name');
19
+ this.ruleSelectorTxt = page.getByLabel('Rule selector');
20
+ this.ruleStylesTxt = page.getByLabel('Rule styles');
21
+ this.newStylesheetBtn = page.getByLabel('New Stylesheet');
22
+ this.newRichTextEditorStylesheetBtn = page.getByLabel('New Rich Text Editor Stylesheet');
23
+ }
24
+ async clickActionsMenuForStylesheet(name) {
25
+ await this.clickActionsMenuForName(name);
26
+ }
27
+ async clickActionsMenuAtRoot() {
28
+ await this.clickActionsMenuForStylesheet("Stylesheets");
29
+ }
30
+ async clickRootFolderCaretButton() {
31
+ await this.clickCaretButtonForName("Stylesheets");
32
+ }
33
+ async clickNewStylesheetButton() {
34
+ await this.newStylesheetBtn.click();
35
+ }
36
+ async clickNewRichTextEditorStylesheetButton() {
37
+ await this.newRichTextEditorStylesheetBtn.click();
38
+ }
39
+ async enterStylesheetName(stylesheetName) {
40
+ await (0, test_1.expect)(this.stylesheetNameTxt).toBeVisible();
41
+ await this.stylesheetNameTxt.clear();
42
+ await this.stylesheetNameTxt.fill(stylesheetName);
43
+ }
44
+ async enterStylesheetContent(stylesheetContent) {
45
+ await this.textAreaInputArea.clear();
46
+ await this.textAreaInputArea.fill(stylesheetContent);
47
+ }
48
+ async addNewRule(ruleName, ruleSelector, ruleStyles) {
49
+ await this.addRuleBtn.click();
50
+ await this.ruleNameTxt.clear();
51
+ await this.ruleNameTxt.fill(ruleName);
52
+ await this.ruleSelectorTxt.clear();
53
+ await this.ruleSelectorTxt.fill(ruleSelector);
54
+ await this.ruleStylesTxt.clear();
55
+ await this.ruleStylesTxt.fill(ruleStyles);
56
+ await this.clickSubmitButton();
57
+ }
58
+ async openStylesheetByNameAtRoot(stylesheetName) {
59
+ await this.clickRootFolderCaretButton();
60
+ await this.page.getByLabel(stylesheetName).click();
61
+ }
62
+ async deleteStylesheet() {
63
+ await this.clickDeleteThreeDotsButton();
64
+ await this.clickConfirmToDeleteButton();
65
+ }
66
+ }
67
+ exports.StylesheetUiHelper = StylesheetUiHelper;
68
+ //# sourceMappingURL=StylesheetUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StylesheetUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/StylesheetUiHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\"\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class StylesheetUiHelper extends UiBaseLocators{\n private readonly newStylesheetBtn: Locator;\n private readonly stylesheetNameTxt: Locator;\n private readonly addRuleBtn: Locator;\n private readonly ruleNameTxt: Locator;\n private readonly ruleSelectorTxt: Locator;\n private readonly ruleStylesTxt: Locator;\n private readonly newRichTextEditorStylesheetBtn: Locator;\n\n constructor(page: Page) {\n super(page);\n this.stylesheetNameTxt = page.getByLabel('stylesheet name');\n this.addRuleBtn = page.getByLabel('Add rule');\n this.ruleNameTxt = page.getByLabel('Rule name');\n this.ruleSelectorTxt = page.getByLabel('Rule selector');\n this.ruleStylesTxt = page.getByLabel('Rule styles');\n this.newStylesheetBtn = page.getByLabel('New Stylesheet');\n this.newRichTextEditorStylesheetBtn = page.getByLabel('New Rich Text Editor Stylesheet');\n }\n\n async clickActionsMenuForStylesheet(name: string) {\n await this.clickActionsMenuForName(name);\n }\n\n async clickActionsMenuAtRoot() {\n await this.clickActionsMenuForStylesheet(\"Stylesheets\");\n }\n\n async clickRootFolderCaretButton() {\n await this.clickCaretButtonForName(\"Stylesheets\");\n }\n\n async clickNewStylesheetButton() {\n await this.newStylesheetBtn.click();\n }\n \n async clickNewRichTextEditorStylesheetButton() {\n await this.newRichTextEditorStylesheetBtn.click();\n }\n\n async enterStylesheetName(stylesheetName: string) {\n await expect(this.stylesheetNameTxt).toBeVisible();\n await this.stylesheetNameTxt.clear();\n await this.stylesheetNameTxt.fill(stylesheetName);\n }\n \n async enterStylesheetContent(stylesheetContent: string) {\n await this.textAreaInputArea.clear();\n await this.textAreaInputArea.fill(stylesheetContent);\n }\n\n async addNewRule(ruleName: string, ruleSelector: string, ruleStyles: string) {\n await this.addRuleBtn.click();\n await this.ruleNameTxt.clear();\n await this.ruleNameTxt.fill(ruleName);\n await this.ruleSelectorTxt.clear();\n await this.ruleSelectorTxt.fill(ruleSelector);\n await this.ruleStylesTxt.clear();\n await this.ruleStylesTxt.fill(ruleStyles);\n await this.clickSubmitButton();\n }\n\n async openStylesheetByNameAtRoot(stylesheetName: string) {\n await this.clickRootFolderCaretButton();\n await this.page.getByLabel(stylesheetName).click();\n }\n\n async deleteStylesheet() {\n await this.clickDeleteThreeDotsButton();\n await this.clickConfirmToDeleteButton();\n }\n}"]}
@@ -0,0 +1,10 @@
1
+ import { Page } from "@playwright/test";
2
+ import { UiBaseLocators } from "./UiBaseLocators";
3
+ export declare class TelemetryDataUiHelper extends UiBaseLocators {
4
+ private readonly telemetryDataTab;
5
+ private readonly telemetryDataLevelSlider;
6
+ constructor(page: Page);
7
+ clickTelemetryDataTab(): Promise<void>;
8
+ changeTelemetryDataLevelValue(value: string): Promise<void>;
9
+ doesTelemetryDataLevelHaveValue(value: string): Promise<void>;
10
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TelemetryDataUiHelper = void 0;
4
+ const test_1 = require("@playwright/test");
5
+ const UiBaseLocators_1 = require("./UiBaseLocators");
6
+ class TelemetryDataUiHelper extends UiBaseLocators_1.UiBaseLocators {
7
+ telemetryDataTab;
8
+ telemetryDataLevelSlider;
9
+ constructor(page) {
10
+ super(page);
11
+ this.telemetryDataTab = page.getByRole('tab', { name: 'Telemetry Data' });
12
+ this.telemetryDataLevelSlider = page.locator('[name="telemetryLevel"] >> input[id=input]');
13
+ }
14
+ async clickTelemetryDataTab() {
15
+ await this.telemetryDataTab.click();
16
+ }
17
+ async changeTelemetryDataLevelValue(value) {
18
+ await this.telemetryDataLevelSlider.fill(value);
19
+ }
20
+ async doesTelemetryDataLevelHaveValue(value) {
21
+ return await (0, test_1.expect)(this.telemetryDataLevelSlider).toHaveValue(value);
22
+ }
23
+ }
24
+ exports.TelemetryDataUiHelper = TelemetryDataUiHelper;
25
+ //# sourceMappingURL=TelemetryDataUiHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryDataUiHelper.js","sourceRoot":"","sources":["../../../lib/helpers/TelemetryDataUiHelper.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AACvD,qDAAgD;AAEhD,MAAa,qBAAsB,SAAQ,+BAAc;IACtC,gBAAgB,CAAU;IAC1B,wBAAwB,CAAU;IAEnD,YAAY,IAAU;QACpB,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,gBAAgB,EAAC,CAAC,CAAC;QACxE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,6BAA6B,CAAC,KAAa;QAC/C,MAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,+BAA+B,CAAC,KAAa;QACjD,OAAO,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;CACF;AArBD,sDAqBC","sourcesContent":["import {Page, Locator, expect} from \"@playwright/test\";\nimport {UiBaseLocators} from \"./UiBaseLocators\";\n\nexport class TelemetryDataUiHelper extends UiBaseLocators {\n private readonly telemetryDataTab: Locator;\n private readonly telemetryDataLevelSlider: Locator;\n\n constructor(page: Page) {\n super(page);\n this.telemetryDataTab = page.getByRole('tab', {name: 'Telemetry Data'});\n this.telemetryDataLevelSlider = page.locator('[name=\"telemetryLevel\"] >> input[id=input]');\n }\n\n async clickTelemetryDataTab() {\n await this.telemetryDataTab.click();\n }\n\n async changeTelemetryDataLevelValue(value: string) {\n await this.telemetryDataLevelSlider.fill(value);\n }\n\n async doesTelemetryDataLevelHaveValue(value: string) {\n return await expect(this.telemetryDataLevelSlider).toHaveValue(value);\n }\n}\n"]}
@@ -2,16 +2,18 @@ import { ApiHelpers } from "./ApiHelpers";
2
2
  export declare class TemplateApiHelper {
3
3
  api: ApiHelpers;
4
4
  constructor(api: ApiHelpers);
5
- ensureNameNotExistsAtRoot(name: string): Promise<import("playwright-core").APIResponse | null>;
6
5
  get(id: string): Promise<any>;
7
- exists(path: string): Promise<boolean>;
8
- getByNameAtRoot(name: string): Promise<any>;
6
+ doesExist(id: string): Promise<boolean>;
9
7
  create(name: string, alias: string, content: string): Promise<string | undefined>;
10
8
  delete(id: string): Promise<import("playwright-core").APIResponse>;
11
- deleteByNameAtRoot(name: string): Promise<import("playwright-core").APIResponse | null>;
12
9
  update(id: string, template: object): Promise<import("playwright-core").APIResponse>;
13
10
  getChildren(id: string): Promise<any>;
14
11
  getItems(ids: string[]): Promise<any>;
15
12
  getAllAtRoot(): Promise<import("playwright-core").APIResponse>;
16
- nameExistsAtRoot(name: string): Promise<boolean>;
13
+ doesNameExist(name: string): Promise<any>;
14
+ private recurseDeleteChildren;
15
+ private recurseChildren;
16
+ getByName(name: string): Promise<any>;
17
+ ensureNameNotExists(name: string): Promise<void>;
18
+ createDefaultTemplate(name: string): Promise<string | undefined>;
17
19
  }