Commit 3f0e93d4 authored by nano's avatar nano

fix lint

parent 24bbadbe
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
max_line_length = 0
trim_trailing_whitespace = false
# Indentation override
#[lib/**.js]
#[{package.json,.travis.yml}]
#[**/**.js]
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectCodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS">
<value>
<DBN-PSQL>
<case-options enabled="false">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false" />
</DBN-PSQL>
<DBN-SQL>
<case-options enabled="false">
<option name="KEYWORD_CASE" value="lower" />
<option name="FUNCTION_CASE" value="lower" />
<option name="PARAMETER_CASE" value="lower" />
<option name="DATATYPE_CASE" value="lower" />
<option name="OBJECT_CASE" value="preserve" />
</case-options>
<formatting-settings enabled="false">
<option name="STATEMENT_SPACING" value="one_line" />
<option name="CLAUSE_CHOP_DOWN" value="chop_down_if_statement_long" />
<option name="ITERATION_ELEMENTS_WRAPPING" value="chop_down_if_not_single" />
</formatting-settings>
</DBN-SQL>
<TypeScriptCodeStyleSettings>
<option name="FORCE_SEMICOLON_STYLE" value="true" />
<option name="USE_DOUBLE_QUOTES" value="false" />
<option name="FORCE_QUOTE_STYlE" value="true" />
</TypeScriptCodeStyleSettings>
<codeStyleSettings language="JavaScript">
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
<codeStyleSettings language="TypeScript">
<option name="RIGHT_MARGIN" value="100" />
<indentOptions>
<option name="INDENT_SIZE" value="2" />
<option name="CONTINUATION_INDENT_SIZE" value="2" />
<option name="TAB_SIZE" value="2" />
</indentOptions>
</codeStyleSettings>
</value>
</option>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="TsLint" enabled="true" level="ERROR" enabled_by_default="true" />
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectTasksOptions" suppressed-tasks="Babel" />
</project>
\ No newline at end of file
......@@ -2,13 +2,27 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.editorconfig" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/codeStyleSettings.xml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/Project_Default.xml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/watcherTasks.xml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/tslint.json" />
<change type="DELETED" beforePath="$PROJECT_DIR$/src/checksum.ts" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/Dockerfile" afterPath="$PROJECT_DIR$/Dockerfile" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package/main.ts" afterPath="$PROJECT_DIR$/package/main.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package/utils.ts" afterPath="$PROJECT_DIR$/package/utils.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/server.ts" afterPath="$PROJECT_DIR$/server.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/inversify.config.ts" afterPath="$PROJECT_DIR$/src/inversify.config.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/App.ts" afterPath="$PROJECT_DIR$/src/models/App.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/Iridium.ts" afterPath="$PROJECT_DIR$/src/models/Iridium.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/Package.ts" afterPath="$PROJECT_DIR$/src/models/Package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/app.ts" afterPath="$PROJECT_DIR$/src/routes/app.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/package.ts" afterPath="$PROJECT_DIR$/src/routes/package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/upload.ts" afterPath="$PROJECT_DIR$/src/routes/upload.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/types.ts" afterPath="$PROJECT_DIR$/src/types.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/utils.ts" afterPath="$PROJECT_DIR$/src/utils.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/yarn.lock" afterPath="$PROJECT_DIR$/yarn.lock" />
</list>
<ignored path="mycard-console-backend.iws" />
<ignored path=".idea/workspace.xml" />
......@@ -31,13 +45,47 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="Package.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-939">
<caret line="3" column="45" lean-forward="false" selection-start-line="3" selection-start-column="45" selection-end-line="3" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Iridium.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding>
<element signature="e#0#36#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="app.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<state relative-caret-position="936">
<caret line="52" column="41" lean-forward="false" selection-start-line="52" selection-start-column="41" selection-end-line="52" selection-end-column="41" />
<folding>
<element signature="e#39#81#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-848">
<caret line="43" column="5" lean-forward="true" selection-start-line="43" selection-start-column="5" selection-end-line="43" selection-end-column="5" />
<folding>
<element signature="e#39#80#0" expanded="true" />
<element signature="e#39#74#0" expanded="true" />
</folding>
</state>
</provider>
......@@ -46,8 +94,8 @@
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1454">
<caret line="106" column="36" lean-forward="false" selection-start-line="106" selection-start-column="36" selection-end-line="106" selection-end-column="36" />
<state relative-caret-position="414">
<caret line="23" column="43" lean-forward="false" selection-start-line="23" selection-start-column="43" selection-end-line="23" selection-end-column="43" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
......@@ -55,25 +103,44 @@
</provider>
</entry>
</file>
<file leaf-file-name="package.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<file leaf-file-name="inversify.config.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/inversify.config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="178">
<caret line="27" column="0" lean-forward="true" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
<folding>
<element signature="e#39#73#0" expanded="true" />
</folding>
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="main.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package/main.ts">
<file leaf-file-name="types.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/types.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="513">
<caret line="65" column="44" lean-forward="false" selection-start-line="65" selection-start-column="44" selection-end-line="65" selection-end-column="44" />
<state relative-caret-position="54">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="utils.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="10" column="26" lean-forward="false" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="server.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-867">
<caret line="12" column="36" lean-forward="true" selection-start-line="12" selection-start-column="36" selection-end-line="12" selection-end-column="36" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#77#104#0" expanded="true" />
<element signature="e#387#427#0" expanded="true" />
</folding>
</state>
</provider>
......@@ -110,9 +177,10 @@
<find>update</find>
<find>!</find>
<find>dep</find>
<find>full</find>
<find>fullPath</find>
<find>onFile</find>
<find>full</find>
<find>up</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -125,30 +193,33 @@
<option value="$PROJECT_DIR$/docker-compose.yml" />
<option value="$PROJECT_DIR$/src/models/app.ts" />
<option value="$PROJECT_DIR$/src/models/mongodb.js" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/src/models/mongodb.ts" />
<option value="$PROJECT_DIR$/src/types.ts" />
<option value="$PROJECT_DIR$/src/models/inversify.config.ts" />
<option value="$PROJECT_DIR$/src/inversify.config.ts" />
<option value="$PROJECT_DIR$/src/models/User.ts" />
<option value="$PROJECT_DIR$/tsconfig.json" />
<option value="$PROJECT_DIR$/src/models/Iridium.ts" />
<option value="$PROJECT_DIR$/bin/run" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/src/routes/config.ts" />
<option value="$PROJECT_DIR$/src/routes/package.json" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/views/update.hbs" />
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/.tslint" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/.editorconfig" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/tslint.json" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/src/models/Iridium.ts" />
<option value="$PROJECT_DIR$/src/models/Package.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/src/inversify.config.ts" />
<option value="$PROJECT_DIR$/src/types.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/server.ts" />
</list>
</option>
</component>
......@@ -168,10 +239,10 @@
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="413" />
<option name="y" value="95" />
<option name="x" value="173" />
<option name="y" value="46" />
<option name="width" value="1474" />
<option name="height" value="777" />
<option name="height" value="849" />
</component>
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="2" id="Add" />
......@@ -205,38 +276,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="upload" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="test" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
......@@ -265,7 +304,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="routes" />
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
......@@ -279,7 +318,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="package" />
<option name="myItemId" value="bin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
......@@ -293,10 +332,12 @@
<property name="js.eslint.eslintPackage" value="" />
<property name="js-jscs-nodeInterpreter" value="/usr/local/bin/node" />
<property name="HbShouldOpenHtmlAsHb" value="" />
<property name="settings.editor.selected.configurable" value="Settings.JavaScript" />
<property name="settings.editor.selected.configurable" value="preferences.sourceCode.TypeScript" />
<property name="JavaScriptPreferStrict" value="true" />
<property name="JavaScriptWeakerCompletionTypeGuess" value="false" />
<property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;file:///Users/vai/fun/moecube-console/src/routes/app.ts" />
<property name="node.js.path.for.package.tslint" value="project" />
<property name="node.js.selected.package.tslint" value="$PROJECT_DIR$/node_modules/tslint" />
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
......@@ -434,12 +475,12 @@
<workItem from="1492482951965" duration="50292000" />
<workItem from="1492655792313" duration="22867000" />
<workItem from="1492741754173" duration="2869000" />
<workItem from="1492753774887" duration="5690000" />
<workItem from="1492753774887" duration="8972000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="114320000" />
<option name="totallyTimeSpent" value="117602000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -451,19 +492,20 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="413" y="95" width="1474" height="777" extended-state="0" />
<frame x="173" y="46" width="1474" height="849" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TypeScript" 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="7" 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.24019271" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<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="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="DB Execution Console" 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="8" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" 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="true" 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.32990867" sideWeight="0.5" order="7" 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.32975295" 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.41215324" 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="true" show_stripe_button="true" weight="0.32893" sideWeight="0.5" order="7" 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.24019271" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32876712" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" 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.3591241" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.23725356" sideWeight="0.50615114" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
......@@ -472,7 +514,6 @@
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Thumbnails" 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="9" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.091216214" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32876712" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
......@@ -519,41 +560,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="234">
<caret line="15" column="6" lean-forward="true" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" />
<folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414">
<caret line="23" column="20" lean-forward="true" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="13" column="3" lean-forward="true" selection-start-line="13" selection-start-column="3" selection-end-line="13" selection-end-column="3" />
<folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/iridium/dist/lib/Decorators.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="720">
<caret line="45" column="24" lean-forward="false" selection-start-line="45" selection-start-column="24" selection-end-line="45" selection-end-column="24" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
......@@ -573,9 +579,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="840">
<caret line="44" column="29" lean-forward="false" selection-start-line="44" selection-start-column="29" selection-end-line="44" selection-end-column="29" />
<folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
<folding />
</state>
</provider>
</entry>
......@@ -592,9 +596,7 @@
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
<caret line="6" column="0" lean-forward="false" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
<folding />
</state>
</provider>
</entry>
......@@ -629,13 +631,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/types.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="72">
<caret line="4" column="20" lean-forward="true" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/mongodb.ts" />
<entry file="file://$PROJECT_DIR$/node_modules/@types/koa/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
......@@ -665,13 +660,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/bin/run">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/@types/fs-extra-promise/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172">
......@@ -679,13 +667,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="7" column="19" lean-forward="true" selection-start-line="7" selection-start-column="19" selection-end-line="7" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/iridium/dist/test/Utilities.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="324">
......@@ -723,28 +704,6 @@
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.json" />
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="7" lean-forward="false" selection-start-line="0" selection-start-column="7" selection-end-line="0" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/inversify.config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414">
<caret line="23" column="4" lean-forward="true" selection-start-line="23" selection-start-column="4" selection-end-line="23" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tsconfig.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
......@@ -760,14 +719,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="25">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
......@@ -794,76 +745,171 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="174">
<caret line="14" column="16" lean-forward="true" selection-start-line="14" selection-start-column="16" selection-end-line="14" selection-end-column="16" />
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="false" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<state relative-caret-position="225">
<caret line="44" column="21" lean-forward="false" selection-start-line="44" selection-start-column="21" selection-end-line="44" selection-end-column="21" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<entry file="file://$PROJECT_DIR$/node_modules/@types/node/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="324">
<caret line="18" column="1" lean-forward="true" selection-start-line="18" selection-start-column="1" selection-end-line="18" selection-end-column="1" />
<state relative-caret-position="107">
<caret line="1831" column="15" lean-forward="false" selection-start-line="1831" selection-start-column="15" selection-end-line="1831" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<entry file="file://$PROJECT_DIR$/bin/run">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1454">
<caret line="106" column="36" lean-forward="false" selection-start-line="106" selection-start-column="36" selection-end-line="106" selection-end-column="36" />
<state relative-caret-position="72">
<caret line="4" column="40" lean-forward="true" selection-start-line="4" selection-start-column="40" selection-end-line="4" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="231">
<caret line="61" column="44" lean-forward="true" selection-start-line="61" selection-start-column="44" selection-end-line="61" selection-end-column="44" />
<folding>
<element signature="e#0#28#0" expanded="true" />
<element signature="e#0#29#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="15" column="43" lean-forward="false" selection-start-line="15" selection-start-column="43" selection-end-line="15" selection-end-column="43" />
<state relative-caret-position="72">
<caret line="4" column="0" lean-forward="true" selection-start-line="4" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding>
<element signature="e#0#38#0" expanded="true" />
<element signature="e#0#39#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/main.ts">
<entry file="file://$PROJECT_DIR$/src/checksum.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="513">
<caret line="65" column="44" lean-forward="false" selection-start-line="65" selection-start-column="44" selection-end-line="65" selection-end-column="44" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
<state relative-caret-position="306">
<caret line="17" column="0" lean-forward="true" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tslint.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="7" column="19" lean-forward="true" selection-start-line="7" selection-start-column="19" selection-end-line="7" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.editorconfig">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="15" lean-forward="true" selection-start-line="6" selection-start-column="15" selection-end-line="6" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="187">
<caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<state relative-caret-position="936">
<caret line="52" column="41" lean-forward="false" selection-start-line="52" selection-start-column="41" selection-end-line="52" selection-end-column="41" />
<folding>
<element signature="e#39#80#0" expanded="true" />
<element signature="e#39#81#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="178">
<caret line="27" column="0" lean-forward="true" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
<state relative-caret-position="-848">
<caret line="43" column="5" lean-forward="true" selection-start-line="43" selection-start-column="5" selection-end-line="43" selection-end-column="5" />
<folding>
<element signature="e#39#74#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414">
<caret line="23" column="43" lean-forward="false" selection-start-line="23" selection-start-column="43" selection-end-line="23" selection-end-column="43" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="291">
<caret line="115" column="29" lean-forward="true" selection-start-line="115" selection-start-column="29" selection-end-line="115" selection-end-column="29" />
<folding>
<element signature="e#0#62#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-939">
<caret line="3" column="45" lean-forward="false" selection-start-line="3" selection-start-column="45" selection-end-line="3" selection-end-column="45" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Iridium.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="11" column="0" lean-forward="true" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding>
<element signature="e#0#36#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/inversify.config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="0" lean-forward="true" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/types.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="0" lean-forward="true" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="10" column="26" lean-forward="false" selection-start-line="10" selection-start-column="26" selection-end-line="10" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-867">
<caret line="12" column="36" lean-forward="true" selection-start-line="12" selection-start-column="36" selection-end-line="12" selection-end-column="36" />
<folding>
<element signature="e#39#73#0" expanded="true" />
<element signature="e#77#104#0" expanded="true" />
<element signature="e#387#427#0" expanded="true" />
</folding>
</state>
</provider>
......
import * as _fs from 'fs'
import * as path from 'path'
import * as fs from 'fs-extra-promise'
import {mongodb} from '../src/models/iridium'
import {crawlPath, caculateSHA256, archive, archiveSingle, untar} from "./utils";
import {Archive, File} from "../src/models/Package";
import {file} from "tmp";
import * as path from 'path';
import * as fs from 'fs-extra-promise';
import {archive, archiveSingle, caculateSHA256, crawlPath, untar} from './utils';
import {Archive, File} from '../src/models/Package';
const upload_path = path.join(__dirname, '../test/upload')
const release_path = path.join(__dirname, '../test/release')
const app_path = path.join(__dirname, '../test/apps')
const upload_path = path.join(__dirname, '../test/upload');
const release_path = path.join(__dirname, '../test/release');
const app_path = path.join(__dirname, '../test/apps');
export async function bundle(...args) {
const [package_id] = args
const [package_id] = args;
console.log(`package ${package_id}`);
await fs.ensureDirAsync(release_path)
await fs.ensureDirAsync(app_path)
await fs.ensureDirAsync(upload_path)
await fs.ensureDirAsync(release_path);
await fs.ensureDirAsync(app_path);
await fs.ensureDirAsync(upload_path);
const archive_path = path.join(release_path, 'downloads', package_id)
const archive_path = path.join(release_path, 'downloads', package_id);
const package_path = path.join(app_path, package_id);
const uploadFile_path = path.join(upload_path, package_id)
const full_path = path.join(archive_path, 'full')
const sand_path = path.join(archive_path, 'sand')
await fs.ensureDirAsync(archive_path)
await fs.ensureDirAsync(package_path)
await fs.ensureDirAsync(full_path)
await fs.ensureDirAsync(sand_path)
const uploadFile_path = path.join(upload_path, package_id);
const full_path = path.join(archive_path, 'full');
const sand_path = path.join(archive_path, 'sand');
await fs.ensureDirAsync(archive_path);
await fs.ensureDirAsync(package_path);
await fs.ensureDirAsync(full_path);
await fs.ensureDirAsync(sand_path);
// untar upload package
await untar(uploadFile_path, package_path)
await untar(uploadFile_path, package_path);
let files = new Map<string, File>();
let archives = new Map<string, Archive>();
......@@ -39,52 +36,51 @@ export async function bundle(...args) {
await crawlPath(package_path, {
relative: true,
onFile: async (file) => {
let file_hash = await caculateSHA256(file)
let file_hash = await caculateSHA256(file);
files.set(file, {
path: path.relative(package_path,file),
path: path.relative(package_path, file),
hash: file_hash,
size: (await fs.statAsync(file)).size
})
});
let sand_file = path.join(sand_path, `${file_hash}.tar.gz`)
let sand_file = path.join(sand_path, `${file_hash}.tar.gz`);
await archiveSingle(sand_file, [file], package_path)
await archiveSingle(sand_file, [file], package_path);
let sand_hash = await caculateSHA256(sand_file)
let sand_hash = await caculateSHA256(sand_file);
archives.set(sand_file, {
path: path.relative(sand_path, sand_file),
hash: sand_hash,
size: (await fs.statAsync(sand_file)).size
})
});
await fs.renameAsync(sand_file, path.join(path.dirname(sand_file), `${sand_hash}.tar.gz`))
await fs.renameAsync(sand_file, path.join(path.dirname(sand_file), `${sand_hash}.tar.gz`));
},
onDir: async (_files, _path, depth) => {
files.set(_path, {
path: path.relative(package_path, _path),
})
});
},
})
});
let filePath = path.join(full_path, `${package_id}.tar.gz`)
let filePath = path.join(full_path, `${package_id}.tar.gz`);
await fs.removeAsync(filePath)
await archive(filePath, await fs.readdirAsync(package_path), package_path)
await fs.removeAsync(filePath);
await archive(filePath, await fs.readdirAsync(package_path), package_path);
const fullHash = await caculateSHA256(filePath)
const fullSize = (await fs.statAsync(filePath)).size
const fullHash = await caculateSHA256(filePath);
const fullSize = (await fs.statAsync(filePath)).size;
let fullPath = path.join(path.dirname(filePath), `${fullHash}.tar.gz`)
await fs.renameAsync(filePath, fullPath)
let fullPath = path.join(path.dirname(filePath), `${fullHash}.tar.gz`);
await fs.renameAsync(filePath, fullPath);
return {
files: Array.from(files.values()),
archives: Array.from(archives.values()),
fullSize,
fullHash
}
};
}
import * as fs from 'fs-extra-promise'
import * as _fs from 'fs'
import * as crypto from 'crypto'
import * as child_process from 'child_process'
// import * as tar from 'tar-stream'
// import * as fstream from 'fstream'
import * as fs from 'fs-extra-promise';
import * as _fs from 'fs';
import * as crypto from 'crypto';
import * as child_process from 'child_process';
interface crawOptions {
onDir: (files: string | string[], _path: string, depth: number) => Promise<void>;
......@@ -12,32 +11,32 @@ interface crawOptions {
export async function crawlPath(_path, options: crawOptions, depth = 0) {
if (await isDir(_path)) {
depth += 1
const files = await fs.readdirAsync(_path)
await options.onDir(files, _path, depth)
depth += 1;
const files = await fs.readdirAsync(_path);
await options.onDir(files, _path, depth);
if (files) {
for (let fileName of files) {
const file = `${_path}/${fileName}`
const file = `${_path}/${fileName}`;
if (await isDir(file)) {
await crawlPath(file, options, depth)
await crawlPath(file, options, depth);
} else if (await isFile(file)) {
await options.onFile(file)
await options.onFile(file);
}
}
}
} else if (await isFile(_path)) {
await options.onFile(_path)
await options.onFile(_path);
}
}
export async function isDir(path) {
return (await fs.lstatAsync(path)).isDirectory()
return (await fs.lstatAsync(path)).isDirectory();
}
export async function isFile(path) {
return (await fs.lstatAsync(path)).isFile()
return (await fs.lstatAsync(path)).isFile();
}
......@@ -54,14 +53,14 @@ export function archiveSingle(archive: string, files: string[], directory: strin
let child = child_process.spawn("tar", ["-czf", archive, '-P', '-C', directory].concat(files), {stdio: 'inherit'});
child.on('exit', (code) => {
if (code == 0) {
resolve()
resolve();
} else {
reject(code);
}
});
child.on('error', (error) => {
reject(error);
})
});
});
}
......@@ -70,14 +69,14 @@ export function archive(archive: string, files: string[], directory: string): Pr
let child = child_process.spawn("tar", ["-vczf", archive, '-C', directory].concat(files), {stdio: 'inherit'});
child.on('exit', (code) => {
if (code == 0) {
resolve()
resolve();
} else {
reject(code);
}
});
child.on('error', (error) => {
reject(error);
})
});
});
}
......@@ -86,14 +85,14 @@ export function untar(archive: string, directory: string): Promise<void> {
let child = child_process.spawn("tar", ["-xvf", archive, '-C', directory], {stdio: 'inherit'});
child.on('exit', (code) => {
if (code == 0) {
resolve()
resolve();
} else {
reject(code);
}
});
child.on('error', (error) => {
reject(error);
})
});
});
}
......@@ -102,7 +101,7 @@ export function caculateSHA256(file: string): Promise<string> {
let input = _fs.createReadStream(file);
const hash = crypto.createHash("sha256");
hash.on("error", (error: Error) => {
reject(error)
reject(error);
});
input.on("error", (error: Error) => {
reject(error);
......
if(process.env.NODE_ENV !== 'production') {
require('dotenv').config()
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config();
}
import * as Koa from 'koa'
import * as log4js from 'log4js'
import * as bodyParser from 'koa-bodyparser'
import * as hbs from 'koa-hbs'
import { mongodb } from './src/models/iridium'
import * as Koa from 'koa';
import * as log4js from 'log4js';
import * as bodyParser from 'koa-bodyparser';
import * as hbs from 'koa-hbs';
import {mongodb} from './src/models/iridium';
// import index from './routes/index';
import upload from './src/routes/upload';
// import users from './src/routes/users';
import package from './src/routes/package'
import pack from './src/routes/package';
import apps from './src/routes/app';
// import packages from './routes/packages';
......@@ -23,7 +22,7 @@ app.use(hbs.middleware({
viewPath: __dirname + '/views',
}));
app.use(async(ctx, next) => {
app.use(async (ctx, next) => {
const start = new Date();
await next();
const ms = Date.now() - start.getTime();
......@@ -31,7 +30,7 @@ app.use(async(ctx, next) => {
});
// 错误处理
app.use(async(ctx, next) => {
app.use(async (ctx, next) => {
try {
await next();
} catch (err) {
......@@ -53,7 +52,7 @@ app.use(async(ctx, next) => {
});
// 跨域
app.use(async(ctx, next) => {
app.use(async (ctx, next) => {
ctx.set('Access-Control-Allow-Origin', '*');
ctx.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH');
ctx.set('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With',);
......@@ -70,13 +69,13 @@ app.use(bodyParser());
// app.use(users.routes());
app.use(apps.routes());
app.use(upload.routes());
app.use(package.routes());
app.use(pack.routes());
// app.use(packages.routes());
mongodb.connect().then(() => {
app.listen(8001, () => {
console.log("app listening port 8001")
console.log('app listening port 8001');
});
})
});
/**
* Created by zh99998 on 2017/4/21.
*/
export function renderChecksum(files: { path: string, hash?: string }[]) {
return files.map(({ path, hash }) => `${hash || ''} ${path}`).join('\n');
}
// 用法示例
// const example = [
// { path: 'README', hash: '11111111111111111111111111111111', size: 1 },
// { path: 'main.exe', hash: '22222222222222222222222222222222', size: 2 },
// { path: 'assets' }, // 对于目录,置 hash 为空 (undefiend 或 不存在)
// { path: 'assets/1.png', hash: '33333333333333333333333333333333', size: 3 }
// ];
//
// console.log(renderChecksum(example));
import { Container } from 'inversify'
import TYPES from './types'
import {Container} from 'inversify';
const container = new Container()
const container = new Container();
export default container
\ No newline at end of file
export default container;
import {Core, Model, Instance, Collection, Index, Property, ObjectID} from 'iridium'
import {handleImg} from '../utils'
import {Collection, Index, Instance, Property} from 'iridium';
import {handleImg} from '../utils';
interface I18n<T> {
[locale: string]: T;
......@@ -9,7 +9,7 @@ interface Platform<T> {
[platform: string]: T;
}
interface Package{
interface Package {
id: string;
name: string;
platforms: Platform<string[]>;
......@@ -27,9 +27,9 @@ interface File {
export interface App {
id: string;
name?: I18n<string>;
description?: I18n<string>
developers?: I18n<[{ name: string, url: string }]>
publishers?: I18n<[{ name: string, url: string }]>
description?: I18n<string>;
developers?: I18n<[{ name: string, url: string }]>;
publishers?: I18n<[{ name: string, url: string }]>;
released_at?: string;
category?: string;
parent?: string;
......@@ -38,10 +38,10 @@ export interface App {
references?: Platform<string[]>;
homepage?: string;
locales?: string[];
actions?: Platform<{[key: string]: {execuate: string, args: string[], env: {[key: string]: string}}}>;
files?: {[key: string]: { sync: boolean}}
actions?: Platform<{ [key: string]: { execuate: string, args: string[], env: { [key: string]: string } } }>;
files?: { [key: string]: { sync: boolean } };
version?: Platform<string>;
news?: I18n<{title: string, url: string, image: string}[]>;
news?: I18n<{ title: string, url: string, image: string }[]>;
conference?: string;
data?: any;
icon?: string;
......@@ -52,18 +52,18 @@ export interface App {
}
@Collection('apps')
@Index({id: 1}, { unique: true })
@Index({id: 1}, {unique: true})
export class AppSchema extends Instance<App, AppSchema> implements App {
@Property(String, true)
id: string;
@Property(Object, false)
name?: I18n<string>;
@Property(Object, false)
description?: I18n<string>
description?: I18n<string>;
@Property(Object, false)
developers?: I18n<[{ name: string, url: string }]>
developers?: I18n<[{ name: string, url: string }]>;
@Property(Object, false)
publishers?: I18n<[{ name: string, url: string }]>
publishers?: I18n<[{ name: string, url: string }]>;
@Property(String, false)
released_at?: string;
@Property(String, false)
......@@ -81,13 +81,13 @@ export class AppSchema extends Instance<App, AppSchema> implements App {
@Property(Array, false)
locales?: string[];
@Property(Object, false)
actions?: Platform<{[key: string]: {execuate: string, args: string[], env: {[key: string]: string}}}>;
actions?: Platform<{ [key: string]: { execuate: string, args: string[], env: { [key: string]: string } } }>;
@Property(Object, false)
files?: {[key: string]: { sync: boolean}}
files?: { [key: string]: { sync: boolean } };
@Property(Object, false)
version?: Platform<string>;
@Property(Object, false)
news?: I18n<{title: string, url: string, image: string}[]>;
news?: I18n<{ title: string, url: string, image: string }[]>;
@Property(String, false)
conference?: string;
@Property(Object, false)
......@@ -103,23 +103,23 @@ export class AppSchema extends Instance<App, AppSchema> implements App {
@Property(Date, false)
created_at: Date;
static onCreating(app: App){
app.created_at = new Date()
static onCreating(app: App) {
app.created_at = new Date();
}
handleUpdate(data: App) {
Object.assign(this, data)
Object.assign(this, data);
}
toJSON() {
this.Convert()
return JSON.parse(this)
this.Convert();
return {...<Object>this};
}
Convert() {
this.icon = handleImg(this.icon),
this.cover = handleImg(this.cover),
this.background = handleImg(this.background)
this.background = handleImg(this.background);
}
}
import {Core, Model} from "iridium";
import {App, AppSchema} from "./App";
import {Package, PackageSchema} from "./Package";
import {Core, Model} from 'iridium';
import {App, AppSchema} from './App';
import {Package, PackageSchema} from './Package';
export class MongoDB extends Core {
Apps = new Model<App, AppSchema>(this, AppSchema)
Packages = new Model<Package, PackageSchema>(this,PackageSchema)
Apps = new Model<App, AppSchema>(this, AppSchema);
Packages = new Model<Package, PackageSchema>(this, PackageSchema);
}
export const mongodb = new MongoDB(process.env["MONGODB"])
export const mongodb = new MongoDB(process.env['MONGODB']);
import {Core, Model, Instance, Collection, Index, Property, ObjectID} from 'iridium'
import {Collection, Index, Instance, Property} from 'iridium';
type Locale = 'zh-CN' | 'en-US' | 'ja-JP'
type Platform = 'win32' | 'linux' | 'darwin'
type Locale = 'zh-CN' | 'en-US' | 'ja-JP';
type Platform = 'win32' | 'linux' | 'darwin';
export interface Action {
execute: string;
......@@ -26,8 +26,8 @@ export interface Package {
id: string;
name: string;
appId: string;
fullSize: number;
fullHash: string;
fullSize?: number;
fullHash?: string;
version: string;
status: string;
type: string;
......@@ -38,8 +38,8 @@ export interface Package {
}
@Collection("packages")
@Index({id: 1}, { unique: true })
@Collection('packages')
@Index({id: 1}, {unique: true})
export class PackageSchema extends Instance<Package, PackageSchema> implements Package {
@Property(String, true)
id: string;
......@@ -66,11 +66,11 @@ export class PackageSchema extends Instance<Package, PackageSchema> implements P
@Property(Array, false)
archives: Archive[];
static onCreating(pack: Package){
pack.status = pack.status || 'init'
static onCreating(pack: Package) {
pack.status = pack.status || 'init';
}
handleUpdate(data: Package) {
Object.assign(this, data)
Object.assign(this, data);
}
}
import Router = require('koa-router');
import {mongodb} from '../models/iridium'
import {App, AppSchema} from "../models/App";
import {Context} from "koa";
import {mongodb} from '../models/iridium';
import {App, AppSchema} from '../models/App';
import {Context} from 'koa';
const router = new Router();
// router.get('/apps', async (ctx: Context, next) => {
// ctx.body = await mongodb.Apps.find({})
// .map(async app => {
// if(Array.isArray(app.packages) && app.packages.length > 0){
// app.packages = await Promise.all(app.packages.map(async p => {
// try {
// return await mongodb.Packages.findOne({_id: toObjectID(p)})
// } catch (e) {
// console.log(p)
// }
// }))
// }
// return app
// })
// });
router.get('/v2/apps', async(ctx: Context, next) => {
ctx.body = await mongodb.Apps.find({}).toArray()
})
router.get('/v2/apps', async (ctx: Context, next) => {
ctx.body = await mongodb.Apps.find({}).toArray();
});
router.get('/v1/apps', async (ctx: Context, next) => {
let payload = ctx.request.query
if((!payload.author && !payload.admin)) {
ctx.throw(400, 'params error')
let payload = ctx.request.query;
if ((!payload.author && !payload.admin)) {
ctx.throw(400, 'params error');
}
let apps = {}
if(payload.admin == 'true') {
apps = await mongodb.Apps.find({}).toArray()
let apps = {};
if (payload.admin == 'true') {
apps = await mongodb.Apps.find({}).toArray();
} else {
apps = await mongodb.Apps.find({author: payload.author}).toArray()
apps = await mongodb.Apps.find({author: payload.author}).toArray();
}
ctx.body = apps
})
ctx.body = apps;
});
router.post('/v1/app/:id', async (ctx: Context, next) => {
let payload = ctx.request.body
if(!payload.id) {
ctx.throw(400, 'params error')
let payload = ctx.request.body;
if (!payload.id) {
ctx.throw(400, 'params error');
}
if (ctx.params.id !== payload.id) {
ctx.throw(400, "App is not same")
ctx.throw(400, 'App is not same');
}
let exists = await mongodb.Apps.findOne({id: payload.id});
if (exists) {
ctx.throw(400, "App is exists")
ctx.throw(400, 'App is exists');
}
try {
ctx.body = await mongodb.Apps.insert(payload)
ctx.body = await mongodb.Apps.insert(payload);
} catch (e) {
ctx.throw(400, e)
ctx.throw(400, e);
}
})
});
router.patch('/v1/app/:id', async (ctx: Context, next) => {
let _app: App = ctx.request.body
let _app: App = ctx.request.body;
let app: AppSchema | null = await mongodb.Apps.findOne({id: ctx.params.id});
if (!app) {
ctx.throw(400, `App ${ctx.params.id} Not Found `);
}
if (!ctx.request.body.id || ctx.request.body.id !== app!.id) {
ctx.throw(400, `Can not change AppID`)
ctx.throw(400, `Can not change AppID`);
}
app!.handleUpdate(_app)
app!.handleUpdate(_app);
ctx.body = await app!.save()
})
ctx.body = await app!.save();
});
export default router
\ No newline at end of file
export default router;
import Router = require('koa-router');
import {toObjectID} from 'iridium'
import {mongodb} from '../models/iridium'
import {Context} from "koa";
import config from '../../config'
import {Archive, Package} from "../models/Package";
import {renderChecksum} from "../utils";
import {toObjectID} from 'iridium';
import {mongodb} from '../models/iridium';
import {Context} from 'koa';
import config from '../../config';
import {Archive, Package} from '../models/Package';
import {renderChecksum} from '../utils';
const router = new Router();
router.get('/v2/packages', async (ctx: Context, next) => {
if (!ctx.request.query.appId) {
ctx.throw(400, "appId must be required!")
ctx.throw(400, 'appId must be required!');
}
let packs = await mongodb.Packages.find({appId: ctx.request.query.appId, status: 'uploaded'}).toArray()
let packs = await mongodb.Packages.find({
appId: ctx.request.query.appId,
status: 'uploaded'
}).toArray();
ctx.body = {
[ctx.request.query.appId]: packs
}
})
};
});
router.get('/v2/package/:id/checksum', async(ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'})
if(!pack) {
return ctx.throw(400, 'pack error')
router.get('/v2/package/:id/checksum', async (ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'});
if (!pack) {
return ctx.throw(400, 'pack error');
}
ctx.body = renderChecksum(pack.files)
})
ctx.body = renderChecksum(pack.files);
});
router.get('/v2/package/:id/meta', async(ctx: Context, next) => {
router.get('/v2/package/:id/meta', async (ctx: Context, next) => {
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'})
if(!pack) {
return ctx.throw(400, 'pack error')
let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'});
if (!pack) {
return ctx.throw(400, 'pack error');
}
await ctx['render']('update', {files: {
await ctx['render']('update', {
files: {
name: pack.id,
size: pack.fullSize,
hash: pack.fullHash
}})
})
}
});
});
router.post('/v2/package/:id/update', async (ctx: Context, next) => {
const package_id = ctx.params.id
const download_path = config.download_path
const request_overhead = 1024 * 1024
let sandSize = ctx.request.body.length * request_overhead
const package_id = ctx.params.id;
const request_overhead = 1024 * 1024;
let sandSize = ctx.request.body.length * request_overhead;
let pack = await mongodb.Packages.findOne({id: package_id, status: 'uploaded'})
let {fullSize, fullPath} = pack!
let pack = await mongodb.Packages.findOne({id: package_id, status: 'uploaded'});
if (!pack) {
return ctx.throw(400, 'pack not exists');
}
let {fullSize} = pack;
let files
let fullFiles = new Map<string, Archive>()
let files;
let fullFiles = new Map<string, Archive>();
pack!.archives.map((f) => {
fullFiles.set(f.path, f)
})
pack.archives.map((f) => {
fullFiles.set(f.path, f);
});
if(fullSize > sandSize) {
if (fullSize > sandSize) {
files = ctx.request.body.map((_file) => {
const file: Archive|undefined = fullFiles.get(_file)
if(!file) {
//
const file: Archive | undefined = fullFiles.get(_file);
if (!file) {
return ctx.throw(400, '');
}
sandSize += file.size
sandSize += file.size;
return {
path: file.path,
size: file.size,
hash: file.hash
}
})
};
});
}
if( sandSize <= fullSize ) {
if (sandSize <= fullSize) {
files = [{
path: pack.id,
size: pack.fullSize,
hash: pack.fullHash
}]
}];
}
await ctx['render']('update', {files})
})
await ctx['render']('update', {files});
});
router.get('/v1/packages', async (ctx: Context, next) => {
if (!ctx.request.query.appId) {
ctx.throw(400, "appId must be required!")
ctx.throw(400, 'appId must be required!');
}
let packs = await mongodb.Packages.find({appId: ctx.request.query.appId, type: 'editing'}).toArray()
let packs = await mongodb.Packages.find({
appId: ctx.request.query.appId,
type: 'editing'
}).toArray();
ctx.body = {
[ctx.request.query.appId]: packs
}
})
};
});
router.post('/v1/package', async (ctx: Context, next) => {
const _p: Package = ctx.request.body
const _p: Package = ctx.request.body;
if (!_p.id) {
ctx.throw(400, `id 参数缺失:${_p.id}`)
ctx.throw(400, `id 参数缺失:${_p.id}`);
}
if (!_p.platforms || _p.platforms.length == 0) {
ctx.throw(400, `请填写支持的平台:${_p.id}`)
}
else if (!_p.locales || _p.locales.length == 0) {
ctx.throw(400, `请填写支持的语言:${_p.id}`)
}
else if (!_p.version) {
ctx.throw(400, `请填写版本号:${_p.id}`)
ctx.throw(400, `请填写支持的平台:${_p.id}`);
} else if (!_p.locales || _p.locales.length == 0) {
ctx.throw(400, `请填写支持的语言:${_p.id}`);
} else if (!_p.version) {
ctx.throw(400, `请填写版本号:${_p.id}`);
}
let exists_platform = await mongodb.Packages.find({ id: {$ne: _p.id}, appId: _p.appId, platforms: { $in: _p.platforms }, type: 'editing' }).count()
if(exists_platform) {
console.log(exists_platform)
ctx.throw(400, '平台已存在')
let existsPlatform = await mongodb.Packages.find({
id: {$ne: _p.id},
appId: _p.appId,
platforms: {$in: _p.platforms},
type: 'editing'
}).count();
if (existsPlatform) {
console.log(existsPlatform);
ctx.throw(400, '平台已存在');
}
let exists_locales = await mongodb.Packages.find({ id: {$ne: _p.id}, appId: _p.appId, locales: { $in: _p.locales }, type: 'editing' }).count()
if(exists_locales) {
console.log(exists_locales)
ctx.throw(400, '语言已存在')
let existsLocales = await mongodb.Packages.find({
id: {$ne: _p.id},
appId: _p.appId,
locales: {$in: _p.locales},
type: 'editing'
}).count();
if (existsLocales) {
console.log(existsLocales);
ctx.throw(400, '语言已存在');
}
await mongodb.Packages.update({id: _p.id}, {$set: { type: 'edited' }}, {multi: true})
await mongodb.Packages.update({id: _p.id}, {$set: {type: 'edited'}}, {multi: true});
let _pack: Package = {
id: _p.id,
......@@ -134,59 +152,73 @@ router.post('/v1/package', async (ctx: Context, next) => {
platforms: _p.platforms,
status: 'init',
type: 'editing'
}
};
ctx.body = await mongodb.Packages.insert(_pack)
})
ctx.body = await mongodb.Packages.insert(_pack);
});
router.patch('/v1/package', async (ctx: Context, next) => {
const _p: Package = ctx.request.body
const p = await mongodb.Packages.findOne({_id: toObjectID(_p._id)})
const _p = ctx.request.body;
const p = await mongodb.Packages.findOne({_id: toObjectID(_p._id)});
if (!p) {
return ctx.throw(400, 'pack not exists');
}
if (!_p.id) {
ctx.throw(400, `id 参数缺失:${_p.id}`)
ctx.throw(400, `id 参数缺失:${_p.id}`);
}
if (!_p.platforms || _p.platforms.length == 0) {
ctx.throw(400, `请填写支持的平台:${_p.id}`)
}
else if (!_p.locales || _p.locales.length == 0) {
ctx.throw(400, `请填写支持的语言:${_p.id}`)
}
else if (!_p.version) {
ctx.throw(400, `请填写版本号:${_p.id}`)
ctx.throw(400, `请填写支持的平台:${_p.id}`);
} else if (!_p.locales || _p.locales.length == 0) {
ctx.throw(400, `请填写支持的语言:${_p.id}`);
} else if (!_p.version) {
ctx.throw(400, `请填写版本号:${_p.id}`);
}
let exists_platform = await mongodb.Packages.find({ id: {$ne: _p.id}, appId: _p.appId, platforms: { $in: _p.platforms }, type: 'editing' }).count()
if(exists_platform) {
console.log(exists_platform)
ctx.throw(400, '平台已存在')
let existsPlatform = await mongodb.Packages.find({
id: {$ne: _p.id},
appId: _p.appId,
platforms: {$in: _p.platforms},
type: 'editing'
}).count();
if (existsPlatform) {
console.log(existsPlatform);
ctx.throw(400, '平台已存在');
}
let exists_locales = await mongodb.Packages.find({ id: {$ne: _p.id}, appId: _p.appId, locales: { $in: _p.locales }, type: 'editing' }).count()
if(exists_locales) {
console.log(exists_locales)
ctx.throw(400, '语言已存在')
let existsLocales = await mongodb.Packages.find({
id: {$ne: _p.id},
appId: _p.appId,
locales: {$in: _p.locales},
type: 'editing'
}).count();
if (existsLocales) {
console.log(existsLocales);
ctx.throw(400, '语言已存在');
}
if (p.status == 'init') {
p.handleUpdate(_p)
ctx.body = await p.save()
p.handleUpdate(_p);
ctx.body = await p.save();
} else {
ctx.throw(400, `非法操作:${_p.id}`)
ctx.throw(400, `非法操作:${_p.id}`);
}
})
});
router.delete('/v1/package', async(ctx: Context, next) => {
const _p: Package = ctx.request.body
const p = await mongodb.Packages.findOne({_id: toObjectID(_p._id)})
router.delete('/v1/package', async (ctx: Context, next) => {
const _p = ctx.request.body;
const p = await mongodb.Packages.findOne({_id: toObjectID(_p._id)});
if (!p) {
return ctx.throw(400, 'pack not exists');
}
p.type = 'edited'
p.status = 'delete'
await p.save()
p.type = 'edited';
p.status = 'delete';
await p.save();
ctx.body = {
message: 'delete successful'
}
})
};
});
export default router
\ No newline at end of file
export default router;
......@@ -4,13 +4,13 @@ import * as busboy from 'async-busboy';
import * as mime from 'mime';
import * as uuid from 'uuid';
import * as Client from 'aliyun-oss-upload-stream';
import * as fs from 'fs-extra-promise'
import * as path from 'path'
import * as Aria2 from 'aria2'
import {bundle} from '../../package/main'
import {mongodb} from '../models/iridium'
import {toObjectID} from 'iridium'
import config from '../../config'
import * as fs from 'fs-extra-promise';
import * as path from 'path';
import * as Aria2 from 'aria2';
import {bundle} from '../../package/main';
import {mongodb} from '../models/iridium';
import {toObjectID} from 'iridium';
import config from '../../config';
// const Aria2Options = {
// host: 'localhost',
......@@ -21,29 +21,28 @@ import config from '../../config'
// }
const checkPackage = async (file) => {
// const ext = mime.extension(file.mime);
if (['zip', 'gz', 'rar', '7z', 'application/x-gzip'].indexOf(file.mime) === -1) {
throw new Error('Unsupported file type');
}
}
};
const checkImage = async (file) => {
const ext = mime.extension(file.mime);
if (['png', 'jpg', 'jpeg', 'gif', 'webp'].indexOf(ext) === -1) {
throw new Error('Unsupported file type');
}
}
};
import Router = require('koa-router');
const ossStream = Client(new OSS({
accessKeyId: process.env["OSS_ACCESS_ID"],
secretAccessKey: process.env["OSS_ACCESS_KEY"],
endpoint: process.env["OSS_ENDPOINT"],
accessKeyId: process.env['OSS_ACCESS_ID'],
secretAccessKey: process.env['OSS_ACCESS_KEY'],
endpoint: process.env['OSS_ENDPOINT'],
apiVersion: '2013-10-15'
}));
const router = new Router()
const router = new Router();
const UploadImage = async (ctx: Context) => {
......@@ -51,12 +50,12 @@ const UploadImage = async (ctx: Context) => {
const {files} = await busboy(ctx.req);
ctx.body = await Promise.all(files.map(async file => {
await checkImage(file)
await checkImage(file);
const filename = `test/${uuid.v1()}`;
const upload = ossStream.upload({
Bucket: process.env["OSS_BUCKET"],
Bucket: process.env['OSS_BUCKET'],
Key: filename,
ContentType: file.mimeType
});
......@@ -78,130 +77,136 @@ export const UploadPackage = async (ctx: Context) => {
const {files} = await busboy(ctx.req);
ctx.body = await Promise.all(files.map(async file => {
await checkPackage(file)
await checkPackage(file);
const filename = uuid.v1()
const filename = uuid.v1();
const archive_path = path.join(__dirname, '../../test/upload')
await fs.ensureDirAsync(archive_path)
const archive_path = path.join(__dirname, '../../test/upload');
await fs.ensureDirAsync(archive_path);
const archive = fs.createWriteStream(path.join(archive_path, filename))
const archive = fs.createWriteStream(path.join(archive_path, filename));
let pack = await mongodb.Packages.findOne({_id: toObjectID(ctx.params.id)})
let pack = await mongodb.Packages.findOne({_id: toObjectID(ctx.params.id)});
if (!pack) {
return ctx.throw(400, 'pack not exists');
}
return await new Promise((resolve, reject) => {
file.pipe(archive)
file.pipe(archive);
file.on('close', async() => {
file.on('close', async () => {
try {
pack.status = 'uploading'
await pack.save()
pack!.status = 'uploading';
await pack!.save();
resolve(pack)
resolve(pack!);
// 上传完, 打包
const bundled = await bundle(filename)
const bundled = await bundle(filename);
Object.assign(pack, bundled)
pack.status = 'uploaded'
Object.assign(pack, bundled);
pack!.status = 'uploaded';
await mongodb.Packages.update({id: pack.id}, {$set: { status: 'deprecated' }}, {multi: true})
await pack.save()
await mongodb.Packages.update({id: pack!.id}, {$set: {status: 'deprecated'}}, {multi: true});
await pack!.save();
// 打包完,上传阿里云
} catch (e) {
pack.status = 'failed'
await pack.save()
console.log(e)
pack!.status = 'failed';
await pack!.save();
console.log(e);
}
})
});
file.on('error', async (error) => {
pack.status = 'failed'
await pack.save()
pack!.status = 'failed';
await pack!.save();
reject(error)
})
})
reject(error);
});
});
}));
} catch (err) {
ctx.throw(403, err);
}
}
};
const uploadPackageUrl = async (ctx: Context) => {
if(!ctx.request.body.url) {
ctx.throw(400, "params error")
if (!ctx.request.body.url) {
ctx.throw(400, 'params error');
}
//testUrl: https://r.my-card.in/release/dist/0c16a3ecb115fd7cf575ccdd64f62a8f3edc635b087950e4ed4f3f781972bbfd.tar.gz
// testUrl: https://r.my-card.in/release/dist/0c16a3ecb115fd7cf575ccdd64f62a8f3edc635b087950e4ed4f3f781972bbfd.tar.gz
const downloader = new Aria2
let pack = await mongodb.Packages.findOne({_id: toObjectID(ctx.request.body._id)})
const downloader = new Aria2;
let pack = await mongodb.Packages.findOne({_id: toObjectID(ctx.request.body._id)});
if (!pack) {
return ctx.throw(400, 'pack not exists');
}
await downloader.open()
await downloader.open();
downloader.onDownloadStart = async() => {
pack.status = 'uploading'
await pack.save()
}
downloader.onDownloadStart = async () => {
pack!.status = 'uploading';
await pack!.save();
};
downloader.onDownloadComplete = async(m) => {
const { files } = await downloader.send('tellStatus', m.gid)
const [file] = files
downloader.onDownloadComplete = async (m) => {
const {files} = await downloader.send('tellStatus', m.gid);
const [file] = files;
try {
await checkPackage(file)
await checkPackage(file);
// 打包
const bundled = await bundle(path.basename(file.path))
const bundled = await bundle(path.basename(file.path));
// 打包完, 上传阿里云
Object.assign(pack, bundled)
pack.status = 'uploaded'
Object.assign(pack, bundled);
pack!.status = 'uploaded';
await mongodb.Packages.update({id: pack.id}, {$set: { status: 'deprecated' }}, {multi: true})
await pack.save()
await mongodb.Packages.update({id: pack!.id}, {$set: {status: 'deprecated'}}, {multi: true});
await pack!.save();
} catch (e) {
pack.status = 'failed'
await pack.save()
}
pack!.status = 'failed';
await pack!.save();
}
};
downloader.onDownloadError = async(err) => {
downloader.onDownloadError = async (err) => {
// console.log(await downloader.send('tellStatus', err.gid))
pack.status = 'failed'
await pack.save()
console.log(err)
}
pack!.status = 'failed';
await pack!.save();
console.log(err);
};
ctx.body = await new Promise((resolve, reject) => {
downloader.onmessage = m => {
if(m["error"]) {
reject(m["error"])
if (m['error']) {
reject(m['error']);
} else {
resolve(m)
}
resolve(m);
}
};
downloader.send('addUri', [ctx.request.body.url], {dir: config.upload_path})
})
downloader.send('addUri', [ctx.request.body.url], {dir: config.upload_path});
});
}
};
router.post('/v1/upload/image', UploadImage)
router.post('/v1/upload/image', UploadImage);
router.post('/v1/upload/package/:id', UploadPackage)
router.post('/v1/upload/package/:id', UploadPackage);
router.post('/v1/upload/packageUrl', uploadPackageUrl)
router.post('/v1/upload/packageUrl', uploadPackageUrl);
export default router
export default router;
const TYPES = {
const TYPES = {};
}
export default TYPES
\ No newline at end of file
export default TYPES;
import { URL } from 'url';
import {URL} from 'url';
export const handleImg = (img) => {
if (img) {
......@@ -12,8 +12,8 @@ export const handleImg = (img) => {
} else {
return 'https://cdn01.moecube.com/accounts/default_avatar.jpg';
}
}
};
export function renderChecksum(files: { path: string, hash?: string }[]) {
return files.map(({ path, hash }) => `${hash || ''} ${path}`).join('\n');
return files.map(({path, hash}) => `${hash || ''} ${path}`).join('\n');
}
{
"rules": {
"max-line-length": [true, 140],
"no-inferrable-types": true,
"class-name": true,
"comment-format": [
true,
"check-space"
],
"indent": [
true,
"spaces"
],
"eofline": true,
"no-duplicate-variable": true,
"no-eval": true,
"no-arg": true,
"no-internal-module": true,
"no-trailing-whitespace": true,
"no-bitwise": true,
"no-unused-expression": true,
"no-var-keyword": true,
"one-line": [
true,
"check-catch",
"check-else",
"check-open-brace",
"check-whitespace"
],
"quotemark": [
true,
"single",
"avoid-escape"
],
"semicolon": [true, "always"],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}
],
"curly": true,
"whitespace": [
true,
"check-branch",
"check-decl",
"check-operator",
"check-separator",
"check-type"
]
}
}
......@@ -3,16 +3,18 @@
"@types/accepts@*":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.1.tgz#e5959c500fde65e4bd18a78d8b7f9392ccb9aab4"
version "1.3.2"
resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.2.tgz#52897ad5a51f05ea2f57f8e8136085c7d1c385a5"
"@types/bluebird@*", "@types/bluebird@^3.5.2":
"@types/bluebird@*", "@types/bluebird@^3.5.0", "@types/bluebird@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.2.tgz#ecf1104217495e50fe0b588d538146cd6f733b89"
"@types/bluebird@^3.5.0":
version "3.5.0"
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.0.tgz#2633470a4eabe9a47cd9a45fdb20ed5f93407bca"
"@types/bson@*":
version "1.0.3"
resolved "https://registry.yarnpkg.com/@types/bson/-/bson-1.0.3.tgz#6c26f0876bf9d8cbb06edd4019e29354bf3a03e0"
dependencies:
"@types/node" "*"
"@types/busboy@^0.2.3":
version "0.2.3"
......@@ -21,19 +23,19 @@
"@types/node" "*"
"@types/chai@^3.4.35":
version "3.5.0"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.0.tgz#45e2dc2af9a5727be846af6e61d08ffc45d5b2ca"
version "3.5.1"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.1.tgz#9bd77fe12503ae00648b0945b38eab666adffe2e"
"@types/cookies@*":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.6.0.tgz#f5e8df2357502a895d5627e2fb8b174b3b269461"
version "0.6.1"
resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.6.1.tgz#d12cbd0f8aa6b9f0d3bfb613b958897a0b348731"
dependencies:
"@types/keygrip" "*"
"@types/node" "*"
"@types/express-serve-static-core@*":
version "4.0.41"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.41.tgz#05df354cbbe5069b4c089320065870033f41e670"
version "4.0.44"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.0.44.tgz#a1c3bd5d80e93c72fba91a03f5412c47f21d4ae7"
dependencies:
"@types/node" "*"
......@@ -63,8 +65,8 @@
resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.2.0.tgz#0b82993036e86c6ff2944e033b73b57e85ccdcab"
"@types/keygrip@*":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.0.tgz#20bcf84e8962aeca5d1789802b93644262870d28"
version "1.0.1"
resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.1.tgz#ff540462d2fb4d0a88441ceaf27d287b01c3d878"
"@types/koa-bodyparser@^3.0.22":
version "3.0.23"
......@@ -73,8 +75,8 @@
"@types/koa" "*"
"@types/koa-compose@*":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.0.tgz#9cb907923f33da1b14c564eaa7e63d8ea38b65ff"
version "3.2.2"
resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.2.tgz#dc106e000bbf92a3ac900f756df47344887ee847"
"@types/koa-router@^7.0.22":
version "7.0.22"
......@@ -108,21 +110,26 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-0.0.29.tgz#fbcfd330573b912ef59eeee14602bface630754b"
"@types/mongodb@*", "@types/mongodb@^2.1.36", "@types/mongodb@^2.1.41":
version "2.1.41"
resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.1.41.tgz#92ea0f832b9e0269c7826fb7f899cf86fe5c4df5"
version "2.1.43"
resolved "https://registry.yarnpkg.com/@types/mongodb/-/mongodb-2.1.43.tgz#6fbd60c0ae0f2e8f5776ed1d73f5c718cc2625ee"
dependencies:
"@types/bson" "*"
"@types/node" "*"
"@types/mongoose@^4.7.8":
version "4.7.8"
resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-4.7.8.tgz#9dd829635c75198b3ba60b1626fd65ad5698ac8c"
version "4.7.11"
resolved "https://registry.yarnpkg.com/@types/mongoose/-/mongoose-4.7.11.tgz#a3f971dce3974f56a2486f0965e55519cd66c953"
dependencies:
"@types/mongodb" "*"
"@types/node" "*"
"@types/node@*", "@types/node@^6.0.55":
version "6.0.65"
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.65.tgz#c00faa7ffcfc9842b5dd7bf650872562504d5670"
"@types/node@*":
version "6.0.70"
resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.70.tgz#f6e04b859205ee3611849921f09819701dbfa5e8"
"@types/node@^7.0.13":
version "7.0.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.13.tgz#1b0a53fe9ef9c3a5d061b126cc9b915bca43a3f5"
"@types/pluralize@0.0.27":
version "0.0.27"
......@@ -177,8 +184,8 @@ after@0.8.1:
resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627"
ajv@^4.9.1:
version "4.11.5"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd"
version "4.11.7"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.7.tgz#8655a5d86d0824985cc471a1d913fb6729a0ec48"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
......@@ -241,11 +248,11 @@ aproba@^1.0.3:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab"
are-we-there-yet@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
version "1.1.3"
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.3.tgz#ee86447bf1a06feb4dd3aac46e023b87d7f8e2ef"
dependencies:
delegates "^1.0.0"
readable-stream "^2.0.0 || ^1.1.13"
readable-stream "^2.0.6"
aria2@^3.0.0:
version "3.0.0"
......@@ -263,8 +270,8 @@ arr-diff@^2.0.0:
arr-flatten "^1.0.1"
arr-flatten@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
version "1.0.3"
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.3.tgz#a274ed85ac08849b6bd7847c4580745dc51adfb1"
array-unique@^0.2.1:
version "0.2.1"
......@@ -301,9 +308,9 @@ assertion-error@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b"
async-busboy@^0.3.4:
version "0.3.4"
resolved "https://registry.yarnpkg.com/async-busboy/-/async-busboy-0.3.4.tgz#1311af58c32b07440d626b7acc6e38b751580e7d"
async-busboy@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/async-busboy/-/async-busboy-0.4.0.tgz#55d6cf2041d8571f07085bfe00a7df39d48b7182"
dependencies:
busboy "^0.2.12"
......@@ -337,6 +344,14 @@ aws4@^1.2.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
babel-code-frame@^6.22.0:
version "6.22.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
dependencies:
chalk "^1.1.0"
esutils "^2.0.2"
js-tokens "^3.0.0"
backo2@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
......@@ -398,8 +413,8 @@ boom@2.x.x:
hoek "2.x.x"
brace-expansion@^1.0.0:
version "1.1.6"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
version "1.1.7"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
dependencies:
balanced-match "^0.4.1"
concat-map "0.0.1"
......@@ -526,6 +541,10 @@ camelcase@^1.0.2, camelcase@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
camelcase@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
......@@ -562,7 +581,7 @@ chalk@0.5.1:
strip-ansi "^0.3.0"
supports-color "^0.2.0"
chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
dependencies:
......@@ -607,14 +626,14 @@ clone@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
co-body@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/co-body/-/co-body-4.2.0.tgz#74df20fa73262125dc45482af04e342ea8db3515"
co-body@^5.1.0:
version "5.1.1"
resolved "https://registry.yarnpkg.com/co-body/-/co-body-5.1.1.tgz#d97781d1e3344ba4a820fd1806bddf8341505236"
dependencies:
inflation "~2.0.0"
qs "~4.0.0"
raw-body "~2.1.2"
type-is "~1.6.6"
inflation "^2.0.0"
qs "^6.4.0"
raw-body "^2.2.0"
type-is "^1.6.14"
co@^4.6.0:
version "4.6.0"
......@@ -744,6 +763,10 @@ cookies@~0.7.0:
depd "~1.1.0"
keygrip "~1.0.1"
copy-to@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5"
core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
......@@ -761,14 +784,14 @@ dashdash@^1.12.0:
assert-plus "^1.0.0"
date-fns@^1.23.0:
version "1.28.1"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.1.tgz#9e2325c77b1cb7da3a9fd9822ba52c188a4ce91b"
version "1.28.3"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.3.tgz#145d87adc3f5a82c6bda668de97eee1132c97ea1"
debug@*, debug@^2.1.0, debug@^2.2.0:
version "2.6.3"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
version "2.6.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0"
dependencies:
ms "0.7.2"
ms "0.7.3"
debug@2.2.0, debug@~2.2.0:
version "2.2.0"
......@@ -833,9 +856,9 @@ dicer@0.2.5:
readable-stream "1.1.x"
streamsearch "0.1.2"
diff@^2.2.1:
version "2.2.3"
resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99"
diff@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
dot-env@^0.0.1:
version "0.0.1"
......@@ -965,6 +988,10 @@ escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
esutils@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
etag@^1.7.0:
version "1.8.0"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051"
......@@ -1076,8 +1103,8 @@ forever-agent@~0.6.1:
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
form-data@~2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4"
version "2.1.4"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.5"
......@@ -1132,7 +1159,7 @@ fsevents@^1.0.0:
nan "^2.3.0"
node-pre-gyp "^0.6.29"
fstream-ignore@~1.0.5:
fstream-ignore@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
dependencies:
......@@ -1140,7 +1167,7 @@ fstream-ignore@~1.0.5:
inherits "2"
minimatch "^3.0.0"
fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
version "1.0.11"
resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
dependencies:
......@@ -1205,7 +1232,7 @@ glob@^5.0.10, glob@~5.0.0:
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.0.3, glob@^7.0.5:
glob@^7.0.5, glob@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
dependencies:
......@@ -1323,8 +1350,8 @@ hooks-fixed@2.0.0:
resolved "https://registry.yarnpkg.com/hooks-fixed/-/hooks-fixed-2.0.0.tgz#a01d894d52ac7f6599bbb1f63dfc9c411df70cba"
hosted-git-info@^2.1.4:
version "2.3.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.3.1.tgz#ac439421605f0beb0ea1349de7d8bb28e50be1dd"
version "2.4.2"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.4.2.tgz#0076b9f46a270506ddbaaea56496897460612a67"
http-assert@^1.1.0:
version "1.2.0"
......@@ -1372,9 +1399,9 @@ http-signature@~1.1.0:
jsprim "^1.2.2"
sshpk "^1.7.0"
iconv-lite@0.4.13, iconv-lite@~0.4.13:
version "0.4.13"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
iconv-lite@0.4.15, iconv-lite@~0.4.13:
version "0.4.15"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb"
ignore-by-default@^1.0.0:
version "1.0.1"
......@@ -1396,7 +1423,7 @@ infinity-agent@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/infinity-agent/-/infinity-agent-2.0.3.tgz#45e0e2ff7a9eb030b27d62b74b3744b7a7ac4216"
inflation@~2.0.0:
inflation@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f"
......@@ -1582,6 +1609,10 @@ jodid25519@^1.0.0:
dependencies:
jsbn "~0.1.0"
js-tokens@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
......@@ -1647,11 +1678,12 @@ klaw@^1.0.0:
optionalDependencies:
graceful-fs "^4.1.9"
koa-bodyparser@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-3.2.0.tgz#b916de17e2039fe82650481973d7c294f10b5719"
koa-bodyparser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.2.0.tgz#bce6e08bc65f8709b6d1faa9411c7f0d8938aa54"
dependencies:
co-body "^4.2.0"
co-body "^5.1.0"
copy-to "^2.0.1"
koa-compose@^3.0.0:
version "3.2.1"
......@@ -1666,9 +1698,9 @@ koa-convert@^1.2.0:
co "^4.6.0"
koa-compose "^3.0.0"
koa-hbs@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/koa-hbs/-/koa-hbs-0.9.0.tgz#c8a2af2933a49acaa47a197e2c279f8b2ecdb76e"
koa-hbs@next:
version "1.0.0-alpha.1"
resolved "https://registry.yarnpkg.com/koa-hbs/-/koa-hbs-1.0.0-alpha.1.tgz#a060497f3d764f0bd299f069c1556e05d443781e"
dependencies:
glob "^7.0.5"
handlebars "^4.0.5"
......@@ -1678,14 +1710,14 @@ koa-is-json@^1.0.0:
resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14"
koa-log4@^2.1.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/koa-log4/-/koa-log4-2.2.0.tgz#faef69f9176b0dd982f113bb40615b0c7f2905f0"
version "2.2.1"
resolved "https://registry.yarnpkg.com/koa-log4/-/koa-log4-2.2.1.tgz#7be52fc23ef8137fec4be7ee7c9a9bdf7e898f73"
dependencies:
log4js "^0.6.35"
koa-router@^7.0.1:
version "7.1.0"
resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-7.1.0.tgz#2fe6d7e6da7e3c46d8781953835c70513a6871f5"
version "7.1.1"
resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-7.1.1.tgz#38cce6b1381fada18cfa47a3b3323e995ca231cf"
dependencies:
debug "^2.2.0"
http-errors "^1.3.1"
......@@ -1912,15 +1944,15 @@ micromatch@2.3.11, micromatch@^2.1.5:
parse-glob "^3.0.4"
regex-cache "^0.4.2"
mime-db@~1.26.0:
version "1.26.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff"
mime-db@~1.27.0:
version "1.27.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1"
mime-types@^2.0.7, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7:
version "2.1.14"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee"
mime-types@^2.0.7, mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7:
version "2.1.15"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed"
dependencies:
mime-db "~1.26.0"
mime-db "~1.27.0"
mime@1.2.4:
version "1.2.4"
......@@ -1952,15 +1984,15 @@ mkdirp@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e"
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@~0.5.1:
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
dependencies:
minimist "0.0.8"
moment@*:
version "2.18.0"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.0.tgz#6cfec6a495eca915d02600a67020ed994937252c"
version "2.18.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
mongodb-core@2.1.9:
version "2.1.9"
......@@ -1984,15 +2016,15 @@ mongoose-timestamp@^0.6.0:
defaults "^1.0.3"
mongoose-unique-validator@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/mongoose-unique-validator/-/mongoose-unique-validator-1.0.4.tgz#dc1a7c80bfd5968cdfba75237056c4656b146cea"
version "1.0.5"
resolved "https://registry.yarnpkg.com/mongoose-unique-validator/-/mongoose-unique-validator-1.0.5.tgz#591872fafe0830939f0b756b6554243c93163aa0"
dependencies:
lodash.foreach "^4.1.0"
lodash.get "^4.0.2"
mongoose@^4.9.4:
version "4.9.4"
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.9.4.tgz#212be4597e2db57b05286cc53ee894f30f3d8fad"
version "4.9.5"
resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-4.9.5.tgz#856b856700032748dd68122cb0371f8980442975"
dependencies:
async "2.1.4"
bson "~1.0.4"
......@@ -2032,13 +2064,17 @@ ms@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765"
ms@0.7.3:
version "0.7.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff"
muri@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/muri/-/muri-1.2.1.tgz#ec7ea5ce6ca6a523eb1ab35bacda5fa816c9aa3c"
nan@^2.3.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2"
version "2.6.2"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
negotiator@0.6.1:
version "0.6.1"
......@@ -2058,22 +2094,22 @@ node-fetch@^1.6.3:
is-stream "^1.0.1"
node-pre-gyp@^0.6.29:
version "0.6.33"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9"
dependencies:
mkdirp "~0.5.1"
nopt "~3.0.6"
npmlog "^4.0.1"
rc "~1.1.6"
request "^2.79.0"
rimraf "~2.5.4"
semver "~5.3.0"
tar "~2.2.1"
tar-pack "~3.3.0"
version "0.6.34"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.34.tgz#94ad1c798a11d7fc67381b50d47f8cc18d9799f7"
dependencies:
mkdirp "^0.5.1"
nopt "^4.0.1"
npmlog "^4.0.2"
rc "^1.1.7"
request "^2.81.0"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^2.2.1"
tar-pack "^3.4.0"
node-uuid@~1.4.7:
version "1.4.7"
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
version "1.4.8"
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907"
node_memcached@1.1.3:
version "1.1.3"
......@@ -2096,12 +2132,19 @@ nodemon@^1.11.0:
undefsafe "0.0.3"
update-notifier "0.5.0"
nopt@3.0.x, nopt@~3.0.6:
nopt@3.0.x:
version "3.0.6"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
dependencies:
abbrev "1"
nopt@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
dependencies:
abbrev "1"
osenv "^0.1.4"
nopt@~1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
......@@ -2109,8 +2152,8 @@ nopt@~1.0.10:
abbrev "1"
normalize-package-data@^2.3.2:
version "2.3.6"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff"
version "2.3.8"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.8.tgz#d819eda2a9dedbd1ffa563ea4071d936782295bb"
dependencies:
hosted-git-info "^2.1.4"
is-builtin-module "^1.0.0"
......@@ -2118,10 +2161,12 @@ normalize-package-data@^2.3.2:
validate-npm-package-license "^3.0.1"
normalize-path@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
dependencies:
remove-trailing-separator "^1.0.1"
npmlog@^4.0.1:
npmlog@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f"
dependencies:
......@@ -2171,13 +2216,13 @@ on-finished@^2.1.0, on-finished@~2.3.0:
dependencies:
ee-first "1.1.1"
once@^1.3.0:
once@^1.3.0, once@^1.3.3:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
wrappy "1"
once@~1.3.0, once@~1.3.3:
once@~1.3.0:
version "1.3.3"
resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
dependencies:
......@@ -2227,7 +2272,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
osenv@^0.1.0:
osenv@^0.1.0, osenv@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
dependencies:
......@@ -2384,14 +2429,10 @@ qs@6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625"
"qs@>= 0.4.0", qs@~6.4.0:
"qs@>= 0.4.0", qs@^6.4.0, qs@~6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
qs@~4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607"
qs@~6.3.0:
version "6.3.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c"
......@@ -2407,17 +2448,17 @@ range-parser@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
raw-body@~2.1.2:
version "2.1.7"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774"
raw-body@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96"
dependencies:
bytes "2.4.0"
iconv-lite "0.4.13"
iconv-lite "0.4.15"
unpipe "1.0.0"
rc@^1.0.1, rc@~1.1.6:
version "1.1.7"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea"
rc@^1.0.1, rc@^1.1.7:
version "1.2.1"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95"
dependencies:
deep-extend "~0.4.0"
ini "~1.3.0"
......@@ -2455,7 +2496,7 @@ readable-stream@1.1.x:
isarray "0.0.1"
string_decoder "~0.10.x"
readable-stream@2.1.5, readable-stream@^2.0.0, "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@~2.1.4:
readable-stream@2.1.5, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4:
version "2.1.5"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
dependencies:
......@@ -2502,6 +2543,10 @@ registry-url@^3.0.0:
dependencies:
rc "^1.0.1"
remove-trailing-separator@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4"
repeat-element@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
......@@ -2541,7 +2586,7 @@ request@2.78.0:
tough-cookie "~2.3.0"
tunnel-agent "~0.4.1"
request@^2.79.0:
request@^2.81.0:
version "2.81.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
dependencies:
......@@ -2591,9 +2636,9 @@ resolve-from@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-2.0.0.tgz#9480ab20e94ffa1d9e80a804c7ea147611966b57"
resolve@^1.1.7:
version "1.3.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235"
resolve@^1.3.2:
version "1.3.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
dependencies:
path-parse "^1.0.5"
......@@ -2610,9 +2655,9 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"
rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4:
version "2.5.4"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
dependencies:
glob "^7.0.5"
......@@ -2638,7 +2683,7 @@ semver-diff@^2.0.0:
dependencies:
semver "^5.0.3"
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@~5.3.0:
"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
......@@ -2811,13 +2856,9 @@ split@0.3:
dependencies:
through "2"
sprintf-js@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
sshpk@^1.7.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77"
version "1.13.0"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.0.tgz#ff2a3e4fd04497555fed97b39a0fd82fafb3a33c"
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
......@@ -2913,20 +2954,20 @@ supports-color@^3.2.3:
dependencies:
has-flag "^1.0.0"
tar-pack@~3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
tar-pack@^3.4.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.0.tgz#23be2d7f671a8339376cbdb0b8fe3fdebf317984"
dependencies:
debug "~2.2.0"
fstream "~1.0.10"
fstream-ignore "~1.0.5"
once "~1.3.3"
readable-stream "~2.1.4"
rimraf "~2.5.1"
tar "~2.2.1"
uid-number "~0.0.6"
tar@~2.2.1:
debug "^2.2.0"
fstream "^1.0.10"
fstream-ignore "^1.0.5"
once "^1.3.3"
readable-stream "^2.1.4"
rimraf "^2.5.1"
tar "^2.2.1"
uid-number "^0.0.6"
tar@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
dependencies:
......@@ -2975,17 +3016,23 @@ tree-kill@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.1.0.tgz#c963dcf03722892ec59cba569e940b71954d1729"
tslint@^3.15.1:
version "3.15.1"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-3.15.1.tgz#da165ca93d8fdc2c086b51165ee1bacb48c98ea5"
tslint@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.1.0.tgz#51a47baeeb58956fcd617bd2cf00e2ef0eea2ed9"
dependencies:
babel-code-frame "^6.22.0"
colors "^1.1.2"
diff "^2.2.1"
diff "^3.2.0"
findup-sync "~0.3.0"
glob "^7.0.3"
glob "^7.1.1"
optimist "~0.6.0"
resolve "^1.1.7"
underscore.string "^3.3.4"
resolve "^1.3.2"
semver "^5.3.0"
tsutils "^1.4.0"
tsutils@^1.4.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.7.0.tgz#2e63ccc2d6912bb095f7e363ff4100721dc86f50"
tunnel-agent@^0.6.0:
version "0.6.0"
......@@ -3005,16 +3052,16 @@ 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.5.5, type-is@~1.6.6:
version "1.6.14"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2"
type-is@^1.5.5, type-is@^1.6.14:
version "1.6.15"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410"
dependencies:
media-typer "0.3.0"
mime-types "~2.1.13"
mime-types "~2.1.15"
typescript@^2.1.4:
version "2.2.1"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.1.tgz#4862b662b988a4c8ff691cc7969622d24db76ae9"
version "2.3.0"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418"
ua-parser-js@0.7.12:
version "0.7.12"
......@@ -3033,7 +3080,7 @@ uglify-to-browserify@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
uid-number@~0.0.6:
uid-number@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
......@@ -3045,13 +3092,6 @@ undefsafe@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
underscore.string@^3.3.4:
version "3.3.4"
resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db"
dependencies:
sprintf-js "^1.0.3"
util-deprecate "^1.0.2"
underscore@1.7.x:
version "1.7.0"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209"
......@@ -3072,7 +3112,7 @@ update-notifier@0.5.0:
semver-diff "^2.0.0"
string-length "^1.0.0"
util-deprecate@^1.0.2, util-deprecate@~1.0.1:
util-deprecate@~1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
......@@ -3096,8 +3136,8 @@ validate-npm-package-license@^3.0.1:
spdx-expression-parse "~1.0.0"
vary@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140"
version "1.1.1"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37"
vercomp@^1.0.2:
version "1.0.2"
......@@ -3112,8 +3152,8 @@ verror@1.3.6:
extsprintf "1.0.2"
vlq@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c"
version "0.2.2"
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.2.tgz#e316d5257b40b86bb43cb8d5fea5d7f54d6b0ca1"
weinre@^2.0.0-pre-I0Z7U9OV:
version "2.0.0-pre-I0Z7U9OV"
......@@ -3137,7 +3177,7 @@ window-size@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
window-size@^0.1.2:
window-size@^0.1.2, window-size@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876"
......@@ -3165,20 +3205,27 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
write-file-atomic@^1.1.2:
version "1.3.1"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.1.tgz#7d45ba32316328dd1ec7d90f60ebc0d845bb759a"
version "1.3.2"
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.2.tgz#f80ac5e06d3a38996ab51b5d310db57102deb902"
dependencies:
graceful-fs "^4.1.11"
imurmurhash "^0.1.4"
slide "^1.1.5"
ws@1.1.1, ws@^1.1.1:
ws@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018"
dependencies:
options ">=0.0.5"
ultron "1.0.x"
ws@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.4.tgz#57f40d036832e5f5055662a397c4de76ed66bf61"
dependencies:
options ">=0.0.5"
ultron "1.0.x"
wtf-8@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a"
......@@ -3220,7 +3267,7 @@ yargs-parser@^4.1.0:
dependencies:
camelcase "^3.0.0"
yargs@3.29.0, yargs@^3.10.0:
yargs@3.29.0:
version "3.29.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c"
dependencies:
......@@ -3250,6 +3297,18 @@ yargs@6.4.0:
y18n "^3.2.1"
yargs-parser "^4.1.0"
yargs@^3.10.0:
version "3.32.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995"
dependencies:
camelcase "^2.0.1"
cliui "^3.0.3"
decamelize "^1.1.1"
os-locale "^1.4.0"
string-width "^1.0.1"
window-size "^0.1.4"
y18n "^3.2.0"
yargs@~3.10.0:
version "3.10.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
......
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