@wp-playground/storage 0.9.42 → 0.9.45
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/index.cjs +1 -1
- package/index.js +1 -1
- package/package.json +6 -6
package/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("@php-wasm/util"),P=require("octokit");function q(e){return new P.Octokit({auth:e})}function A(e,t=""){t.length&&!t.endsWith("/")&&(t+="/");const r={};for(const a of e)a.path.startsWith(t)&&(r[a.path.substring(t.length)]=a.content);return r}async function w(e,t,r,a,n,s={}){s.progress||(s.progress={foundFiles:0,downloadedFiles:0});const{onProgress:o}=s,i=[],f=[],{data:l}=await e.rest.repos.getContent({owner:t,repo:r,path:n,ref:a});if(!Array.isArray(l))throw new Error(`Expected the list of files to be an array, but got ${typeof l}`);for(const c of l)c.type==="file"?(++s.progress.foundFiles,o==null||o(s.progress),i.push(C(e,t,r,a,c).then(F=>(++s.progress.downloadedFiles,o==null||o(s.progress),F)))):c.type==="dir"&&f.push(w(e,t,r,a,c.path,s));const u=await Promise.all(i),T=(await Promise.all(f)).flatMap(c=>c);return[...u,...T]}const D=new h.Semaphore({concurrency:15});async function C(e,t,r,a,n){const s=await D.acquire();try{const{data:o}=await e.rest.repos.getContent({owner:t,repo:r,ref:a,path:n.path});if(!("content"in o))throw new Error(`No content found for ${n.path}`);return{name:n.name,path:n.path,content:E(o.content)}}finally{s()}}function E(e){const t=window.atob(e),r=t.length,a=new Uint8Array(r);for(let n=0;n<r;n++)a[n]=t.charCodeAt(n);return a}async function O(e,t,r,a,n){var u;const{data:s}=await e.rest.pulls.get({owner:t,repo:r,pull_number:a}),i=(u=(await e.rest.actions.listWorkflowRuns({owner:t,repo:r,branch:s.head.ref,workflow_id:n})).data.workflow_runs[0])==null?void 0:u.id,f=await e.rest.actions.listWorkflowRunArtifacts({owner:t,repo:r,run_id:i});return(await e.rest.actions.downloadArtifact({owner:t,repo:r,artifact_id:f.data.artifacts[0].id,archive_format:"zip"})).data}async function S(e,t,r){var s;const{data:a,headers:n}=await e.request("GET /repos/{owner}/{repo}",{owner:t,repo:r});return!(!n["x-oauth-scopes"]||!((s=a.permissions)!=null&&s.push))}async function v(e,t,r,a,n){await e.request("GET /repos/{owner}/{repo}/branches/{branch}",{owner:t,repo:r,branch:a}).then(()=>!0,()=>!1)?await e.request("PATCH /repos/{owner}/{repo}/git/refs/{ref}",{owner:t,repo:r,sha:n,ref:`heads/${a}`}):await e.request("POST /repos/{owner}/{repo}/git/refs",{owner:t,repo:r,sha:n,ref:`refs/heads/${a}`})}async function H(e,t,r){const a=await e.request("GET /user");return(await e.request("GET /repos/{owner}/{repo}/forks",{owner:t,repo:r})).data.find(o=>o.owner&&o.owner.login===a.data.login)||await e.request("POST /repos/{owner}/{repo}/forks",{owner:t,repo:r}),a.data.login}async function M(e,t,r,a,n,s){const{data:{sha:o}}=await e.request("POST /repos/{owner}/{repo}/git/commits",{owner:t,repo:r,message:a,tree:s,parents:[n]});return o}async function k(e,t,r,a,n){const s=await p(e,t,r,a,n);if(s.length===0)return null;const{data:{sha:o}}=await e.request("POST /repos/{owner}/{repo}/git/trees",{owner:t,repo:r,base_tree:a,tree:s});return o}async function p(e,t,r,a,n){const s=[];for(const[o,i]of n.create)s.push(d(e,t,r,o,i));for(const[o,i]of n.update)s.push(d(e,t,r,o,i));for(const o of n.delete)s.push(g(e,t,r,a,o));return Promise.all(s).then(o=>o.filter(i=>!!i))}const y=new h.Semaphore({concurrency:10});async function d(e,t,r,a,n){const s=await y.acquire();try{if(ArrayBuffer.isView(n))try{const o=new TextDecoder("utf-8",{fatal:!0}).decode(n);return{path:a,content:o,mode:"100644"}}catch{const{data:{sha:i}}=await e.rest.git.createBlob({owner:t,repo:r,encoding:"base64",content:x(n)});return{path:a,sha:i,mode:"100644"}}else return{path:a,content:n,mode:"100644"}}finally{s()}}async function g(e,t,r,a,n){const s=await y.acquire();try{return await e.request("HEAD /repos/{owner}/{repo}/contents/:path",{owner:t,repo:r,ref:a,path:n}),{path:n,mode:"100644",sha:null}}catch{return}finally{s()}}function x(e){const t=[],r=e.byteLength;for(let a=0;a<r;a++)t.push(String.fromCharCode(e[a]));return window.btoa(t.join(""))}async function*B(e,t,{exceptPaths:r=[]}={}){if(t=h.normalizePath(t),!await e.isDir(t)){await e.fileExists(t)&&(yield{path:t,read:async()=>await e.readFileAsBuffer(t)});return}const a=[t];for(;a.length;){const n=a.pop();if(!n)return;const s=await e.listFiles(n);for(const o of s){const i=h.joinPaths(n,o);r.includes(i.substring(t.length+1))||(await e.isDir(i)?a.push(i):yield{path:i,read:async()=>await e.readFileAsBuffer(i)})}}}async function j(e,t){const r={create:new Map,update:new Map,delete:new Set},a=new Set;for await(const n of t){a.add(n.path);const s=e.get(n.path),o=await n.read();s?N(s,o)||r.update.set(n.path,o):r.create.set(n.path,o)}for(const n of e.keys())a.has(n)||r.delete.add(n);return r}function N(e,t){return e.length===t.length&&e.every((r,a)=>r===t[a])}async function m(e){return e.type==="local-fs"?e.handle:b(e.path)}async function b(e){const t=e.split("/").filter(a=>a.length>0);let r=await navigator.storage.getDirectory();for(const a of t)r=await r.getDirectoryHandle(a);return r}async function $(e){const r=await(await navigator.storage.getDirectory()).resolve(e);if(r===null)throw new DOMException("Unable to resolve path of OPFS directory handle.","NotFoundError");return"/"+r.join("/")}async function R(e){const t=await m(e);for await(const r of t.keys())await t.removeEntry(r,{recursive:!0})}exports.changeset=j;exports.clearContentsFromMountDevice=R;exports.createClient=q;exports.createCommit=M;exports.createOrUpdateBranch=v;exports.createTree=k;exports.createTreeNode=d;exports.createTreeNodes=p;exports.deleteFile=g;exports.directoryHandleFromMountDevice=m;exports.directoryHandleToOpfsPath=$;exports.filesListToObject=A;exports.fork=H;exports.getArtifact=O;exports.getFilesFromDirectory=w;exports.iterateFiles=B;exports.mayPush=S;exports.opfsPathToDirectoryHandle=b;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("@php-wasm/util"),P=require("octokit");function q(e){return new P.Octokit({auth:e})}function A(e,t=""){t.length&&!t.endsWith("/")&&(t+="/");const r={};for(const a of e)a.path.startsWith(t)&&(r[a.path.substring(t.length)]=a.content);return r}async function w(e,t,r,a,n,s={}){s.progress||(s.progress={foundFiles:0,downloadedFiles:0});const{onProgress:o}=s,i=[],f=[],{data:l}=await e.rest.repos.getContent({owner:t,repo:r,path:n,ref:a});if(!Array.isArray(l))throw new Error(`Expected the list of files to be an array, but got ${typeof l}`);for(const c of l)c.type==="file"?(++s.progress.foundFiles,o==null||o(s.progress),i.push(C(e,t,r,a,c).then(F=>(++s.progress.downloadedFiles,o==null||o(s.progress),F)))):c.type==="dir"&&f.push(w(e,t,r,a,c.path,s));const u=await Promise.all(i),T=(await Promise.all(f)).flatMap(c=>c);return[...u,...T]}const D=new h.Semaphore({concurrency:15});async function C(e,t,r,a,n){const s=await D.acquire();try{const{data:o}=await e.rest.repos.getContent({owner:t,repo:r,ref:a,path:n.path});if(!("content"in o))throw new Error(`No content found for ${n.path}`);return{name:n.name,path:n.path,content:E(o.content)}}finally{s()}}function E(e){const t=window.atob(e),r=t.length,a=new Uint8Array(r);for(let n=0;n<r;n++)a[n]=t.charCodeAt(n);return a}async function O(e,t,r,a,n){var u;const{data:s}=await e.rest.pulls.get({owner:t,repo:r,pull_number:a}),i=(u=(await e.rest.actions.listWorkflowRuns({owner:t,repo:r,branch:s.head.ref,workflow_id:n})).data.workflow_runs[0])==null?void 0:u.id,f=await e.rest.actions.listWorkflowRunArtifacts({owner:t,repo:r,run_id:i});return(await e.rest.actions.downloadArtifact({owner:t,repo:r,artifact_id:f.data.artifacts[0].id,archive_format:"zip"})).data}async function S(e,t,r){var s;const{data:a,headers:n}=await e.request("GET /repos/{owner}/{repo}",{owner:t,repo:r});return!(!n["x-oauth-scopes"]||!((s=a.permissions)!=null&&s.push))}async function v(e,t,r,a,n){await e.request("GET /repos/{owner}/{repo}/branches/{branch}",{owner:t,repo:r,branch:a}).then(()=>!0,()=>!1)?await e.request("PATCH /repos/{owner}/{repo}/git/refs/{ref}",{owner:t,repo:r,sha:n,ref:`heads/${a}`}):await e.request("POST /repos/{owner}/{repo}/git/refs",{owner:t,repo:r,sha:n,ref:`refs/heads/${a}`})}async function H(e,t,r){const a=await e.request("GET /user");return(await e.request("GET /repos/{owner}/{repo}/forks",{owner:t,repo:r})).data.find(o=>o.owner&&o.owner.login===a.data.login)||await e.request("POST /repos/{owner}/{repo}/forks",{owner:t,repo:r}),a.data.login}async function M(e,t,r,a,n,s){const{data:{sha:o}}=await e.request("POST /repos/{owner}/{repo}/git/commits",{owner:t,repo:r,message:a,tree:s,parents:[n]});return o}async function k(e,t,r,a,n){const s=await p(e,t,r,a,n);if(s.length===0)return null;const{data:{sha:o}}=await e.request("POST /repos/{owner}/{repo}/git/trees",{owner:t,repo:r,base_tree:a,tree:s});return o}async function p(e,t,r,a,n){const s=[];for(const[o,i]of n.create)s.push(d(e,t,r,o,i));for(const[o,i]of n.update)s.push(d(e,t,r,o,i));for(const o of n.delete)s.push(g(e,t,r,a,o));return Promise.all(s).then(o=>o.filter(i=>!!i))}const y=new h.Semaphore({concurrency:10});async function d(e,t,r,a,n){const s=await y.acquire();try{if(ArrayBuffer.isView(n))try{const o=new TextDecoder("utf-8",{fatal:!0}).decode(n);return{path:a,content:o,mode:"100644"}}catch{const{data:{sha:i}}=await e.rest.git.createBlob({owner:t,repo:r,encoding:"base64",content:x(n)});return{path:a,sha:i,mode:"100644"}}else return{path:a,content:n,mode:"100644"}}finally{s()}}async function g(e,t,r,a,n){const s=await y.acquire();try{return await e.request("HEAD /repos/{owner}/{repo}/contents/:path",{owner:t,repo:r,ref:a,path:n}),{path:n,mode:"100644",sha:null}}catch{return}finally{s()}}function x(e){const t=[],r=e.byteLength;for(let a=0;a<r;a++)t.push(String.fromCharCode(e[a]));return window.btoa(t.join(""))}async function*B(e,t,{exceptPaths:r=[]}={}){if(t=h.normalizePath(t),!await e.isDir(t)){await e.fileExists(t)&&(yield{path:t,read:async()=>await e.readFileAsBuffer(t)});return}const a=[t];for(;a.length;){const n=a.pop();if(!n)return;const s=await e.listFiles(n);for(const o of s){const i=h.joinPaths(n,o);r.includes(i.substring(t.length+1))||(await e.isDir(i)?a.push(i):yield{path:i,read:async()=>await e.readFileAsBuffer(i)})}}}async function j(e,t){const r={create:new Map,update:new Map,delete:new Set},a=new Set;for await(const n of t){a.add(n.path);const s=e.get(n.path),o=await n.read();s?N(s,o)||r.update.set(n.path,o):r.create.set(n.path,o)}for(const n of e.keys())a.has(n)||r.delete.add(n);return r}function N(e,t){return e.length===t.length&&e.every((r,a)=>r===t[a])}async function m(e){return e.type==="local-fs"?e.handle:b(e.path)}async function b(e){const t=e.split("/").filter(a=>a.length>0);let r=await navigator.storage.getDirectory();for(const a of t)r=await r.getDirectoryHandle(a,{create:!0});return r}async function $(e){const r=await(await navigator.storage.getDirectory()).resolve(e);if(r===null)throw new DOMException("Unable to resolve path of OPFS directory handle.","NotFoundError");return"/"+r.join("/")}async function R(e){const t=await m(e);for await(const r of t.keys())await t.removeEntry(r,{recursive:!0})}exports.changeset=j;exports.clearContentsFromMountDevice=R;exports.createClient=q;exports.createCommit=M;exports.createOrUpdateBranch=v;exports.createTree=k;exports.createTreeNode=d;exports.createTreeNodes=p;exports.deleteFile=g;exports.directoryHandleFromMountDevice=m;exports.directoryHandleToOpfsPath=$;exports.filesListToObject=A;exports.fork=H;exports.getArtifact=O;exports.getFilesFromDirectory=w;exports.iterateFiles=B;exports.mayPush=S;exports.opfsPathToDirectoryHandle=b;
|
package/index.js
CHANGED
|
@@ -294,7 +294,7 @@ async function O(t) {
|
|
|
294
294
|
const e = t.split("/").filter((a) => a.length > 0);
|
|
295
295
|
let r = await navigator.storage.getDirectory();
|
|
296
296
|
for (const a of e)
|
|
297
|
-
r = await r.getDirectoryHandle(a);
|
|
297
|
+
r = await r.getDirectoryHandle(a, { create: !0 });
|
|
298
298
|
return r;
|
|
299
299
|
}
|
|
300
300
|
async function W(t) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wp-playground/storage",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.45",
|
|
4
4
|
"description": "Bindings for storing WordPress Playground on different backends.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"license": "GPL-2.0-or-later",
|
|
36
36
|
"type": "module",
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "0c51051f503936c8bc92974ed660bd83f1957922",
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"comlink": "^4.4.1",
|
|
40
40
|
"express": "4.19.2",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"octokit": "3.1.1",
|
|
43
43
|
"ws": "8.18.0",
|
|
44
44
|
"yargs": "17.7.2",
|
|
45
|
-
"@php-wasm/web": "0.9.
|
|
46
|
-
"@php-wasm/universal": "0.9.
|
|
47
|
-
"@php-wasm/util": "0.9.
|
|
48
|
-
"@php-wasm/node-polyfills": "0.9.
|
|
45
|
+
"@php-wasm/web": "0.9.45",
|
|
46
|
+
"@php-wasm/universal": "0.9.45",
|
|
47
|
+
"@php-wasm/util": "0.9.45",
|
|
48
|
+
"@php-wasm/node-polyfills": "0.9.45"
|
|
49
49
|
},
|
|
50
50
|
"main": "index.js"
|
|
51
51
|
}
|