donobu 5.3.1 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apis/FlowsFilesApi.d.ts +18 -4
- package/dist/apis/FlowsFilesApi.d.ts.map +1 -1
- package/dist/apis/FlowsFilesApi.js +41 -4
- package/dist/apis/FlowsFilesApi.js.map +1 -1
- package/dist/cli/donobu-cli.js +134 -34
- package/dist/cli/donobu-cli.js.map +1 -1
- package/dist/cli/playwright-json-to-html.js +10 -0
- package/dist/cli/playwright-json-to-html.js.map +1 -1
- package/dist/codegen/CodeGenerator.d.ts.map +1 -1
- package/dist/codegen/CodeGenerator.js +7 -14
- package/dist/codegen/CodeGenerator.js.map +1 -1
- package/dist/envVars.d.ts +2 -0
- package/dist/envVars.d.ts.map +1 -1
- package/dist/envVars.js +4 -0
- package/dist/envVars.js.map +1 -1
- package/dist/esm/apis/FlowsFilesApi.d.ts +18 -4
- package/dist/esm/apis/FlowsFilesApi.d.ts.map +1 -1
- package/dist/esm/apis/FlowsFilesApi.js +41 -4
- package/dist/esm/apis/FlowsFilesApi.js.map +1 -1
- package/dist/esm/cli/donobu-cli.js +134 -34
- package/dist/esm/cli/donobu-cli.js.map +1 -1
- package/dist/esm/cli/playwright-json-to-html.js +10 -0
- package/dist/esm/cli/playwright-json-to-html.js.map +1 -1
- package/dist/esm/codegen/CodeGenerator.d.ts.map +1 -1
- package/dist/esm/codegen/CodeGenerator.js +7 -14
- package/dist/esm/codegen/CodeGenerator.js.map +1 -1
- package/dist/esm/envVars.d.ts +2 -0
- package/dist/esm/envVars.d.ts.map +1 -1
- package/dist/esm/envVars.js +4 -0
- package/dist/esm/envVars.js.map +1 -1
- package/dist/esm/lib/ai/cache/assertCache.d.ts +58 -0
- package/dist/esm/lib/ai/cache/assertCache.d.ts.map +1 -0
- package/dist/esm/lib/ai/cache/assertCache.js +110 -0
- package/dist/esm/lib/ai/cache/assertCache.js.map +1 -0
- package/dist/esm/lib/ai/cache/cache.d.ts +16 -15
- package/dist/esm/lib/ai/cache/cache.d.ts.map +1 -1
- package/dist/esm/lib/ai/cache/cache.js +166 -71
- package/dist/esm/lib/ai/cache/cache.js.map +1 -1
- package/dist/esm/lib/page/DonobuExtendedPage.d.ts +10 -0
- package/dist/esm/lib/page/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/esm/lib/page/extendPage.d.ts.map +1 -1
- package/dist/esm/lib/page/extendPage.js +86 -3
- package/dist/esm/lib/page/extendPage.js.map +1 -1
- package/dist/esm/managers/AdminApiController.d.ts.map +1 -1
- package/dist/esm/managers/AdminApiController.js +1 -0
- package/dist/esm/managers/AdminApiController.js.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts +0 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -1
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js +1 -20
- package/dist/esm/persistence/flows/FlowsPersistenceSqlite.js.map +1 -1
- package/dist/esm/tools/AssertTool.d.ts.map +1 -1
- package/dist/esm/tools/AssertTool.js +62 -14
- package/dist/esm/tools/AssertTool.js.map +1 -1
- package/dist/esm/utils/MiscUtils.d.ts +4 -0
- package/dist/esm/utils/MiscUtils.d.ts.map +1 -1
- package/dist/esm/utils/MiscUtils.js +25 -0
- package/dist/esm/utils/MiscUtils.js.map +1 -1
- package/dist/lib/ai/cache/assertCache.d.ts +58 -0
- package/dist/lib/ai/cache/assertCache.d.ts.map +1 -0
- package/dist/lib/ai/cache/assertCache.js +110 -0
- package/dist/lib/ai/cache/assertCache.js.map +1 -0
- package/dist/lib/ai/cache/cache.d.ts +16 -15
- package/dist/lib/ai/cache/cache.d.ts.map +1 -1
- package/dist/lib/ai/cache/cache.js +166 -71
- package/dist/lib/ai/cache/cache.js.map +1 -1
- package/dist/lib/page/DonobuExtendedPage.d.ts +10 -0
- package/dist/lib/page/DonobuExtendedPage.d.ts.map +1 -1
- package/dist/lib/page/extendPage.d.ts.map +1 -1
- package/dist/lib/page/extendPage.js +86 -3
- package/dist/lib/page/extendPage.js.map +1 -1
- package/dist/managers/AdminApiController.d.ts.map +1 -1
- package/dist/managers/AdminApiController.js +1 -0
- package/dist/managers/AdminApiController.js.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts +0 -1
- package/dist/persistence/flows/FlowsPersistenceSqlite.d.ts.map +1 -1
- package/dist/persistence/flows/FlowsPersistenceSqlite.js +1 -20
- package/dist/persistence/flows/FlowsPersistenceSqlite.js.map +1 -1
- package/dist/tools/AssertTool.d.ts.map +1 -1
- package/dist/tools/AssertTool.js +62 -14
- package/dist/tools/AssertTool.js.map +1 -1
- package/dist/utils/MiscUtils.d.ts +4 -0
- package/dist/utils/MiscUtils.d.ts.map +1 -1
- package/dist/utils/MiscUtils.js +25 -0
- package/dist/utils/MiscUtils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DonobuExtendedPage } from '../../page/DonobuExtendedPage';
|
|
2
|
+
import type { AssertCacheEntry, AssertCacheEntryWithRunner, AssertCacheKey } from './assertCache';
|
|
2
3
|
/**
|
|
3
4
|
* Cache key used to identify a unique `page.ai.act(...)` or `device.ai(...)` invocation.
|
|
4
5
|
* Keep this structure aligned with the code generator so replayed runs remain deterministic.
|
|
@@ -34,6 +35,7 @@ export type PageAiCacheEntryWithRunner = PageAiCacheEntry & {
|
|
|
34
35
|
*/
|
|
35
36
|
export type PageAiCacheContents = {
|
|
36
37
|
caches: PageAiCacheEntry[];
|
|
38
|
+
assertions?: AssertCacheEntry[];
|
|
37
39
|
};
|
|
38
40
|
export type PageAiCacheExecutionContext = {
|
|
39
41
|
page?: DonobuExtendedPage;
|
|
@@ -50,11 +52,17 @@ export interface PageAiCache {
|
|
|
50
52
|
put(entry: PageAiCacheEntry): Promise<void>;
|
|
51
53
|
delete(key: PageAiCacheKey): Promise<boolean>;
|
|
52
54
|
snapshot(): Promise<PageAiCacheContents>;
|
|
55
|
+
getAssert(key: AssertCacheKey): Promise<AssertCacheEntryWithRunner | null>;
|
|
56
|
+
putAssert(entry: AssertCacheEntry): Promise<void>;
|
|
57
|
+
deleteAssert(key: AssertCacheKey): Promise<boolean>;
|
|
53
58
|
}
|
|
54
|
-
export declare const renderCacheModule: (entries: PageAiCacheEntry[]) => string;
|
|
59
|
+
export declare const renderCacheModule: (entries: PageAiCacheEntry[], assertions?: AssertCacheEntry[]) => string;
|
|
55
60
|
/**
|
|
56
61
|
* File-backed implementation used by the Playwright fixture. Protects reads and
|
|
57
62
|
* writes with an OS-level lock so concurrent processes do not corrupt the file.
|
|
63
|
+
*
|
|
64
|
+
* Both page.ai flow caches and assertion caches live in the same file to avoid
|
|
65
|
+
* a separate file and lock for assertions.
|
|
58
66
|
*/
|
|
59
67
|
export declare class FilePageAiCache implements PageAiCache {
|
|
60
68
|
private readonly cacheFilepath;
|
|
@@ -62,22 +70,11 @@ export declare class FilePageAiCache implements PageAiCache {
|
|
|
62
70
|
get(key: PageAiCacheKey): Promise<PageAiCacheEntryWithRunner | null>;
|
|
63
71
|
put(entry: PageAiCacheEntry): Promise<void>;
|
|
64
72
|
delete(key: PageAiCacheKey): Promise<boolean>;
|
|
65
|
-
/**
|
|
66
|
-
* Returns an in-memory snapshot of the cache content in the same shape used
|
|
67
|
-
* on disk.
|
|
68
|
-
*/
|
|
69
73
|
snapshot(): Promise<PageAiCacheContents>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
+
getAssert(key: AssertCacheKey): Promise<AssertCacheEntryWithRunner | null>;
|
|
75
|
+
putAssert(entry: AssertCacheEntry): Promise<void>;
|
|
76
|
+
deleteAssert(key: AssertCacheKey): Promise<boolean>;
|
|
74
77
|
private ensureCacheFileExists;
|
|
75
|
-
/**
|
|
76
|
-
* Reads and evaluates the cache file without touching Node's module cache.
|
|
77
|
-
* We re-run the file in a fresh CommonJS wrapper on every call so parallel
|
|
78
|
-
* writers cannot serve stale data to parallel readers (a risk when relying
|
|
79
|
-
* on dynamic import cache-busting tokens).
|
|
80
|
-
*/
|
|
81
78
|
private loadCacheModule;
|
|
82
79
|
private readCacheFile;
|
|
83
80
|
private writeCacheFile;
|
|
@@ -90,10 +87,14 @@ export declare class FilePageAiCache implements PageAiCache {
|
|
|
90
87
|
*/
|
|
91
88
|
export declare class InMemoryPageAiCache implements PageAiCache {
|
|
92
89
|
private cache;
|
|
90
|
+
private assertions;
|
|
93
91
|
constructor(initialContents?: PageAiCacheEntry[] | PageAiCacheContents);
|
|
94
92
|
get(key: PageAiCacheKey): Promise<PageAiCacheEntryWithRunner | null>;
|
|
95
93
|
put(entry: PageAiCacheEntry): Promise<void>;
|
|
96
94
|
delete(key: PageAiCacheKey): Promise<boolean>;
|
|
97
95
|
snapshot(): Promise<PageAiCacheContents>;
|
|
96
|
+
getAssert(key: AssertCacheKey): Promise<AssertCacheEntryWithRunner | null>;
|
|
97
|
+
putAssert(entry: AssertCacheEntry): Promise<void>;
|
|
98
|
+
deleteAssert(key: AssertCacheKey): Promise<boolean>;
|
|
98
99
|
}
|
|
99
100
|
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/ai/cache/cache.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/lib/ai/cache/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,7 @@ const node_vm_1 = require("node:vm");
|
|
|
43
43
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
44
44
|
const LockFile = __importStar(require("proper-lockfile"));
|
|
45
45
|
const CodeGenerator_1 = require("../../../codegen/CodeGenerator");
|
|
46
|
+
const assertCache_1 = require("./assertCache");
|
|
46
47
|
const areCacheCollectionsEqual = (left, right) =>
|
|
47
48
|
// We serialize to JSON rather than deep-walking to keep the comparison short
|
|
48
49
|
// and avoid surprises from prototype differences.
|
|
@@ -104,6 +105,20 @@ const cloneEntryWithRunner = (entry) => ({
|
|
|
104
105
|
...stripRunner(entry),
|
|
105
106
|
run: entry.run,
|
|
106
107
|
});
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Assert cache helpers
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
const assertCacheKeysMatch = (left, right) => left.pageUrl === right.pageUrl && left.assertion === right.assertion;
|
|
112
|
+
const materializeAssertEntry = (entry) => ({
|
|
113
|
+
...entry,
|
|
114
|
+
run: (0, assertCache_1.buildAssertExecutor)(entry.steps),
|
|
115
|
+
});
|
|
116
|
+
const cloneAssertEntry = (entry) => ({
|
|
117
|
+
pageUrl: entry.pageUrl,
|
|
118
|
+
assertion: entry.assertion,
|
|
119
|
+
steps: entry.steps,
|
|
120
|
+
run: entry.run,
|
|
121
|
+
});
|
|
107
122
|
// Serializes a cache entry into inline JS that will be emitted to disk.
|
|
108
123
|
const serializeEntry = (entry) => {
|
|
109
124
|
const instructionLiteral = entry.instruction === null ? 'null' : JSON.stringify(entry.instruction);
|
|
@@ -120,8 +135,11 @@ const serializeEntry = (entry) => {
|
|
|
120
135
|
};
|
|
121
136
|
// Emits the cache file as a CommonJS module matching what the runtime loader
|
|
122
137
|
// expects. This keeps the on-disk format aligned between generator and reader.
|
|
123
|
-
const renderCacheModule = (entries) => {
|
|
138
|
+
const renderCacheModule = (entries, assertions) => {
|
|
124
139
|
const serializedEntries = entries.map(serializeEntry).join(', ');
|
|
140
|
+
const assertionsPart = assertions && assertions.length > 0
|
|
141
|
+
? `, assertions: [${assertions.map((a) => JSON.stringify({ pageUrl: a.pageUrl, assertion: a.assertion, steps: a.steps })).join(', ')}]`
|
|
142
|
+
: '';
|
|
125
143
|
return `/**
|
|
126
144
|
* @generated
|
|
127
145
|
* This file was generated by Donobu; do not edit manually.
|
|
@@ -129,84 +147,122 @@ const renderCacheModule = (entries) => {
|
|
|
129
147
|
/* eslint-disable */
|
|
130
148
|
const { expect } = require('donobu');
|
|
131
149
|
|
|
132
|
-
module.exports = { caches: [${serializedEntries}] };`;
|
|
150
|
+
module.exports = { caches: [${serializedEntries}]${assertionsPart} };`;
|
|
133
151
|
};
|
|
134
152
|
exports.renderCacheModule = renderCacheModule;
|
|
135
153
|
/**
|
|
136
154
|
* File-backed implementation used by the Playwright fixture. Protects reads and
|
|
137
155
|
* writes with an OS-level lock so concurrent processes do not corrupt the file.
|
|
156
|
+
*
|
|
157
|
+
* Both page.ai flow caches and assertion caches live in the same file to avoid
|
|
158
|
+
* a separate file and lock for assertions.
|
|
138
159
|
*/
|
|
139
160
|
class FilePageAiCache {
|
|
140
161
|
constructor(cacheFilepath) {
|
|
141
162
|
this.cacheFilepath = cacheFilepath;
|
|
142
163
|
}
|
|
164
|
+
// --- Page.ai flow cache operations ---
|
|
143
165
|
async get(key) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
return this.withCacheLock(async (cache) => {
|
|
147
|
-
const matchingEntry = cache.find((entry) => pageAiCacheKeysMatch(entry, key));
|
|
166
|
+
return this.withCacheLock(async (state) => {
|
|
167
|
+
const matchingEntry = state.caches.find((entry) => pageAiCacheKeysMatch(entry, key));
|
|
148
168
|
return {
|
|
149
|
-
|
|
169
|
+
state,
|
|
150
170
|
result: matchingEntry ? cloneEntryWithRunner(matchingEntry) : null,
|
|
151
171
|
};
|
|
152
172
|
});
|
|
153
173
|
}
|
|
154
174
|
async put(entry) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
await this.withCacheLock(async (cache) => {
|
|
158
|
-
const existingIndex = cache.findIndex((candidate) => pageAiCacheKeysMatch(candidate, entry));
|
|
175
|
+
await this.withCacheLock(async (state) => {
|
|
176
|
+
const existingIndex = state.caches.findIndex((candidate) => pageAiCacheKeysMatch(candidate, entry));
|
|
159
177
|
const materializedEntry = materializeEntry(entry);
|
|
160
|
-
const
|
|
178
|
+
const modifiedCaches = existingIndex === -1
|
|
179
|
+
? [...state.caches, materializedEntry]
|
|
180
|
+
: [...state.caches];
|
|
161
181
|
if (existingIndex !== -1) {
|
|
162
|
-
|
|
182
|
+
modifiedCaches[existingIndex] = materializedEntry;
|
|
163
183
|
}
|
|
164
184
|
return {
|
|
165
|
-
|
|
185
|
+
state: { ...state, caches: modifiedCaches },
|
|
166
186
|
result: undefined,
|
|
167
187
|
};
|
|
168
188
|
});
|
|
169
189
|
}
|
|
170
190
|
async delete(key) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
return this.withCacheLock(async (cache) => {
|
|
174
|
-
const targetIndex = cache.findIndex((entry) => pageAiCacheKeysMatch(entry, key));
|
|
191
|
+
return this.withCacheLock(async (state) => {
|
|
192
|
+
const targetIndex = state.caches.findIndex((entry) => pageAiCacheKeysMatch(entry, key));
|
|
175
193
|
if (targetIndex === -1) {
|
|
176
|
-
return {
|
|
177
|
-
cache,
|
|
178
|
-
result: false,
|
|
179
|
-
};
|
|
194
|
+
return { state, result: false };
|
|
180
195
|
}
|
|
181
|
-
const modifiedCache = [
|
|
182
|
-
...cache.slice(0, targetIndex),
|
|
183
|
-
...cache.slice(targetIndex + 1),
|
|
184
|
-
];
|
|
185
196
|
return {
|
|
186
|
-
|
|
197
|
+
state: {
|
|
198
|
+
...state,
|
|
199
|
+
caches: [
|
|
200
|
+
...state.caches.slice(0, targetIndex),
|
|
201
|
+
...state.caches.slice(targetIndex + 1),
|
|
202
|
+
],
|
|
203
|
+
},
|
|
187
204
|
result: true,
|
|
188
205
|
};
|
|
189
206
|
});
|
|
190
207
|
}
|
|
191
|
-
/**
|
|
192
|
-
* Returns an in-memory snapshot of the cache content in the same shape used
|
|
193
|
-
* on disk.
|
|
194
|
-
*/
|
|
195
208
|
async snapshot() {
|
|
196
|
-
return this.withCacheLock(async (
|
|
197
|
-
|
|
209
|
+
return this.withCacheLock(async (state) => ({
|
|
210
|
+
state,
|
|
211
|
+
result: {
|
|
212
|
+
caches: state.caches.map((entry) => stripRunner(entry)),
|
|
213
|
+
assertions: state.assertions.map((a) => ({
|
|
214
|
+
pageUrl: a.pageUrl,
|
|
215
|
+
assertion: a.assertion,
|
|
216
|
+
steps: a.steps,
|
|
217
|
+
})),
|
|
218
|
+
},
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
// --- Assert cache operations ---
|
|
222
|
+
async getAssert(key) {
|
|
223
|
+
return this.withCacheLock(async (state) => {
|
|
224
|
+
const match = state.assertions.find((e) => assertCacheKeysMatch(e, key));
|
|
198
225
|
return {
|
|
199
|
-
|
|
200
|
-
result:
|
|
201
|
-
|
|
226
|
+
state,
|
|
227
|
+
result: match ? cloneAssertEntry(match) : null,
|
|
228
|
+
};
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
async putAssert(entry) {
|
|
232
|
+
await this.withCacheLock(async (state) => {
|
|
233
|
+
const idx = state.assertions.findIndex((e) => assertCacheKeysMatch(e, entry));
|
|
234
|
+
const materialized = materializeAssertEntry(entry);
|
|
235
|
+
const modifiedAssertions = idx === -1
|
|
236
|
+
? [...state.assertions, materialized]
|
|
237
|
+
: [...state.assertions];
|
|
238
|
+
if (idx !== -1) {
|
|
239
|
+
modifiedAssertions[idx] = materialized;
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
state: { ...state, assertions: modifiedAssertions },
|
|
243
|
+
result: undefined,
|
|
244
|
+
};
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
async deleteAssert(key) {
|
|
248
|
+
return this.withCacheLock(async (state) => {
|
|
249
|
+
const idx = state.assertions.findIndex((e) => assertCacheKeysMatch(e, key));
|
|
250
|
+
if (idx === -1) {
|
|
251
|
+
return { state, result: false };
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
state: {
|
|
255
|
+
...state,
|
|
256
|
+
assertions: [
|
|
257
|
+
...state.assertions.slice(0, idx),
|
|
258
|
+
...state.assertions.slice(idx + 1),
|
|
259
|
+
],
|
|
202
260
|
},
|
|
261
|
+
result: true,
|
|
203
262
|
};
|
|
204
263
|
});
|
|
205
264
|
}
|
|
206
|
-
|
|
207
|
-
* Lazily creates an empty cache file. Using the `'wx'` flag keeps the method
|
|
208
|
-
* idempotent even when multiple processes start simultaneously.
|
|
209
|
-
*/
|
|
265
|
+
// --- Internal file operations ---
|
|
210
266
|
async ensureCacheFileExists() {
|
|
211
267
|
const cacheDirectory = node_path_1.default.dirname(this.cacheFilepath);
|
|
212
268
|
await promises_1.default.mkdir(cacheDirectory, { recursive: true });
|
|
@@ -222,12 +278,6 @@ class FilePageAiCache {
|
|
|
222
278
|
}
|
|
223
279
|
}
|
|
224
280
|
}
|
|
225
|
-
/**
|
|
226
|
-
* Reads and evaluates the cache file without touching Node's module cache.
|
|
227
|
-
* We re-run the file in a fresh CommonJS wrapper on every call so parallel
|
|
228
|
-
* writers cannot serve stale data to parallel readers (a risk when relying
|
|
229
|
-
* on dynamic import cache-busting tokens).
|
|
230
|
-
*/
|
|
231
281
|
async loadCacheModule() {
|
|
232
282
|
const source = await promises_1.default.readFile(this.cacheFilepath, 'utf-8');
|
|
233
283
|
const cacheRequire = (0, node_module_1.createRequire)(this.cacheFilepath);
|
|
@@ -239,8 +289,6 @@ class FilePageAiCache {
|
|
|
239
289
|
__filename: this.cacheFilepath,
|
|
240
290
|
__dirname: node_path_1.default.dirname(this.cacheFilepath),
|
|
241
291
|
});
|
|
242
|
-
// Mirror Node's CommonJS wrapper so `module.exports` and `require` behave
|
|
243
|
-
// exactly as they would when executed normally from disk.
|
|
244
292
|
const script = new node_vm_1.Script(`(function (exports, require, module, __filename, __dirname) {${source}\n})`, { filename: this.cacheFilepath });
|
|
245
293
|
const runner = script.runInContext(sandbox);
|
|
246
294
|
runner(module.exports, cacheRequire, module, this.cacheFilepath, node_path_1.default.dirname(this.cacheFilepath));
|
|
@@ -251,9 +299,9 @@ class FilePageAiCache {
|
|
|
251
299
|
const cacheModule = await this.loadCacheModule();
|
|
252
300
|
const exported = (cacheModule.default ??
|
|
253
301
|
cacheModule);
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
302
|
+
// Parse page.ai flow caches
|
|
303
|
+
const rawCaches = Array.isArray(exported.caches) ? exported.caches : [];
|
|
304
|
+
const caches = rawCaches.map((entry) => {
|
|
257
305
|
if (typeof entry.run !== 'function') {
|
|
258
306
|
throw new Error(`Invalid cache entry: run must be a function for ${entry.pageUrl ?? 'unknown page'}.`);
|
|
259
307
|
}
|
|
@@ -285,25 +333,40 @@ class FilePageAiCache {
|
|
|
285
333
|
};
|
|
286
334
|
return normalized;
|
|
287
335
|
});
|
|
336
|
+
// Parse assertion caches (pure JSON data — no functions)
|
|
337
|
+
const rawAssertions = Array.isArray(exported.assertions)
|
|
338
|
+
? exported.assertions
|
|
339
|
+
: [];
|
|
340
|
+
const assertions = rawAssertions.map((entry) => {
|
|
341
|
+
const steps = Array.isArray(entry.steps)
|
|
342
|
+
? entry.steps
|
|
343
|
+
: [];
|
|
344
|
+
return materializeAssertEntry({
|
|
345
|
+
pageUrl: String(entry.pageUrl ?? ''),
|
|
346
|
+
assertion: String(entry.assertion ?? ''),
|
|
347
|
+
steps,
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
return { caches, assertions };
|
|
288
351
|
}
|
|
289
352
|
catch (error) {
|
|
290
353
|
if (error.code === 'ERR_MODULE_NOT_FOUND' || error.code === 'ENOENT') {
|
|
291
|
-
|
|
292
|
-
return [];
|
|
354
|
+
return { caches: [], assertions: [] };
|
|
293
355
|
}
|
|
294
356
|
throw error;
|
|
295
357
|
}
|
|
296
358
|
}
|
|
297
|
-
async writeCacheFile(
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
359
|
+
async writeCacheFile(state) {
|
|
360
|
+
const serializedCaches = state.caches.map((entry) => stripRunner(entry));
|
|
361
|
+
const serializedAssertions = state.assertions.map((e) => ({
|
|
362
|
+
pageUrl: e.pageUrl,
|
|
363
|
+
assertion: e.assertion,
|
|
364
|
+
steps: e.steps,
|
|
365
|
+
}));
|
|
366
|
+
const prettified = await (0, CodeGenerator_1.prettifyCode)((0, exports.renderCacheModule)(serializedCaches, serializedAssertions));
|
|
302
367
|
await promises_1.default.writeFile(this.cacheFilepath, prettified, 'utf-8');
|
|
303
368
|
}
|
|
304
369
|
async withCacheLock(operation) {
|
|
305
|
-
// Acquire the OS-level lock around the entire read-modify-write to keep
|
|
306
|
-
// inter-process access linearizable.
|
|
307
370
|
await this.ensureCacheFileExists();
|
|
308
371
|
const release = await LockFile.lock(this.cacheFilepath, {
|
|
309
372
|
retries: {
|
|
@@ -313,10 +376,12 @@ class FilePageAiCache {
|
|
|
313
376
|
},
|
|
314
377
|
});
|
|
315
378
|
try {
|
|
316
|
-
const
|
|
317
|
-
const {
|
|
318
|
-
if
|
|
319
|
-
|
|
379
|
+
const currentState = await this.readCacheFile();
|
|
380
|
+
const { state, result } = await operation(currentState);
|
|
381
|
+
// Write only if caches or assertions changed
|
|
382
|
+
if (state.caches !== currentState.caches ||
|
|
383
|
+
state.assertions !== currentState.assertions) {
|
|
384
|
+
await this.writeCacheFile(state);
|
|
320
385
|
}
|
|
321
386
|
return result;
|
|
322
387
|
}
|
|
@@ -333,19 +398,18 @@ exports.FilePageAiCache = FilePageAiCache;
|
|
|
333
398
|
*/
|
|
334
399
|
class InMemoryPageAiCache {
|
|
335
400
|
constructor(initialContents = []) {
|
|
336
|
-
|
|
337
|
-
// module shape to make tests less picky about input format.
|
|
401
|
+
this.assertions = [];
|
|
338
402
|
const entries = 'caches' in initialContents ? initialContents.caches : initialContents;
|
|
339
403
|
this.cache = entries.map((entry) => materializeEntry(entry));
|
|
404
|
+
if ('assertions' in initialContents && initialContents.assertions) {
|
|
405
|
+
this.assertions = initialContents.assertions.map((a) => materializeAssertEntry(a));
|
|
406
|
+
}
|
|
340
407
|
}
|
|
341
408
|
async get(key) {
|
|
342
|
-
// In-memory variant does not need locking; we still clone on return to
|
|
343
|
-
// protect internal state from callers mutating entries.
|
|
344
409
|
const matchingEntry = this.cache.find((entry) => pageAiCacheKeysMatch(entry, key));
|
|
345
410
|
return matchingEntry ? cloneEntryWithRunner(matchingEntry) : null;
|
|
346
411
|
}
|
|
347
412
|
async put(entry) {
|
|
348
|
-
// Upsert in memory mirrors the file-backed logic for parity.
|
|
349
413
|
const materialized = materializeEntry(entry);
|
|
350
414
|
const existingIndex = this.cache.findIndex((candidate) => pageAiCacheKeysMatch(candidate, entry));
|
|
351
415
|
if (existingIndex === -1) {
|
|
@@ -357,8 +421,6 @@ class InMemoryPageAiCache {
|
|
|
357
421
|
this.cache = nextCache;
|
|
358
422
|
}
|
|
359
423
|
async delete(key) {
|
|
360
|
-
// Simple array removal; returns false when nothing was removed to keep
|
|
361
|
-
// parity with the file-backed API surface.
|
|
362
424
|
const targetIndex = this.cache.findIndex((entry) => pageAiCacheKeysMatch(entry, key));
|
|
363
425
|
if (targetIndex === -1) {
|
|
364
426
|
return false;
|
|
@@ -372,8 +434,41 @@ class InMemoryPageAiCache {
|
|
|
372
434
|
async snapshot() {
|
|
373
435
|
return {
|
|
374
436
|
caches: this.cache.map((entry) => stripRunner(entry)),
|
|
437
|
+
assertions: this.assertions.map((a) => ({
|
|
438
|
+
pageUrl: a.pageUrl,
|
|
439
|
+
assertion: a.assertion,
|
|
440
|
+
steps: a.steps,
|
|
441
|
+
})),
|
|
375
442
|
};
|
|
376
443
|
}
|
|
444
|
+
// --- Assert cache operations ---
|
|
445
|
+
async getAssert(key) {
|
|
446
|
+
const match = this.assertions.find((e) => assertCacheKeysMatch(e, key));
|
|
447
|
+
return match ? cloneAssertEntry(match) : null;
|
|
448
|
+
}
|
|
449
|
+
async putAssert(entry) {
|
|
450
|
+
const materialized = materializeAssertEntry(entry);
|
|
451
|
+
const idx = this.assertions.findIndex((e) => assertCacheKeysMatch(e, entry));
|
|
452
|
+
if (idx === -1) {
|
|
453
|
+
this.assertions = [...this.assertions, materialized];
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
const next = [...this.assertions];
|
|
457
|
+
next[idx] = materialized;
|
|
458
|
+
this.assertions = next;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
async deleteAssert(key) {
|
|
462
|
+
const idx = this.assertions.findIndex((e) => assertCacheKeysMatch(e, key));
|
|
463
|
+
if (idx === -1) {
|
|
464
|
+
return false;
|
|
465
|
+
}
|
|
466
|
+
this.assertions = [
|
|
467
|
+
...this.assertions.slice(0, idx),
|
|
468
|
+
...this.assertions.slice(idx + 1),
|
|
469
|
+
];
|
|
470
|
+
return true;
|
|
471
|
+
}
|
|
377
472
|
}
|
|
378
473
|
exports.InMemoryPageAiCache = InMemoryPageAiCache;
|
|
379
474
|
//# sourceMappingURL=cache.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../../src/lib/ai/cache/cache.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../../src/lib/ai/cache/cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,0DAA6B;AAC7B,qCAAgD;AAEhD,2DAA6B;AAC7B,0DAA4C;AAE5C,kEAA8D;AAQ9D,+CAAoD;AAqEpD,MAAM,wBAAwB,GAAG,CAC/B,IAA4C,EAC5C,KAA6C,EACpC,EAAE;AACX,6EAA6E;AAC7E,kDAAkD;AAClD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAEjD,8EAA8E;AAC9E,sEAAsE;AACtE,MAAM,oBAAoB,GAAG,CAC3B,IAAoB,EACpB,KAAqB,EACZ,EAAE,CACX,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC;IAC1D,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;IAC9B,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;IACtC,wBAAwB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;IACnD,wBAAwB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;IAC/D,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;AAE3C;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAuB,EAAE;IAClE,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,uBAAa,EAAC,EAAE,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,gBAAM,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,MAA6B,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,IAAI,KAAK,CAC/B,8CAA8C,SAAS,EAAE,CAC1D,CAAC;QACF,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC1B,eAA6C,CAAC,KAAK,GAAG,KAAK,CAAC;QAC/D,CAAC;QACD,MAAM,eAAe,CAAC;IACxB,CAAC;AACH,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,CACvB,KAAuB,EACK,EAAE,CAAC,CAAC;IAChC,GAAG,KAAK;IACR,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;CACvC,CAAC,CAAC;AAEH,gFAAgF;AAChF,MAAM,WAAW,GAAG,CAAC,KAAiC,EAAoB,EAAE,CAAC,CAAC;IAC5E,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK;QAChD,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;QAClC,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,MAAM,EACJ,KAAK,CAAC,MAAM,KAAK,IAAI;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAA6B;IAC3E,YAAY,EAAE,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IACrC,YAAY,EAAE,KAAK,CAAC,YAAY;IAChC,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,SAAS,EAAE,KAAK,CAAC,SAAS;CAC3B,CAAC,CAAC;AAEH,4EAA4E;AAC5E,2CAA2C;AAC3C,MAAM,oBAAoB,GAAG,CAC3B,KAAiC,EACL,EAAE,CAAC,CAAC;IAChC,GAAG,WAAW,CAAC,KAAK,CAAC;IACrB,GAAG,EAAE,KAAK,CAAC,GAAG;CACf,CAAC,CAAC;AAEH,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,oBAAoB,GAAG,CAC3B,IAAoB,EACpB,KAAqB,EACZ,EAAE,CACX,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;AAEvE,MAAM,sBAAsB,GAAG,CAC7B,KAAuB,EACK,EAAE,CAAC,CAAC;IAChC,GAAG,KAAK;IACR,GAAG,EAAE,IAAA,iCAAmB,EAAC,KAAK,CAAC,KAAK,CAAC;CACtC,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CACvB,KAAiC,EACL,EAAE,CAAC,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;IAClB,GAAG,EAAE,KAAK,CAAC,GAAG;CACf,CAAC,CAAC;AAgBH,wEAAwE;AACxE,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAU,EAAE;IACzD,MAAM,kBAAkB,GACtB,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC1E,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,mBAAmB,GACvB,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,IAAI,CACR,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAC3C,gBAAgB,kBAAkB,EAAE,EACpC,WAAW,aAAa,EAAE,EAC1B,iBAAiB,mBAAmB,EAAE,EACtC,iBAAiB,mBAAmB,EAAE,EACtC,QAAQ,KAAK,CAAC,SAAS,EAAE,CAC1B,CAAC;IACF,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC,CAAC;AAEF,6EAA6E;AAC7E,+EAA+E;AACxE,MAAM,iBAAiB,GAAG,CAC/B,OAA2B,EAC3B,UAA+B,EACvB,EAAE;IACV,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,cAAc,GAClB,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC,kBAAkB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACvI,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;;;;;;;8BAOqB,iBAAiB,IAAI,cAAc,KAAK,CAAC;AACvE,CAAC,CAAC;AAjBW,QAAA,iBAAiB,qBAiB5B;AAEF;;;;;;GAMG;AACH,MAAa,eAAe;IAC1B,YAAoC,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IAE7D,wCAAwC;IAEjC,KAAK,CAAC,GAAG,CACd,GAAmB;QAEnB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAChD,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CACjC,CAAC;YACF,OAAO;gBACL,KAAK;gBACL,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAuB;QACtC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CACzD,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CACvC,CAAC;YACF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,cAAc,GAClB,aAAa,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC;gBACtC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;gBACzB,cAAc,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAAC;YACpD,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;gBAC3C,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAmB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACnD,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CACjC,CAAC;YACF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,MAAM,EAAE;wBACN,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;wBACrC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;qBACvC;iBACF;gBACD,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC1C,KAAK;YACL,MAAM,EAAE;gBACN,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACvD,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACvC,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC;aACJ;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kCAAkC;IAE3B,KAAK,CAAC,SAAS,CACpB,GAAmB;QAEnB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzE,OAAO;gBACL,KAAK;gBACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;aAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,KAAuB;QAC5C,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/B,CAAC;YACF,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,kBAAkB,GACtB,GAAG,KAAK,CAAC,CAAC;gBACR,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC;gBACrC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YAC5B,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,kBAAkB,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YACzC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE;gBACnD,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAmB;QAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACxC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,CAC7B,CAAC;YACF,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAClC,CAAC;YACD,OAAO;gBACL,KAAK,EAAE;oBACL,GAAG,KAAK;oBACR,UAAU,EAAE;wBACV,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;wBACjC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;qBACnC;iBACF;gBACD,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IAE3B,KAAK,CAAC,qBAAqB;QACjC,MAAM,cAAc,GAAG,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,kBAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,IAAA,yBAAiB,EAAC,EAAE,CAAC,EAAE;gBAC5D,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAA,2BAAa,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAAa,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAA,uBAAa,EAAC;YAC5B,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,IAAI,CAAC,aAAa;YAC9B,SAAS,EAAE,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;SAC5C,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,gBAAM,CACvB,gEAAgE,MAAM,MAAM,EAC5E,EAAE,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,CACJ,MAAM,CAAC,OAAO,EACd,YAAY,EACZ,MAAM,EACN,IAAI,CAAC,aAAa,EAClB,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CACjC,CAAC;QACF,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,CAAE,WAAqC,CAAC,OAAO;gBAC9D,WAAW,CAGZ,CAAC;YAEF,4BAA4B;YAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACrC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CACb,mDAAmD,KAAK,CAAC,OAAO,IAAI,cAAc,GAAG,CACtF,CAAC;gBACJ,CAAC;gBACD,MAAM,UAAU,GAA+B;oBAC7C,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;wBAChC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAkB,EAAE;wBACpC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,KAAK;4BAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,KAAc,EAAE;4BAChC,CAAC,CAAC,EAAE,CAAC;oBACT,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;oBACpC,WAAW,EACT,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;wBAC3D,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;oBAC/B,MAAM,EACJ,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;wBACjD,CAAC,CAAC,IAAI;wBACN,CAAC,CAAE,KAAK,CAAC,MAAkC;oBAC/C,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC7C,CAAC,CAAE,KAAK,CAAC,YAAyB;wBAClC,CAAC,CAAC,EAAE;oBACN,YAAY,EACV,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;wBACtC,KAAK,CAAC,YAAY,KAAK,IAAI;wBACzB,CAAC,CAAC,KAAK,CAAC,YAAY;wBACpB,CAAC,CAAC,IAAI;oBACV,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;wBACnC,CAAC,CAAE,KAAK,CAAC,OAAoB;wBAC7B,CAAC,CAAC,IAAI;oBACR,GAAG,EAAE,KAAK,CAAC,GAA0B;oBACrC,SAAS,EAAG,KAAK,CAAC,GAA2B,CAAC,QAAQ,EAAE;iBACzD,CAAC;gBACF,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,yDAAyD;YACzD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACtD,CAAC,CAAC,QAAQ,CAAC,UAAU;gBACrB,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;gBAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;oBACtC,CAAC,CAAE,KAAK,CAAC,KAAmC;oBAC5C,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,sBAAsB,CAAC;oBAC5B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;oBACpC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;oBACxC,KAAK;iBACN,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YACxC,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAyB;QACpD,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACzE,MAAM,oBAAoB,GAAuB,KAAK,CAAC,UAAU,CAAC,GAAG,CACnE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACN,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CACH,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,IAAA,4BAAY,EACnC,IAAA,yBAAiB,EAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAC1D,CAAC;QACF,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,SAA0E;QAE1E,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACtD,OAAO,EAAE;gBACP,OAAO,EAAE,CAAC;gBACV,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,IAAI;aACjB;SACF,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;YACxD,6CAA6C;YAC7C,IACE,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;gBACpC,KAAK,CAAC,UAAU,KAAK,YAAY,CAAC,UAAU,EAC5C,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;CACF;AA9RD,0CA8RC;AAED;;;;GAIG;AACH,MAAa,mBAAmB;IAI9B,YACE,kBAA4D,EAAE;QAHxD,eAAU,GAAiC,EAAE,CAAC;QAKpD,MAAM,OAAO,GACX,QAAQ,IAAI,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,YAAY,IAAI,eAAe,IAAI,eAAe,CAAC,UAAU,EAAE,CAAC;YAClE,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,sBAAsB,CAAC,CAAC,CAAC,CAC1B,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CACd,GAAmB;QAEnB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9C,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CACjC,CAAC;QACF,OAAO,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAuB;QACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE,CACvD,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CACvC,CAAC;QACF,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,SAAS,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,GAAmB;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CACjC,CAAC;QACF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,KAAK,GAAG;YACX,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;YACnC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;SACrC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrD,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK;aACf,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,kCAAkC;IAE3B,KAAK,CAAC,SAAS,CACpB,GAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,KAAuB;QAC5C,MAAM,YAAY,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1C,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/B,CAAC;QACF,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAmB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3E,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;SAClC,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnGD,kDAmGC"}
|
|
@@ -10,6 +10,7 @@ import type { ToolCallResult } from '../../models/ToolCallResult';
|
|
|
10
10
|
import type { FlowsPersistence } from '../../persistence/flows/FlowsPersistence';
|
|
11
11
|
import type { CookieAnalyses } from '../../tools/CreateBrowserCookieReportTool';
|
|
12
12
|
import type { AccessibilityResults } from '../../tools/RunAccessibilityTestTool';
|
|
13
|
+
import type { PageAiCache } from '../ai/cache/cache';
|
|
13
14
|
import type { PageAi, PageAiNoSchemaOptions, PageAiOptions, PageAiSchemaOptions } from '../ai/PageAi';
|
|
14
15
|
import type { SmartSelector } from './SmartSelector';
|
|
15
16
|
export type { AccessibilityResults, CookieAnalyses, PageAiNoSchemaOptions, PageAiOptions, PageAiSchemaOptions, };
|
|
@@ -133,6 +134,14 @@ export type PageAiCallable = PageAiAct & {
|
|
|
133
134
|
retries?: number;
|
|
134
135
|
retryDelaySeconds?: number;
|
|
135
136
|
gptClient?: GptClient | Exclude<LanguageModel, string>;
|
|
137
|
+
/**
|
|
138
|
+
* Enables cache lookup/storage for deterministic replays using standard
|
|
139
|
+
* Playwright assertions. On the first run the AI evaluates the assertion
|
|
140
|
+
* and generates equivalent Playwright code which is cached. Subsequent
|
|
141
|
+
* runs execute the cached code directly, skipping the AI call entirely.
|
|
142
|
+
* Defaults to `true`.
|
|
143
|
+
*/
|
|
144
|
+
cache?: boolean;
|
|
136
145
|
}): Promise<void>;
|
|
137
146
|
/**
|
|
138
147
|
* Return an object conforming to the given Zod schema. The object will be
|
|
@@ -291,6 +300,7 @@ export interface DonobuExtendedPage extends Page {
|
|
|
291
300
|
donobuStack: DonobuStack;
|
|
292
301
|
interactionVisualizer: InteractionVisualizer;
|
|
293
302
|
pageAi: PageAi | undefined;
|
|
303
|
+
pageAiCache: PageAiCache | undefined;
|
|
294
304
|
persistence: FlowsPersistence;
|
|
295
305
|
initialBrowserState: BrowserStorageState;
|
|
296
306
|
gptClient: GptClient | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DonobuExtendedPage.d.ts","sourceRoot":"","sources":["../../../../src/lib/page/DonobuExtendedPage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EACV,MAAM,EACN,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,YAAY,EACV,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,mBAAmB,GACpB,CAAC;AAEF,KAAK,0BAA0B,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,IAAI,IAAI,CAChE,mBAAmB,CAAC,MAAM,CAAC,EAC3B,WAAW,CACZ,GAAG;IACF,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACxD,CAAC;AAEF,KAAK,6BAA6B,GAAG,IAAI,CACvC,qBAAqB,EACrB,WAAW,CACZ,GAAG;IACF,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACxD,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,CAAC,MAAM,SAAS,CAAC,CAAC,SAAS,EACzB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,0BAA0B,CAAC,MAAM,CAAC,GAC3C,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/E,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG;IACvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,GAAG,EAAE,SAAS,CAAC;IACf;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CACJ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"DonobuExtendedPage.d.ts","sourceRoot":"","sources":["../../../../src/lib/page/DonobuExtendedPage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extendPage.d.ts","sourceRoot":"","sources":["../../../../src/lib/page/extendPage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"extendPage.d.ts","sourceRoot":"","sources":["../../../../src/lib/page/extendPage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAkB,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AA8B9D,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,sBAAsB,CAAC;AAwB9B;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE;IACR;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,GACA,OAAO,CAAC,kBAAkB,CAAC,CAoG7B"}
|