Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Dec 03 11:56
    Emad-salah commented #1170
  • Dec 03 11:50
    Emad-salah synchronize #1170
  • Dec 03 03:20
    aethiop closed #1163
  • Dec 03 02:39
    amark commented #1167
  • Dec 03 02:39

    amark on master

    make change to lib/unset.js (#1… (compare)

  • Dec 03 02:39
    amark closed #1167
  • Dec 03 02:37
    amark commented #1163
  • Dec 03 02:35
    amark commented #1167
  • Dec 03 02:20
    amark commented #1170
  • Dec 02 16:48
    u007 commented #1173
  • Dec 02 16:47
    u007 commented #1173
  • Dec 02 16:47
    u007 closed #1173
  • Dec 02 16:44
    u007 commented #1173
  • Dec 02 16:29
    u007 opened #1173
  • Dec 02 12:39
    fsvieira opened #1172
  • Dec 01 23:00
    amark commented #1167
  • Dec 01 21:21
    Oxey405 opened #1171
  • Nov 30 15:07
    Emad-salah opened #1170
  • Nov 29 22:49
    fsvieira edited #1168
  • Nov 29 22:47
    fsvieira commented #1168
Jabis Sevon
@jabis
and still passing
testing get {'.':{'*':'2021/06'} expecting 7 outputs
mapfn Map functions are experimental, their behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
getter found data {
  _: { '#': 'chat.-1b4get8', '>': { stuff: 1632567792795 } },
  stuff: '2021/06'
}
ok 1 expected result to be `2021/06` correct
getter found data {
  _: { '#': 'chat.-ipfkim', '>': { stuff: 1632567792796.002 } },
  stuff: '22'
}
ok 2 expected result to be `22` correct
getter found data {
  _: { '#': 'chat.-oi86lk', '>': { stuff: 1632567792796.006 } },
  stuff: '23'
}
ok 3 expected result to be `23` correct
getter found data {
  _: { '#': 'chat.-ug9s0o', '>': { stuff: 1632567792797.002 } },
  stuff: '24'
}
ok 4 expected result to be `24` correct
getter found data {
  _: { '#': 'chat.-1492e3m', '>': { stuff: 1632567792798.002 } },
  stuff: '25'
}
ok 5 expected result to be `25` correct
getter found data {
  _: { '#': 'chat.1tg6rqc', '>': { stuff: 1632567792798.006 } },
  stuff: '31 1.00'
}
ok 6 expected result to be `31 1.00` correct
getter found data {
  _: { '#': 'chat.1tirdef', '>': { stuff: 1632567792799.001 } },
  stuff: '31 1.30'
}
ok 7 expected result to be `31 1.30` correct
valonce Chainable val is experimental, its behavior and API may change moving forward. Please play with it and report bugs and ideas on how to improve it.
# force test to end
ok 8 forcing test to end with process.exit

1..8
no 2021/05 in the hoods
also with "*" prefixed it's returning correctly only 2021/06
why don't you try it yourself
not many requirements
const fs = require('fs');
const tape = require('tape');
const _test = require('tape-promise').default // <---- notice 'default'
const test = _test(tape) // decorate tape
const Gun = require('../gun')
const SEA = require('../gun/sea')
require('../gun/lib/then.js')
require('../gun/lib/promise.js')
const RAD = require('../gun/lib/radisk.js')
const mkdirp = require('mkdirp');
const { Random } = require('random-js');
const random = new Random();
const _ = require('lodash');
const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}
Gun.log.once=function(...args){ console.log(...args)}
tape tape-promise random-js mkdirp and lodash
tho I'm not really sure all of those are even required, maybe they were - long ass time since I used it since now :D
Wasis Haryo Sasoko
@yokowasis
ok, it works. it's the bug acting up. @jabis some callback is refused to fired.
it's frustating. Any idea what caused it ?
my complete html
<!DOCTYPE html>
<html lang="en" translate="no">
  <head>
    <title>PEERJS TS</title>

    <script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>    
    <script src="https://cdn.jsdelivr.net/npm/gun/lib/radix.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/gun/lib/radisk.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/gun/lib/store.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/gun/lib/rindexed.js"></script>    
    <script src="https://unpkg.com/peerjs@1.3.1/dist/peerjs.min.js"></script>
    <script>
        var peer = new Peer(); 
        peer.on('open',(s)=>{
            console.log (s);
        })
        peer.on('connection', function(conn) {
            conn.on('data', function(data){
                // Will print 'hi!'
                console.log(data);
            });
        });        

        const gun = Gun({
                    localStorage : false,
                    axe : false,
                    file : "test",
                })
        const gunHeroku = Gun({
                    localStorage : false,
                    axe : false,
                    file : "test",
                    peers : [
                        "https://fire-gun.herokuapp.com/gun"
                    ]
                })
    </script>

  </head>
  <body>
      PEERJS TEST
  </body>
</html>
Jabis Sevon
@jabis
one thing in your constructor invalid peer it should be peers
Wasis Haryo Sasoko
@yokowasis

for some unknown reason after I commenting out the put the once callback only fired 1 out of 7

@jabis thanks. Fixed it. but still the same. Tried with peers and local, same result.

@jabis can you connect to peers https://fire-gun.herokuapp.com/gun and run this command
gunHeroku.get('chat2').get({'.': {'*': '2021/06'}}).map().once(s=>{
  console.log (s);
})
Jabis Sevon
@jabis

@jabis can you connect to peers https://fire-gun.herokuapp.com/gun and run this command

gunHeroku.get('chat2').get({'.': {'*': '2021/06'}}).map().once(s=>{
  console.log (s);
})

Well, I expected undefined and got undefined lol

writing to ./testdb/ef9oOX406VUVK0IE.json
testing get {'.': {'*': '2021/06'}} expecting output
data undefined
ok 1 s was undefined
# force test to end
ok 2 forcing test to end with process.exit

1..2
# tests 2
# pass  2

# ok
Wasis Haryo Sasoko
@yokowasis
@jabis try it again
gun only allocated i think 30ms to fetch the data before returning undefined.
Jabis Sevon
@jabis
Ok this works, first fetching the parent object
console.log("testing get {'.': {'*': '2021/06'}} expecting output")
  await gun.get('chat2').then();  
  await gun.get('chat2').get({'.': {'>': '2021/06'}}).map().once(s=>{
    console.log ("data",s);
    t.notEqual(s,undefined,"s was not undefined");
  }).then()
I think that was a known bug
testing get {'.': {'*': '2021/06'}} expecting output
data { _: { '#': 'chat2/2021/06/25 01:30:00' } }
ok 1 s was not undefined
data { _: { '#': 'chat2/2021/06/31 01:00:00' } }
ok 2 s was not undefined
data { _: { '#': 'chat2/2021/06/31 01:30:00' } }
ok 3 s was not undefined
data { _: { '#': 'chat2/2021/06' } }
ok 4 s was not undefined
data { _: { '#': 'chat2/2021/06/22 01:00:00' } }
ok 5 s was not undefined
data { _: { '#': 'chat2/2021/06/23 01:30:00' } }
ok 6 s was not undefined
data { _: { '#': 'chat2/2021/06/24 01:00:00' } }
ok 7 s was not undefined
# force test to end
ok 8 forcing test to end with process.exit

1..8
# tests 8
# pass  8

# ok
Wasis Haryo Sasoko
@yokowasis
@jabis does that mean you have to fetch all the data first ? if possible I want to fetch only the data I need.
Jabis Sevon
@jabis
I'd say you only need to trigger a query first
fetching the parent "chat" -object once won't fetch all data I think, only one level
Wasis Haryo Sasoko
@yokowasis
if this is a chat app, 1 level can easily have 1000 entries.
Jabis Sevon
@jabis
add some metadata node that doesn't have anything interesting
Gessic
@gessicapps_twitter
Hi, how do I set something to null? everytime I try, it just adds a new entry/node:
feedProviders.get(providerAddress.Algaddress).set(null);
image.png
Wasis Haryo Sasoko
@yokowasis
@gunar put(null)
@gessicapps_twitter put(null)
Gessic
@gessicapps_twitter
Perfect, thanks @yokowasis
Gessic
@gessicapps_twitter
how can I return the values from .once() without using a callback? It doesnt seem to be an async function...
Jabis Sevon
@jabis
include gun/lib/then.js or gun/lib/promise.js
4 replies
@gessicapps_twitter ^
Jabis Sevon
@jabis
image.png
for example
David Dahl
@daviddahl
@amark No worries. My ignorance of AXE was the issue. I have watched the talk you gave on it... Exciting stuff man. And yes, I get it ,making shit just WORK is important. Now that I think about it, Libp2p and IPFS do that too :)
There are a lot of onion skins for me to pull back yet with GUN.
David Dahl
@daviddahl
@amark was that talk yesterday recorded? I am curious about your concept - I have been talking about UX and crypto for some time - Search & privacy sounds interesting...
aaronsantiago
@aaronsantiago

I'm using gun to update a react page with a lot of user-editable elements that are synced across devices, and I'm noticing that it can sometimes take a while (30 - 90 seconds) to get to the latest version (it seems like it runs through a lot of the history). I would think that gun would locally cache calls to .get()?

Also would using .set() instead alleviate some of these issues? There are a lot of entries in there that are nulled or marked as deleted and it has to download the non-nulled versions first before deleting them making for a poor UX

Adam
@adam-12:matrix.org
[m]
@aaronsantiago might benefit from using the option change: true when using once().
Hmm maybe not if the change is null
aaronsantiago
@aaronsantiago
Seems like I'm hitting quota exceeded well before the 5mb localstorage limit as well--perhaps I'm misunderstanding some part of that. I can switch to RAD/indexedDB I believe since that works in the browser
Alexander Quine
@alxndr
is there a recommended way of visualizing the db?
jakethejab
@jakethejab

I am trying to wrap my head around Lex, but the documentation does not describe what some of the characters used in the examples actually do, specifically #, +, and ..

Here are some Lex examples pulled from the SEA certify docs, could someone please describe what the #, +, and . characters do in this context?

{"*": "notifications", "+": "*"} // Path must start with "notifications", then Path or Key must contain Certificant's Pub (it's just (path||key).indexOf(pub)!=-1)

{"#": {"*": "inbox"}} // Path must start with "inbox". "get('inbox').get('Alice').get('secret').put('abc', null, cert)" and "get('inbox').get('Bob').get('sensitive').put('something', null, cert)" ARE ALL OK.

{"#": {"*": "project"}, ".": {"*": "Bob"}, {"+": "*"}} // Path must start with "project" and Key must start with "Bob", then Path or Key must contain Certificant's Pub.

"inbox/Bob" // Path must equal "inbox/Bob", it is a LEX exact match {"=":"inbox/Bob"}

["inbox", {"*":"projects", "+": "*"}, {"*":"employees"}] // an Array of rules. If any matches, continue.
Bradley Matusiak
@bmatusiak
lamo,, google failed because they didnt have gun, https://www.youtube.com/watch?v=v_UyVmITiYQ
rococtz
@rococtz:matrix.org
[m]
@aaronsantiago: If you deleted something, it will still show as null. The solution to get rid of this is to use map(); if the value is null just manually returned undefined so the callback is not triggered anymore. About the local storage, the 5MB limit is annoying, but IndexedDB is much much slower
3 replies
@alxndr: there are plenty of ways https://gun.eco/docs/Awesome-GUN#plugins-helpers
1 reply
rococtz
@rococtz:matrix.org
[m]
This one is the first that I clicked and it doesn't give 404. It even has a youtube video on the README page and the creator is active in chat @Dletta
1 reply