@ez4/local-storage 0.23.0 → 0.25.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/client/mock.d.ts +2 -0
- package/dist/client/service.d.ts +3 -0
- package/dist/main.cjs +24 -23
- package/dist/main.mjs +21 -19
- package/dist/service/tester.d.ts +15 -0
- package/dist/test.cjs +16 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.mjs +12 -0
- package/dist/utils/tester.d.ts +14 -0
- package/package.json +12 -6
package/dist/main.cjs
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var
|
|
2
|
-
typeof
|
|
3
|
-
g(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
s)}async write(r,s){let
|
|
7
|
-
await(0,a.writeFile)(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
e.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
e
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
"use strict";var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var n=(e,t)=>g(e,"name",{value:t,configurable:!0});var C=(e,t)=>{for(var o in t)g(e,o,{get:t[o],enumerable:!0})},z=(e,t,o,i)=>{if(t&&
|
|
2
|
+
typeof t=="object"||typeof t=="function")for(let r of E(t))!b.call(e,r)&&r!==o&&
|
|
3
|
+
g(e,r,{get:()=>t[r],enumerable:!(i=v(t,r))||i.enumerable});return e};var P=e=>z(g({},"__esModule",{value:!0}),e);var q={};C(q,{registerTriggers:()=>T});module.exports=P(q);var f=require("@ez4/storage/library"),h=require("@ez4/project/library");var S=require("@ez4/project/library");var a=require("node:fs/promises"),l=require("node:path"),d=require("node:fs"),u=require("@ez4/utils"),
|
|
4
|
+
m=require("@ez4/project/library");var p=n((e,t)=>{let o=(0,m.getServiceName)(e,t),i=(0,l.join)(".ez4",(0,u.toKebabCase)(
|
|
5
|
+
e));return new class{async exists(r){let s=(0,l.join)(i,r);return(0,d.existsSync)(
|
|
6
|
+
s)}async write(r,s){let c=(0,l.join)(i,r);await(0,a.mkdir)((0,l.dirname)(c),{recursive:!0}),
|
|
7
|
+
await(0,a.writeFile)(c,s),m.Logger.debug(`\u2B06\uFE0F File ${r} uploaded.`)}async read(r){
|
|
8
|
+
let s=(0,l.join)(i,r),c=await(0,a.readFile)(s);return m.Logger.debug(`\u2B07\uFE0F File ${r}\
|
|
9
|
+
downloaded.`),c}async delete(r){let s=(0,l.join)(i,r);await(0,a.unlink)(s),m.Logger.
|
|
10
|
+
debug(`\u2139\uFE0F File ${r} deleted.`)}async getWriteUrl(r){return`http://${t.
|
|
11
|
+
serviceHost}/${o}/${r}`}async getReadUrl(r){return`http://${t.serviceHost}/${o}/${r}`}async getStats(r){
|
|
12
|
+
let s=(0,l.join)(i,r);try{return{type:"application/octet-stream",size:(await(0,a.stat)(
|
|
13
|
+
s)).size}}catch(c){if(!(0,u.isAnyObject)(c)||c.code!=="ENOENT")throw c;return}}}},
|
|
14
|
+
"createServiceClient");var y=n((e,t)=>{let o=p(e.name,t);return{type:"Storage",name:e.name,identifier:(0,S.getServiceName)(
|
|
15
|
+
e.name,t),clientHandler:n(()=>p(e.name,t),"clientHandler"),requestHandler:n(i=>F(
|
|
16
|
+
o,i),"requestHandler")}},"registerBucketEmulator"),F=n(async(e,t)=>{let{method:o,
|
|
17
|
+
path:i,body:r}=t;if(!i||i==="/")throw new Error("File path wasn't given.");switch(o){case"\
|
|
18
|
+
GET":return $(e,i);case"PUT":{if(!r)throw new Error("File content wasn't given.");
|
|
19
|
+
return B(e,i,r)}default:throw new Error("Unsupported storage request.")}},"handl\
|
|
20
|
+
eRequest"),$=n(async(e,t)=>{let[o,i]=await Promise.all([e.read(t),e.getStats(t)]);
|
|
21
|
+
return{status:200,body:o,headers:{"content-type":i}}},"loadFile"),B=n(async(e,t,o)=>(await e.
|
|
22
|
+
write(t,o),{status:204}),"storeFile");var w=!1,T=n(()=>{w||((0,f.registerTriggers)(),(0,h.createTrigger)("@ez4/local-s\
|
|
23
|
+
torage",{"emulator:getServices":n(({service:e,options:t})=>(0,f.isBucketService)(
|
|
24
|
+
e)?y(e,t):null,"emulator:getServices")}),w=!0)},"registerTriggers");0&&(module.exports={registerTriggers});
|
|
24
25
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
var f=Object.defineProperty;var
|
|
2
|
-
createTrigger as
|
|
1
|
+
var f=Object.defineProperty;var o=(e,r)=>f(e,"name",{value:r,configurable:!0});import{isBucketService as B,registerTriggers as T}from"@ez4/storage/library";import{
|
|
2
|
+
createTrigger as q}from"@ez4/project/library";import{getServiceName as z}from"@ez4/project/library";import{mkdir as p,readFile as d,stat as S,unlink as y,writeFile as w}from"node:fs/promises";
|
|
3
3
|
import{dirname as h,join as c}from"node:path";import{existsSync as v}from"node:fs";
|
|
4
|
-
import{isAnyObject as E,toKebabCase as
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
t
|
|
12
|
-
a
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
e)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
import{isAnyObject as E,toKebabCase as b}from"@ez4/utils";import{getServiceName as C,
|
|
5
|
+
Logger as l}from"@ez4/project/library";var m=o((e,r)=>{let n=C(e,r),i=c(".ez4",b(e));return new class{async exists(t){let a=c(
|
|
6
|
+
i,t);return v(a)}async write(t,a){let s=c(i,t);await p(h(s),{recursive:!0}),await w(
|
|
7
|
+
s,a),l.debug(`\u2B06\uFE0F File ${t} uploaded.`)}async read(t){let a=c(i,t),s=await d(
|
|
8
|
+
a);return l.debug(`\u2B07\uFE0F File ${t} downloaded.`),s}async delete(t){let a=c(
|
|
9
|
+
i,t);await y(a),l.debug(`\u2139\uFE0F File ${t} deleted.`)}async getWriteUrl(t){
|
|
10
|
+
return`http://${r.serviceHost}/${n}/${t}`}async getReadUrl(t){return`http://${r.
|
|
11
|
+
serviceHost}/${n}/${t}`}async getStats(t){let a=c(i,t);try{return{type:"applicat\
|
|
12
|
+
ion/octet-stream",size:(await S(a)).size}}catch(s){if(!E(s)||s.code!=="ENOENT")throw s;
|
|
13
|
+
return}}}},"createServiceClient");var g=o((e,r)=>{let n=m(e.name,r);return{type:"Storage",name:e.name,identifier:z(
|
|
14
|
+
e.name,r),clientHandler:o(()=>m(e.name,r),"clientHandler"),requestHandler:o(i=>P(
|
|
15
|
+
n,i),"requestHandler")}},"registerBucketEmulator"),P=o(async(e,r)=>{let{method:n,
|
|
16
|
+
path:i,body:t}=r;if(!i||i==="/")throw new Error("File path wasn't given.");switch(n){case"\
|
|
17
|
+
GET":return F(e,i);case"PUT":{if(!t)throw new Error("File content wasn't given.");
|
|
18
|
+
return $(e,i,t)}default:throw new Error("Unsupported storage request.")}},"handl\
|
|
19
|
+
eRequest"),F=o(async(e,r)=>{let[n,i]=await Promise.all([e.read(r),e.getStats(r)]);
|
|
20
|
+
return{status:200,body:n,headers:{"content-type":i}}},"loadFile"),$=o(async(e,r,n)=>(await e.
|
|
21
|
+
write(r,n),{status:204}),"storeFile");var u=!1,M=o(()=>{u||(T(),q("@ez4/local-storage",{"emulator:getServices":o(({service:e,
|
|
22
|
+
options:r})=>B(e)?g(e,r):null,"emulator:getServices")}),u=!0)},"registerTriggers");export{M as registerTriggers};
|
|
21
23
|
//# sourceMappingURL=main.mjs.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Client } from '@ez4/storage';
|
|
2
|
+
import type { Mock } from 'node:test';
|
|
3
|
+
export declare namespace BucketTester {
|
|
4
|
+
type ClientMock = Client & {
|
|
5
|
+
exists: Mock<Client['exists']>;
|
|
6
|
+
write: Mock<Client['write']>;
|
|
7
|
+
read: Mock<Client['read']>;
|
|
8
|
+
delete: Mock<Client['delete']>;
|
|
9
|
+
getWriteUrl: Mock<Client['getWriteUrl']>;
|
|
10
|
+
getReadUrl: Mock<Client['getReadUrl']>;
|
|
11
|
+
getStats: Mock<Client['getStats']>;
|
|
12
|
+
};
|
|
13
|
+
const getClient: (resourceName: string) => Client;
|
|
14
|
+
const getClientMock: (resourceName?: string) => ClientMock;
|
|
15
|
+
}
|
package/dist/test.cjs
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var s=(n,e)=>c(n,"name",{value:e,configurable:!0});var M=(n,e)=>{for(var o in e)c(n,o,{get:e[o],enumerable:!0})},h=(n,e,o,t)=>{if(e&&
|
|
2
|
+
typeof e=="object"||typeof e=="function")for(let r of C(e))!u.call(n,r)&&r!==o&&
|
|
3
|
+
c(n,r,{get:()=>e[r],enumerable:!(t=f(e,r))||t.enumerable});return n};var w=n=>h(c({},"__esModule",{value:!0}),n);var x={};M(x,{BucketTester:()=>p});module.exports=w(x);var m=require("@ez4/project/library"),i=require("node:test");var l=require("@ez4/project/library"),d=require("@ez4/utils");var a=Buffer.from("This is a mock content."),g=s(n=>{let e=(0,d.toKebabCase)(n),
|
|
4
|
+
o={};return new class{async exists(t){return!!o[t]}async write(t,r){l.Logger.debug(
|
|
5
|
+
`\u2B06\uFE0F File ${t} uploaded.`),o[t]=!0}async read(t){if(!o[t])throw new Error(
|
|
6
|
+
`Key ${t} not found.`);return l.Logger.debug(`\u2B07\uFE0F File ${t} downloaded\
|
|
7
|
+
.`),Buffer.from(a)}async delete(t){if(!o[t])throw new Error(`Key ${t} not found.`);
|
|
8
|
+
l.Logger.debug(`\u2139\uFE0F File ${t} deleted.`),delete o[t]}async getWriteUrl(t){
|
|
9
|
+
return`http://${e}/${t}`}async getReadUrl(t){return`http://${e}/${t}`}async getStats(t){
|
|
10
|
+
if(!o[t])throw new Error(`Key ${t} not found.`);return{type:"application/octet-s\
|
|
11
|
+
tream",size:a.byteLength}}}},"createMockedClient");var p;(o=>(o.getClient=s(t=>m.Tester.getServiceClient(t),"getClient"),o.getClientMock=
|
|
12
|
+
s(t=>{let r=g(t??"BucketMock");return i.mock.method(r,"exists"),i.mock.method(r,
|
|
13
|
+
"write"),i.mock.method(r,"read"),i.mock.method(r,"delete"),i.mock.method(r,"getW\
|
|
14
|
+
riteUrl"),i.mock.method(r,"getReadUrl"),i.mock.method(r,"getStats"),r},"getClien\
|
|
15
|
+
tMock")))(p||={});0&&(module.exports={BucketTester});
|
|
16
|
+
//# sourceMappingURL=test.cjs.map
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './service/tester.js';
|
package/dist/test.mjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
var d=Object.defineProperty;var i=(s,n)=>d(s,"name",{value:n,configurable:!0});import{Tester as m}from"@ez4/project/library";import{mock as o}from"node:test";import{Logger as c}from"@ez4/project/library";import{toKebabCase as g}from"@ez4/utils";var l=Buffer.from("This is a mock content."),a=i(s=>{let n=g(s),e={};return new class{async exists(t){
|
|
2
|
+
return!!e[t]}async write(t,r){c.debug(`\u2B06\uFE0F File ${t} uploaded.`),e[t]=
|
|
3
|
+
!0}async read(t){if(!e[t])throw new Error(`Key ${t} not found.`);return c.debug(
|
|
4
|
+
`\u2B07\uFE0F File ${t} downloaded.`),Buffer.from(l)}async delete(t){if(!e[t])throw new Error(
|
|
5
|
+
`Key ${t} not found.`);c.debug(`\u2139\uFE0F File ${t} deleted.`),delete e[t]}async getWriteUrl(t){
|
|
6
|
+
return`http://${n}/${t}`}async getReadUrl(t){return`http://${n}/${t}`}async getStats(t){
|
|
7
|
+
if(!e[t])throw new Error(`Key ${t} not found.`);return{type:"application/octet-s\
|
|
8
|
+
tream",size:l.byteLength}}}},"createMockedClient");var p;(e=>(e.getClient=i(t=>m.getServiceClient(t),"getClient"),e.getClientMock=i(
|
|
9
|
+
t=>{let r=a(t??"BucketMock");return o.method(r,"exists"),o.method(r,"write"),o.method(
|
|
10
|
+
r,"read"),o.method(r,"delete"),o.method(r,"getWriteUrl"),o.method(r,"getReadUrl"),
|
|
11
|
+
o.method(r,"getStats"),r},"getClientMock")))(p||={});export{p as BucketTester};
|
|
12
|
+
//# sourceMappingURL=test.mjs.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Client } from '@ez4/storage';
|
|
2
|
+
import type { Mock } from 'node:test';
|
|
3
|
+
export declare namespace BucketTester {
|
|
4
|
+
const getClient: (resourceName: string) => Client;
|
|
5
|
+
const getMock: (resourceName?: string) => Client & {
|
|
6
|
+
exists: Mock<Client["exists"]>;
|
|
7
|
+
write: Mock<Client["write"]>;
|
|
8
|
+
read: Mock<Client["read"]>;
|
|
9
|
+
delete: Mock<Client["delete"]>;
|
|
10
|
+
getWriteUrl: Mock<Client["getWriteUrl"]>;
|
|
11
|
+
getReadUrl: Mock<Client["getReadUrl"]>;
|
|
12
|
+
getStats: Mock<Client["getStats"]>;
|
|
13
|
+
};
|
|
14
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/local-storage",
|
|
3
3
|
"description": "EZ4: Local storage emulator",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.25.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -22,6 +22,11 @@
|
|
|
22
22
|
"types": "./dist/main.d.ts",
|
|
23
23
|
"require": "./dist/main.cjs",
|
|
24
24
|
"import": "./dist/main.mjs"
|
|
25
|
+
},
|
|
26
|
+
"./test": {
|
|
27
|
+
"types": "./dist/test.d.ts",
|
|
28
|
+
"require": "./dist/test.cjs",
|
|
29
|
+
"import": "./dist/test.mjs"
|
|
25
30
|
}
|
|
26
31
|
},
|
|
27
32
|
"workspaces": [
|
|
@@ -29,6 +34,7 @@
|
|
|
29
34
|
"providers/local/*"
|
|
30
35
|
],
|
|
31
36
|
"scripts": {
|
|
37
|
+
"lint": "eslint --cache",
|
|
32
38
|
"clean": "rm -f *.tsbuildinfo && rm -rf dist/*",
|
|
33
39
|
"build": "tsc -p tsconfig.json && node tools/bundler.mjs",
|
|
34
40
|
"test": "npm run test:types && node --test --import ../../../tools/tsnode.mjs test/*.spec.ts",
|
|
@@ -36,12 +42,12 @@
|
|
|
36
42
|
"test:types": "npm run build && tsc -p tsconfig.test.json",
|
|
37
43
|
"local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
|
|
38
44
|
"clean:registry": "rm -rf ../../../.registry/@ez4/local-storage",
|
|
39
|
-
"live:publish": "npm
|
|
45
|
+
"live:publish": "npm publish --access public"
|
|
40
46
|
},
|
|
41
47
|
"dependencies": {
|
|
42
|
-
"@ez4/local-common": "^0.
|
|
43
|
-
"@ez4/project": "^0.
|
|
44
|
-
"@ez4/storage": "^0.
|
|
45
|
-
"@ez4/utils": "^0.
|
|
48
|
+
"@ez4/local-common": "^0.25.0",
|
|
49
|
+
"@ez4/project": "^0.25.0",
|
|
50
|
+
"@ez4/storage": "^0.25.0",
|
|
51
|
+
"@ez4/utils": "^0.25.0"
|
|
46
52
|
}
|
|
47
53
|
}
|