profile
viewpoint
Kevin (Kun) "Kassimo" Qian kevinkassimo @google (intern) UCLA → Stanford ksm.sh Yes I AM an IDIOT. @google Software Engineering Intern 2018/2019/2020; worked on @ampproject / Search. Contributor to Deno @denoland

kevinkassimo/buhtig 8

Find and Go to first commit OR N-th commit OR view commits one by one (sequentially) of any github repository (THIS IS OLD SITE, still usable if you don't prefer OAuth) Use buhtig.com instead

bartlomieju/deno 2

A secure TypeScript runtime on V8

kevinkassimo/CryptoUpdate 2

A small update app that tracks profit of Cryptocurrency (GUI for Mac only)

kevinkassimo/denoland.org 2

[Deprecated] This domain has been donated to https://deno.land

acm-learnjs-sp18/react 1

React workshop

kevinkassimo/amper 1

Insane thoughts on functional testing with webdriver

kevinkassimo/buhtig-redesign 1

Find and Go to first commit OR N-th commit OR view commits one by one (sequentially) of any github repository (Redesigned)

kevinkassimo/catchla 1

[OBSOLETE] UCLA Class Scanner and Course Auto-enrollment

kevinkassimo/Danger-Zone 1

All the files in this repository is powerful--and dangerous

PR opened cs244b/raftdns

Reviewers
Expose Raft cluster config change HTTP API

Basically exposing this functionality -- was originally commented out.

+126 -55

0 comment

2 changed files

pr created time in 2 days

create barnchcs244b/raftdns

branch : ksm/feat/raft_confchange

created branch time in 2 days

Pull request review commentcs244b/raftdns

Implement variation of DNS store with paging support

+package main++import (+	"bytes"+	"container/list"+	"encoding/gob"+	"encoding/json"+	"fmt"+	"io/ioutil"+	"log"+	"net/http"+	"os"+	"strings"+	"sync"+	"time"++	"github.com/cespare/xxhash"+	"github.com/coreos/etcd/snap"++	"github.com/miekg/dns"+)++// PageStoreMaxLen is max number of pages allowed in memory+// Set this to 2 for easy debugging validation of LRU policy.+const PageStoreMaxLen = 100++// PageSize is the expected size inside of a page.+// e.g. if PageSize = 1, there will be 2^63 pages

It is 2^63. PageSize is probably a bit of a misnomer, since it is actually means how many lower bits we will ignore during page allocation (we use 64 - PageSize most significant bits for a page number)

kevinkassimo

comment created time in 2 days

push eventkevinkassimo/deno

Umar Bolatov

commit sha 2bbe475dbbd46c505cdb2a5e511caadbd63dd1fd

docs: update permissions example (#5809)

view details

skdltmxn

commit sha f6e31603563bad38c663494ddec6a363989b5786

feat(std/encoding): add base64 (#5811)

view details

Valentin Anger

commit sha b7f0b073bb7585ea932a5783ff4ea88843a46b1b

Add unstable checks for unix transport (#5818) Also remove the unix example from the stable documentation to stay in line with the `Deno.listen` one

view details

Andrew Mitchell

commit sha 4ca0d6e2d37ce2be029269be498c76922e30944b

Re-enable several fetch tests (#5803)

view details

Bartek Iwańczuk

commit sha e934df5f7dd7ebc52e8c74033d478c88fa638224

fix: create HTTP cache lazily (#5795)

view details

Bert Belder

commit sha ee0b5bb89ec33acc5dafb876de1f9fda5bcfa236

test: add utility function for assigning unique port to inspector (#5822)

view details

Bert Belder

commit sha 131f2a5f0cdcdbebe3e17c447869f92c99a7c051

fix: BorrowMutError when evaluating expression in inspector console (#5822) Note that this does not fix the 'Uncaught ReferenceError' issue that happens when 'eager evaluation' is enabled in the inspector. Fixes: #5807

view details

Marcos Casagrande

commit sha 20bf04dc7e046e8191443e75be451ec81523a86a

Move getHeaderValueParams & hasHeaderValueOf to util.ts (#5824)

view details

Martin Suchanek

commit sha fbbb9f1c36db526edc136fa2ecc4e6aba022099b

Add missing async delay import to code sample (#5837)

view details

Marcos Casagrande

commit sha c9f0e34e294241541ba59c3a7eb52f42df7ff993

Improve bufferFromStream (#5826)

view details

Marcos Casagrande

commit sha 1c4a9665e2a2ff85ccb8060f168dafafa4d2194b

fix: Allow ArrayBuffer as Fetch request body (#5831)

view details

Rares Folea

commit sha aef9f22462d287a5d18e517aabd8f03210d159b8

Fix typo (#5834)

view details

Marcos Casagrande

commit sha 08f74e1f6a180e83e13f5570811b8b7fcec90e9f

fix(cli/web/fetch): Make Response constructor standard (#5787)

view details

Nayeem Rahman

commit sha 4ebd24342368adbb99582b87dc6c4b8cb6f44c87

fix(std/testing/asserts): Support browsers (#5847)

view details

Marcos Casagrande

commit sha 4e92ef7dc9e1d223d9f3099b94579c2b17e4ef9e

Add more tests for fetch response body (#5852)

view details

Chris Knight

commit sha 9090023c33de7b64ae41425db71c9ab4d5b1237f

docs: "Getting started" manual updates (#5835)

view details

Bartek Iwańczuk

commit sha f462f7fe54d59b2d56ffbb03ca8467ce93096817

fix: parsing of JSX and TSX in SWC (#5870)

view details

zfx

commit sha 24c36fd8625df6b276108109478a62b4661a0b3f

fix(std/log): use writeAllSync instead of writeSync (#5868) Deno.writeSync: Returns the number of bytes written. It is not guaranteed that the full buffer will be written in a single call.

view details

Kitson Kelly

commit sha 228f9c207f8320908325a553c96e465da08fc617

Use ts-expect-error instead of ts-ignore. (#5869)

view details

Robin Wieruch

commit sha 44477596eda3ca50ea6597d4af1fd809a01e2bdc

improve docs (#5872)

view details

push time in 2 days

pull request commentdenoland/deno

Add 2D Array check for console.table()

@pedropaulosuzuki I made another attempt at #5902 . Actually it is more interesting since it leads me to discover another bug when rereading the offending code, as described in that PR.

anirudhgiri

comment created time in 3 days

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha 3fa19c735cde383afc4e5867a1009b6cf1f6f026

lint

view details

push time in 3 days

PR opened denoland/deno

console: Hide values if display not necessary

Fixes #5902 This is potentially a more comprehensive version than attempt in #5905 The actual main problem is that we attempted to display values on cases where values is filled only with empty strings. Now instead we only display values when there is actually interesting values to display (not primitive) and there are no explicit properties given.

This fix also tweaks the logic when we push "" for objectValues[k]: original code also has a second bug that when a column is created for a key, but then a following property does not have the value for that column. This causes a misplacement upwards (see Example 3 below)

Before (Deno 1.0.2):

> console.table([[1,2],[3,4]])
┌───────┬───┬───┬────────┐
│ (idx) │ 0 │ 1 │ Values │
├───────┼───┼───┼────────┤
│   0   │ 1 │ 2 │        │
│   1   │ 3 │ 4 │        │
└───────┴───┴───┴────────┘
undefined
> console.table([{a:1,b:2},{a:3,b:4}])
┌───────┬───┬───┬────────┐
│ (idx) │ a │ b │ Values │
├───────┼───┼───┼────────┤
│   0   │ 1 │ 2 │        │
│   1   │ 3 │ 4 │        │
└───────┴───┴───┴────────┘
undefined
> console.table({1: {a: 4, b: 5}, 2: null, 3: {b: 6, c: 7}}, ['b']) // Example 3, notice that b:6 got misplaced to idx 2 instead of idx 3
┌───────┬───┐
│ (idx) │ b │
├───────┼───┤
│   1   │ 5 │
│   2   │ 6 │
│   3   │   │
└───────┴───┘
undefined

After this PR:

> console.table([[1,2],[3,4]])
┌───────┬───┬───┐
│ (idx) │ 0 │ 1 │
├───────┼───┼───┤
│   0   │ 1 │ 2 │
│   1   │ 3 │ 4 │
└───────┴───┴───┘
undefined
> console.table([{a:1,b:2},{a:3,b:4}])
┌───────┬───┬───┐
│ (idx) │ a │ b │
├───────┼───┼───┤
│   0   │ 1 │ 2 │
│   1   │ 3 │ 4 │
└───────┴───┴───┘
undefined
> console.table({1: {a: 4, b: 5}, 2: null, 3: {b: 6, c: 7}}, ['b'])
┌───────┬───┐
│ (idx) │ b │
├───────┼───┤
│   1   │ 5 │
│   2   │   │
│   3   │ 6 │
└───────┴───┘
undefined

In comparison, this is the result received on Node v14.3.0, reflecting the fix in this PR:

> console.table([[1,2],[3,4]])
┌─────────┬───┬───┐
│ (index) │ 0 │ 1 │
├─────────┼───┼───┤
│    0    │ 1 │ 2 │
│    1    │ 3 │ 4 │
└─────────┴───┴───┘
undefined
> console.table([{a:1,b:2},{a:3,b:4}])
┌─────────┬───┬───┐
│ (index) │ a │ b │
├─────────┼───┼───┤
│    0    │ 1 │ 2 │
│    1    │ 3 │ 4 │
└─────────┴───┴───┘
undefined
> console.table({1: {a: 4, b: 5}, 2: null, 3: {b: 6, c: 7}}, ['b'])
┌─────────┬───┐
│ (index) │ b │
├─────────┼───┤
│    1    │ 5 │
│    2    │   │
│    3    │ 6 │
└─────────┴───┘
undefined
+52 -19

0 comment

2 changed files

pr created time in 3 days

create barnchkevinkassimo/deno

branch : console/values_display

created branch time in 3 days

pull request commentdenolib/high-res-deno-logo

will fix typo in logo title

Hmm the spelling for "Dino" is kind of intentional here to describe the dinosaur, not quite sure if renaming it to "Deno" is a better option. Maybe discuss in Discord channel about the name to get some general consensus?

absJak

comment created time in 5 days

pull request commentdenolib/high-res-deno-logo

Modernized 3D Logo with (open source) Blender

Hi there, thanks for the great work!

I am thinking about setting up a separate new repo (like this one) for this instead of merging here, since this repo hosts mainly for the 2D version of "Dino in the rain" logo and this is quite different from the current version. WDYT?

MasterJames

comment created time in 5 days

push eventcs244b/raftdns

Kevin (Kun) Kassimo Qian

commit sha 3dde559d55390e8b87574ecdf011305ad1350c39

Snapshot is actually meaningful

view details

push time in 6 days

PR opened cs244b/raftdns

[WIP] Implement variation of DNS store with paging support

Implemented a version of DNS store with paging support.

The basic paging logic is simple here: we keep track of a lruList for recently used pages. If a page is not recently used and lruList length exceeds a limit, we page out the corresponding least recently used page by writing to the file system (./pagedir/page_<pageNum>). pageNum is determined by hashing the domain name and take a few leading bits. This might cause uneven page sizes if one domain has a huge amount of records, but in practice this should not be too much of a concern.

Each page also tracks a lastCommitIndex to save the last commit index that is applied to the current page. This number will also be written to the filesystem on swapping out. This is to ensure that when restarting the server, some already applied commits are not applied again (since some commits might be ahead of snapshot, while we might have serialized to a file with more commits applied than this snapshot. We don't want to redo already applied commits during recovery). Also a small "atomic renaming" is implemented to avoid corrupting a page file during overwrite (write to temp file to completion first before replacing an old version )

Functions that implements this policy can be found in loadPageAndUpdateLRU().

  • Duplicating a lot of existing code with tweaks (unfortunately due to Go's typing restrictions)
  • Also a very small change to commitC type to expose log index, since paged store would require tracking last applied commit index per page, since we no longer uses snapshots -- instead, separate swapfiles are maintained under ./pagedir/.
    • This results in small touches to main.go, raft.go and dns_store.go.

Very likely buggy, needs more validation. Maybe not important for demo or any other purpose, but good to describe briefly in the paper to show that we actually care about such scenario.

+914 -22

0 comment

7 changed files

pr created time in 6 days

push eventcs244b/raftdns

Kevin (Kun) Kassimo Qian

commit sha cbb53b01baf78ec296b7bb805b84f59f143dd27d

atomic renaming tweak

view details

push time in 6 days

push eventcs244b/raftdns

Kevin (Kun) Kassimo Qian

commit sha cac9b39196f7ddf5532c4c5631b6f4985693b923

Tweak parameter for real workload

view details

push time in 6 days

push eventkevinkassimo/deno

木杉

commit sha 90c5aadbca8b47fc43bd3ece80e007b1b546c402

fix(installer): installs to the wrong directory on Windows (#3462) Close: #3443

view details

Ry Dahl

commit sha 4b9953b6ac9d07f9d54f2f29c8fa33c0abcdc906

Disable flaky plugin test on windows (#3474)

view details

Kevin (Kun) "Kassimo" Qian

commit sha ec7f3ce1c27d7c2d231a75d6a4eea82867d7ad2b

timer: due/now Math.max instead of min (#3477)

view details

AleksandrukTad

commit sha 31ddfd5a42d658b92e954e44d3326a8e37ac9198

fix: decoding uri in file_server (#3187)

view details

Andy Hayden

commit sha c93ae0b05a4c4fe5b43a9bd2b6430637b17979d0

Fix release assets not being executable (#3480)

view details

Nayeem Rahman

commit sha 407195ea870a82f4341671d6718f813bd9a3b7ac

fix: Only swallow NotFound errors in std/fs/expandGlob() (#3479)

view details

Kevin (Kun) "Kassimo" Qian

commit sha c3c69aff7e1df1a9480d2a5e9a0fa17cf3af6409

fix(std/http): close connection on .respond() error (#3475)

view details

dnalborczyk

commit sha ef174883985d764d727002be004a113968922013

fix v8-flags example to manual (#3470)

view details

Kevin (Kun) "Kassimo" Qian

commit sha d146d45861708bcf1879563a545a2c8b8f96bd80

benchmark: align deno_http and node_http response (#3484)

view details

木杉

commit sha 7f27f649cca0e928a422aaa6182988087338e435

fix: file_server swallowing permission errors (#3467)

view details

Weijia Wang

commit sha df7d8288d984f703722fae161b7d32fae9ab3149

file_server: get file and fileInfo concurrently (#3486)

view details

Axetroy

commit sha 8cf8a29d35d5832230034b3f9f6ce3cc67dba7c1

fix permission errors are swallowed by fs.exists (#3493)

view details

Axetroy

commit sha 8cf470474f34102871051e75ad5cb3bb457e74d1

flag: upgrade std to v0.26.0 (#3492)

view details

木杉

commit sha d8e60309d2eed482a3a4c896e68a4a97e7f7b0d7

feat(file_server): add help & switch to flags (#3489)

view details

木杉

commit sha 7e116dd70d7c194f2967d64e7700aae0bb17100f

Support utf8 in file_server (#3495)

view details

Axetroy

commit sha 83f95fb8dfaed42eee3e1e0cd3a6e9b94f05ef2d

fetch support URL instance as input (#3496)

view details

Gurwinder Singh

commit sha 22a2afe5588ae71301db6b9a6000d241ef1e762a

Use async-await at few places, fix spelling mistake (#3499)

view details

Axetroy

commit sha de946989150d74204678da7f613a4e039d033e46

Feat: Add more dir APIs for Deno (#3491)

view details

Kevin (Kun) "Kassimo" Qian

commit sha 33d2e3d53601c4e56e4ac56b75e336cf1152ad08

std/node: better error message for read perm in require() (#3502)

view details

Bartek Iwańczuk

commit sha e1eb458cad8caf5a0f08ad1d44caba7d557daf92

upgrade: tokio 0.2 in deno_core_http_bench, take2 (#3435)

view details

push time in 6 days

create barnchcs244b/raftdns

branch : ksm/feat/paged_store

created branch time in 6 days

push eventcs244b/raftdns

cy-b

commit sha 863f72f6abadf9ce70513b04a2895a087f497482

Cb/benchmark (#18) * benchmark script * throughput basis * refractor * rename * read/write ratio option * fixed too-many-write-to-same-domain * added populating db * added benchmark instruction * Update usage.md Added "-ip" field

view details

push time in 6 days

PR merged cs244b/raftdns

Reviewers
Cb/benchmark
+322 -1

0 comment

4 changed files

cy-b

pr closed time in 6 days

push eventdenolib/ms

João Moura

commit sha dee7e834c921fd133c89b72fb263ebddbbe4b614

Fixed types on the ms function (#3) * Fixed types on the ms function * Fixed tests * Added deno fmt Co-authored-by: João Moura <joao.moura@b-i.com>

view details

push time in 9 days

PR merged denolib/ms

Fixed types on the ms function
+173 -181

5 comments

2 changed files

JWebCoder

pr closed time in 9 days

PR opened cs244b/raftdns

Reviewers
Support hash server HTTP forwarding retry on another node

Using the same logic as forwarding DNS requests. See logic from #6

+52 -24

0 comment

1 changed file

pr created time in 9 days

create barnchcs244b/raftdns

branch : ksm/hash_server/http_retry

created branch time in 9 days

push eventcs244b/raftdns

anchovYu

commit sha 6a83be831d02571ff38e826b061c985997dfdeab

Add support for remote start and shutdown dns server (#11) * Refactor: Decouple dns-store and dns serving Decouple dns store, which is essentially a k-v store built upon Raft protocol, and dns serving logic, like handling non-recursive and recursive dns queries using dns store. * Tools: add bash file to do cleanup after run local test. Run './tools/cleanup.sh' * Refactor: Correct typo * Tools: update makefile to do cleanup * Feat: Remote start and kill dns server Add support for remote starting and killing dns server. Run `go build -o remote` and `./remote` on each node of dns server, it will listen to port 8090. Send '/start' or 'kill' to the port of server to start or kill the dns server. * Feat(remote start): Support argument start from HTTP request body

view details

push time in 9 days

PR merged cs244b/raftdns

Reviewers
Add support for remote start and shutdown dns server

/work-in-progress

+49 -0

1 comment

1 changed file

anchovYu

pr closed time in 9 days

PR opened cs244b/raftdns

Fix snapshot initialization stuck issue

This is a strange bug we noticed. It seems from the example of raftexample, the code has 2 bugs:

  1. They replay records before snapshot, which would cause loss of records
  2. When snapshot exists, the initial blocking readComments never exits, since the only condition to exit is on snap.ErrNoSnapshot, which will not happen as commitC <- nil only happens once.

This PR fixes this 2 issues by: differentiating initial load (where snapshot is immediately loaded instead of later), and directly return on receiving nil from commitC, instead of waiting indefinitely.

This fix is not very stable since there might be more strange issues with etcd's Raft API. The offending code is thus highlighted in case we have future issues here.

+34 -3

0 comment

1 changed file

pr created time in 10 days

create barnchcs244b/raftdns

branch : ksm/bug/init_snapshot

created branch time in 10 days

startedklee/klee

started time in 11 days

PR merged denolib/awesome-deno

Reviewers
Add Chinese translation of Deno manual
+1 -0

0 comment

1 changed file

Nugine

pr closed time in 13 days

push eventdenolib/awesome-deno

Nugine

commit sha aa5216005d18666f76aa62e2f02cf90f7a4df0b9

Add Chinese translation of deno manual (#132)

view details

push time in 13 days

PR opened cs244b/raftdns

Add a small guide to full EC2 setup

Added a small guide to EC2 setup. It will set up a set of FULL instance (2 hash servers, 2 clusters each having 3 members)

+125 -0

0 comment

1 changed file

pr created time in 13 days

push eventcs244b/raftdns

cy-b

commit sha 130180056052bb141fbdc48ebc0132b8544deed2

handle CNAME records (#13) * handle CNAME records * Type cast cname record

view details

push time in 13 days

create barnchcs244b/raftdns

branch : ksm/ec2-setup

created branch time in 13 days

Pull request review commentcs244b/raftdns

handle CNAME records

 func HandleSingleQuestion(name string, qType uint16, r *dns.Msg, s *dnsStore) bo 				} 			} 		}++		// handle CNAME record+		if !hasPreciseMatch && qType != dns.TypeCNAME {+			cnameList := typeMap[dns.TypeCNAME]+			if cnameList != nil && len(cnameList) != 0 {+				// should only have one CNAME RR+				cnameRR, err := dns.NewRR(cnameList[0])+				if err == nil && cnameRR != nil {+					r.Answer = append(r.Answer, cnameRR)+					// get the canonical name for this request domain name+					cnameData := dns.Field(cnameRR, 1)

Yep

cy-b

comment created time in 13 days

PR opened cs244b/raftdns

Set UDP servers to be publicly accessible

Use 0.0.0.0 instead of default localhost

+2 -2

0 comment

2 changed files

pr created time in 13 days

create barnchcs244b/raftdns

branch : ksm/expose-public

created branch time in 13 days

Pull request review commentcs244b/raftdns

handle CNAME records

 func HandleSingleQuestion(name string, qType uint16, r *dns.Msg, s *dnsStore) bo 				} 			} 		}++		// handle CNAME record+		if !hasPreciseMatch && qType != dns.TypeCNAME {+			cnameList := typeMap[dns.TypeCNAME]+			if cnameList != nil && len(cnameList) != 0 {+				// should only have one CNAME RR+				cnameRR, err := dns.NewRR(cnameList[0])+				if err == nil && cnameRR != nil {+					r.Answer = append(r.Answer, cnameRR)+					// get the canonical name for this request domain name+					cnameData := dns.Field(cnameRR, 1)
					realCNameRR, ok := cnameRR.(*dns.CNAME)
					if ok {
					  cnameData := realCNameRR.Target
					}
cy-b

comment created time in 13 days

startedoakserver/awesome-oak

started time in 15 days

issue commentdenoland/deno

confused by order of cli option flags

The reason is simple: flag after the script name is passed to the script instead of to Deno. Imagine writing a command-line utility using Deno and later aliasing it (or using deno install). There are problems such as -A that is meaningful to Deno but might also be meaningful for the command-line program you write

Ragzouken

comment created time in 15 days

issue commentdenoland/deno

Scripts Shorthand for Deno

I think this goes back to the debatable aspect of if Deno should designate filenames with special meanings. This was one of the initial things that I believe we were avoiding. If we were really to implement this, we would probably want explicit filename provided to a corresponding flag.

dllmkdir

comment created time in 15 days

PR merged denolib/high-res-deno-logo

Update original logo source

The "original logo" image is currently broken. This PR updates the url to the one used at https://deno.land/manual#logos

+1 -1

0 comment

1 changed file

olets

pr closed time in 15 days

push eventdenolib/high-res-deno-logo

Henry Bley-Vroman

commit sha 6f6fc4bc31751106e462c4b06eab545e2eb241d7

Update original logo source (#1)

view details

push time in 15 days

push eventdenolib/awesome-deno

Yoshiya Hinosawa

commit sha c9c41da1b7d6db97fcad39b0ed524127a741a243

Follow the guideline (#123) * fix: follow the guideline * fix: fix awesome_bot option * fix: fix additional issues * feat: change the list description

view details

push time in 16 days

PR merged denolib/awesome-deno

Follow the guideline

This version passes npx awesome-lint check except one problem License was not detected by GitHub remark-lint:awesome-github which should be resolved after this PR merged.

ref: #37

+205 -59

0 comment

5 changed files

kt3k

pr closed time in 16 days

PR opened denoland/deno

cli: don't panic on Deno.close invalid argument

Closes #5313

Simple 1 line fix to avoid Rust panic on invalid argument (don't unwrap).

+11 -1

0 comment

2 changed files

pr created time in 17 days

create barnchkevinkassimo/deno

branch : cli/bugs/close_args

created branch time in 17 days

issue commentdenoland/deno

`deno --version` prints the version, but `deno -v` does not.

@davidgilbertson is right. Is there any specific reason why capital V is used? -v is more user friendly and preferable than -V.

This was intentional. -v might be confusing since it also can mean --verbose if we were to ever add this flag.

davidgilbertson

comment created time in 17 days

issue commentdenoland/deno

Calling Deno.close without an rid results in a panic

Actually I think this has been a long debatable aspect of Deno. Personally I was supportive of adding some runtime argument type checks, but there is also a strong advocacy against this since TypeScript would enforce compile time checks that does not introduce runtime cost.

Nevertheless panicking is definitely not good user experience. I would say at least a simple Rust side handling is needed.

isthisnagee

comment created time in 17 days

startedjustjavac/deno_handbook

started time in 17 days

Pull request review commentdenolib/awesome-deno

Added an article in Bahasa Indonesia

 Consider submitting to [the deno.land/x](https://github.com/denoland/deno_websit  - [Telegram channel](https://t.me/denoland_ru) - [Telegram chat](https://t.me/denoland)++## Indonesian

Can you move this section above Japanese? We want to keep this in alphabetical order

redhajuanda

comment created time in 17 days

push eventdenolib/awesome-deno

Khaled Bentoumi

commit sha 951f95d5df094a402aab2a2c2b5d4a1ac0090ebe

Add `denox` workspace wrapper around Deno (#117) * Add `denox` workspace wrapper around Deno * Fix spelling * Change wording

view details

push time in 17 days

PR merged denolib/awesome-deno

Add `denox` workspace wrapper around Deno

Like packages.json scripts, but for Deno with permissions hardcoded in a file.

scripts:
  # "denox run start" will execute main.ts with example.com networking permissions
  start:
    file: main.ts
    permissions:
      allow-net: example.com
  # "denox run develop" will execute main.ts with localhost networking permissions
  develop:
    file: main.ts
    permissions:
      allow-net: localhost
+1 -0

1 comment

1 changed file

BentoumiTech

pr closed time in 17 days

pull request commentdenolib/awesome-deno

Add `denox` workspace wrapper around Deno

LGTM

BentoumiTech

comment created time in 17 days

pull request commentdenoland/deno

feat(cli/js/error_stack): Support Error.captureStackTrace

Not super sure if we should expose it as part of the type? Since it is technically a non-standard v8 only feature

nayeemrmn

comment created time in 18 days

pull request commentsindresorhus/awesome

Add Deno (awesome-deno) to list of platforms

@kevinkassimo Deno is going stable with 1.0.0 release in three days on May 13th Can you please resubmit this pull request?

Sorry for the late reply. I am personally kind of super busy recently. Can you also ping other members of denolib? Since I believe many of them should have access to the repository and format it to comply with the guidelines here

kevinkassimo

comment created time in 18 days

pull request commentdenoland/deno

BREAKING: Remove support for .wasm imports

Sad to see it go, but I guess we can bring it back some time in the future once we figure out what could be the best solution.

bartlomieju

comment created time in 23 days

starteddenoland/vscode_deno

started time in 23 days

create barnchkevinkassimo/ksm.sh

branch : snyk-fix-28b758b8bd2f30d77ff2217304e0147b

created branch time in a month

push eventkevinkassimo/ksm.sh

snyk-bot

commit sha 2ecb845adf8a23432d15e5a6ef099d787829a970

fix: package.json, package-lock.json & .snyk to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-JQUERY-567880 The following vulnerabilities are fixed with a Snyk patch: - https://snyk.io/vuln/SNYK-JS-LODASH-567746

view details

push time in a month

push eventkevinkassimo/ksm.sh

snyk-bot

commit sha cc1d7bf9f7ba6eb9b2233fcf783c965818d459ef

fix: package.json, package-lock.json & .snyk to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-JQUERY-567880 The following vulnerabilities are fixed with a Snyk patch: - https://snyk.io/vuln/SNYK-JS-LODASH-567746

view details

push time in a month

push eventkevinkassimo/ksm.sh

snyk-bot

commit sha a371ebc2715830907d4d8388131e76f329e5b01e

fix: package.json, package-lock.json & .snyk to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-JQUERY-567880 The following vulnerabilities are fixed with a Snyk patch: - https://snyk.io/vuln/SNYK-JS-LODASH-567746

view details

push time in a month

issue commentdenoland/deno

eval cache

Personally I don't see an explicit key can be very useful (also it can be hard to use -- you will need separate ways to remember the key yourself. It might be better to use the hash of source itself as key). Also evals are normally one-time evaluation on the fly -- otherwise an explicit script should be a better option. Could you give an explicit example where an actual script does not fit the scenario?

Also deno eval without -T flag (for TS) should not really compile anything, so cache for normal JS eval does not really make sense (unless we want to cache the evaluation output -- which does not make sense if operation has side effects)

deno eval does create in-memory "fake scripts" to help with module resolutions. There can be an option to dump the TS source compilation result to a file for "caching", yet still I don't think it makes much sense.

brandonkal

comment created time in a month

issue commentdenoland/deno

Remove Deno.symbols namespace

I am kind of reluctant to do this change. One major issue is that moving them out and spread across would mean we have to name them in a way that conveys the information that they are symbols. For example, Deno.symbols.customInspect, if placed elsewhere or back directly to under the Deno namespace, might be mistaken as a name for a function.

If we were to move all symbols out, we should probably instead name all of them as Deno.customInspectSymbol or similar (it should not live under console IMHO, not a standards thing). EOF is a special case that due to its common appearance it might be fine to keep its current form.

nayeemrmn

comment created time in a month

startedgo-delve/delve

started time in a month

issue commentdenoland/deno

Exiting the REPL should be `.exit` instead of `exit`

Either way, if we support more REPL commands then we need a pattern for it, and .<cmd> is the only one that would generally make sense. Consider if we added a break command for example. These are meta REPL commands, they shouldn't be valid JS. (So what @Caesar2011 said.)

I guess I am not fully on board that we must use non-JS syntax to do meta commands that also makes sense in JS like _exit (since it make sense to be a JS thing as it could be implemented as a getter that have side effects), but I do agree for other ones beyond JS where there is room for debate. V8 uses % prefix for some operations so that would also be an interesting candidate.

Why not process the line REPL before pass it to V8 as JavaScript code, if the line matches /^\s*exit\s*$/ then exit. So we can both keep the feature and prevent to add something to JS.

Preprocessing is an option, though the regex you propose might be too broad.

kitsonk

comment created time in a month

issue commentdenoland/deno

Exiting the REPL should be `.exit` instead of `exit`

How about just using the _ prefix? We already have _ and _error, we can simply have _exit - as terse as .exit and is valid JS, and unlikely something people would name in REPL

kitsonk

comment created time in a month

push eventkevinkassimo/ksm.sh

snyk-bot

commit sha bf1aaf691b7f60665241795b381e2fc575459604

fix: package.json & package-lock.json to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-JQUERY-565129

view details

push time in 2 months

create barnchkevinkassimo/ksm.sh

branch : snyk-fix-e54985447eaf7b957c8ee8ffed024bfd

created branch time in 2 months

issue commentdenoland/deno

eval function seems to be not working as expected

This is not an issue with Deno. This is due to Deno uses ES modules only, and ES module implicitly enables strict mode, and eval of strict mode code does not introduce new variables into the surrounding scope.

anuragvohraec

comment created time in 2 months

PR opened denoland/deno

flags: better error message on invalid reload url

Noticed this during slides prep.

Before:

$ deno -r=123 https://deno.land/std/examples/welcome.ts
thread 'main' panicked at 'Bad Url: 123', cli/flags.rs:1238:7
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

After:

./target/debug/deno -r=123 https://deno.land/std/examples/welcome.ts
Unable to resolve URL '123': relative URL without a base
+18 -16

0 comment

2 changed files

pr created time in 2 months

create barnchkevinkassimo/deno

branch : flags/reload/url_error

created branch time in 2 months

issue commentdenoland/deno

async op error: must be called from the context of Tokio runtime

Some update to this (in case others are also interested in investigating): It might be some issue with dylib: I tried just now, and noticed that std::thread::current() would return completely different information even if the function accessed through dylib is running on the same thread (OpRegistry::call would print 2 different thread info depending on if in or out of the actually invoked op_xxx function). Maybe this has to deal with problems of locating static var locations inside the dylib, which would the same problem here for finding no Tokio runtime instance (tokio::runtime::Handle::current() would panic if invoked in functions in dylib)

runnerSnail

comment created time in 2 months

issue commentdenoland/deno

inspector should support --inspect-brk

I feel this is probably going to be quite tricky per some experiments I did (TBH I'm not familiar with the Inspector API so I might make some mistakes):

It seems that first we might need to make DenoInspector spawn in a different Tokio runtime from the Worker, and before Worker is ever evaluated. Current situation only polls the DenoInspector in Worker::poll, which makes it not possible to break before first run-to-the-end is completed.

Also, I've tried to do session.schedule_pause_on_next_statement(...) and does not seem to work even if the above is done. Maybe this is due to myself invoking this without any JS code of relevant context running of top the Isolate, thus there is no next statement really to break for. Node does not seem to have this problem due to its module instantiation/evaluation called from JS through a binding to schedulePauseOnNextStatement(): https://github.com/nodejs/node/blob/517b0470c7e3147606425604dd9c8429cf0f4de4/lib/internal/modules/esm/module_job.js#L89-L90

ry

comment created time in 2 months

create barnchkevinkassimo/deno_lint

branch : rules/no_eval_2

created branch time in 2 months

PR opened denoland/deno_lint

Add noEval rule
+38 -0

0 comment

4 changed files

pr created time in 2 months

push eventkevinkassimo/deno_lint

Bartek Iwańczuk

commit sha 06a6f933722f140e48b4f28a3a27d60e25e71367

add noDeleteVar, noEmptyInterface rules

view details

Kevin (Kun) Kassimo Qian

commit sha a83389228b666278e97ef1e3c188c80f8247eb0b

Merge with master

view details

push time in 2 months

issue commentdenoland/deno_lint

[bug] walk_expression is only called for top level expressions.

Yeah I also noticed this. I changed a bit to make it work with #3

lucacasonato

comment created time in 2 months

PR opened denoland/deno_lint

rules: add noEval
  • Add a basic rule to ban eval(...);
  • By default walks expression for ExprStmt
+41 -1

0 comment

5 changed files

pr created time in 2 months

create barnchkevinkassimo/deno_lint

branch : rules/no_eval

created branch time in 2 months

starteddenoland/deno_lint

started time in 2 months

startedbartlomieju/deno_doc

started time in 2 months

PR opened denoland/deno

inspector: proper error message on port collision

Minimal fix to avoid panicking.

Node allows multiple sessions on different ports, and it is useful under certain scenarios. I don't think a global mutex for single inspector session is the right way to go.

Besides 9229, it seems to me that 9222 is also a common port to use and appears by default. You can also add new ports for Chrome inspector detection.

cc @ry

+44 -1

0 comment

2 changed files

pr created time in 2 months

create barnchkevinkassimo/deno

branch : inspector/port_err_msg

created branch time in 2 months

PR closed denoland/deno

inspector: server auto finding free port

Currently, deno run --inspect main.ts would panic if 2 process try to create inspector server.

With this change, if no port is given, a new port will be sought with max tries 50 ports away from default. If port is given and collides, error and exit.

Need to tidy the code a bit and probably add test

+146 -16

4 comments

4 changed files

kevinkassimo

pr closed time in 2 months

pull request commentdenoland/deno

inspector: server auto finding free port

@ry I don't think it is a necessarily a test problem, it was just for ease of use from my perspective.

Node, while does not automatically find free ports, does allow you to pass explicit ports to --inspect/--inspect-brk and thus allowing multiple sessions.

Since I guess we are inclined to simulate behaviors of Node here, I'll just make sure the attempt to use the same port print a decent error instead of panicking.

I'm closing this. I'll do a simpler PR to address the panic.

kevinkassimo

comment created time in 2 months

Pull request review commentdenoland/deno

feat: Add "deno doc" subcommand

+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.+use super::ParamDef;+use serde::Serialize;+use swc_common::SourceMap;+use swc_ecma_ast;+use swc_ecma_ast::TsArrayType;+use swc_ecma_ast::TsConditionalType;+use swc_ecma_ast::TsFnOrConstructorType;+use swc_ecma_ast::TsIndexedAccessType;+use swc_ecma_ast::TsKeywordType;+use swc_ecma_ast::TsLit;+use swc_ecma_ast::TsLitType;+use swc_ecma_ast::TsOptionalType;+use swc_ecma_ast::TsParenthesizedType;+use swc_ecma_ast::TsRestType;+use swc_ecma_ast::TsThisType;+use swc_ecma_ast::TsTupleType;+use swc_ecma_ast::TsType;+use swc_ecma_ast::TsTypeAnn;+use swc_ecma_ast::TsTypeLit;+use swc_ecma_ast::TsTypeOperator;+use swc_ecma_ast::TsTypeQuery;+use swc_ecma_ast::TsTypeRef;+use swc_ecma_ast::TsUnionOrIntersectionType;++// pub enum TsType {+//  *      TsKeywordType(TsKeywordType),+//  *      TsThisType(TsThisType),+//  *      TsFnOrConstructorType(TsFnOrConstructorType),+//  *      TsTypeRef(TsTypeRef),+//  *      TsTypeQuery(TsTypeQuery),+//  *      TsTypeLit(TsTypeLit),+//  *      TsArrayType(TsArrayType),+//  *      TsTupleType(TsTupleType),+//  *      TsOptionalType(TsOptionalType),+//  *      TsRestType(TsRestType),+//  *      TsUnionOrIntersectionType(TsUnionOrIntersectionType),+//  *      TsConditionalType(TsConditionalType),+//     TsInferType(TsInferType),+//  *      TsParenthesizedType(TsParenthesizedType),+//  *      TsTypeOperator(TsTypeOperator),+//  *      TsIndexedAccessType(TsIndexedAccessType),+//     TsMappedType(TsMappedType),+//  *      TsLitType(TsLitType),+//     TsTypePredicate(TsTypePredicate),+//     TsImportType(TsImportType),+// }++impl Into<TsTypeDef> for &TsLitType {+  fn into(self) -> TsTypeDef {+    let (repr, lit) = match &self.lit {+      TsLit::Number(num) => (+        format!("{}", num.value),+        LiteralDef {+          kind: LiteralDefKind::Number,+          number: Some(num.value),+          string: None,+          boolean: None,+        },+      ),+      TsLit::Str(str_) => (+        str_.value.to_string(),+        LiteralDef {+          kind: LiteralDefKind::String,+          number: None,+          string: Some(str_.value.to_string()),+          boolean: None,+        },+      ),+      TsLit::Bool(bool_) => (+        bool_.value.to_string(),+        LiteralDef {+          kind: LiteralDefKind::Boolean,+          number: None,+          string: None,+          boolean: Some(bool_.value),+        },+      ),+    };++    TsTypeDef {+      repr,+      kind: Some(TsTypeDefKind::Literal),+      literal: Some(lit),+      ..Default::default()+    }+  }+}++impl Into<TsTypeDef> for &TsArrayType {+  fn into(self) -> TsTypeDef {+    let ts_type_def: TsTypeDef = (&*self.elem_type).into();++    TsTypeDef {+      array: Some(Box::new(ts_type_def)),+      kind: Some(TsTypeDefKind::Array),+      ..Default::default()+    }+  }+}++impl Into<TsTypeDef> for &TsTupleType {+  fn into(self) -> TsTypeDef {+    let mut type_defs = vec![];++    for type_box in &self.elem_types {+      let ts_type: &TsType = &(*type_box);+      let def: TsTypeDef = ts_type.into();+      type_defs.push(def)+    }++    TsTypeDef {+      tuple: Some(type_defs),+      kind: Some(TsTypeDefKind::Tuple),+      ..Default::default()+    }+  }+}++impl Into<TsTypeDef> for &TsUnionOrIntersectionType {+  fn into(self) -> TsTypeDef {+    use swc_ecma_ast::TsUnionOrIntersectionType::*;++    match self {+      TsUnionType(union_type) => {+        let mut types_union = vec![];++        for type_box in &union_type.types {+          let ts_type: &TsType = &(*type_box);+          let def: TsTypeDef = ts_type.into();+          types_union.push(def);+        }++        TsTypeDef {+          union: Some(types_union),+          kind: Some(TsTypeDefKind::Union),+          ..Default::default()+        }+      }+      TsIntersectionType(intersection_type) => {+        let mut types_intersection = vec![];++        for type_box in &intersection_type.types {+          let ts_type: &TsType = &(*type_box);+          let def: TsTypeDef = ts_type.into();+          types_intersection.push(def);+        }++        TsTypeDef {+          intersection: Some(types_intersection),+          kind: Some(TsTypeDefKind::Intersection),+          ..Default::default()+        }+      }+    }+  }+}++impl Into<TsTypeDef> for &TsKeywordType {+  fn into(self) -> TsTypeDef {+    use swc_ecma_ast::TsKeywordTypeKind::*;++    let keyword_str = match self.kind {+      TsAnyKeyword => "any",+      TsUnknownKeyword => "unknown",+      TsNumberKeyword => "number",+      TsObjectKeyword => "object",+      TsBooleanKeyword => "boolean",+      TsBigIntKeyword => "BigInt",

Either BigInt or bigint should work here, maybe use lowercase for consistency?

bartlomieju

comment created time in 2 months

pull request commentdenoland/deno

inspector: server auto finding free port

@ry Actually, you can. Here's a demo: I have created 2 separate sessions on 9229 and 9230. Go to chrome://inspect, click on the configure button Screen Shot 2020-03-27 at 7 18 11 PM Add localhost:9230 to the targets: Screen Shot 2020-03-27 at 7 18 26 PM after confirming, the new session pops up: Screen Shot 2020-03-27 at 7 18 32 PM

kevinkassimo

comment created time in 2 months

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha 94f1537b4ea3f1cf858f07cee1ecf6893f8b9534

add basic test

view details

push time in 2 months

PR opened denoland/deno

WIP: inspector server support finding auto free port

Currently, deno run --inspect main.ts would panic if 2 process try to create inspector server.

With this change, if no port is given, a new port will be sought. If port is given and collides, error and exit.

Need to tidy the code a bit and probably add test

+67 -10

0 comment

3 changed files

pr created time in 2 months

create barnchkevinkassimo/deno

branch : inspector/free_port

created branch time in 2 months

issue commentdenoland/deno

Escape perm whitelist using symlink

@dubiousjim I think the proposal is reasonable as a stopgap, while it is not perfect, it is way better than what we have atm. Essentially

  1. op_link requires a superset of permissions on link target compared to that of link file.
  2. op_symlink, similar to op_link, but I do feel debatable whether part (b) is safe: it is an attack for the script to create a symlink beforehand, waiting for a sensitive log to appear at that location pointed to, and try reading contents. We might as well ban creating symlinks pointing to a non-existent file, unless the current permissions implies that that once this link target is created, will have superset of permissions than that of link file itself.
kevinkassimo

comment created time in 2 months

startedseanmonstar/warp

started time in 2 months

issue commentdenoland/deno

[Feature Request] worker with global `Deno` API

I don't see a reason why would that happen. If you don't use Deno namespace in your worker code it's guaranteed to work in Worker API. If you do use Deno namespace, then there's no way to run that code in browser's Worker API so why should it work in Deno's Worker API?

One scenario I was thinking about is that some workers might be optionally writing logs to filesystem (e.g. as a backup storage) if Deno namespace is available, but can still work with a pure in-memory storage. In that sense, if we extend Worker options, the script works just fine on both Deno and the browser since the browser can simply ignore extra options, and the user only need to write a single line for worker creation instead of 2 (with Deno.Worker under condition). This feels in some way like the main worker we have in Deno: modules check if Deno namespace is present to do different behavior.

Fenzland

comment created time in 2 months

issue commentdenoland/deno

Improve window.close() implementation

@KSXGitHub Actually it shouldn't print setTimeout 3, per experiment I did before (since that timer would not be ready when there are no more other ready tasks). The main problem here is that if there are more new Promise.resolve().then(() => setTimeout(() => {}, 0)) they should also have the timer fire due to timer being ready.

Essentially to make the behavior correct, we have to find a way to force window.close() be the last task that is only fired when all other ready timers are fired. This implies that having window.close() itself being a timer task would have the issue that there might be more timers pushed to queue after it being pushed, and by the moment task for closing is run, these extra timers also technically should have been ready, yet won't be fired due to process exit before they have a chance to run.

KSXGitHub

comment created time in 2 months

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha 83f89b465491b34452f638decaa503a550d74dc0

Basic integration test

view details

push time in 2 months

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha d76abc67ac202702cffbfaa697d94616a85158f3

Make test work

view details

push time in 2 months

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha a2e5291d4ab97e7e2c33dfb5fd2dcc20ec9ab763

Debug windows

view details

push time in 2 months

pull request commentdenoland/deno

errors: replace .lines with explicit .split newline

@ry It is actually hard to get a unit test (since we somehow have to let the error point to a final empty line, which is hard without explicitly causing syntax error, and also Deno.core.evalContext() does not work here). I'll need to spawn a new process for this, so maybe integration test suits better here.

kevinkassimo

comment created time in 2 months

issue commentdenoland/deno

Deno

Hi @KarolineCat , could you clarify what is the concrete problem and rename the issue?

KarolineCat

comment created time in 2 months

push eventkevinkassimo/deno

Kevin (Kun) Kassimo Qian

commit sha c296ad828f655d2a2ac7d15cdd6fc96ded136e23

Make test work

view details

push time in 2 months

more