Commit 24bbadbe authored by nano's avatar nano

fix checksum

parent ca8fddda
...@@ -2,7 +2,13 @@ ...@@ -2,7 +2,13 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment=""> <list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<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/main.ts" afterPath="$PROJECT_DIR$/package/main.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/package.ts" afterPath="$PROJECT_DIR$/src/routes/package.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/utils.ts" afterPath="$PROJECT_DIR$/src/utils.ts" />
</list> </list>
<ignored path="mycard-console-backend.iws" /> <ignored path="mycard-console-backend.iws" />
<ignored path=".idea/workspace.xml" /> <ignored path=".idea/workspace.xml" />
...@@ -24,23 +30,27 @@ ...@@ -24,23 +30,27 @@
<favorites_list name="mycard-console-backend" /> <favorites_list name="mycard-console-backend" />
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf>
<file leaf-file-name="App.ts" pinned="false" current-in-tab="false"> <file leaf-file-name="app.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/App.ts"> <entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="24"> <state relative-caret-position="187">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" /> <caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding /> <folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="Package.ts" pinned="false" current-in-tab="false"> <file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/Package.ts"> <entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="199"> <state relative-caret-position="1454">
<caret line="55" column="19" lean-forward="false" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" /> <caret line="106" column="36" lean-forward="false" selection-start-line="106" selection-start-column="36" selection-end-line="106" selection-end-column="36" />
<folding /> <folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -48,8 +58,8 @@ ...@@ -48,8 +58,8 @@
<file leaf-file-name="package.ts" pinned="false" current-in-tab="true"> <file leaf-file-name="package.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/package.ts"> <entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="297"> <state relative-caret-position="178">
<caret line="118" column="0" lean-forward="true" selection-start-line="118" selection-start-column="0" selection-end-line="118" selection-end-column="0" /> <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> <folding>
<element signature="e#39#73#0" expanded="true" /> <element signature="e#39#73#0" expanded="true" />
</folding> </folding>
...@@ -57,23 +67,11 @@ ...@@ -57,23 +67,11 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<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="3096">
<caret line="184" column="20" lean-forward="false" selection-start-line="184" selection-start-column="20" selection-end-line="184" selection-end-column="20" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="main.ts" pinned="false" current-in-tab="false"> <file leaf-file-name="main.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package/main.ts"> <entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="192"> <state relative-caret-position="513">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" /> <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> <folding>
<element signature="e#0#25#0" expanded="true" /> <element signature="e#0#25#0" expanded="true" />
</folding> </folding>
...@@ -81,16 +79,6 @@ ...@@ -81,16 +79,6 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="config.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
<caret line="5" column="1" lean-forward="false" selection-start-line="5" selection-start-column="1" selection-end-line="5" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf> </leaf>
</component> </component>
<component name="FileTemplateManagerImpl"> <component name="FileTemplateManagerImpl">
...@@ -124,6 +112,7 @@ ...@@ -124,6 +112,7 @@
<find>dep</find> <find>dep</find>
<find>full</find> <find>full</find>
<find>fullPath</find> <find>fullPath</find>
<find>onFile</find>
</findStrings> </findStrings>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
...@@ -145,20 +134,20 @@ ...@@ -145,20 +134,20 @@
<option value="$PROJECT_DIR$/src/models/User.ts" /> <option value="$PROJECT_DIR$/src/models/User.ts" />
<option value="$PROJECT_DIR$/tsconfig.json" /> <option value="$PROJECT_DIR$/tsconfig.json" />
<option value="$PROJECT_DIR$/src/models/Iridium.ts" /> <option value="$PROJECT_DIR$/src/models/Iridium.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/bin/run" /> <option value="$PROJECT_DIR$/bin/run" />
<option value="$PROJECT_DIR$/src/models/App.ts" /> <option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/.env" /> <option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/src/routes/config.ts" /> <option value="$PROJECT_DIR$/src/routes/config.ts" />
<option value="$PROJECT_DIR$/src/routes/package.json" /> <option value="$PROJECT_DIR$/src/routes/package.json" />
<option value="$PROJECT_DIR$/config.ts" /> <option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/src/models/Package.ts" />
<option value="$PROJECT_DIR$/package/utils.ts" />
<option value="$PROJECT_DIR$/views/update.hbs" /> <option value="$PROJECT_DIR$/views/update.hbs" />
<option value="$PROJECT_DIR$/server.ts" /> <option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" /> <option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/src/models/Package.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$/package/main.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" /> <option value="$PROJECT_DIR$/src/routes/package.ts" />
</list> </list>
</option> </option>
...@@ -179,9 +168,9 @@ ...@@ -179,9 +168,9 @@
<handled-path value="$PROJECT_DIR$/node_modules" /> <handled-path value="$PROJECT_DIR$/node_modules" />
</component> </component>
<component name="ProjectFrameBounds"> <component name="ProjectFrameBounds">
<option name="x" value="52" /> <option name="x" value="413" />
<option name="y" value="23" /> <option name="y" value="95" />
<option name="width" value="1227" /> <option name="width" value="1474" />
<option name="height" value="777" /> <option name="height" value="777" />
</component> </component>
<component name="ProjectLevelVcsManager"> <component name="ProjectLevelVcsManager">
...@@ -216,6 +205,70 @@ ...@@ -216,6 +205,70 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" /> <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT> </PATH_ELEMENT>
</PATH> </PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="moecube-console" />
<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" />
<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="src" />
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="routes" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH> <PATH>
<PATH_ELEMENT> <PATH_ELEMENT>
<option name="myItemId" value="moecube-console" /> <option name="myItemId" value="moecube-console" />
...@@ -380,12 +433,13 @@ ...@@ -380,12 +433,13 @@
<workItem from="1492407479780" duration="11530000" /> <workItem from="1492407479780" duration="11530000" />
<workItem from="1492482951965" duration="50292000" /> <workItem from="1492482951965" duration="50292000" />
<workItem from="1492655792313" duration="22867000" /> <workItem from="1492655792313" duration="22867000" />
<workItem from="1492741754173" duration="2752000" /> <workItem from="1492741754173" duration="2869000" />
<workItem from="1492753774887" duration="5690000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="108513000" /> <option name="totallyTimeSpent" value="114320000" />
</component> </component>
<component name="TodoView"> <component name="TodoView">
<todo-panel id="selected-file"> <todo-panel id="selected-file">
...@@ -397,11 +451,11 @@ ...@@ -397,11 +451,11 @@
</todo-panel> </todo-panel>
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="52" y="23" width="1227" height="777" extended-state="0" /> <frame x="413" y="95" width="1474" height="777" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <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="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.2893864" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.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="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 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="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" />
...@@ -465,24 +519,6 @@ ...@@ -465,24 +519,6 @@
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<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/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2790">
<caret line="167" column="0" lean-forward="false" selection-start-line="167" selection-start-column="0" selection-end-line="168" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts"> <entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="234"> <state relative-caret-position="234">
...@@ -636,14 +672,6 @@ ...@@ -636,14 +672,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="12" lean-forward="false" selection-start-line="3" selection-start-column="12" selection-end-line="3" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/@types/fs-extra-promise/index.d.ts"> <entry file="file://$PROJECT_DIR$/node_modules/@types/fs-extra-promise/index.d.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172"> <state relative-caret-position="172">
...@@ -710,13 +738,6 @@ ...@@ -710,13 +738,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/.env">
<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$/server.ts"> <entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414"> <state relative-caret-position="414">
...@@ -739,6 +760,14 @@ ...@@ -739,6 +760,14 @@
</state> </state>
</provider> </provider>
</entry> </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"> <entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90"> <state relative-caret-position="90">
...@@ -747,66 +776,92 @@ ...@@ -747,66 +776,92 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/package/utils.ts"> <entry file="file://$PROJECT_DIR$/node_modules/@types/mime/index.d.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="181"> <state relative-caret-position="126">
<caret line="67" column="16" lean-forward="false" selection-start-line="67" selection-start-column="16" selection-end-line="67" selection-end-column="16" /> <caret line="7" column="0" lean-forward="true" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding> <folding>
<element signature="e#0#38#0" expanded="false" /> <element signature="n#!!doc" expanded="false" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts"> <entry file="file://$USER_HOME$/Desktop/desmume-darwin.meta4">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="3096"> <state relative-caret-position="36">
<caret line="184" column="20" lean-forward="false" selection-start-line="184" selection-start-column="20" selection-end-line="184" selection-end-column="20" /> <caret line="2" column="39" lean-forward="true" selection-start-line="2" selection-start-column="39" selection-end-line="2" selection-end-column="39" />
<folding> <folding />
<element signature="e#0#28#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/package/main.ts"> <entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="192"> <state relative-caret-position="174">
<caret line="50" column="0" lean-forward="false" selection-start-line="50" selection-start-column="0" selection-end-line="50" selection-end-column="0" /> <caret line="14" column="16" lean-forward="true" selection-start-line="14" selection-start-column="16" selection-end-line="14" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<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" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.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" />
<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="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" />
<folding> <folding>
<element signature="e#0#25#0" expanded="true" /> <element signature="e#0#28#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/app.ts"> <entry file="file://$PROJECT_DIR$/package/utils.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="414"> <state relative-caret-position="150">
<caret line="23" column="49" lean-forward="false" selection-start-line="23" selection-start-column="49" selection-end-line="23" selection-end-column="49" /> <caret line="15" column="43" lean-forward="false" selection-start-line="15" selection-start-column="43" selection-end-line="15" selection-end-column="43" />
<folding> <folding>
<element signature="e#39#80#0" expanded="true" /> <element signature="e#0#38#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts"> <entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="24"> <state relative-caret-position="513">
<caret line="37" column="10" lean-forward="false" selection-start-line="37" selection-start-column="10" selection-end-line="37" selection-end-column="10" /> <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 /> <folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts"> <entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="199"> <state relative-caret-position="187">
<caret line="55" column="19" lean-forward="false" selection-start-line="55" selection-start-column="19" selection-end-line="55" selection-end-column="19" /> <caret line="23" column="20" lean-forward="false" selection-start-line="23" selection-start-column="20" selection-end-line="23" selection-end-column="20" />
<folding /> <folding>
<element signature="e#39#80#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts"> <entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="297"> <state relative-caret-position="178">
<caret line="118" column="0" lean-forward="true" selection-start-line="118" selection-start-column="0" selection-end-line="118" selection-end-column="0" /> <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> <folding>
<element signature="e#39#73#0" expanded="true" /> <element signature="e#39#73#0" expanded="true" />
</folding> </folding>
......
FROM node:alpine FROM node:alpine
MAINTAINER nanoo
RUN mkdir -p /usr/src/app RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app WORKDIR /usr/src/app
......
...@@ -39,11 +39,12 @@ export async function bundle(...args) { ...@@ -39,11 +39,12 @@ export async function bundle(...args) {
await crawlPath(package_path, { await crawlPath(package_path, {
relative: true,
onFile: async (file) => { onFile: async (file) => {
let file_hash = await caculateSHA256(file) let file_hash = await caculateSHA256(file)
files.set(file, { files.set(file, {
path: file, path: path.relative(package_path,file),
hash: file_hash, hash: file_hash,
size: (await fs.statAsync(file)).size size: (await fs.statAsync(file)).size
}) })
...@@ -55,14 +56,17 @@ export async function bundle(...args) { ...@@ -55,14 +56,17 @@ export async function bundle(...args) {
let sand_hash = await caculateSHA256(sand_file) let sand_hash = await caculateSHA256(sand_file)
archives.set(sand_file, { archives.set(sand_file, {
path: sand_file, path: path.relative(sand_path, sand_file),
hash: sand_hash, hash: sand_hash,
size: (await fs.statAsync(sand_file)).size 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) => { onDir: async (_files, _path, depth) => {
files.set(_path, {
path: path.relative(package_path, _path),
})
}, },
}) })
...@@ -80,7 +84,6 @@ export async function bundle(...args) { ...@@ -80,7 +84,6 @@ export async function bundle(...args) {
return { return {
files: Array.from(files.values()), files: Array.from(files.values()),
archives: Array.from(archives.values()), archives: Array.from(archives.values()),
fullPath,
fullSize, fullSize,
fullHash fullHash
} }
......
...@@ -12,8 +12,8 @@ export interface Action { ...@@ -12,8 +12,8 @@ export interface Action {
export interface File { export interface File {
path: string; path: string;
size: number; size?: number;
hash: string; hash?: string;
} }
export interface Archive { export interface Archive {
...@@ -28,7 +28,6 @@ export interface Package { ...@@ -28,7 +28,6 @@ export interface Package {
appId: string; appId: string;
fullSize: number; fullSize: number;
fullHash: string; fullHash: string;
fullPath: string;
version: string; version: string;
status: string; status: string;
type: string; type: string;
...@@ -52,8 +51,6 @@ export class PackageSchema extends Instance<Package, PackageSchema> implements P ...@@ -52,8 +51,6 @@ export class PackageSchema extends Instance<Package, PackageSchema> implements P
fullSize: number; fullSize: number;
@Property(String, false) @Property(String, false)
fullHash: string; fullHash: string;
@Property(String, false)
fullPath: string;
@Property(String, true) @Property(String, true)
type: string; type: string;
@Property(String, true) @Property(String, true)
......
...@@ -4,33 +4,39 @@ import {mongodb} from '../models/iridium' ...@@ -4,33 +4,39 @@ import {mongodb} from '../models/iridium'
import {Context} from "koa"; import {Context} from "koa";
import config from '../../config' import config from '../../config'
import {Archive, Package} from "../models/Package"; import {Archive, Package} from "../models/Package";
import {renderChecksum} from "../utils";
const router = new Router(); const router = new Router();
router.get('/v2/packages', async (ctx: Context, next) => { router.get('/v2/packages', async (ctx: Context, next) => {
if (!ctx.request.query.appId) { 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.params.id, status: 'uploaded'}) let packs = await mongodb.Packages.find({appId: ctx.request.query.appId, status: 'uploaded'}).toArray()
ctx.body = { ctx.body = {
[ctx.request.query.appId]: packs [ctx.request.query.appId]: packs
} }
}) })
router.get('/v2/package/:id', async(ctx: Context, next) => { router.get('/v2/package/:id/checksum', async(ctx: Context, next) => {
//TODO 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)
}) })
router.get('/v2/package/:id/meta', async(ctx: Context, next) => { router.get('/v2/package/:id/meta', async(ctx: Context, next) => {
let {fullHash, fullSize, fullPath} = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'}) || {} let pack = await mongodb.Packages.findOne({id: ctx.params.id, status: 'uploaded'})
if(!fullHash || !fullSize || !fullPath) { if(!pack) {
ctx.throw(400, 'pack error') return ctx.throw(400, 'pack error')
} }
await ctx['render']('update', {files: { await ctx['render']('update', {files: {
name: fullPath, name: pack.id,
size: fullSize, size: pack.fullSize,
hash: fullHash hash: pack.fullHash
}}) }})
}) })
...@@ -69,7 +75,7 @@ router.post('/v2/package/:id/update', async (ctx: Context, next) => { ...@@ -69,7 +75,7 @@ router.post('/v2/package/:id/update', async (ctx: Context, next) => {
if( sandSize <= fullSize ) { if( sandSize <= fullSize ) {
files = [{ files = [{
path: pack.fullPath, path: pack.id,
size: pack.fullSize, size: pack.fullSize,
hash: pack.fullHash hash: pack.fullHash
}] }]
......
...@@ -21,8 +21,9 @@ import config from '../../config' ...@@ -21,8 +21,9 @@ import config from '../../config'
// } // }
const checkPackage = async (file) => { const checkPackage = async (file) => {
const ext = mime.extension(file.mime); // const ext = mime.extension(file.mime);
if (['zip', 'gz', 'rar', '7z'].indexOf(ext) === -1) { if (['zip', 'gz', 'rar', '7z', 'application/x-gzip'].indexOf(file.mime) === -1) {
throw new Error('Unsupported file type'); throw new Error('Unsupported file type');
} }
} }
...@@ -77,10 +78,7 @@ export const UploadPackage = async (ctx: Context) => { ...@@ -77,10 +78,7 @@ export const UploadPackage = async (ctx: Context) => {
const {files} = await busboy(ctx.req); const {files} = await busboy(ctx.req);
ctx.body = await Promise.all(files.map(async file => { ctx.body = await Promise.all(files.map(async file => {
const ext = mime.extension(file.mime); await checkPackage(file)
if (['zip', 'gz', 'rar', '7z'].indexOf(ext) === -1) {
throw new Error('Unsupported file type');
}
const filename = uuid.v1() const filename = uuid.v1()
...@@ -97,8 +95,6 @@ export const UploadPackage = async (ctx: Context) => { ...@@ -97,8 +95,6 @@ export const UploadPackage = async (ctx: Context) => {
file.on('close', async() => { file.on('close', async() => {
try { try {
pack.status = 'uploading' pack.status = 'uploading'
await pack.save() await pack.save()
......
...@@ -12,4 +12,8 @@ export const handleImg = (img) => { ...@@ -12,4 +12,8 @@ export const handleImg = (img) => {
} else { } else {
return 'https://cdn01.moecube.com/accounts/default_avatar.jpg'; 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');
} }
\ No newline at end of file
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