@intuned/runtime-dev 1.3.27-dev1 → 1.3.27-dev2

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.
@@ -46,20 +46,51 @@ const DEFAULT_USER_PREFERENCES = {
46
46
  async function createUserDirWithPreferences(profileTemplatePath) {
47
47
  const playwrightTempDir = await (0, _fsExtra.mkdtemp)("/tmp/pw-");
48
48
  const userDir = (0, _path.join)(playwrightTempDir, "userdir");
49
+ const defaultDir = (0, _path.join)(userDir, "Default");
50
+ const preferencesPath = (0, _path.join)(defaultDir, "Preferences");
49
51
  if (profileTemplatePath && (await fs.pathExists(profileTemplatePath))) {
50
- await fs.copy(profileTemplatePath, userDir, {
52
+ await fs.copy(profileTemplatePath, defaultDir, {
51
53
  overwrite: true,
52
54
  errorOnExist: false
53
55
  });
56
+ let templatePreferences = {};
57
+ if (await fs.pathExists(preferencesPath)) {
58
+ try {
59
+ templatePreferences = await fs.readJson(preferencesPath);
60
+ } catch (error) {
61
+ console.warn(`Failed to parse Preferences from profile template at ${preferencesPath}: ${error instanceof Error ? error.message : String(error)}`);
62
+ }
63
+ }
64
+ const mergedPreferences = mergePreferences(templatePreferences, DEFAULT_USER_PREFERENCES);
65
+ await (0, _fsExtra.mkdir)(defaultDir, {
66
+ recursive: true
67
+ });
68
+ await (0, _fsExtra.writeFile)(preferencesPath, JSON.stringify(mergedPreferences));
54
69
  return userDir;
55
70
  }
56
- const defaultDir = (0, _path.join)(userDir, "Default");
57
71
  await (0, _fsExtra.mkdir)(defaultDir, {
58
72
  recursive: true
59
73
  });
60
- await (0, _fsExtra.writeFile)((0, _path.join)(defaultDir, "Preferences"), JSON.stringify(DEFAULT_USER_PREFERENCES));
74
+ await (0, _fsExtra.writeFile)(preferencesPath, JSON.stringify(DEFAULT_USER_PREFERENCES));
61
75
  return userDir;
62
76
  }
77
+ function isPlainObject(value) {
78
+ return typeof value === "object" && value !== null && !Array.isArray(value);
79
+ }
80
+ function mergePreferences(base, overrides) {
81
+ const result = {
82
+ ...base
83
+ };
84
+ for (const [key, overrideValue] of Object.entries(overrides)) {
85
+ const baseValue = result[key];
86
+ if (isPlainObject(baseValue) && isPlainObject(overrideValue)) {
87
+ result[key] = mergePreferences(baseValue, overrideValue);
88
+ } else {
89
+ result[key] = overrideValue;
90
+ }
91
+ }
92
+ return result;
93
+ }
63
94
  async function getIgnoreHttpErrorsFromConfig(cliOption) {
64
95
  if (cliOption === true) {
65
96
  return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intuned/runtime-dev",
3
- "version": "1.3.27-dev1",
3
+ "version": "1.3.27-dev2",
4
4
  "description": "Intuned runtime",
5
5
  "packageManager": "yarn@4.12.0",
6
6
  "main": "./dist/index.js",