Commit 045e05c1 authored by nano's avatar nano

fix mongoldb dot question

parent 7b89fae6
......@@ -2,8 +2,16 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="DELETED" beforePath="$PROJECT_DIR$/src/dot.ts" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config.ts" afterPath="$PROJECT_DIR$/config.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/package.json" afterPath="$PROJECT_DIR$/package.json" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/models/App.ts" afterPath="$PROJECT_DIR$/src/models/App.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/utils.ts" afterPath="$PROJECT_DIR$/src/utils.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test.ts" afterPath="$PROJECT_DIR$/test.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" />
......@@ -26,106 +34,75 @@
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file leaf-file-name="Dockerfile" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/Dockerfile">
<file leaf-file-name="migrate.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/migrate.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="304">
<caret line="19" column="0" lean-forward="false" selection-start-line="19" selection-start-column="0" selection-end-line="19" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="app.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="221">
<caret line="64" column="9" lean-forward="true" selection-start-line="64" selection-start-column="9" selection-end-line="64" selection-end-column="9" />
<state relative-caret-position="210">
<caret line="24" column="17" lean-forward="false" selection-start-line="24" selection-start-column="17" selection-end-line="24" selection-end-column="17" />
<folding>
<element signature="e#39#81#0" expanded="true" />
<element signature="e#0#26#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="upload.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<file leaf-file-name="test.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="376">
<caret line="149" column="0" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
<state relative-caret-position="479">
<caret line="46" column="46" lean-forward="false" selection-start-line="46" selection-start-column="46" selection-end-line="46" selection-end-column="46" />
<folding>
<element signature="e#0#28#0" expanded="true" />
<element signature="e#355#397#0" expanded="true" />
<element signature="n#!!doc" expanded="true" />
<element signature="e#44#86#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="update.hbs" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/views/update.hbs">
<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="144">
<caret line="8" column="15" lean-forward="false" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="15" />
<state relative-caret-position="3386">
<caret line="215" column="22" lean-forward="false" selection-start-line="215" selection-start-column="22" selection-end-line="215" selection-end-column="22" />
<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">
<file leaf-file-name="App.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="89">
<caret line="20" column="12" lean-forward="false" selection-start-line="20" selection-start-column="12" selection-end-line="20" selection-end-column="36" />
<state relative-caret-position="584">
<caret line="123" column="0" lean-forward="false" selection-start-line="123" selection-start-column="0" selection-end-line="124" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="test.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test.ts">
<file leaf-file-name="app.ts" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/routes/app.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="14" column="102" lean-forward="true" selection-start-line="14" selection-start-column="102" selection-end-line="14" selection-end-column="102" />
<state relative-caret-position="180">
<caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="true" />
<element signature="e#44#86#0" expanded="true" />
<element signature="e#39#81#0" expanded="true" />
</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="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="315">
<caret line="65" column="54" lean-forward="false" selection-start-line="65" selection-start-column="54" selection-end-line="65" selection-end-column="54" />
<state relative-caret-position="54">
<caret line="3" column="15" lean-forward="false" selection-start-line="3" selection-start-column="15" selection-end-line="3" selection-end-column="15" />
<folding>
<element signature="e#0#29#0" expanded="true" />
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="server.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="159">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="40" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="package.json" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="19" column="29" lean-forward="false" selection-start-line="19" selection-start-column="29" selection-end-line="19" selection-end-column="29" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -139,10 +116,6 @@
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>news</find>
<find>fil</find>
<find>co</find>
<find>files</find>
<find>hashes</find>
<find>console.log</find>
<find>0</find>
......@@ -169,6 +142,10 @@
<find>joi.ob</find>
<find>http://114.215.243.95:8001</find>
<find>joi</find>
<find>entri</find>
<find>admin</find>
<find>patch</find>
<find>files</find>
</findStrings>
</component>
<component name="Git.Settings">
......@@ -200,17 +177,19 @@
<option value="$PROJECT_DIR$/docker-compose.yml" />
<option value="$PROJECT_DIR$/src/routes/upload.js" />
<option value="$PROJECT_DIR$/src/routes/upload.ts" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/Dockerfile" />
<option value="$PROJECT_DIR$/entrypoint.sh" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/server.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/views/update.hbs" />
<option value="$PROJECT_DIR$/package/main.ts" />
<option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/test.ts" />
<option value="$PROJECT_DIR$/config.ts" />
<option value="$PROJECT_DIR$/src/routes/package.ts" />
<option value="$PROJECT_DIR$/src/models/App.ts" />
<option value="$PROJECT_DIR$/migrate.ts" />
<option value="$PROJECT_DIR$/src/dot.ts" />
<option value="$PROJECT_DIR$/src/utils.ts" />
<option value="$PROJECT_DIR$/src/routes/app.ts" />
</list>
</option>
......@@ -231,8 +210,8 @@
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="445" />
<option name="y" value="1103" />
<option name="x" value="230" />
<option name="y" value="1138" />
<option name="width" value="1232" />
<option name="height" value="777" />
</component>
......@@ -310,7 +289,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="package" />
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="models" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
......@@ -486,12 +469,12 @@
<workItem from="1493107593448" duration="867000" />
<workItem from="1493174892830" duration="25000" />
<workItem from="1493174934848" duration="6205000" />
<workItem from="1493198225466" duration="20790000" />
<workItem from="1493198225466" duration="31925000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="172016000" />
<option name="totallyTimeSpent" value="183151000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -503,7 +486,7 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="445" y="1103" width="1232" height="777" extended-state="0" />
<frame x="230" y="1138" width="1232" height="777" 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.32846716" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
......@@ -555,6 +538,8 @@
<option value="$USER_HOME$/demo/moecube/app/main-aot.js" />
<option value="$PROJECT_DIR$/test.js" />
<option value="$PROJECT_DIR$/test.js.map" />
<option value="$PROJECT_DIR$/migrate.js.map" />
<option value="$PROJECT_DIR$/migrate.js" />
</list>
</option>
</component>
......@@ -574,22 +559,6 @@
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/router.ts" />
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="20">
<caret line="1" column="12" lean-forward="true" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/mongodb.js" />
<entry file="file://$PROJECT_DIR$/server.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</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">
......@@ -744,14 +713,6 @@
</state>
</provider>
</entry>
<entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es6.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="137">
<caret line="998" column="4" lean-forward="false" selection-start-line="998" selection-start-column="4" selection-end-line="998" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/node_modules/iridium/dist/lib/Instance.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="558">
......@@ -768,14 +729,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="28" lean-forward="true" selection-start-line="0" selection-start-column="28" selection-end-line="0" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="90">
......@@ -792,28 +745,18 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="214">
<caret line="29" column="7" lean-forward="true" selection-start-line="29" selection-start-column="7" selection-end-line="29" selection-end-column="7" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/App.ts">
<entry file="file://$PROJECT_DIR$/entrypoint.sh">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="155">
<caret line="116" column="30" lean-forward="true" selection-start-line="116" selection-start-column="30" selection-end-line="116" selection-end-column="30" />
<state relative-caret-position="108">
<caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/entrypoint.sh">
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="108">
<caret line="6" column="0" lean-forward="true" selection-start-line="6" selection-start-column="0" selection-end-line="6" selection-end-column="0" />
<state relative-caret-position="-779">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<folding />
</state>
</provider>
......@@ -826,44 +769,46 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/views/update.hbs">
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="144">
<caret line="8" column="15" lean-forward="false" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="15" />
<folding />
<state relative-caret-position="178">
<caret line="138" column="0" lean-forward="true" selection-start-line="138" selection-start-column="0" selection-end-line="138" selection-end-column="0" />
<folding>
<element signature="e#0#28#0" expanded="true" />
<element signature="e#355#397#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/upload.ts">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="376">
<caret line="149" column="0" lean-forward="false" selection-start-line="149" selection-start-column="0" selection-end-line="150" selection-end-column="0" />
<state relative-caret-position="342">
<caret line="20" column="29" lean-forward="false" selection-start-line="20" selection-start-column="29" selection-end-line="20" selection-end-column="29" />
<folding>
<element signature="e#0#28#0" expanded="true" />
<element signature="e#355#397#0" expanded="true" />
<marker date="1493354750000" expanded="true" signature="245:835" ph="{&quot;@types/joi&quot;: &quot;^10.3.0&quot;...}" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/models/Package.ts">
<entry file="file://$PROJECT_DIR$/server.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-779">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="4" selection-end-column="0" />
<state relative-caret-position="612">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="40" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/routes/package.ts">
<entry file="file://$PROJECT_DIR$/views/update.hbs">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="89">
<caret line="20" column="12" lean-forward="false" selection-start-line="20" selection-start-column="12" selection-end-line="20" selection-end-column="36" />
<state relative-caret-position="144">
<caret line="8" column="15" lean-forward="false" selection-start-line="8" selection-start-column="15" selection-end-line="8" selection-end-column="15" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package/main.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="315">
<state relative-caret-position="1170">
<caret line="65" column="54" lean-forward="false" selection-start-line="65" selection-start-column="54" selection-end-line="65" selection-end-column="54" />
<folding>
<element signature="e#0#29#0" expanded="true" />
......@@ -871,26 +816,34 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/server.ts">
<entry file="file://$PROJECT_DIR$/node_modules/axios/index.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="159">
<caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="40" selection-end-column="0" />
<state relative-caret-position="36">
<caret line="2" column="1" lean-forward="true" selection-start-line="2" selection-start-column="1" selection-end-line="2" selection-end-column="1" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<entry file="file://$PROJECT_DIR$/config.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="19" column="29" lean-forward="false" selection-start-line="19" selection-start-column="29" selection-end-line="19" selection-end-column="29" />
<state relative-caret-position="162">
<caret line="9" column="9" lean-forward="false" selection-start-line="9" selection-start-column="9" selection-end-line="9" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/migrate.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="109">
<caret line="48" column="13" lean-forward="true" selection-start-line="48" selection-start-column="13" selection-end-line="48" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/test.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="14" column="102" lean-forward="true" selection-start-line="14" selection-start-column="102" selection-end-line="14" selection-end-column="102" />
<state relative-caret-position="479">
<caret line="46" column="46" lean-forward="false" selection-start-line="46" selection-start-column="46" selection-end-line="46" selection-end-column="46" />
<folding>
<element signature="n#!!doc" expanded="true" />
<element signature="e#44#86#0" expanded="true" />
......@@ -898,10 +851,62 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/migrate.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="24" column="17" lean-forward="false" selection-start-line="24" selection-start-column="17" selection-end-line="24" selection-end-column="17" />
<folding>
<element signature="e#0#26#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="3386">
<caret line="215" column="22" lean-forward="false" selection-start-line="215" selection-start-column="22" selection-end-line="215" selection-end-column="22" />
<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="584">
<caret line="123" column="0" lean-forward="false" selection-start-line="123" selection-start-column="0" selection-end-line="124" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/dot.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/utils.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="54">
<caret line="3" column="15" lean-forward="false" selection-start-line="3" selection-start-column="15" selection-end-line="3" selection-end-column="15" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/jsLanguageServicesImpl/external/lib.es6.d.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="186">
<caret line="885" column="30" lean-forward="true" selection-start-line="885" selection-start-column="30" selection-end-line="885" selection-end-column="30" />
<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="221">
<caret line="64" column="9" lean-forward="true" selection-start-line="64" selection-start-column="9" selection-end-line="64" selection-end-column="9" />
<state relative-caret-position="180">
<caret line="10" column="0" lean-forward="true" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
<folding>
<element signature="e#39#81#0" expanded="true" />
</folding>
......
import * as path from 'path'
import * as path from 'path';
let baseUrl = 'http://127.0.01:8001'
export default {
upload_path: path.join(__dirname, "./test/upload"),
download_path: path.join(__dirname, "./test/release/downloads")
}
\ No newline at end of file
upload_path: path.join(__dirname, './test/upload'),
download_path: path.join(__dirname, './test/release/downloads'),
new_apps_json: `${baseUrl}/v2/apps`,
old_apps_json: 'https://api.moecube.com/apps.json',
new_app: (appId) => `${baseUrl}/v1/app/${appId}`,
old_metalinks: (package_id) => `https://cdn01.moecube.com/release/metalinks/${package_id}.meta4llf`,
new_metalinks: (package_id) => `${baseUrl}/${package_id}/meta`,
old_checksums: (package_id) => `https://cdn01.moecube.com/release/checksums/${package_id}`,
new_checksums: (package_id) => `${baseUrl}/${package_id}/checksum`,
};
import axios from 'axios';
import config from './config';
async function createApp(app) {
return await axios.post(config.new_app(app.id), {
id: app.id,
name: app.name,
author: '1',
});
}
async function updateApp(app) {
const {id, name, description, developers, publishers, released_at, category, tags, dependencies, references, homepage, actions, version, conference, icon, cover, background, news, ...other} = app;
return await axios.patch(config.new_app(app.id), {
id,
name,
description,
developers,
publishers,
released_at,
category,
tags,
dependencies,
references,
homepage,
homepage,
actions,
version,
conference,
icon,
cover,
background,
news: {}
...other,
});
}
async function main() {
let {data} = await axios.get(config.old_apps_json);
try {
for (let app of data) {
await createApp(app).catch(error => {});
await updateApp(app);
}
} catch (e) {
console.trace(e);
}
}
main();
......@@ -10,11 +10,13 @@
"pretest": "tsc"
},
"dependencies": {
"@types/axios": "^0.14.0",
"@types/joi": "^10.3.0",
"aliyun-oss-upload-stream": "^1.3.0",
"aliyun-sdk": "^1.9.22",
"aria2": "^3.0.0",
"async-busboy": "^0.4.0",
"axios": "^0.16.1",
"bluebird": "^3.5.0",
"dotenv": "^4.0.0",
"fs-extra-promise": "^1.0.1",
......
export const dot = '__<DOT>__';
......@@ -24,6 +24,8 @@ interface File {
}
export interface App {
id: string;
status: string;
......@@ -41,7 +43,7 @@ export interface App {
homepage?: string;
locales?: string[];
actions?: Platform<{ [key: string]: { execuate: string, args: string[], env: { [key: string]: string } } }>;
files?: { [key: string]: { sync: boolean } };
files?: { [key: string]: { sync: boolean, ignore: boolean } };
version?: Platform<string>;
news?: I18n<{ title: string, url: string, image: string }[]>;
conference?: string;
......@@ -49,7 +51,6 @@ export interface App {
icon?: string;
cover?: string;
background?: string;
// packages?: Package[];
created_at?: Date;
}
......@@ -89,7 +90,7 @@ export class AppSchema extends Instance<App, AppSchema> implements App {
@Property(Object, false)
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, ignore: boolean} };
@Property(Object, false)
version?: Platform<string>;
@Property(Object, false)
......
......@@ -4,8 +4,11 @@ import {App} from '../models/App';
import {Context} from 'koa';
import * as joi from 'joi';
import {promisify as py} from 'bluebird';
import {dot} from '../utils';
const router = new Router();
const isTest = process.env['ENV'] !== 'production';
let validate: any = py(joi.validate);
router.get('/v2/apps', async (ctx: Context, next) => {
......@@ -19,10 +22,20 @@ router.get('/v1/apps', async (ctx: Context, next) => {
}
let apps = {};
if (payload.admin == 'true') {
apps = await mongodb.Apps.find({}).toArray();
if (isTest || payload.admin == 'true') {
apps = await mongodb.Apps.find({}).map(app => {
if (app.files) {
app.files = Object.assign({}, ...Object.keys(app.files).map(key => ({[key.replace(new RegExp(dot, 'g'), '.')]: app.files![key]})));
}
return app;
});
} else {
apps = await mongodb.Apps.find({author: payload.author}).toArray();
apps = await mongodb.Apps.find({author: payload.author}).map(app => {
if (app.files) {
app.files = Object.assign({}, ...Object.keys(app.files).map(key => ({[key.replace(new RegExp(dot, 'g'), '.')]: app.files![key]})));
}
return app;
});
}
ctx.body = apps;
});
......@@ -71,6 +84,9 @@ router.patch('/v1/app/:id', async (ctx: Context, next) => {
return ctx.throw(e);
}
}
if (_app.files && Object.keys(_app.files).length > 0) {
_app.files = Object.assign({}, ...Object.keys(_app.files).map(key => ({[key.replace(new RegExp('\\.', 'g'), dot)]: _app.files[key]})));
}
app.handleUpdate(_app);
......
......@@ -18,6 +18,7 @@ router.get('/v2/packages', async (ctx: Context, next) => {
ctx.body = 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) {
......
import {URL} from 'url';
import * as child_process from 'child_process';
export const dot = '__<DOT>__';
export const handleImg = (img) => {
if (img) {
let url: URL;
......
......@@ -4,25 +4,17 @@
import * as fetch from 'isomorphic-fetch';
import * as _ from 'lodash';
import {XmlDocument} from 'xmldoc';
// 配置
const old_apps_json = 'https://api.moecube.com/apps.json';
const new_apps_json = 'http://127.0.01:8001/v2/apps';
const old_metalinks = (package_id) => `https://cdn01.moecube.com/release/metalinks/${package_id}.meta4`;
const new_metalinks = (package_id) => `http://127.0.0.1:8001/v2/package/${package_id}/meta`; // 修改
const old_checksums = (package_id) => `https://cdn01.moecube.com/release/checksums/${package_id}`;
const new_checksums = (package_id) => `http://127.0.0.1:8001/v2/package/${package_id}/checksum`; // 修改
import config from './config';
async function test_checksums() {
const apps: any[] = (await (await fetch(new_apps_json)).json())
const apps: any[] = (await (await fetch(config.new_apps_json)).json())
.filter(i => !['ygopro', 'desmume'].includes(i.id)); // 排除 ygopro 和 desmume
for (let app of _.sampleSize(apps, 5)) {
console.log(`正在测试 ${app.id} 的 checksum`);
const old_checksum = await (await fetch(old_checksums(app.id))).text();
const new_checksum = await (await fetch(new_checksums(app.id))).text();
const old_checksum = await (await fetch(config.old_checksums(app.id))).text();
const new_checksum = await (await fetch(config.new_checksums(app.id))).text();
if (old_checksum !== new_checksum) {
console.log('', old_checksum);
console.log('', new_checksum);
......@@ -31,12 +23,12 @@ async function test_checksums() {
}
}
async function test_download() {
const apps: any[] = (await (await fetch(new_apps_json)).json())
const apps: any[] = (await (await fetch(config.new_apps_json)).json())
.filter(i => !['ygopro', 'desmume'].includes(i.id)); // 排除 ygopro 和 desmume
const app: any = _.sample(apps);
console.log(`正在测试 ${app.id} 的 下载`);
const metalink = await (await fetch(new_metalinks(app.id))).text();
const metalink = await (await fetch(config.new_metalinks(app.id))).text();
const xml = new XmlDocument(metalink);
const url = xml.valueWithPath('file.url');
const response = await fetch(url, {method: 'HEAD'});
......@@ -49,13 +41,14 @@ async function test_update() {
}
async function test_apps_json() {
const old_apps = await (await fetch(old_apps_json)).json();
const new_apps = await (await fetch(new_apps_json)).json();
const old_apps = await (await fetch(config.old_apps_json)).json();
const new_apps = await (await fetch(config.new_apps_json)).json();
for (let new_app of new_apps) {
let old_app = old_apps.find(i => i.id == new_app.id);
delete old_app.network;
delete old_app.author;
delete new_app.author;
delete old_app.news;
delete new_app.news;
if (!old_app) {
throw `应用 ${new_app.id} 在旧的列表不存在`;
}
......
......@@ -6,6 +6,12 @@
version "1.3.2"
resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.2.tgz#52897ad5a51f05ea2f57f8e8136085c7d1c385a5"
"@types/axios@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46"
dependencies:
axios "*"
"@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"
......@@ -303,6 +309,12 @@ aws4@^1.2.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
axios@*, axios@^0.16.1:
version "0.16.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.1.tgz#c0b6d26600842384b8f509e57111f0d2df8223ca"
dependencies:
follow-redirects "^1.2.3"
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"
......@@ -546,7 +558,7 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
debug@*, debug@^2.1.0, debug@^2.2.0:
debug@*, debug@^2.1.0, debug@^2.2.0, debug@^2.4.5:
version "2.6.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0"
dependencies:
......@@ -718,6 +730,12 @@ findup-sync@~0.3.0:
dependencies:
glob "~5.0.0"
follow-redirects@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.3.tgz#01abaeca85e3609837d9fcda3167a7e42fdaca21"
dependencies:
debug "^2.4.5"
for-in@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
......
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