Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
3d259483
Commit
3d259483
authored
Aug 24, 2017
by
yann300
Committed by
GitHub
Aug 24, 2017
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #712 from ethereum/appjs
move handle import call logic away from app.js
parents
adeeb15c
8a35c251
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
95 additions
and
91 deletions
+95
-91
app.js
src/app.js
+16
-91
compiler-imports.js
src/app/compiler/compiler-imports.js
+79
-0
No files found.
src/app.js
View file @
3d259483
...
@@ -3,8 +3,6 @@
...
@@ -3,8 +3,6 @@
var
async
=
require
(
'async'
)
var
async
=
require
(
'async'
)
var
$
=
require
(
'jquery'
)
var
$
=
require
(
'jquery'
)
var
base64
=
require
(
'js-base64'
).
Base64
var
swarmgw
=
require
(
'swarmgw'
)
var
csjs
=
require
(
'csjs-inject'
)
var
csjs
=
require
(
'csjs-inject'
)
var
yo
=
require
(
'yo-yo'
)
var
yo
=
require
(
'yo-yo'
)
var
remix
=
require
(
'ethereum-remix'
)
var
remix
=
require
(
'ethereum-remix'
)
...
@@ -35,6 +33,7 @@ var Txlistener = require('./app/execution/txListener')
...
@@ -35,6 +33,7 @@ var Txlistener = require('./app/execution/txListener')
var
TxLogger
=
require
(
'./app/execution/txLogger'
)
var
TxLogger
=
require
(
'./app/execution/txLogger'
)
var
EventsDecoder
=
require
(
'./app/execution/eventsDecoder'
)
var
EventsDecoder
=
require
(
'./app/execution/eventsDecoder'
)
var
Web3VMProvider
=
remix
.
web3
.
web3VMProvider
var
Web3VMProvider
=
remix
.
web3
.
web3VMProvider
var
handleImports
=
require
(
'./app/compiler/compiler-imports'
)
var
styleGuide
=
require
(
'./style-guide'
)
var
styleGuide
=
require
(
'./style-guide'
)
var
styles
=
styleGuide
()
var
styles
=
styleGuide
()
...
@@ -498,7 +497,21 @@ function run () {
...
@@ -498,7 +497,21 @@ function run () {
self
.
_components
.
editorpanel
.
refresh
()
self
.
_components
.
editorpanel
.
refresh
()
}
}
var
compiler
=
new
Compiler
(
handleImportCall
)
var
compiler
=
new
Compiler
((
url
,
cb
)
=>
{
var
provider
=
fileProviderOf
(
url
)
if
(
provider
&&
provider
.
exists
(
url
))
{
cb
(
null
,
provider
.
get
(
url
,
cb
))
}
handleImports
.
import
(
url
,
(
error
,
content
)
=>
{
if
(
!
error
)
{
// FIXME: at some point we should invalidate the browser cache
filesProviders
[
'browser'
].
addReadOnly
(
url
,
content
)
cb
(
null
,
content
)
}
else
{
modalDialogCustom
.
alert
(
'Unable to import: url'
)
}
})
})
var
offsetToLineColumnConverter
=
new
OffsetToLineColumnConverter
(
compiler
.
event
)
var
offsetToLineColumnConverter
=
new
OffsetToLineColumnConverter
(
compiler
.
event
)
// ----------------- Renderer -----------------
// ----------------- Renderer -----------------
...
@@ -627,94 +640,6 @@ function run () {
...
@@ -627,94 +640,6 @@ function run () {
self
.
_view
.
el
.
addEventListener
(
'change'
,
onResize
)
self
.
_view
.
el
.
addEventListener
(
'change'
,
onResize
)
document
.
querySelector
(
'#editorWrap'
).
addEventListener
(
'change'
,
onResize
)
document
.
querySelector
(
'#editorWrap'
).
addEventListener
(
'change'
,
onResize
)
// ----------------- compiler ----------------------
function
handleGithubCall
(
root
,
path
,
cb
)
{
return
$
.
getJSON
(
'https://api.github.com/repos/'
+
root
+
'/contents/'
+
path
)
.
done
(
function
(
data
)
{
if
(
'content'
in
data
)
{
cb
(
null
,
base64
.
decode
(
data
.
content
))
}
else
{
cb
(
'Content not received'
)
}
})
.
fail
(
function
(
xhr
,
text
,
err
)
{
// NOTE: on some browsers, err equals to '' for certain errors (such as offline browser)
cb
(
err
||
'Unknown transport error'
)
})
}
function
handleSwarmImport
(
url
,
cb
)
{
swarmgw
.
get
(
url
,
function
(
err
,
content
)
{
// retry if this failed and we're connected via RPC
if
(
err
&&
!
executionContext
.
isVM
())
{
var
web3
=
executionContext
.
web3
()
web3
.
swarm
.
download
(
url
,
cb
)
}
else
{
cb
(
err
,
content
)
}
})
}
function
handleIPFS
(
url
,
cb
)
{
// replace ipfs:// with /ipfs/
url
=
url
.
replace
(
/^ipfs:
\/\/?
/
,
'ipfs/'
)
return
$
.
ajax
({
type
:
'GET'
,
url
:
'https://gateway.ipfs.io/'
+
url
})
.
done
(
function
(
data
)
{
cb
(
null
,
data
)
})
.
fail
(
function
(
xhr
,
text
,
err
)
{
// NOTE: on some browsers, err equals to '' for certain errors (such as offline browser)
cb
(
err
||
'Unknown transport error'
)
})
}
function
handleImportCall
(
url
,
cb
)
{
var
provider
=
fileProviderOf
(
url
)
if
(
provider
&&
provider
.
exists
(
url
))
{
return
provider
.
get
(
url
,
cb
)
}
var
handlers
=
[
{
match
:
/^
(
https
?
:
\/\/)?(
www.
)?
github.com
\/([^/]
*
\/[^/]
*
)\/(
.*
)
/
,
handler
:
function
(
match
,
cb
)
{
handleGithubCall
(
match
[
3
],
match
[
4
],
cb
)
}
},
{
match
:
/^
(
bzz
[
ri
]?
:
\/\/?
.*
)
$/
,
handler
:
function
(
match
,
cb
)
{
handleSwarmImport
(
match
[
1
],
cb
)
}
},
{
match
:
/^
(
ipfs:
\/\/?
.+
)
/
,
handler
:
function
(
match
,
cb
)
{
handleIPFS
(
match
[
1
],
cb
)
}
}
]
var
found
=
false
handlers
.
forEach
(
function
(
handler
)
{
if
(
found
)
{
return
}
var
match
=
handler
.
match
.
exec
(
url
)
if
(
match
)
{
found
=
true
$
(
'#output'
).
append
(
$
(
'<div/>'
).
append
(
$
(
'<pre/>'
).
text
(
'Loading '
+
url
+
' ...'
)))
handler
.
handler
(
match
,
function
(
err
,
content
)
{
if
(
err
)
{
cb
(
'Unable to import "'
+
url
+
'": '
+
err
)
return
}
// FIXME: at some point we should invalidate the cache
filesProviders
[
'browser'
].
addReadOnly
(
url
,
content
)
cb
(
null
,
content
)
})
}
})
if
(
found
)
{
return
}
else
if
(
/^
[^
:
]
*:
\/\/
/
.
exec
(
url
))
{
cb
(
'Unable to import "'
+
url
+
'": Unsupported URL schema'
)
}
else
{
cb
(
'Unable to import "'
+
url
+
'": File not found'
)
}
}
// ----------------- Debugger -----------------
// ----------------- Debugger -----------------
var
debugAPI
=
{
var
debugAPI
=
{
statementMarker
:
null
,
statementMarker
:
null
,
...
...
src/app/compiler/compiler-imports.js
0 → 100644
View file @
3d259483
'use strict'
var
$
=
require
(
'jquery'
)
var
base64
=
require
(
'js-base64'
).
Base64
var
swarmgw
=
require
(
'swarmgw'
)
module
.
exports
=
{
handleGithubCall
:
function
(
root
,
path
,
cb
)
{
return
$
.
getJSON
(
'https://api.github.com/repos/'
+
root
+
'/contents/'
+
path
)
.
done
(
function
(
data
)
{
if
(
'content'
in
data
)
{
cb
(
null
,
base64
.
decode
(
data
.
content
))
}
else
{
cb
(
'Content not received'
)
}
})
.
fail
(
function
(
xhr
,
text
,
err
)
{
// NOTE: on some browsers, err equals to '' for certain errors (such as offline browser)
cb
(
err
||
'Unknown transport error'
)
})
},
handleSwarmImport
:
function
(
url
,
cb
)
{
swarmgw
.
get
(
url
,
function
(
err
,
content
)
{
cb
(
err
,
content
)
})
},
handleIPFS
:
function
(
url
,
cb
)
{
// replace ipfs:// with /ipfs/
url
=
url
.
replace
(
/^ipfs:
\/\/?
/
,
'ipfs/'
)
return
$
.
ajax
({
type
:
'GET'
,
url
:
'https://gateway.ipfs.io/'
+
url
})
.
done
(
function
(
data
)
{
cb
(
null
,
data
)
})
.
fail
(
function
(
xhr
,
text
,
err
)
{
// NOTE: on some browsers, err equals to '' for certain errors (such as offline browser)
cb
(
err
||
'Unknown transport error'
)
})
},
import
:
function
(
url
,
cb
)
{
var
handlers
=
[
{
match
:
/^
(
https
?
:
\/\/)?(
www.
)?
github.com
\/([^/]
*
\/[^/]
*
)\/(
.*
)
/
,
handler
:
(
match
,
cb
)
=>
{
this
.
handleGithubCall
(
match
[
3
],
match
[
4
],
cb
)
}
},
{
match
:
/^
(
bzz
[
ri
]?
:
\/\/?
.*
)
$/
,
handler
:
(
match
,
cb
)
=>
{
this
.
handleSwarmImport
(
match
[
1
],
cb
)
}
},
{
match
:
/^
(
ipfs:
\/\/?
.+
)
/
,
handler
:
(
match
,
cb
)
=>
{
this
.
handleIPFS
(
match
[
1
],
cb
)
}
}
]
var
found
=
false
handlers
.
forEach
(
function
(
handler
)
{
if
(
found
)
{
return
}
var
match
=
handler
.
match
.
exec
(
url
)
if
(
match
)
{
found
=
true
$
(
'#output'
).
append
(
$
(
'<div/>'
).
append
(
$
(
'<pre/>'
).
text
(
'Loading '
+
url
+
' ...'
)))
handler
.
handler
(
match
,
function
(
err
,
content
)
{
if
(
err
)
{
cb
(
'Unable to import "'
+
url
+
'": '
+
err
)
return
}
cb
(
null
,
content
)
})
}
})
if
(
found
)
{
return
}
else
if
(
/^
[^
:
]
*:
\/\/
/
.
exec
(
url
))
{
cb
(
'Unable to import "'
+
url
+
'": Unsupported URL schema'
)
}
else
{
cb
(
'Unable to import "'
+
url
+
'": File not found'
)
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment