Compare commits

..

No commits in common. "v0.2.0-develop.10" and "v0.2.0-develop.9" have entirely different histories.

11 changed files with 16801 additions and 5205 deletions

70
.circleci/config.yml Normal file
View File

@ -0,0 +1,70 @@
version: 2.1
orbs:
node: circleci/node@5.1.0
ssh: credijusto/ssh@0.5.2
workflows:
release:
jobs:
- node/run:
name: build
npm-run: build
pre-steps:
- run:
name: Setup Golang
command: >
sudo apt-get update;
sudo apt-get install bison;
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer);
source ~/.gvm/scripts/gvm;
gvm install go1.4 -B;
gvm use go1.4 --default;
gvm install go1.19 -B;
VERSION=0.28.1;
TINYGO="tinygo_${VERSION}_amd64.deb";
wget https://github.com/tinygo-org/tinygo/releases/download/v$VERSION/$TINYGO;
sudo dpkg -i $TINYGO && rm $TINYGO;
setup:
- run:
name: Fetch Wasm Deps
command: >
source ~/.gvm/scripts/gvm;
gvm use go1.19 --default;
cd src/golang;
go get;
post-steps:
- persist_to_workspace:
root: .
paths:
- lib/
filters:
branches:
only:
- master
- develop
- /^develop-.*$/
- node/run:
name: release
npm-run: semantic-release
requires:
- build
filters:
branches:
only:
- master
- develop
- /^develop-.*$/
context:
- publish
setup:
- attach_workspace:
at: ./
- add_ssh_keys:
fingerprints:
- "47:cf:a1:17:d9:81:8e:c5:51:e5:53:c8:33:e4:33:b9"
- ssh/ssh-add-host:
host_url: GITEA_HOST

View File

@ -1,54 +0,0 @@
name: Build/Publish
on:
push:
branches:
- master
- develop
- develop-*
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- name: Setup Golang
run: |
sudo apt-get update;
sudo apt-get install bison;
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer);
source ~/.gvm/scripts/gvm;
gvm install go1.4 -B;
gvm use go1.4 --default;
gvm install go1.19 -B;
VERSION=0.28.1;
TINYGO="tinygo_${VERSION}_amd64.deb";
wget https://github.com/tinygo-org/tinygo/releases/download/v$VERSION/$TINYGO;
sudo dpkg -i $TINYGO && rm $TINYGO;
- name: Fetch Wasm Deps
run: |
source ~/.gvm/scripts/gvm;
gvm use go1.19 --default;
cd src/golang;
go get;
- run: npm ci
- run: npm run build --if-present
- name: Install SSH key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.GITEA_SSH_KEY }}
known_hosts: ${{ secrets.GITEA_KNOWN_HOST }}
- name: Publish
run: npm run semantic-release
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Setup tmate session
uses: mxschmitt/action-tmate@v3
if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled && failure() }}
with:
limit-access-to-actor: true

View File

@ -1,6 +1,22 @@
{ {
"preset": [ "preset": [
"presetter-preset-hybrid", "presetter-preset-essentials",
"@lumeweb/node-library-preset" "presetter-preset-hybrid"
] ],
"config": {
"tsconfig": {
"compilerOptions": {
"lib": [
"ES2020",
"dom"
]
}
},
"prettier": {
"singleQuote": false
}
},
"variable": {
"source": "src"
}
} }

32
.releaserc Normal file
View File

@ -0,0 +1,32 @@
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "docs/CHANGELOG.md"
}
],
"@semantic-release/npm",
"@semantic-release/git",
{
"assets": [
"package.json",
"docs/CHANGELOG.md",
"npm-shrinkwrap.json"
]
}
],
"branches": [
"master",
{
name: "develop",
prerelease: true
},
{
name: "develop-*",
prerelease: true
},
]
}

View File

@ -1,13 +0,0 @@
# [0.2.0-develop.10](https://git.lumeweb.com/LumeWeb/libportal/compare/v0.2.0-develop.9...v0.2.0-develop.10) (2023-06-26)
### Bug Fixes
* add missing controller.enqueue ([2aa53fa](https://git.lumeweb.com/LumeWeb/libportal/commit/2aa53faf00cc7024a24dc97fffaeb855faa4e650))
* add properties and methods to go wasm middleware, accessed via reflection ([53dd352](https://git.lumeweb.com/LumeWeb/libportal/commit/53dd352c95fec8ec266a53c03f19cecbecf8821b))
* ensure root and proof are Uint8Array's ([0c320f9](https://git.lumeweb.com/LumeWeb/libportal/commit/0c320f992bdf269614716b51818ed7063086c01c))
* exit not properly exported in wasm ([23a55f7](https://git.lumeweb.com/LumeWeb/libportal/commit/23a55f772b7dde7712742ee5f47a5fda5bb8afd2))
* fix wasmDone logic error ([68fec66](https://git.lumeweb.com/LumeWeb/libportal/commit/68fec66069721a6dc94027419ddd2cafbc877cbc))
* need to refactor verification stream logic further and check if the stream is done but wasm isn't ([051f4b2](https://git.lumeweb.com/LumeWeb/libportal/commit/051f4b2da75ab2287c99a3514af5d0d4f28017bf))
* rename exit to kill to fix symbol conflict ([50a7c80](https://git.lumeweb.com/LumeWeb/libportal/commit/50a7c803584b57e4e294aca117fc1e8b9a2a09c7))
* update uploadFile overload types ([45fbc1b](https://git.lumeweb.com/LumeWeb/libportal/commit/45fbc1b63d2c19e186d6f21b022fee62be61866a))

21752
npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@lumeweb/libportal", "name": "@lumeweb/libportal",
"version": "0.2.0-develop.10", "version": "0.2.0-develop.9",
"main": "lib/index.js", "main": "lib/index.js",
"module": "lib/index.mjs", "module": "lib/index.mjs",
"types": "lib/index.d.ts", "types": "lib/index.d.ts",
@ -21,20 +21,19 @@
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"@semantic-release/npm": "^10.0.4", "@semantic-release/npm": "^10.0.4",
"@semantic-release/release-notes-generator": "^11.0.3", "@semantic-release/release-notes-generator": "^11.0.3",
"presetter": "^4.0.1", "presetter": "^3.5.5",
"presetter-preset-hybrid": "4.0.1", "presetter-preset-essentials": "^3.5.5",
"presetter-preset-strict": "^4.0.1", "presetter-preset-hybrid": "^3.5.5",
"semantic-release": "^21.0.5" "semantic-release": "^21.0.5"
}, },
"readme": "ERROR: No README data found!", "readme": "ERROR: No README data found!",
"scripts": { "scripts": {
"prepare": "presetter bootstrap", "prepare": "presetter bootstrap",
"build": "run build", "build": "presetter run build",
"build:wasm": "bash -c \"source ~/.gvm/scripts/gvm; mkdir ./lib/wasm && cd src/golang; tinygo build -o ../../lib/wasm/bao.wasm -target wasm ./main.go\"", "build:wasm": "bash -c \"source ~/.gvm/scripts/gvm; mkdir ./lib/wasm && cd src/golang; tinygo build -o ../../lib/wasm/bao.wasm -target wasm ./main.go\"",
"semantic-release": "semantic-release" "semantic-release": "semantic-release"
}, },
"dependencies": { "dependencies": {
"@lumeweb/node-library-preset": "git+https://git.lumeweb.com/LumeWeb/node-library-preset.git",
"@noble/curves": "^1.1.0", "@noble/curves": "^1.1.0",
"@noble/hashes": "^1.3.1", "@noble/hashes": "^1.3.1",
"detect-node": "^2.1.0", "detect-node": "^2.1.0",

View File

@ -282,18 +282,18 @@ export class Client {
); );
} }
async uploadFile(stream: Blob, size?: bigint): Promise<string>; async uploadFile(stream: Blob, size?: bigint);
async uploadFile( async uploadFile(
stream: ReadableStream, stream: ReadableStream,
hashStream: ReadableStream, hashStream: ReadableStream,
size: bigint, size: bigint,
): Promise<string>; );
async uploadFile(stream: Uint8Array, size?: bigint); async uploadFile(stream: Uint8Array, size?: bigint);
async uploadFile( async uploadFile(
stream: NodeJS.ReadableStream, stream: NodeJS.ReadableStream,
hashStream: NodeJS.ReadableStream, hashStream: NodeJS.ReadableStream,
size?: bigint, size?: bigint,
): Promise<string>; );
async uploadFile( async uploadFile(
stream: any, stream: any,
hashStream?: any, hashStream?: any,

View File

@ -82,7 +82,6 @@ export default class Go {
private exited = false; private exited = false;
private _resolveCallbackPromise?: () => void; private _resolveCallbackPromise?: () => void;
importObject: ImportObject; importObject: ImportObject;
private _pendingEvent?: any;
constructor() { constructor() {
this._callbackTimeouts = new Map(); this._callbackTimeouts = new Map();
@ -438,16 +437,6 @@ export default class Go {
} }
this._inst.exports.resume(); this._inst.exports.resume();
} }
_makeFuncWrapper(id) {
const go = this;
return function () {
const event = { id: id, this: this, args: arguments };
go._pendingEvent = event;
go._resume();
// @ts-ignore
return event.result;
};
}
} }
if ( if (

View File

@ -13,14 +13,14 @@ var activeReader *reader
var pipe chan []byte var pipe chan []byte
var callbackId int var callbackId int
var nextBytes chan int var nextBytes chan int
var killChan chan bool var exitChan chan bool
func main() { func main() {
pipe = make(chan []byte) pipe = make(chan []byte)
nextBytes = make(chan int) nextBytes = make(chan int)
killChan = make(chan bool) exitChan = make(chan bool)
callbackId = rand.Int() callbackId = rand.Int()
<-killChan <-exitChan
} }
type reader struct { type reader struct {
@ -89,9 +89,9 @@ func start() int {
return callbackId return callbackId
} }
//export kill // exit write
func kill() { func exit() {
killChan <- true exitChan <- true
} }
func createWritePromiseHandler() js.Value { func createWritePromiseHandler() js.Value {

View File

@ -12,13 +12,6 @@ export async function getVerifiableStream(
const reader = new VariableChunkStream(data); const reader = new VariableChunkStream(data);
let bytesToRead; let bytesToRead;
if (root instanceof ArrayBuffer) {
root = new Uint8Array(root);
}
if (proof instanceof ArrayBuffer) {
proof = new Uint8Array(proof);
}
const getNextBytes = async () => { const getNextBytes = async () => {
bytesToRead = getWasmProperty(wasmId, "write_promise"); bytesToRead = getWasmProperty(wasmId, "write_promise");
bytesToRead = await bytesToRead; bytesToRead = await bytesToRead;
@ -31,7 +24,7 @@ export async function getVerifiableStream(
// @ts-ignore // @ts-ignore
const exit = () => { const exit = () => {
callExports("kill"); callExports("exit");
cleanup(); cleanup();
}; };
@ -74,32 +67,22 @@ export async function getVerifiableStream(
const result = getWasmProperty(wasmId, "result"); const result = getWasmProperty(wasmId, "result");
const wasmDone = result !== undefined; const wasmDone = result === undefined;
if (!wasmDone) { if (result === undefined) {
await getNextBytes(); await getNextBytes();
} }
if (chunk.done || wasmDone) { if (chunk.done || wasmDone) {
if (wasmDone) { if (wasmDone) {
if (result) { if (result) {
controller.enqueue(chunk.value);
done(controller); done(controller);
} else { } else {
controller.error(getWasmProperty(wasmId, "error")); controller.error(getWasmProperty(wasmId, "error"));
exit();
} }
} else { } else {
if (!wasmDone) {
controller.error("stream is ended but verification not complete");
exit();
return;
}
controller.enqueue(chunk.value);
done(controller); done(controller);
} }
} else {
controller.enqueue(chunk.value);
} }
}, },
async cancel(reason: any) { async cancel(reason: any) {