@poe-platform/safe-bash 0.1.680 → 0.1.681

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 (169) hide show
  1. package/README.md +1 -1
  2. package/dist/safe-bash/commands/playwright/index.d.ts.map +1 -1
  3. package/dist/safe-bash/commands/playwright/index.js +77 -4
  4. package/dist/safe-bash/commands/playwright/index.js.map +1 -1
  5. package/dist/safe-bash/playwright/abilities.d.ts +24 -5
  6. package/dist/safe-bash/playwright/abilities.d.ts.map +1 -1
  7. package/dist/safe-bash/playwright/abilities.js +9 -4
  8. package/dist/safe-bash/playwright/abilities.js.map +1 -1
  9. package/dist/safe-bash/playwright/ability-execution.d.ts +6 -1
  10. package/dist/safe-bash/playwright/ability-execution.d.ts.map +1 -1
  11. package/dist/safe-bash/playwright/ability-execution.js +77 -5
  12. package/dist/safe-bash/playwright/ability-execution.js.map +1 -1
  13. package/dist/safe-bash/playwright/adapter.d.ts +467 -11
  14. package/dist/safe-bash/playwright/adapter.d.ts.map +1 -1
  15. package/dist/safe-bash/playwright/adapter.js +213 -4
  16. package/dist/safe-bash/playwright/adapter.js.map +1 -1
  17. package/dist/safe-bash/playwright/builtins.d.ts +44 -4
  18. package/dist/safe-bash/playwright/builtins.d.ts.map +1 -1
  19. package/dist/safe-bash/playwright/builtins.js +14 -9
  20. package/dist/safe-bash/playwright/builtins.js.map +1 -1
  21. package/dist/safe-bash/playwright/canonical-locator-parser.d.ts +5 -0
  22. package/dist/safe-bash/playwright/canonical-locator-parser.d.ts.map +1 -0
  23. package/dist/safe-bash/playwright/canonical-locator-parser.js +146 -0
  24. package/dist/safe-bash/playwright/canonical-locator-parser.js.map +1 -0
  25. package/dist/safe-bash/playwright/capability-events.d.ts +15 -0
  26. package/dist/safe-bash/playwright/capability-events.d.ts.map +1 -0
  27. package/dist/safe-bash/playwright/capability-events.js +265 -0
  28. package/dist/safe-bash/playwright/capability-events.js.map +1 -0
  29. package/dist/safe-bash/playwright/capability-result.d.ts +33 -0
  30. package/dist/safe-bash/playwright/capability-result.d.ts.map +1 -0
  31. package/dist/safe-bash/playwright/capability-result.js +72 -0
  32. package/dist/safe-bash/playwright/capability-result.js.map +1 -0
  33. package/dist/safe-bash/playwright/config-ini.d.ts +3 -0
  34. package/dist/safe-bash/playwright/config-ini.d.ts.map +1 -0
  35. package/dist/safe-bash/playwright/config-ini.js +161 -0
  36. package/dist/safe-bash/playwright/config-ini.js.map +1 -0
  37. package/dist/safe-bash/playwright/controller.d.ts +39 -1
  38. package/dist/safe-bash/playwright/controller.d.ts.map +1 -1
  39. package/dist/safe-bash/playwright/controller.js +913 -77
  40. package/dist/safe-bash/playwright/controller.js.map +1 -1
  41. package/dist/safe-bash/playwright/devices.d.ts +229 -0
  42. package/dist/safe-bash/playwright/devices.d.ts.map +1 -0
  43. package/dist/safe-bash/playwright/devices.js +2740 -0
  44. package/dist/safe-bash/playwright/devices.js.map +1 -0
  45. package/dist/safe-bash/playwright/download-capabilities.d.ts +15 -0
  46. package/dist/safe-bash/playwright/download-capabilities.d.ts.map +1 -0
  47. package/dist/safe-bash/playwright/download-capabilities.js +161 -0
  48. package/dist/safe-bash/playwright/download-capabilities.js.map +1 -0
  49. package/dist/safe-bash/playwright/drop-capability.d.ts +3 -0
  50. package/dist/safe-bash/playwright/drop-capability.d.ts.map +1 -0
  51. package/dist/safe-bash/playwright/drop-capability.js +50 -0
  52. package/dist/safe-bash/playwright/drop-capability.js.map +1 -0
  53. package/dist/safe-bash/playwright/find.d.ts +8 -0
  54. package/dist/safe-bash/playwright/find.d.ts.map +1 -0
  55. package/dist/safe-bash/playwright/find.js +68 -0
  56. package/dist/safe-bash/playwright/find.js.map +1 -0
  57. package/dist/safe-bash/playwright/generated-locator.d.ts +4 -0
  58. package/dist/safe-bash/playwright/generated-locator.d.ts.map +1 -0
  59. package/dist/safe-bash/playwright/generated-locator.js +22 -0
  60. package/dist/safe-bash/playwright/generated-locator.js.map +1 -0
  61. package/dist/safe-bash/playwright/help.d.ts +4 -3
  62. package/dist/safe-bash/playwright/help.d.ts.map +1 -1
  63. package/dist/safe-bash/playwright/help.js +7 -52
  64. package/dist/safe-bash/playwright/help.js.map +1 -1
  65. package/dist/safe-bash/playwright/highlight.d.ts +8 -0
  66. package/dist/safe-bash/playwright/highlight.d.ts.map +1 -0
  67. package/dist/safe-bash/playwright/highlight.js +82 -0
  68. package/dist/safe-bash/playwright/highlight.js.map +1 -0
  69. package/dist/safe-bash/playwright/index.d.ts +5 -0
  70. package/dist/safe-bash/playwright/index.d.ts.map +1 -1
  71. package/dist/safe-bash/playwright/index.js +4 -0
  72. package/dist/safe-bash/playwright/index.js.map +1 -1
  73. package/dist/safe-bash/playwright/invocation.d.ts +24 -0
  74. package/dist/safe-bash/playwright/invocation.d.ts.map +1 -1
  75. package/dist/safe-bash/playwright/invocation.js +42 -10
  76. package/dist/safe-bash/playwright/invocation.js.map +1 -1
  77. package/dist/safe-bash/playwright/locator-selector.d.ts +5 -0
  78. package/dist/safe-bash/playwright/locator-selector.d.ts.map +1 -0
  79. package/dist/safe-bash/playwright/locator-selector.js +70 -0
  80. package/dist/safe-bash/playwright/locator-selector.js.map +1 -0
  81. package/dist/safe-bash/playwright/modal-capabilities.d.ts +20 -0
  82. package/dist/safe-bash/playwright/modal-capabilities.d.ts.map +1 -0
  83. package/dist/safe-bash/playwright/modal-capabilities.js +137 -0
  84. package/dist/safe-bash/playwright/modal-capabilities.js.map +1 -0
  85. package/dist/safe-bash/playwright/native-json-snapshot.d.ts +17 -0
  86. package/dist/safe-bash/playwright/native-json-snapshot.d.ts.map +1 -0
  87. package/dist/safe-bash/playwright/native-json-snapshot.js +94 -0
  88. package/dist/safe-bash/playwright/native-json-snapshot.js.map +1 -0
  89. package/dist/safe-bash/playwright/native-snapshot.d.ts +17 -0
  90. package/dist/safe-bash/playwright/native-snapshot.d.ts.map +1 -0
  91. package/dist/safe-bash/playwright/native-snapshot.js +164 -0
  92. package/dist/safe-bash/playwright/native-snapshot.js.map +1 -0
  93. package/dist/safe-bash/playwright/network-policy.d.ts +2 -0
  94. package/dist/safe-bash/playwright/network-policy.d.ts.map +1 -1
  95. package/dist/safe-bash/playwright/network-policy.js +1 -1
  96. package/dist/safe-bash/playwright/network-policy.js.map +1 -1
  97. package/dist/safe-bash/playwright/open-options.d.ts +14 -0
  98. package/dist/safe-bash/playwright/open-options.d.ts.map +1 -0
  99. package/dist/safe-bash/playwright/open-options.js +279 -0
  100. package/dist/safe-bash/playwright/open-options.js.map +1 -0
  101. package/dist/safe-bash/playwright/recording-capabilities.d.ts +6 -0
  102. package/dist/safe-bash/playwright/recording-capabilities.d.ts.map +1 -0
  103. package/dist/safe-bash/playwright/recording-capabilities.js +83 -0
  104. package/dist/safe-bash/playwright/recording-capabilities.js.map +1 -0
  105. package/dist/safe-bash/playwright/resource-limit.d.ts +6 -0
  106. package/dist/safe-bash/playwright/resource-limit.d.ts.map +1 -0
  107. package/dist/safe-bash/playwright/resource-limit.js +8 -0
  108. package/dist/safe-bash/playwright/resource-limit.js.map +1 -0
  109. package/dist/safe-bash/playwright/response.d.ts +22 -0
  110. package/dist/safe-bash/playwright/response.d.ts.map +1 -0
  111. package/dist/safe-bash/playwright/response.js +43 -0
  112. package/dist/safe-bash/playwright/response.js.map +1 -0
  113. package/dist/safe-bash/playwright/route-capabilities.d.ts +25 -0
  114. package/dist/safe-bash/playwright/route-capabilities.d.ts.map +1 -0
  115. package/dist/safe-bash/playwright/route-capabilities.js +138 -0
  116. package/dist/safe-bash/playwright/route-capabilities.js.map +1 -0
  117. package/dist/safe-bash/playwright/screenshot.d.ts +3 -1
  118. package/dist/safe-bash/playwright/screenshot.d.ts.map +1 -1
  119. package/dist/safe-bash/playwright/screenshot.js +15 -12
  120. package/dist/safe-bash/playwright/screenshot.js.map +1 -1
  121. package/dist/safe-bash/playwright/session-configuration.d.ts +35 -0
  122. package/dist/safe-bash/playwright/session-configuration.d.ts.map +1 -0
  123. package/dist/safe-bash/playwright/session-configuration.js +50 -0
  124. package/dist/safe-bash/playwright/session-configuration.js.map +1 -0
  125. package/dist/safe-bash/playwright/session-runtime.d.ts +8 -0
  126. package/dist/safe-bash/playwright/session-runtime.d.ts.map +1 -0
  127. package/dist/safe-bash/playwright/session-runtime.js +96 -0
  128. package/dist/safe-bash/playwright/session-runtime.js.map +1 -0
  129. package/dist/safe-bash/playwright/snapshot.d.ts +15 -2
  130. package/dist/safe-bash/playwright/snapshot.d.ts.map +1 -1
  131. package/dist/safe-bash/playwright/snapshot.js +66 -7
  132. package/dist/safe-bash/playwright/snapshot.js.map +1 -1
  133. package/dist/safe-bash/playwright/standard-capabilities.d.ts +4 -0
  134. package/dist/safe-bash/playwright/standard-capabilities.d.ts.map +1 -0
  135. package/dist/safe-bash/playwright/standard-capabilities.js +248 -0
  136. package/dist/safe-bash/playwright/standard-capabilities.js.map +1 -0
  137. package/dist/safe-bash/playwright/storage-capabilities.d.ts +4 -0
  138. package/dist/safe-bash/playwright/storage-capabilities.d.ts.map +1 -0
  139. package/dist/safe-bash/playwright/storage-capabilities.js +120 -0
  140. package/dist/safe-bash/playwright/storage-capabilities.js.map +1 -0
  141. package/dist/safe-bash/playwright/storage-state.d.ts +8 -0
  142. package/dist/safe-bash/playwright/storage-state.d.ts.map +1 -0
  143. package/dist/safe-bash/playwright/storage-state.js +122 -0
  144. package/dist/safe-bash/playwright/storage-state.js.map +1 -0
  145. package/dist/safe-bash/playwright/target-screenshot.d.ts +9 -0
  146. package/dist/safe-bash/playwright/target-screenshot.d.ts.map +1 -0
  147. package/dist/safe-bash/playwright/target-screenshot.js +28 -0
  148. package/dist/safe-bash/playwright/target-screenshot.js.map +1 -0
  149. package/dist/safe-bash/playwright/targets.d.ts +12 -0
  150. package/dist/safe-bash/playwright/targets.d.ts.map +1 -0
  151. package/dist/safe-bash/playwright/targets.js +36 -0
  152. package/dist/safe-bash/playwright/targets.js.map +1 -0
  153. package/dist/safe-bash/playwright/tracing-capabilities.d.ts +12 -0
  154. package/dist/safe-bash/playwright/tracing-capabilities.d.ts.map +1 -0
  155. package/dist/safe-bash/playwright/tracing-capabilities.js +100 -0
  156. package/dist/safe-bash/playwright/tracing-capabilities.js.map +1 -0
  157. package/dist/safe-bash/playwright/webmcp-capabilities.d.ts +6 -0
  158. package/dist/safe-bash/playwright/webmcp-capabilities.d.ts.map +1 -0
  159. package/dist/safe-bash/playwright/webmcp-capabilities.js +122 -0
  160. package/dist/safe-bash/playwright/webmcp-capabilities.js.map +1 -0
  161. package/dist/safe-bash/playwright/workspace-assets.d.ts +5 -0
  162. package/dist/safe-bash/playwright/workspace-assets.d.ts.map +1 -0
  163. package/dist/safe-bash/playwright/workspace-assets.js +17 -0
  164. package/dist/safe-bash/playwright/workspace-assets.js.map +1 -0
  165. package/dist/safe-bash/playwright/workspace.d.ts +3 -0
  166. package/dist/safe-bash/playwright/workspace.d.ts.map +1 -0
  167. package/dist/safe-bash/playwright/workspace.js +48 -0
  168. package/dist/safe-bash/playwright/workspace.js.map +1 -0
  169. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-locator-parser.js","sourceRoot":"","sources":["../../src/playwright/canonical-locator-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { PlaywrightAbility } from './abilities.js';
2
+ import type { PlaywrightContext, PlaywrightPage } from './adapter.js';
3
+ import type { PlaywrightCommand } from './catalog.js';
4
+ import type { PlaywrightSessionConfiguration } from './session-configuration.js';
5
+ export declare function observePlaywrightCapabilities(context: PlaywrightContext, registerCleanup: (cleanup: () => Promise<void>) => void, limits: {
6
+ maxCommandBytes: number;
7
+ maxArtifactBytes: number;
8
+ }): void;
9
+ /** Publish only new admitted console entries; explicit console queries retain every record. */
10
+ export declare function flushPlaywrightConsole(context: PlaywrightContext, page: PlaywrightPage, options: {
11
+ configuration?: PlaywrightSessionConfiguration;
12
+ writeArtifact(bytes: Uint8Array, filename: string): Promise<void>;
13
+ }): Promise<string | undefined>;
14
+ export declare const playwrightEventAbilities: Partial<Record<PlaywrightCommand, PlaywrightAbility>>;
15
+ //# sourceMappingURL=capability-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-events.d.ts","sourceRoot":"","sources":["../../src/playwright/capability-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,gBAAgB,CAAC;AAClF,OAAO,KAAK,EAA4B,iBAAiB,EAAuD,cAAc,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAmBjF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAC/H,MAAM,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA2DrE;AAcD,+FAA+F;AAC/F,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE;IACtG,aAAa,CAAC,EAAE,8BAA8B,CAAC;IAC/C,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkB9B;AAkGD,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAG1F,CAAC"}
@@ -0,0 +1,265 @@
1
+ import { PlaywrightResourceLimitError } from './resource-limit.js';
2
+ import { capabilityArtifact, capabilityArtifactName, capabilityResult, numeric, requirePage, requireSession, unsupported } from './capability-result.js';
3
+ const states = new WeakMap();
4
+ // A host may wrap Page navigation methods while native events retain the raw Page.
5
+ // Playwright's main frame remains stable across those wrappers and navigations.
6
+ function pageIdentity(page) { return page.mainFrame?.() ?? page; }
7
+ export function observePlaywrightCapabilities(context, registerCleanup, limits) {
8
+ if (states.has(context))
9
+ return;
10
+ const state = { pages: new Map(), maxBytes: limits.maxCommandBytes, maxArtifactBytes: limits.maxArtifactBytes };
11
+ states.set(context, state);
12
+ const requests = new WeakMap();
13
+ let bytes = 0, count = 0, closed = false;
14
+ const admit = (text) => {
15
+ bytes += new TextEncoder().encode(text).byteLength;
16
+ if (++count > 4096 || bytes > state.maxBytes)
17
+ throw new PlaywrightResourceLimitError('Playwright event retention limit exceeded');
18
+ };
19
+ const pageEvents = (page) => {
20
+ const identity = pageIdentity(page);
21
+ let events = state.pages.get(identity);
22
+ if (!events) {
23
+ events = { requests: [], generation: 0, console: [], startedAt: Date.now(), consoleCursor: 0 };
24
+ state.pages.set(identity, events);
25
+ }
26
+ return events;
27
+ };
28
+ const observe = (action) => {
29
+ if (closed || state.failure)
30
+ return;
31
+ try {
32
+ action();
33
+ }
34
+ catch (error) {
35
+ state.failure = error instanceof Error ? error : new Error(String(error));
36
+ }
37
+ };
38
+ const onRequest = (native) => observe(() => {
39
+ let frame;
40
+ try {
41
+ frame = native.frame();
42
+ }
43
+ catch {
44
+ return;
45
+ } // Worker-only requests have no selected page.
46
+ const page = frame.page();
47
+ const events = pageEvents(page);
48
+ if (native.isNavigationRequest() && frame.parentFrame() === null) {
49
+ events.requests = [];
50
+ events.generation++;
51
+ events.startedAt = Date.now();
52
+ delete events.log;
53
+ events.consoleCursor = events.console.length;
54
+ }
55
+ const record = { native, url: native.url(), method: native.method(), type: native.resourceType(), headers: { ...native.headers() }, body: native.postData() };
56
+ admit(JSON.stringify({ url: record.url, method: record.method, type: record.type, headers: record.headers, body: record.body }));
57
+ requests.set(native, record);
58
+ events.requests.push(record);
59
+ });
60
+ const onResponse = (native) => observe(() => {
61
+ const record = requests.get(native.request());
62
+ if (!record)
63
+ return;
64
+ const response = { native, status: native.status(), statusText: native.statusText(), headers: { ...native.headers() } };
65
+ admit(JSON.stringify({ status: response.status, statusText: response.statusText, headers: response.headers }));
66
+ record.response = response;
67
+ });
68
+ const onConsole = (message) => observe(() => {
69
+ const page = message.page();
70
+ if (!page)
71
+ return;
72
+ const events = pageEvents(page);
73
+ const location = message.location();
74
+ const timestamp = message.timestamp?.() ?? Date.now();
75
+ const record = { type: message.type(), text: message.text(), location: `${location.url}:${location.lineNumber}`, generation: events.generation, timestamp };
76
+ admit(record.type + record.text + record.location);
77
+ events.console.push(record);
78
+ });
79
+ const close = async () => {
80
+ if (closed)
81
+ return;
82
+ closed = true;
83
+ context.off('request', onRequest);
84
+ context.off('response', onResponse);
85
+ context.off('console', onConsole);
86
+ state.pages.clear();
87
+ states.delete(context);
88
+ };
89
+ registerCleanup(close);
90
+ try {
91
+ context.on('request', onRequest);
92
+ context.on('response', onResponse);
93
+ context.on('console', onConsole);
94
+ }
95
+ catch (error) {
96
+ void close();
97
+ throw error;
98
+ }
99
+ }
100
+ const consoleLevels = ['error', 'warning', 'info', 'debug'];
101
+ function consoleLevel(type) {
102
+ if (type === 'assert' || type === 'error')
103
+ return 'error';
104
+ if (type === 'warning')
105
+ return 'warning';
106
+ if (['clear', 'debug', 'endGroup', 'profile', 'profileEnd', 'startGroup', 'startGroupCollapsed', 'trace'].includes(type))
107
+ return 'debug';
108
+ return 'info';
109
+ }
110
+ function includeConsole(level, message) {
111
+ return consoleLevels.indexOf(consoleLevel(message.type)) <= consoleLevels.indexOf(level);
112
+ }
113
+ function consoleText(message) { return `[${message.type.toUpperCase()}] ${message.text} @ ${message.location}`; }
114
+ /** Publish only new admitted console entries; explicit console queries retain every record. */
115
+ export async function flushPlaywrightConsole(context, page, options) {
116
+ const state = states.get(context);
117
+ if (!state)
118
+ return;
119
+ if (state.failure)
120
+ throw state.failure;
121
+ const events = state.pages.get(pageIdentity(page));
122
+ if (!events)
123
+ return;
124
+ const cursor = events.console.length;
125
+ const messages = events.console.slice(events.consoleCursor, cursor).filter(message => includeConsole(options.configuration?.console?.level ?? 'info', message));
126
+ if (!messages.length) {
127
+ events.consoleCursor = cursor;
128
+ return;
129
+ }
130
+ const log = events.log ??= { filename: capabilityArtifactName('console', 'log', options.configuration), content: '', lines: 0 };
131
+ const chunk = messages.map(message => `[${String(Math.round(message.timestamp - events.startedAt)).padStart(8, ' ')}ms] ${consoleText(message)}\n`).join('');
132
+ const content = log.content + chunk;
133
+ const bytes = new TextEncoder().encode(content);
134
+ if (bytes.byteLength > state.maxArtifactBytes)
135
+ throw new PlaywrightResourceLimitError('Playwright console log byte limit exceeded');
136
+ await options.writeArtifact(bytes, log.filename);
137
+ const firstLine = log.lines + 1;
138
+ log.content = content;
139
+ log.lines += chunk.split('\n').length - 1;
140
+ events.consoleCursor = cursor;
141
+ return `${log.filename}#L${firstLine}${firstLine === log.lines ? '' : `-L${log.lines}`}`;
142
+ }
143
+ function observed(request) {
144
+ const session = requireSession(request);
145
+ const state = states.get(session.context);
146
+ if (!state)
147
+ unsupported('browser event observation');
148
+ if (state.failure)
149
+ throw state.failure;
150
+ return { state, events: state.pages.get(pageIdentity(requirePage(request))) ?? { requests: [], generation: 0, console: [] } };
151
+ }
152
+ async function textResult(request, text, label, prefix) {
153
+ const max = request.limits?.maxCommandBytes ?? 1048576;
154
+ if (text.length > max || new TextEncoder().encode(text).length > max)
155
+ throw new PlaywrightResourceLimitError('Playwright result byte limit exceeded');
156
+ if (request.options.filename)
157
+ return capabilityArtifact(request, new TextEncoder().encode(text), prefix, 'txt', label, () => '', request.options.filename);
158
+ return capabilityResult('', text);
159
+ }
160
+ function headers(values) { return Object.entries(values).map(([key, value]) => `${key}: ${value}`).join('\n'); }
161
+ function requestLine(record) {
162
+ const response = record.response;
163
+ const failure = record.native.failure();
164
+ return `[${record.method.toUpperCase()}] ${record.url}${response ? ` => [${response.status}] ${response.statusText}` : failure ? ` => [FAILED] ${failure.errorText}` : ''}`;
165
+ }
166
+ const requestsAbility = { scope: 'session', options: 'all', async execute(request) {
167
+ const { events } = observed(request);
168
+ let matches;
169
+ if (request.options.filter !== undefined) {
170
+ const page = requirePage(request);
171
+ if (!page.evaluate)
172
+ unsupported('request filter evaluation');
173
+ // User regular expressions run in the isolated browser, never on the host event loop.
174
+ matches = await page.evaluate(({ pattern, urls }) => {
175
+ const regex = new RegExp(pattern);
176
+ return urls.map(url => regex.test(url));
177
+ }, { pattern: request.options.filter, urls: events.requests.map(record => record.url) });
178
+ }
179
+ const lines = [];
180
+ let hidden = 0;
181
+ for (const [index, record] of events.requests.entries()) {
182
+ if (!request.options.static && !['fetch', 'xhr'].includes(record.type) && record.response && record.response.status < 400) {
183
+ hidden++;
184
+ continue;
185
+ }
186
+ if (matches && !matches[index])
187
+ continue;
188
+ lines.push(`${index + 1}. ${requestLine(record)}`);
189
+ }
190
+ if (hidden)
191
+ lines.push(`\nNote: ${hidden} static request${hidden === 1 ? '' : 's'} not shown, run with --static option to see ${hidden === 1 ? 'it' : 'them'}.`);
192
+ return textResult(request, lines.join('\n'), 'Network', 'network');
193
+ } };
194
+ const requestAbility = { scope: 'session', options: 'all', async execute(request) {
195
+ const { state, events } = observed(request);
196
+ const index = numeric(request.args[0], 'request index');
197
+ const record = Number.isSafeInteger(index) && index > 0 ? events.requests[index - 1] : undefined;
198
+ if (!record)
199
+ throw new Error(`Request #${index} not found. Use browser_network_requests to see available indexes.`);
200
+ if (request.command === 'request-headers')
201
+ return textResult(request, headers(record.headers), 'Request headers', 'request');
202
+ if (request.command === 'request-body')
203
+ return textResult(request, record.body ?? '', 'Request body', 'request');
204
+ const response = record.response;
205
+ if (request.command === 'response-headers')
206
+ return textResult(request, response ? headers(response.headers) : '', 'Response headers', 'response');
207
+ if (request.command === 'response-body') {
208
+ if (!response || response.status === 204 || response.status === 304 || response.status < 200)
209
+ return capabilityResult('');
210
+ const maximum = Math.min(state.maxArtifactBytes, request.limits?.maxArtifactBytes ?? state.maxArtifactBytes);
211
+ const declared = response.headers['content-length'];
212
+ if (declared !== undefined && Number(declared) > maximum)
213
+ throw new PlaywrightResourceLimitError('Playwright response body byte limit exceeded');
214
+ const data = await response.native.body();
215
+ request.signal.throwIfAborted();
216
+ if (data.length > maximum)
217
+ throw new PlaywrightResourceLimitError('Playwright response body byte limit exceeded');
218
+ const mime = response.headers['content-type']?.split(';')[0]?.trim() ?? '';
219
+ if (mime.startsWith('text/') || mime.includes('json') || mime.includes('xml') || mime.includes('javascript') || mime === 'application/x-www-form-urlencoded')
220
+ return textResult(request, new TextDecoder().decode(data), 'Response body', 'response');
221
+ const extension = mime === 'image/png' ? 'png' : mime === 'image/jpeg' ? 'jpg' : mime === 'application/pdf' ? 'pdf' : 'bin';
222
+ return capabilityArtifact(request, data, 'response', extension, 'Response body', () => '', request.options.filename);
223
+ }
224
+ const lines = [`#${index} [${record.method.toUpperCase()}] ${record.url}`, '', ' General'];
225
+ if (response)
226
+ lines.push(` status: [${response.status}] ${response.statusText}`);
227
+ else if (record.native.failure())
228
+ lines.push(` status: [FAILED] ${record.native.failure().errorText}`);
229
+ const timing = record.native.timing?.();
230
+ if (timing && timing.responseEnd >= 0)
231
+ lines.push(` duration: ${Math.round(timing.responseEnd)}ms`);
232
+ lines.push(` type: ${record.type}`);
233
+ if (response?.headers['content-type'])
234
+ lines.push(` mimeType: ${response.headers['content-type'].split(';')[0].trim()}`);
235
+ for (const [label, values] of [['Request headers', record.headers], ['Response headers', response?.headers]]) {
236
+ if (values && Object.keys(values).length)
237
+ lines.push('', ` ${label}`, ...Object.entries(values).map(([key, value]) => ` ${key}: ${value}`));
238
+ }
239
+ const hints = [];
240
+ if (record.body)
241
+ hints.push(`Run \`request-body ${index}\` to read the request body.`);
242
+ if (response && response.status >= 200 && response.status !== 204 && response.status !== 304)
243
+ hints.push(`Run \`response-body ${index}\` to read the response body.`);
244
+ if (hints.length)
245
+ lines.push('', ...hints);
246
+ return textResult(request, lines.join('\n'), 'Request', 'request');
247
+ } };
248
+ const consoleAbility = { scope: 'session', options: 'all', async execute(request) {
249
+ const { events } = observed(request);
250
+ const level = request.args[0] ?? 'info';
251
+ if (!consoleLevels.includes(level))
252
+ throw new Error(`Invalid console level: ${level}`);
253
+ const all = request.options.all ? events.console : events.console.filter(message => message.generation === events.generation);
254
+ const filtered = all.filter(message => includeConsole(level, message));
255
+ const lines = [`Total messages: ${all.length} (Errors: ${all.filter(message => message.type === 'error').length}, Warnings: ${all.filter(message => ['warning', 'warn'].includes(message.type)).length})`];
256
+ if (filtered.length !== all.length)
257
+ lines.push(`Returning ${filtered.length} messages for level "${level}"`);
258
+ lines.push('', ...filtered.map(consoleText));
259
+ return textResult(request, lines.join('\n'), 'Console', 'console');
260
+ } };
261
+ export const playwrightEventAbilities = {
262
+ requests: requestsAbility, console: consoleAbility,
263
+ ...Object.fromEntries(['request', 'request-headers', 'request-body', 'response-headers', 'response-body'].map(command => [command, requestAbility])),
264
+ };
265
+ //# sourceMappingURL=capability-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-events.js","sourceRoot":"","sources":["../../src/playwright/capability-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { PlaywrightAbilityRequest } from './abilities.js';
2
+ import type { PlaywrightCommandResult } from './response.js';
3
+ import type { PlaywrightSessionConfiguration } from './session-configuration.js';
4
+ import type { PlaywrightCodegenAction } from './adapter.js';
5
+ export declare function capabilityResult(code: string, text?: string): PlaywrightCommandResult;
6
+ export declare function capabilityActionCode(request: PlaywrightAbilityRequest, action: PlaywrightCodegenAction, fallback: string): string;
7
+ export declare function capabilityLocator(target: string, request?: PlaywrightAbilityRequest): string;
8
+ export declare function requireSession(request: PlaywrightAbilityRequest): {
9
+ readonly configuration?: PlaywrightSessionConfiguration;
10
+ readonly context: import("./adapter.js").PlaywrightContext;
11
+ readonly page: import("./adapter.js").PlaywrightPage | undefined;
12
+ resolveTarget(ref: string): Promise<import("./adapter.js").PlaywrightElementHandle>;
13
+ targetLocator?(target: string): string;
14
+ selectPage(page: import("./adapter.js").PlaywrightPage): Promise<void>;
15
+ replaceContext?(state: import("./adapter.js").PlaywrightStorageState): Promise<void>;
16
+ invalidateTargets?(): Promise<void>;
17
+ runAction?(action: () => Promise<void>): Promise<void>;
18
+ readonly captureArtifact?: import("./adapter.js").PlaywrightArtifactCapture;
19
+ readonly captureTrace?: import("./adapter.js").PlaywrightTraceCapture;
20
+ readonly executeCode?: import("./adapter.js").PlaywrightCodeExecutor;
21
+ readonly generateActionCode?: import("./adapter.js").PlaywrightActionCodeGenerator;
22
+ readonly prepareFileBytes?: (bytes: Uint8Array) => Uint8Array;
23
+ registerCleanup(cleanup: () => Promise<void>): void;
24
+ };
25
+ export declare function requirePage(request: PlaywrightAbilityRequest): import("./adapter.js").PlaywrightPage;
26
+ export declare function capabilityAction(request: PlaywrightAbilityRequest, action: () => Promise<void>): Promise<void>;
27
+ export declare function numeric(value: string | boolean | readonly string[] | undefined, name: string): number;
28
+ export declare function unsupported(name: string): never;
29
+ export declare function capabilityArtifactName(prefix: string, extension: string, configuration?: PlaywrightSessionConfiguration): string;
30
+ /** Resolve a generated basename beneath the session's virtual output directory. */
31
+ export declare function capabilityOutputPath(basename: string, configuration?: PlaywrightSessionConfiguration): string;
32
+ export declare function capabilityArtifact(request: PlaywrightAbilityRequest, bytes: Uint8Array, prefix: string, extension: string, label: string, code: (filename: string) => string, filename?: string): Promise<PlaywrightCommandResult>;
33
+ //# sourceMappingURL=capability-result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-result.d.ts","sourceRoot":"","sources":["../../src/playwright/capability-result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AAGtF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAK5D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,uBAAuB,CAKrF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWjI;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAG5F;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,wBAAwB;;;;;;;;;;;;;;;;EAI/D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,wBAAwB,yCAI5D;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpH;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAqE;AAErH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,8BAA8B,GAAG,MAAM,CAGhI;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,8BAA8B,GAAG,MAAM,CAG7G;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAIxO"}
@@ -0,0 +1,72 @@
1
+ import { playwrightArtifactName, playwrightCodeString } from './response.js';
2
+ import { isPlaywrightSnapshotRef } from './targets.js';
3
+ import { PlaywrightResourceLimitError } from './resource-limit.js';
4
+ let artifactSequence = 0;
5
+ export function capabilityResult(code, text) {
6
+ const sections = [];
7
+ if (text !== undefined)
8
+ sections.push({ title: 'Result', content: text });
9
+ if (code)
10
+ sections.push({ title: 'Ran Playwright code', content: code, codeframe: 'js' });
11
+ return { sections };
12
+ }
13
+ export function capabilityActionCode(request, action, fallback) {
14
+ const session = requireSession(request);
15
+ const language = session.configuration?.codegen ?? 'typescript';
16
+ if (language === 'none')
17
+ return '';
18
+ if (!session.generateActionCode) {
19
+ if (language !== 'typescript')
20
+ unsupported('native action code generation');
21
+ return fallback;
22
+ }
23
+ const code = session.generateActionCode({ language, action });
24
+ if (typeof code !== 'string' || new TextEncoder().encode(code).byteLength > (request.limits?.maxCommandBytes ?? 1048576))
25
+ throw new PlaywrightResourceLimitError('Playwright generated code byte limit exceeded');
26
+ return code;
27
+ }
28
+ export function capabilityLocator(target, request) {
29
+ if (request?.browserSession?.targetLocator)
30
+ return request.browserSession.targetLocator(target);
31
+ return `page.locator(${playwrightCodeString(isPlaywrightSnapshotRef(target) ? `aria-ref=${target}` : target)})`;
32
+ }
33
+ export function requireSession(request) {
34
+ request.signal.throwIfAborted();
35
+ if (!request.browserSession)
36
+ throw new Error('An open browser session is required');
37
+ return request.browserSession;
38
+ }
39
+ export function requirePage(request) {
40
+ const page = requireSession(request).page;
41
+ if (!page)
42
+ throw new Error('No open browser tab');
43
+ return page;
44
+ }
45
+ export async function capabilityAction(request, action) {
46
+ const session = requireSession(request);
47
+ if (session.runAction)
48
+ await session.runAction(action);
49
+ else
50
+ await action();
51
+ }
52
+ export function numeric(value, name) {
53
+ if (typeof value !== 'string' || !value.trim() || !Number.isFinite(Number(value)))
54
+ throw new Error(`Invalid ${name}`);
55
+ return Number(value);
56
+ }
57
+ export function unsupported(name) { throw new Error(`Playwright provider does not support ${name}`); }
58
+ export function capabilityArtifactName(prefix, extension, configuration) {
59
+ const generated = playwrightArtifactName(prefix, extension, ++artifactSequence);
60
+ return capabilityOutputPath(generated.slice(generated.lastIndexOf('/') + 1), configuration);
61
+ }
62
+ /** Resolve a generated basename beneath the session's virtual output directory. */
63
+ export function capabilityOutputPath(basename, configuration) {
64
+ const directory = configuration?.outputDir ?? '.playwright-cli';
65
+ return `${directory}${directory.endsWith('/') ? '' : '/'}${basename}`;
66
+ }
67
+ export async function capabilityArtifact(request, bytes, prefix, extension, label, code, filename) {
68
+ const name = filename ?? capabilityArtifactName(prefix, extension, request.browserSession?.configuration);
69
+ await request.writeArtifact(bytes, name);
70
+ return capabilityResult(code(name), `- [${label}](${name})`);
71
+ }
72
+ //# sourceMappingURL=capability-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-result.js","sourceRoot":"","sources":["../../src/playwright/capability-result.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Native INI longhand coercion; ordinary config validation runs after parsing. */
2
+ export declare function parsePlaywrightIniConfig(text: string): Record<string, unknown>;
3
+ //# sourceMappingURL=config-ini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-ini.d.ts","sourceRoot":"","sources":["../../src/playwright/config-ini.ts"],"names":[],"mappings":"AA2HA,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM9E"}
@@ -0,0 +1,161 @@
1
+ import { PlaywrightResourceLimitError } from './resource-limit.js';
2
+ const types = new Map();
3
+ function fields(prefix, type, names) {
4
+ for (const name of names.split(' '))
5
+ types.set(prefix + name, type);
6
+ }
7
+ fields('browser.', 'string', 'browserName userDataDir cdpEndpoint remoteEndpoint');
8
+ fields('browser.', 'boolean', 'isolated');
9
+ fields('browser.', 'number', 'cdpTimeout');
10
+ fields('browser.', 'string[]', 'initPage initScript');
11
+ fields('browser.launchOptions.', 'string', 'channel executablePath downloadsPath tracesDir proxy.server proxy.bypass proxy.username proxy.password');
12
+ fields('browser.launchOptions.', 'boolean', 'headless chromiumSandbox handleSIGHUP handleSIGINT handleSIGTERM');
13
+ fields('browser.launchOptions.', 'number', 'slowMo timeout');
14
+ fields('browser.launchOptions.', 'string[]', 'args');
15
+ fields('browser.contextOptions.', 'string', 'baseURL colorScheme contrast forcedColors locale reducedMotion serviceWorkers storageState timezoneId userAgent');
16
+ fields('browser.contextOptions.', 'boolean', 'acceptDownloads bypassCSP hasTouch ignoreHTTPSErrors isMobile javaScriptEnabled offline strictSelectors');
17
+ fields('browser.contextOptions.', 'number', 'deviceScaleFactor');
18
+ fields('browser.contextOptions.', 'string[]', 'permissions');
19
+ fields('browser.contextOptions.', 'size', 'screen viewport');
20
+ fields('', 'string', 'outputDir imageResponses codegen testIdAttribute server.host console.level snapshot.mode');
21
+ fields('', 'boolean', 'extension saveSession sharedBrowserContext allowUnrestrictedFileAccess snapshot.boxes');
22
+ fields('', 'number', 'outputMaxSize server.port timeouts.action timeouts.idle timeouts.navigation timeouts.settle');
23
+ fields('', 'string[]', 'capabilities server.allowedHosts network.allowedOrigins network.blockedOrigins');
24
+ fields('', 'size', 'saveVideo');
25
+ function token(source) {
26
+ const text = source.trim();
27
+ const quote = text[0];
28
+ if ((quote === '"' || quote === "'") && text.at(-1) === quote) {
29
+ const unquoted = quote === "'" ? text.slice(1, -1) : text;
30
+ try {
31
+ return JSON.parse(unquoted);
32
+ }
33
+ catch {
34
+ return unquoted;
35
+ }
36
+ }
37
+ let result = '';
38
+ for (let i = 0; i < text.length; i++) {
39
+ const char = text[i];
40
+ if (char === ';' || char === '#')
41
+ break;
42
+ if (char === '\\' && text[i + 1] && '\\;#'.includes(text[i + 1]))
43
+ result += text[++i];
44
+ else
45
+ result += char;
46
+ }
47
+ return result.trim();
48
+ }
49
+ function safePath(parts) {
50
+ if (parts.some(part => ['__proto__', 'constructor', 'prototype'].includes(part)))
51
+ throw new Error('Invalid INI configuration path');
52
+ }
53
+ function assign(root, parts, value) {
54
+ safePath(parts);
55
+ let current = root;
56
+ for (const part of parts.slice(0, -1)) {
57
+ const previous = Object.hasOwn(current, part) ? current[part] : undefined;
58
+ if (!previous || typeof previous !== 'object')
59
+ current[part] = {};
60
+ current = current[part];
61
+ }
62
+ current[parts.at(-1)] = value;
63
+ }
64
+ function sectionParts(name) {
65
+ const parts = [''];
66
+ for (let i = 0; i < name.length; i++) {
67
+ const char = name[i];
68
+ if (char === '\\' && name[i + 1] === '.') {
69
+ parts[parts.length - 1] = parts.at(-1) + '.';
70
+ i++;
71
+ }
72
+ else if (char === '.')
73
+ parts.push('');
74
+ else
75
+ parts[parts.length - 1] = parts.at(-1) + char;
76
+ }
77
+ return parts;
78
+ }
79
+ function readEntries(text) {
80
+ const entries = {};
81
+ let current = entries;
82
+ for (const line of text.split('\r').join('\n').split('\n')) {
83
+ const trimmed = line.trim();
84
+ if (!trimmed || trimmed.startsWith(';') || trimmed.startsWith('#'))
85
+ continue;
86
+ if (line.startsWith('[') && line.indexOf(']') === line.trimEnd().length - 1) {
87
+ const name = String(token(line.slice(1, line.indexOf(']'))));
88
+ if (name === '__proto__') {
89
+ current = {};
90
+ continue;
91
+ }
92
+ safePath(sectionParts(name));
93
+ if (!Object.hasOwn(entries, name))
94
+ entries[name] = {};
95
+ const section = entries[name];
96
+ if (!section || typeof section !== 'object' || Array.isArray(section))
97
+ throw new Error('Invalid INI section');
98
+ current = section;
99
+ continue;
100
+ }
101
+ const equal = line.indexOf('=');
102
+ if (equal === 0)
103
+ continue;
104
+ const rawKey = String(token(equal < 0 ? line : line.slice(0, equal)));
105
+ const array = rawKey.length > 2 && rawKey.endsWith('[]');
106
+ const key = array ? rawKey.slice(0, -2) : rawKey;
107
+ if (key === '__proto__')
108
+ continue;
109
+ safePath(key.split('.'));
110
+ const raw = equal < 0 ? true : token(line.slice(equal + 1));
111
+ const value = raw === 'true' ? true : raw === 'false' ? false : raw === 'null' ? null : raw;
112
+ if (array && !Array.isArray(current[key]))
113
+ current[key] = Object.hasOwn(current, key) ? [current[key]] : [];
114
+ const previous = current[key];
115
+ if (Array.isArray(previous))
116
+ previous.push(value);
117
+ else
118
+ current[key] = value;
119
+ }
120
+ for (const [name, value] of Object.entries(entries)) {
121
+ if (typeof value !== 'object' || Array.isArray(value))
122
+ continue;
123
+ const parts = sectionParts(name);
124
+ if (parts.length === 1 && parts[0] === name)
125
+ continue;
126
+ assign(entries, parts, value);
127
+ delete entries[name];
128
+ }
129
+ return entries;
130
+ }
131
+ function coerce(value, type) {
132
+ if (type === 'string')
133
+ return String(value);
134
+ if (type === 'number')
135
+ return Number(value);
136
+ if (type === 'boolean')
137
+ return typeof value === 'boolean' ? value : value === 'true' || value === '1';
138
+ if (type === 'string[]')
139
+ return (Array.isArray(value) ? value : [value]).map(String);
140
+ if (type === 'size') {
141
+ if (typeof value !== 'string' || !value.includes('x'))
142
+ return undefined;
143
+ const [width, height] = value.split('x').map(Number);
144
+ return width !== undefined && height !== undefined && !Number.isNaN(width) && !Number.isNaN(height) && width > 0 && height > 0 ? { width, height } : undefined;
145
+ }
146
+ if (typeof value !== 'string' || !value.trim())
147
+ return value;
148
+ const number = Number(value.trim());
149
+ return Number.isNaN(number) ? value : number;
150
+ }
151
+ /** Native INI longhand coercion; ordinary config validation runs after parsing. */
152
+ export function parsePlaywrightIniConfig(text) {
153
+ const maximum = 8 * 1024 * 1024;
154
+ if (text.length > maximum || new TextEncoder().encode(text).byteLength > maximum)
155
+ throw new PlaywrightResourceLimitError('Playwright INI configuration byte limit exceeded');
156
+ const config = {};
157
+ for (const [path, value] of Object.entries(readEntries(text)))
158
+ assign(config, path.split('.'), coerce(value, types.get(path)));
159
+ return config;
160
+ }
161
+ //# sourceMappingURL=config-ini.js.map