@wovin/connect-nftstorage 0.0.5 → 0.0.7

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/index.min.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as l,b as D,c as n}from"./chunk-ERMY3HEM.min.js";import{a as o,b as s,c,d as p}from"./chunk-S4T3O5K3.min.js";import{e as a}from"./chunk-SOBCOB7T.min.js";var{WARN:h,LOG:y,DEBUG:R,VERBOSE:w,ERROR:f}=a.setup(a.DEBUG),m=class u{constructor(r,e,t,i){this.serviceDID=r;this.apiKey=e;this.keypair=t;this.rootUcan=i;if(!(e||t&&i))throw new Error("Needs apiKey - or keypair and rootUcan")}static async init({apiKey:r,keypair:e,rootUcan:t}){let{value:i}=await(await fetch("https://api.nft.storage/did")).json();return y("Init NFT.Storage connector:",{apiKey:r,keypair:e,serviceDID:i}),new u(i,r,e,t)}async storeCar(r){if(this.apiKey&&!this.keypair)return o(r,this.apiKey);for(let e=1;e<3;e++)try{this.rootUcan||(await c(this.apiKey,this.keypair.did()),this.rootUcan=await p(this.apiKey));let t=await s(this.keypair,this.serviceDID,this.rootUcan);return o(r,t)}catch(t){if(f("[nft-connector.storeCar] error:",t),t.message?.contains?.("ERROR_TOKEN_NOT_FOUND"))h(`Token not found (might be a race condition) (attempt=${e}):`,t);else throw t}}async retrieveCar(r){return n(r)}};export{m as NftStorageConnector,D as resolveIPNS,n as retrieveCar,l as retrievePubStream};
1
+ import{a as l,b as D,c as n}from"./chunk-NM3L4FRZ.min.js";import{a as o,b as s,c,d as p}from"./chunk-S4T3O5K3.min.js";import{e as a}from"./chunk-SOBCOB7T.min.js";var{WARN:h,LOG:R,DEBUG:y,VERBOSE:v,ERROR:f}=a.setup(a.DEBUG),m=class u{constructor(r,e,t,i){this.serviceDID=r;this.apiKey=e;this.keypair=t;this.rootUcan=i;if(!(e||t&&i))throw new Error("Needs apiKey - or keypair and rootUcan")}static async init({apiKey:r,keypair:e,rootUcan:t}){let{value:i}=await(await fetch("https://api.nft.storage/did")).json();return y("Init NFT.Storage connector:",{apiKey:r,keypair:e,serviceDID:i}),new u(i,r,e,t)}async storeCar(r){if(this.apiKey&&!this.keypair)return o(r,this.apiKey);for(let e=1;e<3;e++)try{this.rootUcan||(await c(this.apiKey,this.keypair.did()),this.rootUcan=await p(this.apiKey));let t=await s(this.keypair,this.serviceDID,this.rootUcan);return o(r,t)}catch(t){if(f("[nft-connector.storeCar] error:",t),t.message?.contains?.("ERROR_TOKEN_NOT_FOUND"))h(`Token not found (might be a race condition) (attempt=${e}):`,t);else throw t}}async retrieveCar(r){return n(r)}};export{m as NftStorageConnector,D as resolveIPNS,n as retrieveCar,l as retrieveThread};
2
2
  //# sourceMappingURL=index.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as ucans from '@ucans/ucans'\nimport { CidString } from '@wovin/core'\nimport { type StorageConnector } from '@wovin/core/pubsub'\nimport { Logger } from 'besonders-logger'\nimport { CID } from 'multiformats'\nimport { retrieveCar, retrievePubStream } from './retrieve'\nimport { createRequestToken, getRootUcan, registerDid, storeCar } from './store'\n\nconst { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.DEBUG) // eslint-disable-line no-unused-vars\n\nexport * from './retrieve'\n// export * from './store'\n\nexport class NftStorageConnector implements StorageConnector {\n\tstatic async init({ apiKey, keypair, rootUcan }: {\n\t\tapiKey?: string\n\t\tkeypair?: ucans.DidableKey\n\t\trootUcan?: ucans.Ucan\n\t}) {\n\t\tconst { value: serviceDID } = await (await fetch('https://api.nft.storage/did')).json()\n\t\t// if (!keypair) keypair = await ucans.EdKeypair.create()\n\t\tLOG(`Init NFT.Storage connector:`, { apiKey, keypair, serviceDID })\n\t\treturn new NftStorageConnector(serviceDID, apiKey, keypair, rootUcan)\n\t}\n\tconstructor(\n\t\tpublic serviceDID: string,\n\t\tprivate apiKey: string | null,\n\t\tprivate keypair: ucans.DidableKey | null,\n\t\tprivate rootUcan: ucans.Ucan | null,\n\t) {\n\t\tif (!((apiKey) || (keypair && rootUcan))) throw new Error(`Needs apiKey - or keypair and rootUcan`)\n\t}\n\n\tasync storeCar(car: Blob) {\n\t\tif (this.apiKey && !this.keypair) {\n\t\t\treturn storeCar(car, this.apiKey)\n\t\t}\n\t\t// NFT.storage allows only one registered DID, so we might have another agent register between our register & push\n\t\tfor (let attempt = 1; attempt < 3; attempt++) {\n\t\t\ttry {\n\t\t\t\tif (!this.rootUcan) {\n\t\t\t\t\tawait registerDid(this.apiKey, this.keypair.did())\n\t\t\t\t\tthis.rootUcan = await getRootUcan(this.apiKey)\n\t\t\t\t\t// TODO: callback to the app - for persisting?\n\t\t\t\t}\n\t\t\t\tconst requestUcan = await createRequestToken(this.keypair, this.serviceDID, this.rootUcan)\n\t\t\t\treturn storeCar(car, requestUcan)\n\t\t\t} catch (err) {\n\t\t\t\tERROR(`[nft-connector.storeCar] error:`, err)\n\t\t\t\tif ((err as any).message?.contains?.('ERROR_TOKEN_NOT_FOUND')) {\n\t\t\t\t\tWARN(`Token not found (might be a race condition) (attempt=${attempt}):`, err)\n\t\t\t\t} else throw err\n\t\t\t}\n\t\t}\n\t}\n\n\tasync retrieveCar(cid: CID) {\n\t\treturn retrieveCar(cid)\n\t}\n}\n"],"mappings":"kKAQA,GAAM,CAAE,KAAAA,EAAM,IAAAC,EAAK,MAAAC,EAAO,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAAO,MAAMA,EAAO,KAAK,EAKzDC,EAAN,MAAMC,CAAgD,CAW5D,YACQC,EACCC,EACAC,EACAC,EACP,CAJM,gBAAAH,EACC,YAAAC,EACA,aAAAC,EACA,cAAAC,EAER,GAAI,EAAGF,GAAYC,GAAWC,GAAY,MAAM,IAAI,MAAM,wCAAwC,CACnG,CAjBA,aAAa,KAAK,CAAE,OAAAF,EAAQ,QAAAC,EAAS,SAAAC,CAAS,EAI3C,CACF,GAAM,CAAE,MAAOH,CAAW,EAAI,MAAO,MAAM,MAAM,6BAA6B,GAAG,KAAK,EAEtF,OAAAP,EAAI,8BAA+B,CAAE,OAAAQ,EAAQ,QAAAC,EAAS,WAAAF,CAAW,CAAC,EAC3D,IAAID,EAAoBC,EAAYC,EAAQC,EAASC,CAAQ,CACrE,CAUA,MAAM,SAASC,EAAW,CACzB,GAAI,KAAK,QAAU,CAAC,KAAK,QACxB,OAAOC,EAASD,EAAK,KAAK,MAAM,EAGjC,QAASE,EAAU,EAAGA,EAAU,EAAGA,IAClC,GAAI,CACE,KAAK,WACT,MAAMC,EAAY,KAAK,OAAQ,KAAK,QAAQ,IAAI,CAAC,EACjD,KAAK,SAAW,MAAMC,EAAY,KAAK,MAAM,GAG9C,IAAMC,EAAc,MAAMC,EAAmB,KAAK,QAAS,KAAK,WAAY,KAAK,QAAQ,EACzF,OAAOL,EAASD,EAAKK,CAAW,CACjC,OAASE,EAAK,CAEb,GADAf,EAAM,kCAAmCe,CAAG,EACvCA,EAAY,SAAS,WAAW,uBAAuB,EAC3DnB,EAAK,wDAAwDc,CAAO,KAAMK,CAAG,MACvE,OAAMA,CACd,CAEF,CAEA,MAAM,YAAYC,EAAU,CAC3B,OAAOC,EAAYD,CAAG,CACvB,CACD","names":["WARN","LOG","DEBUG","VERBOSE","ERROR","Logger","NftStorageConnector","_NftStorageConnector","serviceDID","apiKey","keypair","rootUcan","car","storeCar","attempt","registerDid","getRootUcan","requestUcan","createRequestToken","err","cid","retrieveCar"]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import * as ucans from '@ucans/ucans'\nimport { CidString } from '@wovin/core'\nimport { type StorageConnector } from '@wovin/core/pubsub'\nimport { Logger } from 'besonders-logger'\nimport { CID } from 'multiformats'\nimport { retrieveCar } from './retrieve'\nimport { createRequestToken, getRootUcan, registerDid, storeCar } from './store'\n\nconst { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.DEBUG) // eslint-disable-line no-unused-vars\n\nexport * from './retrieve'\n// export * from './store'\n\nexport class NftStorageConnector implements StorageConnector {\n\tstatic async init({ apiKey, keypair, rootUcan }: {\n\t\tapiKey?: string\n\t\tkeypair?: ucans.DidableKey\n\t\trootUcan?: ucans.Ucan\n\t}) {\n\t\tconst { value: serviceDID } = await (await fetch('https://api.nft.storage/did')).json()\n\t\t// if (!keypair) keypair = await ucans.EdKeypair.create()\n\t\tDEBUG(`Init NFT.Storage connector:`, { apiKey, keypair, serviceDID })\n\t\treturn new NftStorageConnector(serviceDID, apiKey, keypair, rootUcan)\n\t}\n\tconstructor(\n\t\tpublic serviceDID: string,\n\t\tprivate apiKey: string | null,\n\t\tprivate keypair: ucans.DidableKey | null,\n\t\tprivate rootUcan: ucans.Ucan | null,\n\t) {\n\t\tif (!((apiKey) || (keypair && rootUcan))) throw new Error(`Needs apiKey - or keypair and rootUcan`)\n\t}\n\n\tasync storeCar(car: Blob) {\n\t\tif (this.apiKey && !this.keypair) {\n\t\t\treturn storeCar(car, this.apiKey)\n\t\t}\n\t\t// NFT.storage allows only one registered DID, so we might have another agent register between our register & push\n\t\tfor (let attempt = 1; attempt < 3; attempt++) {\n\t\t\ttry {\n\t\t\t\tif (!this.rootUcan) {\n\t\t\t\t\tawait registerDid(this.apiKey, this.keypair.did())\n\t\t\t\t\tthis.rootUcan = await getRootUcan(this.apiKey)\n\t\t\t\t\t// TODO: callback to the app - for persisting?\n\t\t\t\t}\n\t\t\t\tconst requestUcan = await createRequestToken(this.keypair, this.serviceDID, this.rootUcan)\n\t\t\t\treturn storeCar(car, requestUcan)\n\t\t\t} catch (err) {\n\t\t\t\tERROR(`[nft-connector.storeCar] error:`, err)\n\t\t\t\tif ((err as any).message?.contains?.('ERROR_TOKEN_NOT_FOUND')) {\n\t\t\t\t\tWARN(`Token not found (might be a race condition) (attempt=${attempt}):`, err)\n\t\t\t\t} else throw err\n\t\t\t}\n\t\t}\n\t}\n\n\tasync retrieveCar(cid: CID) {\n\t\treturn retrieveCar(cid)\n\t}\n}\n"],"mappings":"kKAQA,GAAM,CAAE,KAAAA,EAAM,IAAAC,EAAK,MAAAC,EAAO,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAAO,MAAMA,EAAO,KAAK,EAKzDC,EAAN,MAAMC,CAAgD,CAW5D,YACQC,EACCC,EACAC,EACAC,EACP,CAJM,gBAAAH,EACC,YAAAC,EACA,aAAAC,EACA,cAAAC,EAER,GAAI,EAAGF,GAAYC,GAAWC,GAAY,MAAM,IAAI,MAAM,wCAAwC,CACnG,CAjBA,aAAa,KAAK,CAAE,OAAAF,EAAQ,QAAAC,EAAS,SAAAC,CAAS,EAI3C,CACF,GAAM,CAAE,MAAOH,CAAW,EAAI,MAAO,MAAM,MAAM,6BAA6B,GAAG,KAAK,EAEtF,OAAAN,EAAM,8BAA+B,CAAE,OAAAO,EAAQ,QAAAC,EAAS,WAAAF,CAAW,CAAC,EAC7D,IAAID,EAAoBC,EAAYC,EAAQC,EAASC,CAAQ,CACrE,CAUA,MAAM,SAASC,EAAW,CACzB,GAAI,KAAK,QAAU,CAAC,KAAK,QACxB,OAAOC,EAASD,EAAK,KAAK,MAAM,EAGjC,QAASE,EAAU,EAAGA,EAAU,EAAGA,IAClC,GAAI,CACE,KAAK,WACT,MAAMC,EAAY,KAAK,OAAQ,KAAK,QAAQ,IAAI,CAAC,EACjD,KAAK,SAAW,MAAMC,EAAY,KAAK,MAAM,GAG9C,IAAMC,EAAc,MAAMC,EAAmB,KAAK,QAAS,KAAK,WAAY,KAAK,QAAQ,EACzF,OAAOL,EAASD,EAAKK,CAAW,CACjC,OAASE,EAAK,CAEb,GADAf,EAAM,kCAAmCe,CAAG,EACvCA,EAAY,SAAS,WAAW,uBAAuB,EAC3DnB,EAAK,wDAAwDc,CAAO,KAAMK,CAAG,MACvE,OAAMA,CACd,CAEF,CAEA,MAAM,YAAYC,EAAU,CAC3B,OAAOC,EAAYD,CAAG,CACvB,CACD","names":["WARN","LOG","DEBUG","VERBOSE","ERROR","Logger","NftStorageConnector","_NftStorageConnector","serviceDID","apiKey","keypair","rootUcan","car","storeCar","attempt","registerDid","getRootUcan","requestUcan","createRequestToken","err","cid","retrieveCar"]}
@@ -1,13 +1,13 @@
1
1
  import { CarReader } from '@ipld/car';
2
2
  import { CidString } from '@wovin/core/applog';
3
- import { ApplogStreamInMemory } from '@wovin/core/stream';
3
+ import { ThreadInMemory } from '@wovin/core/thread';
4
4
  import { CID } from 'multiformats/cid';
5
- export declare function retrievePubStream(pubID: CidString, { readOnly, pinnedCID }?: {
5
+ export declare function retrieveThread(pubID: CidString, { readOnly, pinnedCID }?: {
6
6
  readOnly?: boolean;
7
7
  pinnedCID?: CidString;
8
8
  }): Promise<{
9
9
  cid: CID<unknown, number, number, import("multiformats/cid").Version>;
10
- dataStream: ApplogStreamInMemory;
10
+ thread: ThreadInMemory;
11
11
  }>;
12
12
  export declare function resolveIPNS(name: CidString): Promise<CID>;
13
13
  export declare function retrieveCar(cid: CID): Promise<CarReader>;
@@ -1 +1 @@
1
- {"version":3,"file":"retrieve.d.ts","sourceRoot":"","sources":["../src/retrieve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAU,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAwBtC,wBAAsB,iBAAiB,CACtC,KAAK,EAAE,SAAS,EAChB,EAAE,QAAe,EAAE,SAAS,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAO;;;GAsBlF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAO/D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAmB9D"}
1
+ {"version":3,"file":"retrieve.d.ts","sourceRoot":"","sources":["../src/retrieve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAU,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAwBtC,wBAAsB,cAAc,CACnC,KAAK,EAAE,SAAS,EAChB,EAAE,QAAe,EAAE,SAAS,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAA;CAAO;;;GAsBlF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAO/D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAmB9D"}
@@ -1,2 +1,2 @@
1
- import{a,b,c}from"./chunk-ERMY3HEM.min.js";import"./chunk-SOBCOB7T.min.js";export{b as resolveIPNS,c as retrieveCar,a as retrievePubStream};
1
+ import{a,b,c}from"./chunk-NM3L4FRZ.min.js";import"./chunk-SOBCOB7T.min.js";export{b as resolveIPNS,c as retrieveCar,a as retrieveThread};
2
2
  //# sourceMappingURL=retrieve.min.js.map
package/package.json CHANGED
@@ -1,47 +1,59 @@
1
1
  {
2
- "name": "@wovin/connect-nftstorage",
3
- "version": "0.0.5",
4
- "type": "module",
5
- "scripts": {
6
- "build": "rm -rf dist/ && concurrently \"pnpm build:code\" \"pnpm build:types\"",
7
- "build:code": "tsup --minify",
8
- "build:types": "tsc --emitDeclarationOnly --declaration",
9
- "dev": "concurrently \"pnpm dev:code\" \"pnpm dev:types\"",
10
- "dev:code": "tsup --watch",
11
- "dev:types": "tsc --emitDeclarationOnly --declaration --watch",
12
- "lint": "eslint .",
13
- "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
14
- "pub": "npm publish --tag latest --access=public"
15
- },
16
- "main": "./dist/index.min.js",
17
- "module": "./dist/index.min.js",
18
- "browser": "./dist/index.min.js",
19
- "types": "./dist/index.d.ts",
20
- "exports": {
21
- ".": { "import": "./dist/index.min.js", "types": "./dist/index.d.ts" },
22
- "./retrieve": { "import": "./dist/retrieve.min.js", "types": "./dist/retrieve.d.ts" },
23
- "./utils": { "import": "./dist/utils.min.js", "types": "./dist/utils.d.ts" },
24
- "./store": { "import": "./dist/store.min.js", "types": "./dist/store.d.ts" }
25
- },
26
- "files": [
27
- "./dist/"
28
- ],
29
- "esm.sh": {
30
- "bundle": false
31
- },
32
- "dependencies": {
33
- "@ipld/car": "^5.2.4",
34
- "@ucans/ucans": "^0.12.0",
35
- "@wovin/core": "0.0.5",
36
- "besonders-logger": "1.0.0-RC11",
37
- "multiformats": "^12.1.3",
38
- "ucan-storage": "^1.3.0"
39
- },
40
- "devDependencies": {
41
- "concurrently": "^8.2.2",
42
- "esbuild-plugin-polyfill-node": "^0.3.0",
43
- "tsup": "^8.0.1",
44
- "tsupconfig": "workspace:^",
45
- "typescript": "^5.0.2"
46
- }
47
- }
2
+ "name": "@wovin/connect-nftstorage",
3
+ "version": "0.0.7",
4
+ "type": "module",
5
+ "main": "./dist/index.min.js",
6
+ "module": "./dist/index.min.js",
7
+ "browser": "./dist/index.min.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.min.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./retrieve": {
15
+ "import": "./dist/retrieve.min.js",
16
+ "types": "./dist/retrieve.d.ts"
17
+ },
18
+ "./utils": {
19
+ "import": "./dist/utils.min.js",
20
+ "types": "./dist/utils.d.ts"
21
+ },
22
+ "./store": {
23
+ "import": "./dist/store.min.js",
24
+ "types": "./dist/store.d.ts"
25
+ }
26
+ },
27
+ "files": [
28
+ "./dist/"
29
+ ],
30
+ "esm.sh": {
31
+ "bundle": false
32
+ },
33
+ "dependencies": {
34
+ "@ipld/car": "^5.2.4",
35
+ "@ucans/ucans": "^0.12.0",
36
+ "@wovin/core": "0.0.7",
37
+ "besonders-logger": "1.0.0-RC11",
38
+ "multiformats": "^12.1.3",
39
+ "ucan-storage": "^1.3.0"
40
+ },
41
+ "devDependencies": {
42
+ "concurrently": "^8.2.2",
43
+ "esbuild-plugin-polyfill-node": "^0.3.0",
44
+ "tsup": "^8.0.1",
45
+ "typescript": "^5.0.2",
46
+ "tsupconfig": "^0.0.0"
47
+ },
48
+ "scripts": {
49
+ "build": "rm -rf dist/ && concurrently \"pnpm build:code\" \"pnpm build:types\"",
50
+ "build:code": "tsup --minify",
51
+ "build:types": "tsc --emitDeclarationOnly --declaration",
52
+ "dev": "concurrently \"pnpm dev:code\" \"pnpm dev:types\"",
53
+ "dev:code": "tsup --watch",
54
+ "dev:types": "tsc --emitDeclarationOnly --declaration --watch",
55
+ "lint": "eslint .",
56
+ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
57
+ "pub": "npm publish --tag latest --access=public"
58
+ }
59
+ }