@prisma/studio-core 0.16.2 → 0.16.3
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/README.md +7 -1
- package/dist/data/pglite/index.js +1 -1
- package/dist/data/postgresjs/index.js +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/ui/index.cjs +1 -1
- package/dist/ui/index.js +1 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ Use implies consent. Learn more in our [Privacy Policy](https://www.prisma.io/pr
|
|
|
15
15
|
|
|
16
16
|
Requirements:
|
|
17
17
|
|
|
18
|
-
- Node.js
|
|
18
|
+
- Node.js `^20.19 || ^22.12 || ^24.0`
|
|
19
19
|
- `pnpm` `8`
|
|
20
20
|
- `bun`
|
|
21
21
|
|
|
@@ -47,9 +47,15 @@ The demo database is intentionally ephemeral: it is pre-seeded when the demo sta
|
|
|
47
47
|
- `pnpm test:data` - run data-layer tests
|
|
48
48
|
- `pnpm test:ui` - run UI tests
|
|
49
49
|
- `pnpm test:e2e` - run e2e tests
|
|
50
|
+
- `pnpm demo:ppg:build` - bundle the demo server with `bun build`
|
|
51
|
+
- `pnpm demo:ppg:bundle` - build and run the bundled demo server
|
|
50
52
|
- `pnpm build` - build distributable package with `tsup`
|
|
51
53
|
- `pnpm check:exports` - validate package export map/types
|
|
52
54
|
|
|
55
|
+
When bundling the demo with `bun build`, we use `--packages external` so
|
|
56
|
+
`@prisma/dev` can resolve its PGlite runtime assets (WASM/data/extensions)
|
|
57
|
+
directly from `node_modules` at runtime.
|
|
58
|
+
|
|
53
59
|
## Development Workflow
|
|
54
60
|
|
|
55
61
|
For day-to-day development, use an agent with Playwright available and let the agent run the demo itself.
|
|
@@ -6,5 +6,5 @@ function require(mod) {
|
|
|
6
6
|
if (mod === 'react-dom') return ___react_dom___;
|
|
7
7
|
throw new Error(`Unknown module ${mod}`);
|
|
8
8
|
}
|
|
9
|
-
import{j as y}from"../../chunk-3UTO5DCO.js";import"../../chunk-GLRT7R5A.js";import"../../chunk-UMEMLAKB.js";import
|
|
9
|
+
import{j as y}from"../../chunk-3UTO5DCO.js";import"../../chunk-GLRT7R5A.js";import"../../chunk-UMEMLAKB.js";import{a as d}from"../../chunk-ETLAQXNJ.js";import"../../chunk-R52CC7NZ.js";import"../../chunk-6QJ7HVIC.js";function b(r,n){let{addDelay:i=0,logging:a=!1}=n??{};return{execute:async(t,m)=>{let{abortSignal:s}=m||{},c,P=new Promise((e,o)=>c=o);function u(){c(new d)}s?.addEventListener("abort",u);let l=typeof i=="function"?i(t):i,p=()=>r.query(t.sql,t.parameters,{rowMode:"object"}),f=l>0?()=>new Promise(e=>setTimeout(e,l)).then(()=>p()):p;try{let e=typeof a=="function"?a(t):a,o;e&&console.log("PGLiteExecutor: Executing query:",o=JSON.stringify(t,null,2));let g=Date.now(),x=await Promise.race([f(),P]),L=Date.now()-g;return e&&console.log("PGLiteExecutor: Query executed in",L,"ms:",o),[null,x.rows]}catch(e){return[e]}finally{s?.removeEventListener("abort",u)}}}}function E(r,n){return y({executor:b(r,n)})}export{E as createPGLiteAdapter,b as createPGLiteExecutor};
|
|
10
10
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wZ2xpdGUvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgUEdsaXRlIH0gZnJvbSBcIkBlbGVjdHJpYy1zcWwvcGdsaXRlXCI7XG5cbmltcG9ydCB0eXBlIHsgQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVyXCI7XG5pbXBvcnQgeyBBYm9ydEVycm9yLCB0eXBlIEV4ZWN1dG9yIH0gZnJvbSBcIi4uL2V4ZWN1dG9yXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3N0Z3Jlc0FkYXB0ZXIgfSBmcm9tIFwiLi4vcG9zdGdyZXMtY29yZVwiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQR0xpdGVFeGVjdXRvck9wdGlvbnMge1xuICAvKipcbiAgICogRGVsYXkgaW4gbWlsbGlzZWNvbmRzIHRvIGFkZCBiZWZvcmUgZXhlY3V0aW5nIHRoZSBxdWVyeS5cbiAgICogVGhpcyBjYW4gYmUgYSBzdGF0aWMgbnVtYmVyIG9yIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgcXVlcnkgYXMgYW4gYXJndW1lbnQgYW5kIHJldHVybnMgYSBudW1iZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBzaW11bGF0aW5nIG5ldHdvcmsgbGF0ZW5jeSBvciBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuICAgKi9cbiAgYWRkRGVsYXk/OiBudW1iZXIgfCAoKHF1ZXJ5OiBRdWVyeTx1bmtub3duPikgPT4gbnVtYmVyKTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBsb2cgdGhlIHF1ZXJ5IGFuZCBpdHMgcGFyYW1ldGVycy5cbiAgICpcbiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICovXG4gIGxvZ2dpbmc/OiBib29sZWFuIHwgKChxdWVyeTogUXVlcnk8dW5rbm93bj4pID0+IGJvb2xlYW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUEdMaXRlRXhlY3V0b3IoXG4gIHBnbGl0ZTogUEdsaXRlLFxuICBvcHRpb25zPzogUEdMaXRlRXhlY3V0b3JPcHRpb25zLFxuKTogRXhlY3V0b3Ige1xuICBjb25zdCB7IGFkZERlbGF5ID0gMCwgbG9nZ2luZyA9IGZhbHNlIH0gPSBvcHRpb25zID8/IHt9O1xuXG4gIHJldHVybiB7XG4gICAgZXhlY3V0ZTogYXN5bmMgKHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCB7IGFib3J0U2lnbmFsIH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICBsZXQgYWJvcnQ6IChyZWFzb24/OiB1bmtub3duKSA9PiB2b2lkO1xuICAgICAgY29uc3QgYWJvcnRpb25Qcm9taXNlID0gbmV3IFByb21pc2U8bmV2ZXI+KFxuICAgICAgICAoXywgcmVqZWN0KSA9PiAoYWJvcnQgPSByZWplY3QpLFxuICAgICAgKTtcblxuICAgICAgZnVuY3Rpb24gYWJvcnRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgYWJvcnQobmV3IEFib3J0RXJyb3IoKSk7XG4gICAgICB9XG5cbiAgICAgIGFib3J0U2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgYWJvcnRMaXN0ZW5lcik7XG5cbiAgICAgIGNvbnN0IGFkZGVkRGVsYXkgPVxuICAgICAgICB0eXBlb2YgYWRkRGVsYXkgPT09IFwiZnVuY3Rpb25cIiA/IGFkZERlbGF5KHF1ZXJ5KSA6IGFkZERlbGF5O1xuXG4gICAgICBjb25zdCBxdWVyeVBHTGl0ZSA9ICgpID0+XG4gICAgICAgIHBnbGl0ZS5xdWVyeShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMgYXMgbmV2ZXJbXSwge1xuICAgICAgICAgIHJvd01vZGU6IFwib2JqZWN0XCIsXG4gICAgICAgIH0pO1xuXG4gICAgICBjb25zdCBxdWVyeVBHTGl0ZVBvc3NpYmx5RGVsYXllZCA9XG4gICAgICAgIGFkZGVkRGVsYXkgPiAwXG4gICAgICAgICAgPyAoKSA9PlxuICAgICAgICAgICAgICBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBhZGRlZERlbGF5KSkudGhlbihcbiAgICAgICAgICAgICAgICAoKSA9PiBxdWVyeVBHTGl0ZSgpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgOiBxdWVyeVBHTGl0ZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2hvdWxkTG9nID1cbiAgICAgICAgICB0eXBlb2YgbG9nZ2luZyA9PT0gXCJmdW5jdGlvblwiID8gbG9nZ2luZyhxdWVyeSkgOiBsb2dnaW5nO1xuXG4gICAgICAgIGxldCBsb2dnYWJsZVF1ZXJ5OiBzdHJpbmc7XG4gICAgICAgIGlmIChzaG91bGRMb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIFwiUEdMaXRlRXhlY3V0b3I6IEV4ZWN1dGluZyBxdWVyeTpcIixcbiAgICAgICAgICAgIChsb2dnYWJsZVF1ZXJ5ID0gSlNPTi5zdHJpbmdpZnkocXVlcnksIG51bGwsIDIpKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICAgIHF1ZXJ5UEdMaXRlUG9zc2libHlEZWxheWVkKCksXG4gICAgICAgICAgYWJvcnRpb25Qcm9taXNlLFxuICAgICAgICBdKTtcblxuICAgICAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBub3c7XG5cbiAgICAgICAgaWYgKHNob3VsZExvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgXCJQR0xpdGVFeGVjdXRvcjogUXVlcnkgZXhlY3V0ZWQgaW5cIixcbiAgICAgICAgICAgIGR1cmF0aW9uLFxuICAgICAgICAgICAgXCJtczpcIixcbiAgICAgICAgICAgIGxvZ2dhYmxlUXVlcnkhLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIHJlc3VsdC5yb3dzIGFzIG5ldmVyXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIHJldHVybiBbZXJyb3IgYXMgRXJyb3JdO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYWJvcnRTaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBhYm9ydExpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFBHTGl0ZUFkYXB0ZXJPcHRpb25zIGV4dGVuZHMgUEdMaXRlRXhlY3V0b3JPcHRpb25zIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQR0xpdGVBZGFwdGVyKFxuICBwZ2xpdGU6IFBHbGl0ZSxcbiAgb3B0aW9ucz86IFBHTGl0ZUFkYXB0ZXJPcHRpb25zLFxuKTogQWRhcHRlciB7XG4gIHJldHVybiBjcmVhdGVQb3N0Z3Jlc0FkYXB0ZXIoe1xuICAgIGV4ZWN1dG9yOiBjcmVhdGVQR0xpdGVFeGVjdXRvcihwZ2xpdGUsIG9wdGlvbnMpLFxuICB9KTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7O3dOQXdCTyxTQUFTQSxFQUNkQyxFQUNBQyxFQUNVLENBQ1YsR0FBTSxDQUFFLFNBQUFDLEVBQVcsRUFBRyxRQUFBQyxFQUFVLEVBQU0sRUFBSUYsR0FBVyxDQUFDLEVBRXRELE1BQU8sQ0FDTCxRQUFTLE1BQU9HLEVBQU9ILElBQVksQ0FDakMsR0FBTSxDQUFFLFlBQUFJLENBQVksRUFBSUosR0FBVyxDQUFDLEVBRWhDSyxFQUNFQyxFQUFrQixJQUFJLFFBQzFCLENBQUNDLEVBQUdDLElBQVlILEVBQVFHLENBQzFCLEVBRUEsU0FBU0MsR0FBc0IsQ0FDN0JKLEVBQU0sSUFBSUssQ0FBWSxDQUN4QixDQUVBTixHQUFhLGlCQUFpQixRQUFTSyxDQUFhLEVBRXBELElBQU1FLEVBQ0osT0FBT1YsR0FBYSxXQUFhQSxFQUFTRSxDQUFLLEVBQUlGLEVBRS9DVyxFQUFjLElBQ2xCYixFQUFPLE1BQU1JLEVBQU0sSUFBS0EsRUFBTSxXQUF1QixDQUNuRCxRQUFTLFFBQ1gsQ0FBQyxFQUVHVSxFQUNKRixFQUFhLEVBQ1QsSUFDRSxJQUFJLFFBQVNHLEdBQVksV0FBV0EsRUFBU0gsQ0FBVSxDQUFDLEVBQUUsS0FDeEQsSUFBTUMsRUFBWSxDQUNwQixFQUNGQSxFQUVOLEdBQUksQ0FDRixJQUFNRyxFQUNKLE9BQU9iLEdBQVksV0FBYUEsRUFBUUMsQ0FBSyxFQUFJRCxFQUUvQ2MsRUFDQUQsR0FDRixRQUFRLElBQ04sbUNBQ0NDLEVBQWdCLEtBQUssVUFBVWIsRUFBTyxLQUFNLENBQUMsQ0FDaEQsRUFHRixJQUFNYyxFQUFNLEtBQUssSUFBSSxFQUVmQyxFQUFTLE1BQU0sUUFBUSxLQUFLLENBQ2hDTCxFQUEyQixFQUMzQlAsQ0FDRixDQUFDLEVBRUthLEVBQVcsS0FBSyxJQUFJLEVBQUlGLEVBRTlCLE9BQUlGLEdBQ0YsUUFBUSxJQUNOLG9DQUNBSSxFQUNBLE1BQ0FILENBQ0YsRUFHSyxDQUFDLEtBQU1FLEVBQU8sSUFBYSxDQUNwQyxPQUFTRSxFQUFnQixDQUN2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsUUFBRSxDQUNBaEIsR0FBYSxvQkFBb0IsUUFBU0ssQ0FBYSxDQUN6RCxDQUNGLENBQ0YsQ0FDRixDQUtPLFNBQVNZLEVBQ2R0QixFQUNBQyxFQUNTLENBQ1QsT0FBT3NCLEVBQXNCLENBQzNCLFNBQVV4QixFQUFxQkMsRUFBUUMsQ0FBTyxDQUNoRCxDQUFDLENBQ0giLAogICJuYW1lcyI6IFsiY3JlYXRlUEdMaXRlRXhlY3V0b3IiLCAicGdsaXRlIiwgIm9wdGlvbnMiLCAiYWRkRGVsYXkiLCAibG9nZ2luZyIsICJxdWVyeSIsICJhYm9ydFNpZ25hbCIsICJhYm9ydCIsICJhYm9ydGlvblByb21pc2UiLCAiXyIsICJyZWplY3QiLCAiYWJvcnRMaXN0ZW5lciIsICJBYm9ydEVycm9yIiwgImFkZGVkRGVsYXkiLCAicXVlcnlQR0xpdGUiLCAicXVlcnlQR0xpdGVQb3NzaWJseURlbGF5ZWQiLCAicmVzb2x2ZSIsICJzaG91bGRMb2ciLCAibG9nZ2FibGVRdWVyeSIsICJub3ciLCAicmVzdWx0IiwgImR1cmF0aW9uIiwgImVycm9yIiwgImNyZWF0ZVBHTGl0ZUFkYXB0ZXIiLCAiY3JlYXRlUG9zdGdyZXNBZGFwdGVyIl0KfQo=
|
|
@@ -6,5 +6,5 @@ function require(mod) {
|
|
|
6
6
|
if (mod === 'react-dom') return ___react_dom___;
|
|
7
7
|
throw new Error(`Unknown module ${mod}`);
|
|
8
8
|
}
|
|
9
|
-
import{a as v,b as p}from"../../chunk-GLRT7R5A.js";import
|
|
9
|
+
import{a as v,b as p}from"../../chunk-GLRT7R5A.js";import{b as s}from"../../chunk-ETLAQXNJ.js";import"../../chunk-R52CC7NZ.js";import"../../chunk-6QJ7HVIC.js";function S(o){return{execute:async(e,t)=>{let{abortSignal:n}=t||{};if(!n)try{return[null,await o.unsafe(e.sql,e.parameters)]}catch(a){return[a]}if(n.aborted)return s();let i,r;try{let a,c=new Promise(P=>a=P);n.addEventListener("abort",i=()=>a());let u=o.reserve(),l=await Promise.race([u,c]);if(!l)return u.catch(()=>{}),s();if(r=l,n.aborted)return r.release(),s();let d=b(r),f=await Promise.race([d,c]);if(f===void 0)return d.catch(()=>{}).finally(()=>r?.release()),s();if(n.aborted)return r.release(),s();let m=r.unsafe(e.sql,e.parameters),y=await Promise.race([m,c]);return y?(r.release(),[null,y]):(Promise.allSettled([q(o,f),m]).finally(()=>r?.release()),s())}catch(a){return r?.release(),[a]}finally{i&&n?.removeEventListener("abort",i)}}}}async function q(o,e){let t=p(e);try{await o.unsafe(t.sql,t.parameters)}catch(n){console.error("Failed to cancel query:",n)}}async function b(o){let e=v();try{let[t]=await o.unsafe(e.sql,e.parameters);return t?.pid}catch(t){console.error("Failed to get connection PID:",t);return}}export{S as createPostgresJSExecutor};
|
|
10
10
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vZGF0YS9wb3N0Z3Jlc2pzL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQgdHlwZSB7IFJlc2VydmVkU3FsLCBTcWwgfSBmcm9tIFwicG9zdGdyZXNcIjtcblxuaW1wb3J0IHsgdHlwZSBFeGVjdXRvciwgZ2V0QWJvcnRSZXN1bHQgfSBmcm9tIFwiLi4vZXhlY3V0b3JcIjtcbmltcG9ydCB7IGdldENhbmNlbFF1ZXJ5LCBnZXRQSURRdWVyeSB9IGZyb20gXCIuLi9wb3N0Z3Jlcy1jb3JlL3V0aWxpdHlcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBvc3RncmVzSlNFeGVjdXRvcihwb3N0Z3Jlc2pzOiBTcWwpOiBFeGVjdXRvciB7XG4gIHJldHVybiB7XG4gICAgZXhlY3V0ZTogYXN5bmMgKHF1ZXJ5LCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCB7IGFib3J0U2lnbmFsIH0gPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICBpZiAoIWFib3J0U2lnbmFsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9zdGdyZXNqcy51bnNhZmUoXG4gICAgICAgICAgICBxdWVyeS5zcWwsXG4gICAgICAgICAgICBxdWVyeS5wYXJhbWV0ZXJzIGFzIG5ldmVyLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gW251bGwsIHJlc3VsdCBhcyBuZXZlcl07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgICAgcmV0dXJuIFtlcnJvciBhcyBFcnJvcl07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFib3J0U2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICB9XG5cbiAgICAgIGxldCBhYm9ydExpc3RlbmVyOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgICBsZXQgY29ubmVjdGlvbjogUmVzZXJ2ZWRTcWwgfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhYm9ydGVkOiAoKSA9PiB2b2lkO1xuICAgICAgICBjb25zdCBhYm9ydGlvblByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihcbiAgICAgICAgICAocmVzb2x2ZSkgPT4gKGFib3J0ZWQgPSByZXNvbHZlKSxcbiAgICAgICAgKTtcblxuICAgICAgICBhYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAgIFwiYWJvcnRcIixcbiAgICAgICAgICAoYWJvcnRMaXN0ZW5lciA9ICgpID0+IGFib3J0ZWQoKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgY29ubmVjdGlvblByb21pc2UgPSBwb3N0Z3Jlc2pzLnJlc2VydmUoKTtcblxuICAgICAgICBjb25zdCBjb25uZWN0aW9uUmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgICBjb25uZWN0aW9uUHJvbWlzZSxcbiAgICAgICAgICBhYm9ydGlvblByb21pc2UsXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGlmICghY29ubmVjdGlvblJlc3VsdCkge1xuICAgICAgICAgIHZvaWQgY29ubmVjdGlvblByb21pc2UuY2F0Y2goKCkgPT4ge30pO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25uZWN0aW9uID0gY29ubmVjdGlvblJlc3VsdDtcblxuICAgICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwaWRQcm9taXNlID0gZ2V0Q29ubmVjdGlvblBJRChjb25uZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBwaWRSZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW3BpZFByb21pc2UsIGFib3J0aW9uUHJvbWlzZV0pO1xuXG4gICAgICAgIGlmIChwaWRSZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZvaWQgcGlkUHJvbWlzZS5jYXRjaCgoKSA9PiB7fSkuZmluYWxseSgoKSA9PiBjb25uZWN0aW9uPy5yZWxlYXNlKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWJvcnRTaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgIGNvbm5lY3Rpb24ucmVsZWFzZSgpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdWVyeVByb21pc2UgPSBjb25uZWN0aW9uLnVuc2FmZShcbiAgICAgICAgICBxdWVyeS5zcWwsXG4gICAgICAgICAgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcixcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IFByb21pc2UucmFjZShbcXVlcnlQcm9taXNlLCBhYm9ydGlvblByb21pc2VdKTtcblxuICAgICAgICBpZiAoIXF1ZXJ5UmVzdWx0KSB7XG4gICAgICAgICAgdm9pZCBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICAgICAgY2FuY2VsUXVlcnkocG9zdGdyZXNqcywgcGlkUmVzdWx0ISksXG4gICAgICAgICAgICBxdWVyeVByb21pc2UsXG4gICAgICAgICAgXSkuZmluYWxseSgoKSA9PiBjb25uZWN0aW9uPy5yZWxlYXNlKCkpO1xuXG4gICAgICAgICAgcmV0dXJuIGdldEFib3J0UmVzdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25uZWN0aW9uLnJlbGVhc2UoKTtcblxuICAgICAgICByZXR1cm4gW251bGwsIHF1ZXJ5UmVzdWx0IGFzIG5ldmVyXTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGNvbm5lY3Rpb24/LnJlbGVhc2UoKTtcblxuICAgICAgICByZXR1cm4gW2Vycm9yIGFzIEVycm9yXTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChhYm9ydExpc3RlbmVyKSB7XG4gICAgICAgICAgYWJvcnRTaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBhYm9ydExpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmFzeW5jIGZ1bmN0aW9uIGNhbmNlbFF1ZXJ5KHBvc3RncmVzanM6IFNxbCwgcGlkOiB7fSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBxdWVyeSA9IGdldENhbmNlbFF1ZXJ5KHBpZCk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBwb3N0Z3Jlc2pzLnVuc2FmZShxdWVyeS5zcWwsIHF1ZXJ5LnBhcmFtZXRlcnMgYXMgbmV2ZXIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gY2FuY2VsIHF1ZXJ5OlwiLCBlcnJvcik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGlvblBJRChjb25uZWN0aW9uOiBSZXNlcnZlZFNxbCk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCBxdWVyeSA9IGdldFBJRFF1ZXJ5KCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBbcmVzdWx0XSA9IGF3YWl0IGNvbm5lY3Rpb24udW5zYWZlPFF1ZXJ5UmVzdWx0PHR5cGVvZiBxdWVyeT4+KFxuICAgICAgcXVlcnkuc3FsLFxuICAgICAgcXVlcnkucGFyYW1ldGVycyBhcyBuZXZlcixcbiAgICApO1xuXG4gICAgcmV0dXJuIHJlc3VsdD8ucGlkO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gZ2V0IGNvbm5lY3Rpb24gUElEOlwiLCBlcnJvcik7XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7OzsrSkFNTyxTQUFTQSxFQUF5QkMsRUFBMkIsQ0FDbEUsTUFBTyxDQUNMLFFBQVMsTUFBT0MsRUFBT0MsSUFBWSxDQUNqQyxHQUFNLENBQUUsWUFBQUMsQ0FBWSxFQUFJRCxHQUFXLENBQUMsRUFFcEMsR0FBSSxDQUFDQyxFQUNILEdBQUksQ0FNRixNQUFPLENBQUMsS0FMTyxNQUFNSCxFQUFXLE9BQzlCQyxFQUFNLElBQ05BLEVBQU0sVUFDUixDQUU2QixDQUMvQixPQUFTRyxFQUFnQixDQUN2QixNQUFPLENBQUNBLENBQWMsQ0FDeEIsQ0FHRixHQUFJRCxFQUFZLFFBQ2QsT0FBT0UsRUFBZSxFQUd4QixJQUFJQyxFQUNBQyxFQUVKLEdBQUksQ0FDRixJQUFJQyxFQUNFQyxFQUFrQixJQUFJLFFBQ3pCQyxHQUFhRixFQUFVRSxDQUMxQixFQUVBUCxFQUFZLGlCQUNWLFFBQ0NHLEVBQWdCLElBQU1FLEVBQVEsQ0FDakMsRUFFQSxJQUFNRyxFQUFvQlgsRUFBVyxRQUFRLEVBRXZDWSxFQUFtQixNQUFNLFFBQVEsS0FBSyxDQUMxQ0QsRUFDQUYsQ0FDRixDQUFDLEVBRUQsR0FBSSxDQUFDRyxFQUNILE9BQUtELEVBQWtCLE1BQU0sSUFBTSxDQUFDLENBQUMsRUFFOUJOLEVBQWUsRUFLeEIsR0FGQUUsRUFBYUssRUFFVFQsRUFBWSxRQUNkLE9BQUFJLEVBQVcsUUFBUSxFQUVaRixFQUFlLEVBR3hCLElBQU1RLEVBQWFDLEVBQWlCUCxDQUFVLEVBRXhDUSxFQUFZLE1BQU0sUUFBUSxLQUFLLENBQUNGLEVBQVlKLENBQWUsQ0FBQyxFQUVsRSxHQUFJTSxJQUFjLE9BQ2hCLE9BQUtGLEVBQVcsTUFBTSxJQUFNLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBTU4sR0FBWSxRQUFRLENBQUMsRUFFNURGLEVBQWUsRUFHeEIsR0FBSUYsRUFBWSxRQUNkLE9BQUFJLEVBQVcsUUFBUSxFQUVaRixFQUFlLEVBR3hCLElBQU1XLEVBQWVULEVBQVcsT0FDOUJOLEVBQU0sSUFDTkEsRUFBTSxVQUNSLEVBRU1nQixFQUFjLE1BQU0sUUFBUSxLQUFLLENBQUNELEVBQWNQLENBQWUsQ0FBQyxFQUV0RSxPQUFLUSxHQVNMVixFQUFXLFFBQVEsRUFFWixDQUFDLEtBQU1VLENBQW9CLElBVjNCLFFBQVEsV0FBVyxDQUN0QkMsRUFBWWxCLEVBQVllLENBQVUsRUFDbENDLENBQ0YsQ0FBQyxFQUFFLFFBQVEsSUFBTVQsR0FBWSxRQUFRLENBQUMsRUFFL0JGLEVBQWUsRUFNMUIsT0FBU0QsRUFBZ0IsQ0FDdkIsT0FBQUcsR0FBWSxRQUFRLEVBRWIsQ0FBQ0gsQ0FBYyxDQUN4QixRQUFFLENBQ0lFLEdBQ0ZILEdBQWEsb0JBQW9CLFFBQVNHLENBQWEsQ0FFM0QsQ0FDRixDQUNGLENBQ0YsQ0FHQSxlQUFlWSxFQUFZbEIsRUFBaUJtQixFQUF3QixDQUNsRSxJQUFNbEIsRUFBUW1CLEVBQWVELENBQUcsRUFFaEMsR0FBSSxDQUNGLE1BQU1uQixFQUFXLE9BQU9DLEVBQU0sSUFBS0EsRUFBTSxVQUFtQixDQUM5RCxPQUFTRyxFQUFPLENBQ2QsUUFBUSxNQUFNLDBCQUEyQkEsQ0FBSyxDQUNoRCxDQUNGLENBRUEsZUFBZVUsRUFBaUJQLEVBQTJDLENBQ3pFLElBQU1OLEVBQVFvQixFQUFZLEVBRTFCLEdBQUksQ0FDRixHQUFNLENBQUNDLENBQU0sRUFBSSxNQUFNZixFQUFXLE9BQ2hDTixFQUFNLElBQ05BLEVBQU0sVUFDUixFQUVBLE9BQU9xQixHQUFRLEdBQ2pCLE9BQVNsQixFQUFPLENBQ2QsUUFBUSxNQUFNLGdDQUFpQ0EsQ0FBSyxFQUVwRCxNQUNGLENBQ0YiLAogICJuYW1lcyI6IFsiY3JlYXRlUG9zdGdyZXNKU0V4ZWN1dG9yIiwgInBvc3RncmVzanMiLCAicXVlcnkiLCAib3B0aW9ucyIsICJhYm9ydFNpZ25hbCIsICJlcnJvciIsICJnZXRBYm9ydFJlc3VsdCIsICJhYm9ydExpc3RlbmVyIiwgImNvbm5lY3Rpb24iLCAiYWJvcnRlZCIsICJhYm9ydGlvblByb21pc2UiLCAicmVzb2x2ZSIsICJjb25uZWN0aW9uUHJvbWlzZSIsICJjb25uZWN0aW9uUmVzdWx0IiwgInBpZFByb21pc2UiLCAiZ2V0Q29ubmVjdGlvblBJRCIsICJwaWRSZXN1bHQiLCAicXVlcnlQcm9taXNlIiwgInF1ZXJ5UmVzdWx0IiwgImNhbmNlbFF1ZXJ5IiwgInBpZCIsICJnZXRDYW5jZWxRdWVyeSIsICJnZXRQSURRdWVyeSIsICJyZXN1bHQiXQp9Cg==
|