Commit 92406c66 authored by nano's avatar nano

complete

parent 4f79c3bb
...@@ -2,21 +2,11 @@ ...@@ -2,21 +2,11 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="7dc474d0-9fc0-4b76-8c2f-3c98df702116" name="Default" comment=""> <list default="true" id="7dc474d0-9fc0-4b76-8c2f-3c98df702116" name="Default" comment="">
<change type="DELETED" beforePath="$PROJECT_DIR$/src/components/Example.js" afterPath="" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MOVED" beforePath="$PROJECT_DIR$/.roadhogrc" afterPath="$PROJECT_DIR$/.roadhogrc.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.eslintrc" afterPath="$PROJECT_DIR$/.eslintrc" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/public/index.html" afterPath="$PROJECT_DIR$/public/index.html" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/App/Create.js" afterPath="$PROJECT_DIR$/src/components/App/Create.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/components/Common/Nav.js" afterPath="$PROJECT_DIR$/src/components/Common/Nav.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/index.js" afterPath="$PROJECT_DIR$/src/index.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/index.js" afterPath="$PROJECT_DIR$/src/index.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/App.js" afterPath="$PROJECT_DIR$/src/models/App.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/Apps.js" afterPath="$PROJECT_DIR$/src/models/Apps.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/router.js" afterPath="$PROJECT_DIR$/src/router.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/AppDetail.js" afterPath="$PROJECT_DIR$/src/routes/AppDetail.js" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/AppDetail.js" afterPath="$PROJECT_DIR$/src/routes/AppDetail.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/AppDetail.less" afterPath="$PROJECT_DIR$/src/routes/AppDetail.less" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/services/Packages.js" afterPath="$PROJECT_DIR$/src/services/Packages.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/Entry.js" afterPath="$PROJECT_DIR$/src/routes/Entry.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils/request.js" afterPath="$PROJECT_DIR$/src/utils/request.js" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/yarn.lock" afterPath="$PROJECT_DIR$/yarn.lock" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/yarn.lock" afterPath="$PROJECT_DIR$/yarn.lock" />
</list> </list>
<ignored path="$PROJECT_DIR$/.tmp/" /> <ignored path="$PROJECT_DIR$/.tmp/" />
...@@ -35,11 +25,21 @@ ...@@ -35,11 +25,21 @@
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Packages.js" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/services/Packages.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="271">
<caret line="26" column="32" lean-forward="false" selection-start-line="26" selection-start-column="32" selection-end-line="26" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AppDetail.js" pinned="false" current-in-tab="true"> <file leaf-file-name="AppDetail.js" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/AppDetail.js"> <entry file="file://$PROJECT_DIR$/src/routes/AppDetail.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="798"> <state relative-caret-position="223">
<caret line="701" column="40" lean-forward="false" selection-start-line="701" selection-start-column="40" selection-end-line="701" selection-end-column="40" /> <caret line="849" column="37" lean-forward="true" selection-start-line="849" selection-start-column="37" selection-end-line="849" selection-end-column="37" />
<folding> <folding>
<element signature="e#0#26#0" expanded="true" /> <element signature="e#0#26#0" expanded="true" />
</folding> </folding>
...@@ -51,32 +51,36 @@ ...@@ -51,32 +51,36 @@
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>for</find>
<find>f</find>
<find>.update({ $set: { ...data }}).exec()</find>
<find>fo</find>
<find>format</find>
<find>formatm</find>
<find>formatme</find>
<find>cate</find>
<find>category</find>
<find>news</find>
<find>s</find>
<find>spin</find>
<find>&lt;</find>
<find>&lt;Sp</find>
<find>&lt;Spin</find>
<find>i</find>
<find>isMoun</find> <find>isMoun</find>
<find>isMounte</find> <find>isMounte</find>
<find>isMounted</find> <find>isMounted</find>
<find>isdanger</find> <find>isdanger</find>
<find>remove</find>
<find>width=&quot;100%&quot; height=&quot;100%&quot;</find> <find>width=&quot;100%&quot; height=&quot;100%&quot;</find>
<find>radio</find> <find>radio</find>
<find>console</find> <find>console</find>
<find>pack</find> <find>pack</find>
<find>upload</find> <find>upload</find>
<find>message</find>
<find>success</find>
<find>uploading</find>
<find>fetch</find>
<find>0</find>
<find>0.0.1</find>
<find>packages</find>
<find>add</find>
<find>pack.state</find>
<find>addpack</find>
<find>onadd</find>
<find>onAddPackage</find>
<find>didmont</find>
<find>保存</find>
<find>remove</find>
<find>发布</find>
<find>fa</find>
<find>上传</find>
<find>urlUpload</find>
<find>url</find>
<find>disable</find>
</findStrings> </findStrings>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
...@@ -98,6 +102,8 @@ ...@@ -98,6 +102,8 @@
<option value="$PROJECT_DIR$/src/routes/Entry.js" /> <option value="$PROJECT_DIR$/src/routes/Entry.js" />
<option value="$PROJECT_DIR$/src/models/Apps.js" /> <option value="$PROJECT_DIR$/src/models/Apps.js" />
<option value="$PROJECT_DIR$/src/routes/AppDetail.less" /> <option value="$PROJECT_DIR$/src/routes/AppDetail.less" />
<option value="$PROJECT_DIR$/src/services/Packages.js" />
<option value="$PROJECT_DIR$/src/models/packages.js" />
<option value="$PROJECT_DIR$/src/routes/AppDetail.js" /> <option value="$PROJECT_DIR$/src/routes/AppDetail.js" />
</list> </list>
</option> </option>
...@@ -114,8 +120,8 @@ ...@@ -114,8 +120,8 @@
<handled-path value="$PROJECT_DIR$/node_modules" /> <handled-path value="$PROJECT_DIR$/node_modules" />
</component> </component>
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="x" value="235" /> <option name="x" value="296" />
<option name="y" value="58" /> <option name="y" value="23" />
<option name="width" value="1383" /> <option name="width" value="1383" />
<option name="height" value="968" /> <option name="height" value="968" />
</component> </component>
...@@ -162,6 +168,60 @@ ...@@ -162,6 +168,60 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="services" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="routes" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console-web" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane> </subPane>
</pane> </pane>
</panes> </panes>
...@@ -265,15 +325,15 @@ ...@@ -265,15 +325,15 @@
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1492397512644</updated> <updated>1492397512644</updated>
<workItem from="1492397516564" duration="4541000" /> <workItem from="1492397516564" duration="4541000" />
<workItem from="1492407287300" duration="13890000" /> <workItem from="1492407287300" duration="47582000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="18431000" /> <option name="totallyTimeSpent" value="52123000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="235" y="58" width="1383" height="968" extended-state="0" /> <frame x="296" y="23" width="1383" height="968" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
...@@ -283,7 +343,7 @@ ...@@ -283,7 +343,7 @@
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32966226" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32966226" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32990867" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32990867" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33333334" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33333334" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" /> <window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2572707" sideWeight="0.49315068" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.2572707" sideWeight="0.49315068" order="0" side_tool="false" content_ui="combo" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24981357" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24981357" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
...@@ -312,6 +372,10 @@ ...@@ -312,6 +372,10 @@
<option value="$PROJECT_DIR$/../moecube-console-backend/src/routes/upload.js" /> <option value="$PROJECT_DIR$/../moecube-console-backend/src/routes/upload.js" />
<option value="$PROJECT_DIR$/../moecube-console-backend/src/utils.js.map" /> <option value="$PROJECT_DIR$/../moecube-console-backend/src/utils.js.map" />
<option value="$PROJECT_DIR$/../moecube-console-backend/src/utils.js" /> <option value="$PROJECT_DIR$/../moecube-console-backend/src/utils.js" />
<option value="$PROJECT_DIR$/../moecube-console/package/utils.js.map" />
<option value="$PROJECT_DIR$/../moecube-console/package/main.js.map" />
<option value="$PROJECT_DIR$/../moecube-console/package/utils.js" />
<option value="$PROJECT_DIR$/../moecube-console/package/main.js" />
</list> </list>
</option> </option>
</component> </component>
...@@ -323,16 +387,6 @@ ...@@ -323,16 +387,6 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/index.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="162">
<caret line="14" column="3" lean-forward="false" selection-start-line="14" selection-start-column="3" selection-end-line="14" selection-end-column="3" />
<folding>
<element signature="e#0#33#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app.json"> <entry file="file://$PROJECT_DIR$/app.json">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
...@@ -421,6 +475,7 @@ ...@@ -421,6 +475,7 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -428,6 +483,7 @@ ...@@ -428,6 +483,7 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -435,6 +491,9 @@ ...@@ -435,6 +491,9 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#0#26#0" expanded="false" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -442,20 +501,9 @@ ...@@ -442,20 +501,9 @@
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state> <folding>
</provider> <element signature="e#0#26#0" expanded="false" />
</entry> </folding>
<entry file="file://$PROJECT_DIR$/src/models/Common.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="18" lean-forward="true" selection-start-line="5" selection-start-column="18" selection-end-line="5" selection-end-column="18" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -583,14 +631,6 @@ ...@@ -583,14 +631,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/router.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="12" column="41" lean-forward="true" selection-start-line="12" selection-start-column="41" selection-end-line="12" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils/request.js"> <entry file="file://$PROJECT_DIR$/src/utils/request.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252"> <state relative-caret-position="252">
...@@ -609,16 +649,6 @@ ...@@ -609,16 +649,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/App.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="14" column="14" lean-forward="true" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding>
<element signature="e#0#39#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/dist/index.js"> <entry file="file://$PROJECT_DIR$/dist/index.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="18"> <state relative-caret-position="18">
...@@ -635,14 +665,6 @@ ...@@ -635,14 +665,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/Apps.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="593">
<caret line="54" column="38" lean-forward="true" selection-start-line="54" selection-start-column="38" selection-end-line="54" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/Entry.js"> <entry file="file://$PROJECT_DIR$/src/routes/Entry.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270"> <state relative-caret-position="270">
...@@ -685,10 +707,108 @@ ...@@ -685,10 +707,108 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/router.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="12" column="41" lean-forward="false" selection-start-line="12" selection-start-column="41" selection-end-line="12" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/example.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/dva/dist/dva.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="186">
<caret line="7595" column="11" lean-forward="false" selection-start-line="7595" selection-start-column="11" selection-end-line="7595" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/yarn.lock">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="186">
<caret line="1065" column="16" lean-forward="false" selection-start-line="1065" selection-start-column="16" selection-end-line="1065" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-539">
<caret line="14" column="14" lean-forward="true" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/Apps.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="38" lean-forward="true" selection-start-line="0" selection-start-column="38" selection-end-line="0" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Apps.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-190">
<caret line="21" column="0" lean-forward="true" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/example.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="378">
<caret line="21" column="6" lean-forward="true" selection-start-line="21" selection-start-column="6" selection-end-line="21" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Common.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="18" lean-forward="true" selection-start-line="5" selection-start-column="18" selection-end-line="5" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/packages.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="282">
<caret line="56" column="11" lean-forward="true" selection-start-line="56" selection-start-column="11" selection-end-line="56" selection-end-column="11" />
<folding>
<element signature="e#0#70#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/user.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/services/Packages.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="271">
<caret line="26" column="32" lean-forward="false" selection-start-line="26" selection-start-column="32" selection-end-line="26" selection-end-column="32" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/AppDetail.js"> <entry file="file://$PROJECT_DIR$/src/routes/AppDetail.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="798"> <state relative-caret-position="223">
<caret line="701" column="40" lean-forward="false" selection-start-line="701" selection-start-column="40" selection-end-line="701" selection-end-column="40" /> <caret line="849" column="37" lean-forward="true" selection-start-line="849" selection-start-column="37" selection-end-line="849" selection-end-column="37" />
<folding> <folding>
<element signature="e#0#26#0" expanded="true" /> <element signature="e#0#26#0" expanded="true" />
</folding> </folding>
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
"expect": "^1.20.2", "expect": "^1.20.2",
"husky": "^0.12.0", "husky": "^0.12.0",
"redbox-react": "^1.3.2", "redbox-react": "^1.3.2",
"roadhog": "^0.5.2" "roadhog": "^0.5.2",
"vercomp": "^1.0.2"
} }
} }
...@@ -16,6 +16,8 @@ const app = dva({ ...@@ -16,6 +16,8 @@ const app = dva({
app.model(require("./models/Apps")); app.model(require("./models/Apps"));
app.model(require("./models/packages"));
app.model(require("./models/user")); app.model(require("./models/user"));
// app.model(require("./models/packages")); // app.model(require("./models/packages"));
......
import {fetch, add, del, patch, urlUpload} from '../services/Packages'
import {message} from 'antd'
export default {
namespace: 'packages',
state: {
packages: {},
},
reducers: {
fetchSuccess(state, action) {
return {
...state,
...action.payload
}
},
success(state, action) {
return {
...state,
...action.payload
}
},
},
effects: {
*fetch({payload}, {call, put}) {
try {
const {data} = yield call(fetch, payload)
yield put({ type: 'fetchSuccess', payload: {packages: data}})
} catch (e) {
message.error(e.message)
}
},
*add({payload}, {call, put}) {
try {
const {data} = yield call(add, payload)
yield put({ type: 'success', payload: {packages: data}, appId: payload.appId})
} catch (e) {
message.error(e.message)
}
},
*patch({payload}, {call, put}) {
try {
const {data} = yield call(patch, payload)
yield put({ type: 'success', payload: {packages: data}, appId: payload.appId})
} catch (e) {
message.error(e.message)
}
},
*delete({payload}, {call, put}) {
try {
const {data} = yield call(del, payload)
yield put({ type: 'success', payload: {packages: data}, appId: payload.appId})
} catch (e) {
message.error(e.message)
}
},
*urlUpload({payload}, {call, put}) {
try {
const {data} = yield call(urlUpload, payload)
yield put({ type: 'success', payload: {packages: data}, appId: payload.appId})
} catch (e) {
message.error(e.message)
}
},
*success({appId}, {call, put}) {
yield put({ type: 'fetch', payload: { appId }})
}
},
subscriptions: {},
};
...@@ -2,6 +2,7 @@ import React from 'react'; ...@@ -2,6 +2,7 @@ import React from 'react';
import {connect} from 'dva'; import {connect} from 'dva';
import styles from './AppDetail.less'; import styles from './AppDetail.less';
import config from '../config' import config from '../config'
import vercomp from 'vercomp'
import uuid from 'uuid' import uuid from 'uuid'
import { import {
Form, Form,
...@@ -16,6 +17,9 @@ import { ...@@ -16,6 +17,9 @@ import {
Upload, Upload,
Modal, Modal,
Table, Table,
Badge,
Alert,
message,
Popconfirm, Popconfirm,
Row, Row,
Col, Col,
...@@ -30,6 +34,11 @@ const TabPane = Tabs.TabPane; ...@@ -30,6 +34,11 @@ const TabPane = Tabs.TabPane;
const Dragger = Upload.Dragger; const Dragger = Upload.Dragger;
const confirm = Modal.confirm const confirm = Modal.confirm
const statusMap = {
'failed': 'error',
'uploading': 'processing'
}
const defCategory = ["game", "runtime", "emulator", "module"] const defCategory = ["game", "runtime", "emulator", "module"]
const defLocales = ["zh-CN", "zh-TW", "en-US", "ja-JP"] const defLocales = ["zh-CN", "zh-TW", "en-US", "ja-JP"]
const defPlatform = ["win32", "darwin"] const defPlatform = ["win32", "darwin"]
...@@ -47,11 +56,7 @@ defLocales.forEach(locale => { ...@@ -47,11 +56,7 @@ defLocales.forEach(locale => {
const defPackage = () => { const defPackage = () => {
return { return {
id: uuid.v1(), id: uuid.v1(),
name: '', status: 'new'
version: '',
platforms: [],
locales: [],
isNew: true
} }
} }
...@@ -66,17 +71,7 @@ const uploadProps = { ...@@ -66,17 +71,7 @@ const uploadProps = {
name: 'file', name: 'file',
multiple: false, multiple: false,
showUploadList: false, showUploadList: false,
onChange(info) {
const status = info.file.status;
if (status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (status === 'done') {
// message.success(`${info.file.name} file uploaded successfully.`);
} else if (status === 'error') {
// message.error(`${info.file.name} file upload failed.`);
}
},
} }
...@@ -95,12 +90,26 @@ class AppDetail extends React.Component { ...@@ -95,12 +90,26 @@ class AppDetail extends React.Component {
packages: [], packages: [],
}; };
componentDidMount() {
this.props.dispatch({ type: 'packages/fetch', payload: {appId: this.props.params.id}})
}
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
const {App: {developers, publishers, news, packages = []}} = nextProps const {App: {developers, publishers, news}, packages } = nextProps
// this.setState({
// developers: {...defDevelopers, ...developers},
// publishers: {...defPublishers, ...publishers},
// packages: [...defPackages, ...packages],
// news: {...defNews, ...news},
// })
if(this.state.packages.length !== packages) {
this.setState({
packages
})
}
this.setState({ this.setState({
developers: {...defDevelopers, ...developers}, developers: {...defDevelopers, ...developers},
publishers: {...defPublishers, ...publishers}, publishers: {...defPublishers, ...publishers},
packages: [...defPackages, ...packages],
news: {...defNews, ...news}, news: {...defNews, ...news},
}) })
} }
...@@ -136,6 +145,7 @@ class AppDetail extends React.Component { ...@@ -136,6 +145,7 @@ class AppDetail extends React.Component {
} }
} }
onSubmitBase = (e) => { onSubmitBase = (e) => {
const {form, dispatch, params: {id}} = this.props const {form, dispatch, params: {id}} = this.props
...@@ -194,39 +204,106 @@ class AppDetail extends React.Component { ...@@ -194,39 +204,106 @@ class AppDetail extends React.Component {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
let {upload: {packages}} = values let {upload: {packages}} = values
const pack = packages.find(el => el.id == _pack.id)
dispatch({type: "Apps/updatePackage", payload: {id, package: pack}})
dispatch({type: "Apps/update", payload: {id, packages}})
} }
}); });
} }
onAddPackage = (e) => { onAddPackage = (e, pack) => {
const {form, dispatch, params: {id}} = this.props const {form, dispatch, params: {id}} = this.props
e && e.preventDefault(); e && e.preventDefault();
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values); console.log('Received values of form: ', values);
//
let {upload: {packages}} = values
const _package = packages.find(p => p.id == pack.id)
dispatch({type: "packages/add", payload: {appId: id, ..._package}})
}
});
}
onPatchPackage = (e, pack) => {
const {form, dispatch, params: {id}} = this.props
e && e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
//
let {upload: {packages}} = values let {upload: {packages}} = values
const _package = packages.find(p => p.id == pack.id)
dispatch({type: "packages/patch", payload: {appId: id, ..._package}})
}
});
}
onNewPackageVersion = (e, pack) => {
const {form, dispatch, params: {id}} = this.props
dispatch({type: "Apps/addPackage", payload: {id, packages}}) e && e.preventDefault();
form.validateFieldsAndScroll((err, values) => {
if (!err) {
console.log('Received values of form: ', values);
//
let {upload: {packages}} = values
const _package = packages.find(p => p.id == pack.id)
dispatch({type: "packages/add", payload: {appId: id, ..._package}})
} }
}); });
} }
onDeletePackage = (_id) => { handleUrlUpload = (e, pack) => {
const {form, dispatch, params: {id}} = this.props const {form, dispatch, params: {id}} = this.props
e && e.preventDefault();
form.validateFieldsAndScroll((err, values) => { form.validateFieldsAndScroll((err, values) => {
if (!err) { if (!err) {
console.log('Received values of form: ', values);
let {upload: {packages}} = values let {upload: {packages}} = values
packages.splice(_id, 1) const _package = packages.find(p => p.id == pack.id)
dispatch({type: "Apps/update", payload: {id, packages}}) dispatch({type: "packages/urlUpload", payload: {appId: id, ..._package}})
}
});
}
// onUpdatePackage = (e) => {
// const {form, dispatch, params: {id}} = this.props
//
// e && e.preventDefault();
// form.validateFieldsAndScroll((err, values) => {
// if (!err) {
// console.log('Received values of form: ', values);
//
// // let {upload: {packages}} = values
// let {packages} = this.state
//
//
// dispatch({type: "Apps/updatePackage", payload: {id, packages}})
// }
// });
// }
onDeletePackage = (pack) => {
const {form, dispatch, params: {id}} = this.props
form.validateFieldsAndScroll((err, values) => {
if (!err) {
let {upload: {packages}} = values
const _package = packages.find(p => p.id == pack.id)
dispatch({type: "packages/delete", payload: {appId:id, ..._package}})
} }
}); });
} }
...@@ -246,7 +323,7 @@ class AppDetail extends React.Component { ...@@ -246,7 +323,7 @@ class AppDetail extends React.Component {
}) })
// this.onSubmitUpload() // this.onSubmitUpload()
this.onAddPackage() // this.onAddPackage()
} }
remove = async (targetKey) => { remove = async (targetKey) => {
...@@ -255,13 +332,17 @@ class AppDetail extends React.Component { ...@@ -255,13 +332,17 @@ class AppDetail extends React.Component {
content: '你真的确定要删除嘛?', content: '你真的确定要删除嘛?',
onOk: async () => { onOk: async () => {
let {packages} = this.state let {packages} = this.state
let _package = packages[targetKey]
if(_package._id) {
this.onDeletePackage(_package)
}
packages.splice(targetKey, 1) packages.splice(targetKey, 1)
await this.setState({ this.setState({
packages packages
}) })
return this.onDeletePackage(targetKey)
}, },
}) })
} }
...@@ -287,12 +368,11 @@ class AppDetail extends React.Component { ...@@ -287,12 +368,11 @@ class AppDetail extends React.Component {
} }
render() { render() {
const {form, App, loading} = this.props const {form, App, loading, dispatch} = this.props
const {getFieldDecorator} = form const {getFieldDecorator} = form
const {id, author, homepage, references = {}, dependencies = {}, description = {}, actions = {}, version = {}, name = {}, category, tags = [], locales = [], conference, icon, cover, background,} = App const {id, author, homepage, references = {}, dependencies = {}, description = {}, actions = {}, version = {}, name = {}, category, tags = [], locales = [], conference, icon, cover, background,} = App
const {publishers, developers, previewVisible, previewImage, iconList, coverList, backgroundList, isCreateNews, news, packages} = this.state const {publishers, developers, previewVisible, previewImage, iconList, coverList, backgroundList, isCreateNews, news, packages} = this.state
return ( return (
<Spin spinning={loading.global}> <Spin spinning={loading.global}>
<Tabs defaultActiveKey="1" className="app-detail-nav"> <Tabs defaultActiveKey="1" className="app-detail-nav">
...@@ -682,6 +762,24 @@ class AppDetail extends React.Component { ...@@ -682,6 +762,24 @@ class AppDetail extends React.Component {
)} )}
</FormItem> </FormItem>
<FormItem {...formItemLayout} help="id" style={{display: "none"}}>
{getFieldDecorator(`upload["packages"][${i}]["status"]`, {
initialValue: pack["status"]
})(
<Input addonBefore={<Icon type="info-circle-o"/>} placeholder="status" disabled/>
)}
</FormItem>
{ pack["status"] !== 'uploaded' &&
<FormItem {...formItemLayout} help="id" style={{display: "none"}}>
{getFieldDecorator(`upload["packages"][${i}]["_id"]`, {
initialValue: pack["_id"]
})(
<Input addonBefore={<Icon type="info-circle-o"/>} placeholder="_id" disabled/>
)}
</FormItem>
}
<FormItem {...formItemLayout} help="name"> <FormItem {...formItemLayout} help="name">
{getFieldDecorator(`upload["packages"][${i}]["name"]`, { {getFieldDecorator(`upload["packages"][${i}]["name"]`, {
initialValue: pack["name"] initialValue: pack["name"]
...@@ -694,7 +792,8 @@ class AppDetail extends React.Component { ...@@ -694,7 +792,8 @@ class AppDetail extends React.Component {
{getFieldDecorator(`upload["packages"][${i}]["version"]`, { {getFieldDecorator(`upload["packages"][${i}]["version"]`, {
initialValue: pack["version"] initialValue: pack["version"]
})( })(
<Input addonBefore={<Icon type="info-circle-o"/>} placeholder="版本号"/> <Input addonBefore={<Icon type="info-circle-o"/>} placeholder="版本号"
disabled={pack.status !== 'new' && pack.status !== 'init' && pack.status !== 'failed'}/>
)} )}
</FormItem> </FormItem>
...@@ -722,42 +821,97 @@ class AppDetail extends React.Component { ...@@ -722,42 +821,97 @@ class AppDetail extends React.Component {
)} )}
</FormItem> </FormItem>
<FormItem {...formItemLayout}> <FormItem {...formItemLayout} >
<div className={styles.wrapSubmit}>
{
pack.status == 'uploaded' && <Button type="primary" onClick={(e) => this.onNewPackageVersion(e, pack)} size="large">发布新版本</Button>
}
{
pack.status == 'uploading' && <Button type="primary" size="large" disabled>上传中...</Button>
}
{
pack.status == 'init' && <Button type="primary" onClick={(e) => this.onPatchPackage(e, pack)} size="large">保存</Button>
}
{
pack.status == 'new' && <Button type="primary" onClick={(e) => this.onAddPackage(e, pack)} size="large">提交</Button>
}
</div>
</FormItem>
{
pack.status == 'uploaded' &&
<Card title="详细信息">
<p>_id: {pack._id}</p>
<p>id: {pack.id}</p>
<p>name: {pack.name}</p>
<p>version: {pack.version}</p>
<p>locales: {pack.locales.map((locale, i) => {
return <span key={i} style={{padding: "0 2px"}}>{locale}</span>
})}</p>
<p>platforms: {pack.platforms.map((platform,i) => {
return <span key={i} style={{padding: "0 2px"}}>{platform}</span>
})}</p>
<p>files: {pack.files.length}</p>
</Card>
}
{pack.status !== 'uploaded' &&<FormItem {...formItemLayout}>
{getFieldDecorator(`upload["packages"][${i}]["upload"]`, {})( {getFieldDecorator(`upload["packages"][${i}]["upload"]`, {})(
<Tabs defaultActiveKey="1" size="small"> <Tabs defaultActiveKey="1" size="small">
<TabPane tab="url上传" key="1"> <TabPane tab="url上传" key="1">
{getFieldDecorator(`upload["packages"][${i}]["url"]`, { {getFieldDecorator(`upload["packages"][${i}]["url"]`, {
// initialValue: pack["url"] // initialValue: pack["url"]
})( })(
<div> <div style={{display: 'flex', flexDirection: 'column', alignItems: 'center'}}>
<Input addonBefore={<Icon type="uplaad"/>} placeholder="url"/> {
请确认输入的链接真实有效~ pack.status == 'failed' && <Alert message="上传失败,请重试" type="warning" showIcon />
}
<Input
addonBefore={<Icon type="upload"/>}
placeholder="请确认输入的链接真实有效~"
disabled={pack.status !== 'init' && pack.status !== 'failed'}/>
<Button
type="primary"
onClick={(e) => this.handleUrlUpload(e, pack)}
loading={loading.global}
size="small" style={{margin: "1vh 0"}}
disabled={pack.status !== 'init' && pack.status !== 'failed'}
>上传</Button>
</div> </div>
)} )}
</TabPane> </TabPane>
<TabPane tab="直接上传" key="2"> <TabPane tab="直接上传" key="2">
{
pack.status == 'failed' && <Alert message="上传失败,请重试" type="warning" showIcon />
}
<Dragger <Dragger
{...uploadProps} {...uploadProps}
action={`${config.apiRoot}/upload/packages/${pack["id"]}`} onChange={(info) => {
disabled={pack.isNew}> const status = info.file.status;
console.log(info)
if (status !== 'uploading') {
console.log(info.file, info.fileList);
}
if (status === 'done') {
dispatch({type: 'packages/fetch', payload: {appId: this.props.params.id}})
} else if (status === 'error') {
message.error(info.file.response.message);
}
}}
disabled={ pack.status !== 'init' && pack.status !== 'failed'}
action={`${config.apiRoot}/upload/package/${pack["_id"]}`}
>
<p className="ant-upload-drag-icon"> <p className="ant-upload-drag-icon">
<Icon type="inbox"/> <Icon type="inbox"/>
</p> </p>
<p className="ant-upload-text">Click or drag file to this area to upload</p> <p className="ant-upload-text">Click or drag file to this area to upload</p>
<p className="ant-upload-hint">Support for a single or bulk upload. Strictly
prohibit
from uploading company data or other band files</p>
</Dragger> </Dragger>
</TabPane> </TabPane>
</Tabs> </Tabs>
)} )}
</FormItem> </FormItem>}
<FormItem {...formItemLayout} >
<div className={styles.wrapSubmit}>
<Button type="primary" htmlType="submit" size="large">提交</Button>
</div>
</FormItem>
</Form> </Form>
</TabPane> </TabPane>
) )
...@@ -782,13 +936,17 @@ function mapStateToProps(state, props) { ...@@ -782,13 +936,17 @@ function mapStateToProps(state, props) {
const {params: {id}} = props const {params: {id}} = props
const { const {
Apps: {apps}, Apps: {apps},
packages: {packages},
loading loading
} = state } = state
const App = apps[id] || {} const App = apps[id] || {}
const _packages = packages[id] || []
return { return {
loading, loading,
packages: _packages,
App App
}; };
} }
......
import request from '../utils/request' import request from '../utils/request'
export async function create(params) { export async function add(params) {
return request(`/packages/${params.id}`, { return request(`/packages`, {
method: 'POST', method: 'POST',
body: JSON.stringify(params) body: JSON.stringify(params)
}) })
} }
export async function patch(params) {
return request(`/packages`, {
method: 'PATCH',
body: JSON.stringify(params)
})
}
export async function fetch(params) {
return request(`/packages/manage?appId=${params.appId}`, {
method: 'GET',
})
}
export async function urlUpload(params) {
return request('/upload/packageUrl', {
method: 'POST',
body: JSON.stringify(params)
})
}
export async function del(params) {
return request(`/packages`, {
method: 'DELETE',
body: JSON.stringify(params)
})
}
...@@ -215,6 +215,10 @@ assert@^1.1.1: ...@@ -215,6 +215,10 @@ assert@^1.1.1:
dependencies: dependencies:
util "0.10.3" util "0.10.3"
assertion-error@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b"
ast-types@0.9.6: ast-types@0.9.6:
version "0.9.6" version "0.9.6"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9"
...@@ -1166,6 +1170,13 @@ center-align@^0.1.1: ...@@ -1166,6 +1170,13 @@ center-align@^0.1.1:
align-text "^0.1.3" align-text "^0.1.3"
lazy-cache "^1.0.3" lazy-cache "^1.0.3"
chai@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/chai/-/chai-2.3.0.tgz#8a2f6a34748da801090fd73287b2aa739a4e909a"
dependencies:
assertion-error "1.0.0"
deep-eql "0.1.3"
chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
...@@ -1641,6 +1652,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: ...@@ -1641,6 +1652,12 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0" version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
deep-eql@0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
dependencies:
type-detect "0.1.1"
deep-equal@^1.0.0: deep-equal@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
...@@ -5558,6 +5575,10 @@ type-check@~0.3.2: ...@@ -5558,6 +5575,10 @@ type-check@~0.3.2:
dependencies: dependencies:
prelude-ls "~1.1.2" prelude-ls "~1.1.2"
type-detect@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
type-is@~1.6.14: type-is@~1.6.14:
version "1.6.15" version "1.6.15"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
...@@ -5679,6 +5700,12 @@ vendors@^1.0.0: ...@@ -5679,6 +5700,12 @@ vendors@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
vercomp@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/vercomp/-/vercomp-1.0.2.tgz#725fd292c099014d919ad9e9e05d3d25c7cff491"
dependencies:
chai "^2.2.0"
verror@1.3.6: verror@1.3.6:
version "1.3.6" version "1.3.6"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment