Skip to content

Commit 3153a57

Browse files
committed
fix(js): denoAttrs:deno detect was reverted, import* not support str as arg
1 parent b3c8121 commit 3153a57

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/pylib/jsutils/denoAttrs.nim

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ when defined(js):
2323
when defined(nodejs): # fast-path when defined nodejs
2424
nodeExpr
2525
else:
26-
DenoDetectedJsExpr & ("?$1:$2" % [nodeExpr, denoExpr])
26+
DenoDetectedJsExpr & ("?$1:$2" % [denoExpr, nodeExpr])
2727
template JsPragma: NimNode = # lazy eval on `JsExpr`
2828
nnkExprColonExpr.newTree(ident"importjs", JsExpr)
2929

@@ -34,19 +34,26 @@ when defined(js):
3434
else:
3535
def[0][0] = nnkPragmaExpr.newTree(def[0][0], nnkPragma.newTree JsPragma)
3636
of RoutineNodes:
37-
nodeExpr.add "(@)"; denoExpr.add "(@)" # add pattern for proc's params
37+
func addParamsIfNotAttr(s: var string) =
38+
if s[^1] == '$': s.setLen s.len-1
39+
else: s.add "(@)"
40+
nodeExpr.addParamsIfNotAttr()
41+
denoExpr.addParamsIfNotAttr()
3842
def.addPragma JsPragma
3943
else:
4044
error "only var/let and procs is supported, but got " & $def.kind, def
4145
def
4246
macro importByNodeOrDeno*(node, deno: static[string]; def) =
4347
## pragma
4448
importByNodeOrDenoImpl(def, nodeExpr=node, denoExpr=deno)
49+
proc myrepr(n: NimNode): string =
50+
if n.kind in nnkStrLit..nnkTripleStrLit: n.strVal
51+
else: repr n
4552
proc importDenoOrImpl(def: NimNode; objInNode: string;
4653
denoAttr: NimNode, nodeAttr=denoAttr): NimNode =
4754
let
48-
denoAttr = repr denoAttr
49-
nodeAttr = repr nodeAttr
55+
denoAttr = myrepr denoAttr
56+
nodeAttr = myrepr nodeAttr
5057
importByNodeOrDenoImpl(def,
5158
nodeExpr=objInNode&'.'&nodeAttr,
5259
denoExpr="Deno."&denoAttr
@@ -55,13 +62,15 @@ when defined(js):
5562
func requireExpr(module: string): string = "require('" & module & "')"
5663
macro importDenoOrNodeMod*(modInNode, attr; def) =
5764
importDenoOrImpl(def, requireExpr $modInNode, attr)
65+
macro importInNodeModOrDeno*(modInNode, attrNode, attrDeno; def) =
66+
importDenoOrImpl(def, requireExpr $modInNode, attrDeno, attrNode)
5867
macro importDenoOr*(objInNode, attr; def) =
5968
importDenoOrImpl(def, $objInNode, attr)
6069

6170
proc importNodeImpl(def: NimNode, module, symExpr: string): NimNode =
6271
importByNodeOrDenoImpl(def,
6372
requireExpr(module) & '.' & symExpr,
64-
"(await import('" & module & "'))." & symExpr
73+
"(await import('node:" & module & "'))." & symExpr
6574
)
6675

6776
proc importDenoOrProcessAux(denoAttr, nodeAttr, def: NimNode): NimNode =

0 commit comments

Comments
 (0)