mirror of
https://github.com/aspnet/JavaScriptServices.git
synced 2025-12-24 02:30:13 +00:00
Compare commits
276 Commits
font-aweso
...
angular2-l
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
df5d27d0d8 | ||
|
|
1f03b1e633 | ||
|
|
8544714cbb | ||
|
|
0c09c68b77 | ||
|
|
ee601bed50 | ||
|
|
ce40973859 | ||
|
|
347524a116 | ||
|
|
b9c387bf5f | ||
|
|
6ed6b8e3d2 | ||
|
|
dcf51f706c | ||
|
|
365b2c50cb | ||
|
|
efcfc0b9a6 | ||
|
|
68e27d6091 | ||
|
|
08ea344fcf | ||
|
|
a6e0955581 | ||
|
|
d8143e2603 | ||
|
|
3077b8a8c0 | ||
|
|
5866713a05 | ||
|
|
7aacf2151c | ||
|
|
e4623bb186 | ||
|
|
c6a089880c | ||
|
|
59e09816c7 | ||
|
|
c3ad9e8c2f | ||
|
|
119b274c19 | ||
|
|
360688f78b | ||
|
|
0a1ac6a70a | ||
|
|
8d27d9d583 | ||
|
|
8bba142e8f | ||
|
|
94d47a3917 | ||
|
|
13fb00a71e | ||
|
|
684a77430c | ||
|
|
3058c050bb | ||
|
|
821ad85e41 | ||
|
|
76ae9aa58f | ||
|
|
a79bc75671 | ||
|
|
795aac241e | ||
|
|
a38db81b71 | ||
|
|
689f106181 | ||
|
|
627ea78e72 | ||
|
|
3162946139 | ||
|
|
c9526dd4d2 | ||
|
|
3c2fd50e8f | ||
|
|
04111db230 | ||
|
|
5a593d657d | ||
|
|
5a67ca35be | ||
|
|
72dabb3664 | ||
|
|
b7314359c8 | ||
|
|
1bf283877e | ||
|
|
1115a0aff5 | ||
|
|
70ad900f59 | ||
|
|
fadc5d7b98 | ||
|
|
85dcc66723 | ||
|
|
f0825bec1d | ||
|
|
0ec6178617 | ||
|
|
0f3e3ebb3b | ||
|
|
9017ef6fdc | ||
|
|
520ef02b98 | ||
|
|
481ca0a8e0 | ||
|
|
28483e2cf3 | ||
|
|
e8dd8089d4 | ||
|
|
4f7091c5d5 | ||
|
|
66148dacf3 | ||
|
|
8ca45f0d77 | ||
|
|
0559bbb9af | ||
|
|
7b28d05373 | ||
|
|
87b9db7579 | ||
|
|
61ffca6290 | ||
|
|
a9e97f6783 | ||
|
|
f8f4016b33 | ||
|
|
59dbb1f88f | ||
|
|
ac75a3136d | ||
|
|
a3af5c0b25 | ||
|
|
847430a0d9 | ||
|
|
55c3156df2 | ||
|
|
e7785dff01 | ||
|
|
6ed34ddd33 | ||
|
|
9f7bc75960 | ||
|
|
bdd7cfd38b | ||
|
|
be3fb6e876 | ||
|
|
d69b65e572 | ||
|
|
e5178d2938 | ||
|
|
e4d00a2da3 | ||
|
|
345b4f64b5 | ||
|
|
a9bc1201d1 | ||
|
|
6a1f35da8f | ||
|
|
d7d1a04751 | ||
|
|
351fe3d15c | ||
|
|
3313a7f0a6 | ||
|
|
867d070263 | ||
|
|
a046bd2021 | ||
|
|
1a49a27344 | ||
|
|
f8714e9653 | ||
|
|
9d5006107f | ||
|
|
c3316d0caa | ||
|
|
38441c6598 | ||
|
|
f8f42a53b2 | ||
|
|
a93f59c660 | ||
|
|
c377e6cd28 | ||
|
|
2a1435d9c1 | ||
|
|
6789dbc102 | ||
|
|
59526ff16a | ||
|
|
8c456aa0fc | ||
|
|
49bece54c2 | ||
|
|
0907379da8 | ||
|
|
fbb8054c2e | ||
|
|
70f59fc8ec | ||
|
|
e6cfe93e13 | ||
|
|
dad095b749 | ||
|
|
f31b96fe1e | ||
|
|
312885acde | ||
|
|
0763f1062b | ||
|
|
dcb819f644 | ||
|
|
f722dcf98d | ||
|
|
153c9848ca | ||
|
|
aefa578e04 | ||
|
|
953f370336 | ||
|
|
200d80627c | ||
|
|
994653a277 | ||
|
|
17b107bb42 | ||
|
|
67cd5f6093 | ||
|
|
06ccad4344 | ||
|
|
4fd19b4293 | ||
|
|
f34eb582ad | ||
|
|
4580412f73 | ||
|
|
a76b6e25d4 | ||
|
|
2135d77189 | ||
|
|
62b676174e | ||
|
|
67c2cfd84e | ||
|
|
6decb30681 | ||
|
|
33ed333f92 | ||
|
|
6c16ba3da7 | ||
|
|
495c95d227 | ||
|
|
4dd91a9b78 | ||
|
|
06335eeee1 | ||
|
|
eb98067e86 | ||
|
|
a25d1f4731 | ||
|
|
4c3834361e | ||
|
|
4cc61d79e2 | ||
|
|
1c4682e50d | ||
|
|
6545e11bf2 | ||
|
|
8d1cb3a537 | ||
|
|
8705a4b353 | ||
|
|
7c685c1354 | ||
|
|
633969c7b4 | ||
|
|
9c1c1b4023 | ||
|
|
0a116ba2a1 | ||
|
|
2b2465ad2e | ||
|
|
dc130adc91 | ||
|
|
b8913d29dd | ||
|
|
5e669d6e7a | ||
|
|
5d02728159 | ||
|
|
78632617f8 | ||
|
|
e2f8031bb8 | ||
|
|
2cffab14f6 | ||
|
|
9001c191c1 | ||
|
|
832da2a451 | ||
|
|
ebf5a18344 | ||
|
|
d865e1f28b | ||
|
|
62c0680193 | ||
|
|
a8d3eed32c | ||
|
|
5d14f11b1b | ||
|
|
196c0dd32e | ||
|
|
31d8eb69a7 | ||
|
|
4cbbf58600 | ||
|
|
3ff4447924 | ||
|
|
3b91ad9b39 | ||
|
|
bebf24952e | ||
|
|
834301e50d | ||
|
|
03774253eb | ||
|
|
a3cba50e88 | ||
|
|
9cfea61f1e | ||
|
|
157b74a0cd | ||
|
|
17f9ecec29 | ||
|
|
9f6b0b0573 | ||
|
|
dd97ae7316 | ||
|
|
ea2cfc277c | ||
|
|
fadb2b3127 | ||
|
|
69a0a29057 | ||
|
|
8401bbf33a | ||
|
|
e3a4fad951 | ||
|
|
3a4936dbf7 | ||
|
|
bbbcb5ef18 | ||
|
|
d6c6408457 | ||
|
|
9b048c54d4 | ||
|
|
cdd6c16dc6 | ||
|
|
4f15bd6c50 | ||
|
|
828ed07cef | ||
|
|
a734a31745 | ||
|
|
ea81671828 | ||
|
|
b3dbb6e0f1 | ||
|
|
11c45321aa | ||
|
|
fadcb586c6 | ||
|
|
2c97326721 | ||
|
|
1b4dd93fa6 | ||
|
|
7ee8a7b15e | ||
|
|
64903fe0c6 | ||
|
|
077f91847a | ||
|
|
7ee3346a72 | ||
|
|
f9145a43f6 | ||
|
|
da51cd588b | ||
|
|
54f222e88f | ||
|
|
6259b7b938 | ||
|
|
dfcaae6fda | ||
|
|
4b507004b1 | ||
|
|
bd86026bb9 | ||
|
|
996216c751 | ||
|
|
6bceb234d8 | ||
|
|
acfb253a40 | ||
|
|
3087352ea1 | ||
|
|
e60ea04f86 | ||
|
|
867e60d7fd | ||
|
|
8cf116bca8 | ||
|
|
3dc9ac979c | ||
|
|
bf71e3e71c | ||
|
|
c140b5014a | ||
|
|
de9460fba5 | ||
|
|
d858c09b7b | ||
|
|
ca6acc807d | ||
|
|
8285bb0c74 | ||
|
|
75abf1a2ab | ||
|
|
a427d5f0f0 | ||
|
|
e0c18ab269 | ||
|
|
f20ad391b6 | ||
|
|
496338ccca | ||
|
|
0615578d9a | ||
|
|
8c766c0382 | ||
|
|
85b8f033da | ||
|
|
6f44227917 | ||
|
|
3760d3724d | ||
|
|
99bf212cce | ||
|
|
418255e148 | ||
|
|
f6d7321243 | ||
|
|
a7ed0112db | ||
|
|
f26068b62b | ||
|
|
1543595c01 | ||
|
|
3d77a21bc6 | ||
|
|
ae0ffd4d11 | ||
|
|
0289f73a96 | ||
|
|
6a9b7accce | ||
|
|
a6d959b783 | ||
|
|
30a694450c | ||
|
|
d20a72b812 | ||
|
|
24773c8aa4 | ||
|
|
6c645879a8 | ||
|
|
d5055dbaf3 | ||
|
|
3568476cca | ||
|
|
93779a5e46 | ||
|
|
4fc1d60d67 | ||
|
|
1d76284e25 | ||
|
|
c33b227331 | ||
|
|
02315b41c0 | ||
|
|
4e291130a0 | ||
|
|
7f257e86e3 | ||
|
|
5c0505440d | ||
|
|
f13c2595b8 | ||
|
|
bc42e598f9 | ||
|
|
a0ebab1f28 | ||
|
|
ff396377b9 | ||
|
|
81d96766ee | ||
|
|
17801a3c16 | ||
|
|
0234b44355 | ||
|
|
18e8b7101c | ||
|
|
6126c4d480 | ||
|
|
53889c0fc1 | ||
|
|
5f070daac8 | ||
|
|
3270e28b3d | ||
|
|
42e88f7fc4 | ||
|
|
8968a24041 | ||
|
|
0a961a7bd0 | ||
|
|
a9ce762827 | ||
|
|
0d34dba4fd | ||
|
|
808592d3a0 | ||
|
|
d1228dc26a | ||
|
|
09b4135217 | ||
|
|
9bd9444485 | ||
|
|
4937fef28f |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -13,7 +13,6 @@ PublishProfiles/
|
|||||||
*.docstates
|
*.docstates
|
||||||
_ReSharper.*
|
_ReSharper.*
|
||||||
nuget.exe
|
nuget.exe
|
||||||
project.lock.json
|
|
||||||
*net45.csproj
|
*net45.csproj
|
||||||
*net451.csproj
|
*net451.csproj
|
||||||
*k10.csproj
|
*k10.csproj
|
||||||
@@ -37,4 +36,7 @@ npm-debug.log
|
|||||||
/templates/*/node_modules/
|
/templates/*/node_modules/
|
||||||
/templates/*/wwwroot/dist/
|
/templates/*/wwwroot/dist/
|
||||||
/templates/*/ClientApp/dist/
|
/templates/*/ClientApp/dist/
|
||||||
|
/templates/*/yarn.lock
|
||||||
.vscode/
|
.vscode/
|
||||||
|
|
||||||
|
/templates/*/Properties/launchSettings.json
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ addons:
|
|||||||
- libssl-dev
|
- libssl-dev
|
||||||
- libunwind8
|
- libunwind8
|
||||||
- zlib1g
|
- zlib1g
|
||||||
mono:
|
mono: none
|
||||||
- 4.0.5
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
osx_image: xcode7.1
|
osx_image: xcode7.1
|
||||||
script:
|
script:
|
||||||
- ./build.sh verify
|
- ./build.sh
|
||||||
|
|||||||
@@ -1,50 +1,68 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 15
|
||||||
VisualStudioVersion = 14.0.25123.0
|
VisualStudioVersion = 15.0.26228.4
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{E6E88944-4800-40BA-8AF5-069EA3ADFEB8}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{27304DDE-AFB2-4F8B-B765-E3E2F11E886C}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNetCore.NodeServices", "src\Microsoft.AspNetCore.NodeServices\Microsoft.AspNetCore.NodeServices.xproj", "{B0FA4175-8B29-4904-9780-28B3C24B0567}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.NodeServices", "src\Microsoft.AspNetCore.NodeServices\Microsoft.AspNetCore.NodeServices.csproj", "{66B77203-1469-41DF-92F2-2BE6900BD36F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "NodeServicesExamples", "samples\misc\NodeServicesExamples\NodeServicesExamples.xproj", "{6D4BCDD6-7951-449B-BE55-CB7F014B7430}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.NodeServices.Sockets", "src\Microsoft.AspNetCore.NodeServices.Sockets\Microsoft.AspNetCore.NodeServices.Sockets.csproj", "{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{78DAC76C-1092-45AB-BF0D-594B8C7B6569}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.SpaServices", "src\Microsoft.AspNetCore.SpaServices\Microsoft.AspNetCore.SpaServices.csproj", "{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.AngularServices", "src\Microsoft.AspNetCore.AngularServices\Microsoft.AspNetCore.AngularServices.csproj", "{58AAABB6-9D21-42F6-BC97-3DD282B55FD6}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.ReactServices", "src\Microsoft.AspNetCore.ReactServices\Microsoft.AspNetCore.ReactServices.csproj", "{F1081B9A-8D67-4A5E-80C6-615F9A975D4F}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "misc", "misc", "{99EAF1FE-22C8-4526-BE78-74B24125D37F}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
.gitignore = .gitignore
|
||||||
global.json = global.json
|
global.json = global.json
|
||||||
|
README.md = README.md
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MusicStore", "samples\angular\MusicStore\MusicStore.xproj", "{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{23836492-E7F4-4376-85BF-A635C304AC46}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ReactGrid", "samples\react\ReactGrid\ReactGrid.xproj", "{ABF90A5B-F4E0-438C-A6E4-9549FB43690B}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "misc", "misc", "{E6A161EA-646C-4033-9090-95BE809AB8D9}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNetCore.AngularServices", "src\Microsoft.AspNetCore.AngularServices\Microsoft.AspNetCore.AngularServices.xproj", "{421807E6-B62C-417B-B901-46C5DEDAA8F1}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LatencyTest", "samples\misc\LatencyTest\LatencyTest.csproj", "{1931B19A-EC42-4D56-B2D0-FB06D17244DA}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNetCore.ReactServices", "src\Microsoft.AspNetCore.ReactServices\Microsoft.AspNetCore.ReactServices.xproj", "{B04381DE-991F-4831-A0B5-FE1BD3EF80C4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Webpack", "samples\misc\Webpack\Webpack.csproj", "{DE479DC3-1461-4EAD-A188-4AF7AA4AE344}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Microsoft.AspNetCore.SpaServices", "src\Microsoft.AspNetCore.SpaServices\Microsoft.AspNetCore.SpaServices.xproj", "{4624F728-6DFF-44B6-93B5-3C7D9C94BF3F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NodeServicesExamples", "samples\misc\NodeServicesExamples\NodeServicesExamples.csproj", "{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Templates", "Templates", "{727E6D58-6830-4792-96C6-E138A33959FB}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "angular", "angular", "{B54435EB-D5E8-4CEC-A02E-DDCB0C750E34}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Angular2Spa", "templates\Angular2Spa\Angular2Spa.xproj", "{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicStore", "samples\angular\MusicStore\MusicStore.csproj", "{63FC66E7-559B-4426-93E1-2D951EFC8293}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ReactReduxSpa", "templates\ReactReduxSpa\ReactReduxSpa.xproj", "{DBFC6DB0-A6D1-4694-A108-1C604B988DA3}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "react", "react", "{BD77E73E-13BC-4550-99DA-51869BD8DFC4}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "ReactSpa", "templates\ReactSpa\ReactSpa.xproj", "{E9D1A695-F0E6-46F2-B5E3-72F4AF805387}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactGrid", "samples\react\ReactGrid\ReactGrid.csproj", "{3B023106-88DB-4C3A-B01F-C1AECB02D80B}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "WebApplicationBasic", "templates\WebApplicationBasic\WebApplicationBasic.xproj", "{CB4398D6-B7F1-449A-AE02-828769679232}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MusicStore", "samples\react\MusicStore\MusicStore.csproj", "{6E898586-79CA-4AA8-946E-943B3682F376}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{E0771531-BE20-40CD-A1B0-A57E09511060}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "templates", "templates", "{1598B415-73F1-4B37-B3B4-0A10677ABB2D}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "Webpack", "samples\misc\Webpack\Webpack.xproj", "{A8905301-8492-42FD-9E83-F715A0FDC3A2}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "KnockoutSpa", "templates\KnockoutSpa\KnockoutSpa.csproj", "{F60248B1-940E-43FB-BEA0-589362AA6320}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "LatencyTest", "samples\misc\LatencyTest\LatencyTest.xproj", "{A64AF9D9-72AA-4433-BE1D-DC2524B6808A}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Angular2Spa", "templates\Angular2Spa\Angular2Spa.csproj", "{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "React", "React", "{E0EBA813-4478-4C02-B11D-FB3793113FE4}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AureliaSpa", "templates\AureliaSpa\AureliaSpa.csproj", "{4D57B6E1-7141-48ED-959E-872BDD4A2F72}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BB2217D-0F2D-49D1-97BC-3654ED321F3B}") = "MusicStore", "samples\react\MusicStore\MusicStore.xproj", "{C870A92C-9E3F-4BF2-82B8-5758545A8B7C}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactSpa", "templates\ReactSpa\ReactSpa.csproj", "{868A630E-C61B-4807-B7A8-7EB53BE1C28A}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Angular", "Angular", "{4867A616-83D6-48DC-964D-6AE743596631}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReactReduxSpa", "templates\ReactReduxSpa\ReactReduxSpa.csproj", "{9D4D15A1-A25B-44EC-AB63-F1CE9986712E}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebApplicationBasic", "templates\WebApplicationBasic\WebApplicationBasic.csproj", "{86911E07-C733-4C18-B49F-9A007A651246}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{E415FE14-13B0-469F-836D-95059E6BAA6E}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
src\build\common.props = src\build\common.props
|
||||||
|
src\build\Key.snk = src\build\Key.snk
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VueSpa", "templates\VueSpa\VueSpa.csproj", "{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
@@ -52,79 +70,104 @@ Global
|
|||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{B0FA4175-8B29-4904-9780-28B3C24B0567}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{66B77203-1469-41DF-92F2-2BE6900BD36F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B0FA4175-8B29-4904-9780-28B3C24B0567}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{66B77203-1469-41DF-92F2-2BE6900BD36F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B0FA4175-8B29-4904-9780-28B3C24B0567}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{66B77203-1469-41DF-92F2-2BE6900BD36F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B0FA4175-8B29-4904-9780-28B3C24B0567}.Release|Any CPU.Build.0 = Release|Any CPU
|
{66B77203-1469-41DF-92F2-2BE6900BD36F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{6D4BCDD6-7951-449B-BE55-CB7F014B7430}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6D4BCDD6-7951-449B-BE55-CB7F014B7430}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6D4BCDD6-7951-449B-BE55-CB7F014B7430}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6D4BCDD6-7951-449B-BE55-CB7F014B7430}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{ABF90A5B-F4E0-438C-A6E4-9549FB43690B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{58AAABB6-9D21-42F6-BC97-3DD282B55FD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{ABF90A5B-F4E0-438C-A6E4-9549FB43690B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{58AAABB6-9D21-42F6-BC97-3DD282B55FD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{ABF90A5B-F4E0-438C-A6E4-9549FB43690B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{58AAABB6-9D21-42F6-BC97-3DD282B55FD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{ABF90A5B-F4E0-438C-A6E4-9549FB43690B}.Release|Any CPU.Build.0 = Release|Any CPU
|
{58AAABB6-9D21-42F6-BC97-3DD282B55FD6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{421807E6-B62C-417B-B901-46C5DEDAA8F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F1081B9A-8D67-4A5E-80C6-615F9A975D4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{421807E6-B62C-417B-B901-46C5DEDAA8F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F1081B9A-8D67-4A5E-80C6-615F9A975D4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{421807E6-B62C-417B-B901-46C5DEDAA8F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F1081B9A-8D67-4A5E-80C6-615F9A975D4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{421807E6-B62C-417B-B901-46C5DEDAA8F1}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F1081B9A-8D67-4A5E-80C6-615F9A975D4F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{B04381DE-991F-4831-A0B5-FE1BD3EF80C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{1931B19A-EC42-4D56-B2D0-FB06D17244DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{B04381DE-991F-4831-A0B5-FE1BD3EF80C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{1931B19A-EC42-4D56-B2D0-FB06D17244DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{B04381DE-991F-4831-A0B5-FE1BD3EF80C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{1931B19A-EC42-4D56-B2D0-FB06D17244DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{B04381DE-991F-4831-A0B5-FE1BD3EF80C4}.Release|Any CPU.Build.0 = Release|Any CPU
|
{1931B19A-EC42-4D56-B2D0-FB06D17244DA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{4624F728-6DFF-44B6-93B5-3C7D9C94BF3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{DE479DC3-1461-4EAD-A188-4AF7AA4AE344}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{4624F728-6DFF-44B6-93B5-3C7D9C94BF3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{DE479DC3-1461-4EAD-A188-4AF7AA4AE344}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4624F728-6DFF-44B6-93B5-3C7D9C94BF3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{DE479DC3-1461-4EAD-A188-4AF7AA4AE344}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{4624F728-6DFF-44B6-93B5-3C7D9C94BF3F}.Release|Any CPU.Build.0 = Release|Any CPU
|
{DE479DC3-1461-4EAD-A188-4AF7AA4AE344}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11}.Release|Any CPU.Build.0 = Release|Any CPU
|
{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{DBFC6DB0-A6D1-4694-A108-1C604B988DA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{63FC66E7-559B-4426-93E1-2D951EFC8293}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{DBFC6DB0-A6D1-4694-A108-1C604B988DA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{63FC66E7-559B-4426-93E1-2D951EFC8293}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{DBFC6DB0-A6D1-4694-A108-1C604B988DA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{63FC66E7-559B-4426-93E1-2D951EFC8293}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{DBFC6DB0-A6D1-4694-A108-1C604B988DA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
{63FC66E7-559B-4426-93E1-2D951EFC8293}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{E9D1A695-F0E6-46F2-B5E3-72F4AF805387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{3B023106-88DB-4C3A-B01F-C1AECB02D80B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{E9D1A695-F0E6-46F2-B5E3-72F4AF805387}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{3B023106-88DB-4C3A-B01F-C1AECB02D80B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{E9D1A695-F0E6-46F2-B5E3-72F4AF805387}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3B023106-88DB-4C3A-B01F-C1AECB02D80B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{E9D1A695-F0E6-46F2-B5E3-72F4AF805387}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3B023106-88DB-4C3A-B01F-C1AECB02D80B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{CB4398D6-B7F1-449A-AE02-828769679232}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{6E898586-79CA-4AA8-946E-943B3682F376}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{CB4398D6-B7F1-449A-AE02-828769679232}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{6E898586-79CA-4AA8-946E-943B3682F376}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{CB4398D6-B7F1-449A-AE02-828769679232}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{6E898586-79CA-4AA8-946E-943B3682F376}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{CB4398D6-B7F1-449A-AE02-828769679232}.Release|Any CPU.Build.0 = Release|Any CPU
|
{6E898586-79CA-4AA8-946E-943B3682F376}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{A8905301-8492-42FD-9E83-F715A0FDC3A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{F60248B1-940E-43FB-BEA0-589362AA6320}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{A8905301-8492-42FD-9E83-F715A0FDC3A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{F60248B1-940E-43FB-BEA0-589362AA6320}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A8905301-8492-42FD-9E83-F715A0FDC3A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{F60248B1-940E-43FB-BEA0-589362AA6320}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{A8905301-8492-42FD-9E83-F715A0FDC3A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
{F60248B1-940E-43FB-BEA0-589362AA6320}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{A64AF9D9-72AA-4433-BE1D-DC2524B6808A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{A64AF9D9-72AA-4433-BE1D-DC2524B6808A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{A64AF9D9-72AA-4433-BE1D-DC2524B6808A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{A64AF9D9-72AA-4433-BE1D-DC2524B6808A}.Release|Any CPU.Build.0 = Release|Any CPU
|
{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{C870A92C-9E3F-4BF2-82B8-5758545A8B7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{4D57B6E1-7141-48ED-959E-872BDD4A2F72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{C870A92C-9E3F-4BF2-82B8-5758545A8B7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{4D57B6E1-7141-48ED-959E-872BDD4A2F72}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{C870A92C-9E3F-4BF2-82B8-5758545A8B7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{4D57B6E1-7141-48ED-959E-872BDD4A2F72}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{C870A92C-9E3F-4BF2-82B8-5758545A8B7C}.Release|Any CPU.Build.0 = Release|Any CPU
|
{4D57B6E1-7141-48ED-959E-872BDD4A2F72}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{868A630E-C61B-4807-B7A8-7EB53BE1C28A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{868A630E-C61B-4807-B7A8-7EB53BE1C28A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{868A630E-C61B-4807-B7A8-7EB53BE1C28A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{868A630E-C61B-4807-B7A8-7EB53BE1C28A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{9D4D15A1-A25B-44EC-AB63-F1CE9986712E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9D4D15A1-A25B-44EC-AB63-F1CE9986712E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9D4D15A1-A25B-44EC-AB63-F1CE9986712E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9D4D15A1-A25B-44EC-AB63-F1CE9986712E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{86911E07-C733-4C18-B49F-9A007A651246}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{86911E07-C733-4C18-B49F-9A007A651246}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{86911E07-C733-4C18-B49F-9A007A651246}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{86911E07-C733-4C18-B49F-9A007A651246}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{6D4BCDD6-7951-449B-BE55-CB7F014B7430} = {E0771531-BE20-40CD-A1B0-A57E09511060}
|
{66B77203-1469-41DF-92F2-2BE6900BD36F} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
{1A74148F-9DC0-435D-B5AC-7D1B0D3D5E0B} = {4867A616-83D6-48DC-964D-6AE743596631}
|
{F46DEF99-6FAA-4406-B5D8-6FF34EF669E3} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
{ABF90A5B-F4E0-438C-A6E4-9549FB43690B} = {E0EBA813-4478-4C02-B11D-FB3793113FE4}
|
{66B071A8-EFC8-4A06-BEF6-06B99AE27EEC} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
{8F5CB8A9-3086-4B49-A1C2-32A9F89BCA11} = {727E6D58-6830-4792-96C6-E138A33959FB}
|
{58AAABB6-9D21-42F6-BC97-3DD282B55FD6} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
{DBFC6DB0-A6D1-4694-A108-1C604B988DA3} = {727E6D58-6830-4792-96C6-E138A33959FB}
|
{F1081B9A-8D67-4A5E-80C6-615F9A975D4F} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
{E9D1A695-F0E6-46F2-B5E3-72F4AF805387} = {727E6D58-6830-4792-96C6-E138A33959FB}
|
{E6A161EA-646C-4033-9090-95BE809AB8D9} = {23836492-E7F4-4376-85BF-A635C304AC46}
|
||||||
{CB4398D6-B7F1-449A-AE02-828769679232} = {727E6D58-6830-4792-96C6-E138A33959FB}
|
{1931B19A-EC42-4D56-B2D0-FB06D17244DA} = {E6A161EA-646C-4033-9090-95BE809AB8D9}
|
||||||
{E0771531-BE20-40CD-A1B0-A57E09511060} = {E6E88944-4800-40BA-8AF5-069EA3ADFEB8}
|
{DE479DC3-1461-4EAD-A188-4AF7AA4AE344} = {E6A161EA-646C-4033-9090-95BE809AB8D9}
|
||||||
{A8905301-8492-42FD-9E83-F715A0FDC3A2} = {E0771531-BE20-40CD-A1B0-A57E09511060}
|
{93EFCC5F-C6EE-4623-894F-A42B22C0B6FE} = {E6A161EA-646C-4033-9090-95BE809AB8D9}
|
||||||
{A64AF9D9-72AA-4433-BE1D-DC2524B6808A} = {E0771531-BE20-40CD-A1B0-A57E09511060}
|
{B54435EB-D5E8-4CEC-A02E-DDCB0C750E34} = {23836492-E7F4-4376-85BF-A635C304AC46}
|
||||||
{E0EBA813-4478-4C02-B11D-FB3793113FE4} = {E6E88944-4800-40BA-8AF5-069EA3ADFEB8}
|
{63FC66E7-559B-4426-93E1-2D951EFC8293} = {B54435EB-D5E8-4CEC-A02E-DDCB0C750E34}
|
||||||
{C870A92C-9E3F-4BF2-82B8-5758545A8B7C} = {E0EBA813-4478-4C02-B11D-FB3793113FE4}
|
{BD77E73E-13BC-4550-99DA-51869BD8DFC4} = {23836492-E7F4-4376-85BF-A635C304AC46}
|
||||||
{4867A616-83D6-48DC-964D-6AE743596631} = {E6E88944-4800-40BA-8AF5-069EA3ADFEB8}
|
{3B023106-88DB-4C3A-B01F-C1AECB02D80B} = {BD77E73E-13BC-4550-99DA-51869BD8DFC4}
|
||||||
|
{6E898586-79CA-4AA8-946E-943B3682F376} = {BD77E73E-13BC-4550-99DA-51869BD8DFC4}
|
||||||
|
{F60248B1-940E-43FB-BEA0-589362AA6320} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{4D4B84C9-13F7-40CA-B05A-DC98FD6019AC} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{4D57B6E1-7141-48ED-959E-872BDD4A2F72} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{868A630E-C61B-4807-B7A8-7EB53BE1C28A} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{9D4D15A1-A25B-44EC-AB63-F1CE9986712E} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{86911E07-C733-4C18-B49F-9A007A651246} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
|
{E415FE14-13B0-469F-836D-95059E6BAA6E} = {27304DDE-AFB2-4F8B-B765-E3E2F11E886C}
|
||||||
|
{49D7665A-20EC-43FC-B8E8-EA0204F2D8C3} = {1598B415-73F1-4B37-B3B4-0A10677ABB2D}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
8
NuGet.config
Normal file
8
NuGet.config
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
|
||||||
|
<add key="AspNetCoreTools" value="https://dotnet.myget.org/F/aspnetcore-tools/api/v3/index.json" />
|
||||||
|
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<packageSources>
|
|
||||||
<clear />
|
|
||||||
<add key="AspNetVNext" value="https://www.myget.org/f/aspnetmaster/api/v3/index.json" />
|
|
||||||
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
|
|
||||||
</packageSources>
|
|
||||||
</configuration>
|
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
# JavaScriptServices
|
# JavaScriptServices
|
||||||
|
|
||||||
|
AppVeyor: [](https://ci.appveyor.com/project/aspnetci/javascriptservices/branch/dev)
|
||||||
|
|
||||||
This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
|
This project is part of ASP.NET Core. You can find samples, documentation and getting started instructions for ASP.NET Core at the [Home](https://github.com/aspnet/home) repo.
|
||||||
|
|
||||||
## What is this?
|
## What is this?
|
||||||
|
|||||||
44
appveyor.yml
44
appveyor.yml
@@ -1,7 +1,47 @@
|
|||||||
init:
|
init:
|
||||||
- git config --global core.autocrlf true
|
- git config --global core.autocrlf true
|
||||||
|
install:
|
||||||
|
- ps: Install-Product node 6.9.2 x64
|
||||||
|
# .NET Core SDK binaries
|
||||||
|
# Download .NET Core SDK and add to PATH
|
||||||
|
- ps: $urlCurrent = "https://go.microsoft.com/fwlink/?LinkID=834991"
|
||||||
|
- ps: $urlPreview = "https://dotnetcli.blob.core.windows.net/dotnet/Sdk/rel-1.0.0/dotnet-dev-win-x64.latest.zip"
|
||||||
|
- ps: $env:DOTNET_INSTALL_DIR = "$pwd\.dotnetsdk"
|
||||||
|
- ps: mkdir $env:DOTNET_INSTALL_DIR -Force | Out-Null
|
||||||
|
- ps: $tempFileCurrent = [System.IO.Path]::GetTempFileName()
|
||||||
|
- ps: $tempFilePreview = [System.IO.Path]::GetTempFileName()
|
||||||
|
- ps: (New-Object System.Net.WebClient).DownloadFile($urlCurrent, $tempFileCurrent)
|
||||||
|
- ps: (New-Object System.Net.WebClient).DownloadFile($urlPreview, $tempFilePreview)
|
||||||
|
- ps: Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory($tempFileCurrent, $env:DOTNET_INSTALL_DIR)
|
||||||
|
- ps: Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::ExtractToDirectory($tempFilePreview, $env:DOTNET_INSTALL_DIR + "preview")
|
||||||
|
- ps: Copy-Item "${env:DOTNET_INSTALL_DIR}preview\*" "${env:DOTNET_INSTALL_DIR}" -Force -Recurse
|
||||||
|
- ps: $env:Path = "$env:DOTNET_INSTALL_DIR;$env:Path"
|
||||||
build_script:
|
build_script:
|
||||||
- build.cmd verify
|
- ps: Push-Location
|
||||||
|
- cd templates/package-builder
|
||||||
|
- npm install
|
||||||
|
- npm run build
|
||||||
|
- ps: Pop-Location
|
||||||
|
artifacts:
|
||||||
|
- path: templates\package-builder\dist\artifacts\generator-aspnetcore-spa.tar.gz
|
||||||
|
name: generator-aspnetcore-spa
|
||||||
|
- path: templates\package-builder\dist\artifacts\*.nupkg
|
||||||
|
name: Microsoft.AspNetCore.SpaTemplates
|
||||||
|
type: NuGetPackage
|
||||||
|
# - ps: .\build.ps1
|
||||||
clone_depth: 1
|
clone_depth: 1
|
||||||
test: off
|
test_script:
|
||||||
|
# - dotnet restore ./src
|
||||||
|
# - npm install -g selenium-standalone
|
||||||
|
# - selenium-standalone install
|
||||||
|
# The nosys flag is needed for selenium to work on Appveyor
|
||||||
|
# - ps: Start-Process selenium-standalone 'start','--','-Djna.nosys=true'
|
||||||
|
# - ps: Push-Location
|
||||||
|
# - cd test
|
||||||
|
# - npm install
|
||||||
|
# - npm test
|
||||||
|
on_finish :
|
||||||
|
# - ps: Pop-Location
|
||||||
|
# After running tests, upload results to Appveyor
|
||||||
|
# - ps: (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\test\tmp\junit\*.xml))
|
||||||
deploy: off
|
deploy: off
|
||||||
|
|||||||
@@ -64,4 +64,4 @@ if (!(Test-Path $buildFolder)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&"$buildFile" $args
|
&"$buildFile" @args
|
||||||
|
|||||||
18
build/common.props
Normal file
18
build/common.props
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<Project>
|
||||||
|
|
||||||
|
<Import Project="dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Product>Microsoft ASP.NET Core</Product>
|
||||||
|
<RepositoryUrl>https://github.com/aspnet/javascriptservices</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)Key.snk</AssemblyOriginatorKeyFile>
|
||||||
|
<SignAssembly>true</SignAssembly>
|
||||||
|
<PublicSign Condition="'$(OS)' != 'Windows_NT'">true</PublicSign>
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Internal.AspNetCore.Sdk" Version="1.0.1-*" PrivateAssets="All" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
13
build/dependencies.props
Normal file
13
build/dependencies.props
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AspNetCoreVersion>1.1.0</AspNetCoreVersion>
|
||||||
|
<AspNetCoreMvcVersion>1.1.1</AspNetCoreMvcVersion>
|
||||||
|
<AspNetCoreToolsVersion>1.0.0-msbuild3-final</AspNetCoreToolsVersion>
|
||||||
|
<AutoMapperVersion>5.0.2</AutoMapperVersion>
|
||||||
|
<CoreFxVersion>4.3.0</CoreFxVersion>
|
||||||
|
<JsonNetVersion>10.0.1</JsonNetVersion>
|
||||||
|
<MicrosoftDataflowVersion>4.5.24</MicrosoftDataflowVersion>
|
||||||
|
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
|
||||||
|
<ThreadingDataflowVersion>4.7.0</ThreadingDataflowVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
12
build/repo.targets
Normal file
12
build/repo.targets
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<Project>
|
||||||
|
<Target Name="NpmRestore" AfterTargets="Restore" Condition="'$(PreflightRestore)' != 'true'">
|
||||||
|
<ItemGroup>
|
||||||
|
<NpmModules Include="$(RepositoryRoot)**\package.json"
|
||||||
|
Exclude="$(RepositoryRoot)**\node_modules\**\*" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Message Text="Restoring NPM modules for: %0A - @(NpmModules -> '%(FullPath)','%0A - ')" Importance="high" />
|
||||||
|
|
||||||
|
<Exec Command="npm install" WorkingDirectory="%(NpmModules.RootDir)%(Directory)" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"projects": ["src"]
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
var VERSION='0.1'
|
|
||||||
var FULL_VERSION='0.1'
|
|
||||||
var AUTHORS='Microsoft Open Technologies, Inc.'
|
|
||||||
|
|
||||||
use-standard-lifecycle
|
|
||||||
k-standard-goals
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
versionSuffix=$1
|
|
||||||
dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
projects=(
|
|
||||||
./src/Microsoft.AspNetCore.NodeServices
|
|
||||||
./src/Microsoft.AspNetCore.SpaServices
|
|
||||||
./src/Microsoft.AspNetCore.AngularServices
|
|
||||||
./src/Microsoft.AspNetCore.ReactServices
|
|
||||||
)
|
|
||||||
|
|
||||||
if [ -z "$versionSuffix" ]; then
|
|
||||||
echo "Usage: pack-local.sh <versionsuffix>"
|
|
||||||
echo "Example: pack-local.sh beta-000001"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
pushd $dir > /dev/null
|
|
||||||
|
|
||||||
for proj in "${projects[@]}"; do
|
|
||||||
dotnet pack $proj --version-suffix $versionSuffix -o ./artifacts/
|
|
||||||
done
|
|
||||||
|
|
||||||
popd > /dev/null
|
|
||||||
1
samples/angular/MusicStore/.gitignore
vendored
1
samples/angular/MusicStore/.gitignore
vendored
@@ -1,7 +1,6 @@
|
|||||||
/node_modules/
|
/node_modules/
|
||||||
/wwwroot/lib/
|
/wwwroot/lib/
|
||||||
/wwwroot/ng-app/**/*.js
|
/wwwroot/ng-app/**/*.js
|
||||||
/project.lock.json
|
|
||||||
/music-db.sqlite
|
/music-db.sqlite
|
||||||
/Properties/launchSettings.json
|
/Properties/launchSettings.json
|
||||||
|
|
||||||
|
|||||||
31
samples/angular/MusicStore/MusicStore.csproj
Normal file
31
samples/angular/MusicStore/MusicStore.csproj
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.AngularServices\Microsoft.AspNetCore.AngularServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SQLite" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="AutoMapper" Version="$(AutoMapperVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
<Exec Command="gulp" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>1a74148f-9dc0-435d-b5ac-7d1b0d3d5e0b</ProjectGuid>
|
|
||||||
<RootNamespace>MusicStore</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<DevelopmentServerPort>5068</DevelopmentServerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -5,6 +5,8 @@
|
|||||||
"angular2": "2.0.0-beta.15",
|
"angular2": "2.0.0-beta.15",
|
||||||
"angular2-aspnet": "^0.0.6",
|
"angular2-aspnet": "^0.0.6",
|
||||||
"angular2-universal": "0.98.1",
|
"angular2-universal": "0.98.1",
|
||||||
|
"angular2-express-engine": "0.11.1",
|
||||||
|
"angular2-hapi-engine": "0.11.1",
|
||||||
"aspnet-prerendering": "^1.0.1",
|
"aspnet-prerendering": "^1.0.1",
|
||||||
"bootstrap": "^3.3.5",
|
"bootstrap": "^3.3.5",
|
||||||
"css": "^2.2.1",
|
"css": "^2.2.1",
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true,
|
|
||||||
"preserveCompilationContext": true
|
|
||||||
},
|
|
||||||
"runtimeOptions": {
|
|
||||||
"configProperties": {
|
|
||||||
"System.GC.Server": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tooling": {
|
|
||||||
"defaultNamespace": "MusicStore"
|
|
||||||
},
|
|
||||||
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.AngularServices": "1.0.0-*",
|
|
||||||
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc": "1.0.1",
|
|
||||||
"Microsoft.AspNetCore.Razor.Tools": {
|
|
||||||
"version": "1.0.0-preview2-final",
|
|
||||||
"type": "build"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
|
|
||||||
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
|
|
||||||
"Microsoft.EntityFrameworkCore.SQLite": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.Json": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.CommandLine": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Debug": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
|
|
||||||
"AutoMapper": "5.0.2"
|
|
||||||
},
|
|
||||||
|
|
||||||
"tools": {
|
|
||||||
"Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
|
|
||||||
"Microsoft.DotNet.Watcher.Tools": "1.0.0-preview2-final"
|
|
||||||
},
|
|
||||||
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
"publishOptions": {
|
|
||||||
"include": [
|
|
||||||
"appsettings.json",
|
|
||||||
"ClientApp",
|
|
||||||
"node_modules",
|
|
||||||
"typings",
|
|
||||||
"Views",
|
|
||||||
"tsconfig.json",
|
|
||||||
"tsd.json",
|
|
||||||
"web.config",
|
|
||||||
"webpack.*.js",
|
|
||||||
"wwwroot"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"prepublish": [
|
|
||||||
"npm install",
|
|
||||||
"gulp"
|
|
||||||
],
|
|
||||||
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
19
samples/misc/LatencyTest/LatencyTest.csproj
Normal file
19
samples/misc/LatencyTest/LatencyTest.csproj
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.NodeServices\Microsoft.AspNetCore.NodeServices.csproj" />
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.NodeServices.Sockets\Microsoft.AspNetCore.NodeServices.Sockets.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0.25123" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0.25123</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>a64af9d9-72aa-4433-be1d-dc2524b6808a</ProjectGuid>
|
|
||||||
<RootNamespace>LatencyTest</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">.\obj</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.NodeServices;
|
using Microsoft.AspNetCore.NodeServices;
|
||||||
|
using Microsoft.AspNetCore.NodeServices.Sockets;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace ConsoleApplication
|
namespace ConsoleApplication
|
||||||
@@ -16,7 +17,10 @@ namespace ConsoleApplication
|
|||||||
// Set up the DI system
|
// Set up the DI system
|
||||||
var services = new ServiceCollection();
|
var services = new ServiceCollection();
|
||||||
services.AddNodeServices(options => {
|
services.AddNodeServices(options => {
|
||||||
options.HostingModel = NodeServicesOptions.DefaultNodeHostingModel;
|
// To compare with Socket hosting, uncomment the following line
|
||||||
|
// Since .NET Core 1.1, the HTTP hosting model has become basically as fast as the Socket hosting model
|
||||||
|
//options.UseSocketHosting();
|
||||||
|
|
||||||
options.ProjectPath = Directory.GetCurrentDirectory();
|
options.ProjectPath = Directory.GetCurrentDirectory();
|
||||||
options.WatchFileExtensions = new string[] {}; // Don't watch anything
|
options.WatchFileExtensions = new string[] {}; // Don't watch anything
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.NodeServices": "1.0.0-*",
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "1.0.0"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": "dnxcore50"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.NodeServices;
|
||||||
|
|
||||||
namespace NodeServicesExamples.Controllers
|
namespace NodeServicesExamples.Controllers
|
||||||
{
|
{
|
||||||
@@ -15,8 +16,21 @@ namespace NodeServicesExamples.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult ImageResizing()
|
public async Task<IActionResult> Chart([FromServices] INodeServices nodeServices)
|
||||||
{
|
{
|
||||||
|
var options = new { width = 400, height = 200, showArea = true, showPoint = true, fullWidth = true };
|
||||||
|
var data = new
|
||||||
|
{
|
||||||
|
labels = new[] { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" },
|
||||||
|
series = new[] {
|
||||||
|
new[] { 1, 5, 2, 5, 4, 3 },
|
||||||
|
new[] { 2, 3, 4, 8, 1, 2 },
|
||||||
|
new[] { 5, 4, 3, 2, 1, 0 }
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ViewData["ChartMarkup"] = await nodeServices.InvokeAsync<string>("./Node/renderChart", "line", options, data);
|
||||||
|
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,64 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
using Microsoft.AspNetCore.NodeServices;
|
|
||||||
using Microsoft.AspNetCore.StaticFiles;
|
|
||||||
|
|
||||||
namespace NodeServicesExamples.Controllers
|
|
||||||
{
|
|
||||||
public class ResizeImageController : Controller
|
|
||||||
{
|
|
||||||
private const int MaxDimension = 1000;
|
|
||||||
private static string[] AllowedMimeTypes = new[] { "image/jpeg", "image/png", "image/gif" };
|
|
||||||
|
|
||||||
private IHostingEnvironment _environment;
|
|
||||||
private INodeServices _nodeServices;
|
|
||||||
|
|
||||||
public ResizeImageController(IHostingEnvironment environment, INodeServices nodeServices)
|
|
||||||
{
|
|
||||||
_environment = environment;
|
|
||||||
_nodeServices = nodeServices;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Route("resize/{*imagePath}")]
|
|
||||||
public async Task<IActionResult> Index(string imagePath, int maxWidth, int maxHeight)
|
|
||||||
{
|
|
||||||
// Validate incoming params
|
|
||||||
if (maxWidth < 0 || maxHeight < 0 || maxWidth > MaxDimension || maxHeight > MaxDimension
|
|
||||||
|| (maxWidth + maxHeight) == 0)
|
|
||||||
{
|
|
||||||
return BadRequest("Invalid dimensions");
|
|
||||||
}
|
|
||||||
|
|
||||||
var mimeType = GetContentType(imagePath);
|
|
||||||
if (Array.IndexOf(AllowedMimeTypes, mimeType) < 0)
|
|
||||||
{
|
|
||||||
return BadRequest("Disallowed image format");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Locate source image on disk
|
|
||||||
var fileInfo = _environment.WebRootFileProvider.GetFileInfo(imagePath);
|
|
||||||
if (!fileInfo.Exists)
|
|
||||||
{
|
|
||||||
return NotFound();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Invoke Node and pipe the result to the response
|
|
||||||
var imageStream = await _nodeServices.InvokeAsync<Stream>(
|
|
||||||
"./Node/resizeImage",
|
|
||||||
fileInfo.PhysicalPath,
|
|
||||||
mimeType,
|
|
||||||
maxWidth,
|
|
||||||
maxHeight);
|
|
||||||
return File(imageStream, mimeType);
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetContentType(string path)
|
|
||||||
{
|
|
||||||
string result;
|
|
||||||
return new FileExtensionContentTypeProvider().TryGetContentType(path, out result) ? result : null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
8
samples/misc/NodeServicesExamples/Node/renderChart.js
Normal file
8
samples/misc/NodeServicesExamples/Node/renderChart.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
var generate = require('node-chartist');
|
||||||
|
|
||||||
|
module.exports = function (callback, type, options, data) {
|
||||||
|
generate(type, options, data).then(
|
||||||
|
result => callback(null, result), // Success case
|
||||||
|
error => callback(error) // Error case
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
var sharp = require('sharp');
|
|
||||||
|
|
||||||
module.exports = function(result, physicalPath, mimeType, maxWidth, maxHeight) {
|
|
||||||
// Invoke the 'sharp' NPM module, and have it pipe the resulting image data back to .NET
|
|
||||||
sharp(physicalPath)
|
|
||||||
.resize(maxWidth || null, maxHeight || null)
|
|
||||||
.pipe(result.stream);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.NodeServices\Microsoft.AspNetCore.NodeServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>6d4bcdd6-7951-449b-be55-cb7f014b7430</ProjectGuid>
|
|
||||||
<RootNamespace>NodeServicesExamples</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\JavaScriptServices.sln\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<DevelopmentServerPort>2018</DevelopmentServerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
12
samples/misc/NodeServicesExamples/Views/Home/Chart.cshtml
Normal file
12
samples/misc/NodeServicesExamples/Views/Home/Chart.cshtml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<h1>Server-rendered chart</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This sample demonstrates how arbitrary NPM modules can be invoked from .NET code.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In this case, we use <code>node-chartist</code> to render the following chart on the server. The output is
|
||||||
|
identical to what you'd get if you used <a href='https://gionkunz.github.io/chartist-js/'>chartist.js</a>
|
||||||
|
on the client, except that in this example, we're not executing any client-side code at all.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
@Html.Raw(ViewData["ChartMarkup"])
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<h1>Image Resizing</h1>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
This sample shows how the NPM module <a href="https://www.npmjs.com/package/sharp"><code>sharp</code></a>
|
|
||||||
can be used for dynamic image resizing from within an ASP.NET Core application. There is one copy of the
|
|
||||||
following image on disk, but we can set up an MVC action method that returns it resized to fit within an
|
|
||||||
arbitrary width and height.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<strong>Dependencies:</strong> On Windows and Linux, there are no native dependencies. Just running
|
|
||||||
<code>npm install</code> is enough. On OS X, however, you need to have <code>libvips</code> installed,
|
|
||||||
which you can get through <a href="http://brew.sh/">Homebrew</a> by running
|
|
||||||
<code>brew install homebrew/science/vips</code>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3>100px wide [<a href="/resize/images/parrot.jpg?maxWidth=100">open</a>]</h3>
|
|
||||||
<img src="/resize/images/parrot.jpg?maxWidth=100" />
|
|
||||||
|
|
||||||
<h3>200px wide [<a href="/resize/images/parrot.jpg?maxWidth=200">open</a>]</h3>
|
|
||||||
<img src="/resize/images/parrot.jpg?maxWidth=200" />
|
|
||||||
|
|
||||||
<h3>400px wide [<a href="/resize/images/parrot.jpg?maxWidth=400">open</a>]</h3>
|
|
||||||
<img src="/resize/images/parrot.jpg?maxWidth=400" />
|
|
||||||
|
|
||||||
<h3>800px wide [<a href="/resize/images/parrot.jpg?maxWidth=800">open</a>]</h3>
|
|
||||||
<img src="/resize/images/parrot.jpg?maxWidth=800" />
|
|
||||||
|
|
||||||
<p>
|
|
||||||
<strong>Credit:</strong>
|
|
||||||
<em><a href="https://www.flickr.com/photos/dcoetzee/3572948635">Parrot</a>
|
|
||||||
by <a href="https://www.flickr.com/photos/dcoetzee/">D Coetzee</a>
|
|
||||||
is dedicated to the <a href="http://creativecommons.org/publicdomain/zero/1.0/">public domain (CC0)</a></em>
|
|
||||||
</p>
|
|
||||||
@@ -7,7 +7,6 @@
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a asp-action="ES2015Transpilation">ES2015 transpilation</a>
|
<li><a asp-action="ES2015Transpilation">ES2015 transpilation</a></li>
|
||||||
<li><a asp-action="ImageResizing">Image resizing</a>
|
<li><a asp-action="Chart">Server-side chart rendering</a></li>
|
||||||
</li>
|
</ul>
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>NodeServices Examples</title>
|
<title>NodeServices Examples</title>
|
||||||
|
<link rel="stylesheet" href="~/css/chartist.min.css" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@RenderBody()
|
@RenderBody()
|
||||||
|
|||||||
@@ -4,6 +4,6 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"babel-core": "^6.7.4",
|
"babel-core": "^6.7.4",
|
||||||
"babel-preset-es2015": "^6.6.0",
|
"babel-preset-es2015": "^6.6.0",
|
||||||
"sharp": "^0.15.0"
|
"node-chartist": "^1.0.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"tooling": {
|
|
||||||
"defaultNamespace": "NodeServicesExamples"
|
|
||||||
},
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true,
|
|
||||||
"preserveCompilationContext": true
|
|
||||||
},
|
|
||||||
"runtimeOptions": {
|
|
||||||
"gcServer": true
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.Json": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0",
|
|
||||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
|
||||||
"Microsoft.Extensions.Logging.Debug": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.NodeServices": "1.0.0-*"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"publishExclude": [
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"**.xproj",
|
|
||||||
"**.user",
|
|
||||||
"**.vspscc"
|
|
||||||
],
|
|
||||||
"scripts": {
|
|
||||||
"prepublish": [ "npm install" ],
|
|
||||||
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1
samples/misc/NodeServicesExamples/wwwroot/css/chartist.min.css
vendored
Normal file
1
samples/misc/NodeServicesExamples/wwwroot/css/chartist.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 2.5 MiB |
7
samples/misc/Webpack/.gitignore
vendored
7
samples/misc/Webpack/.gitignore
vendored
@@ -1,6 +1,9 @@
|
|||||||
## Ignore Visual Studio temporary files, build results, and
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
## files generated by popular Visual Studio add-ons.
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
yarn.lock
|
||||||
|
wwwroot/dist
|
||||||
|
|
||||||
# User-specific files
|
# User-specific files
|
||||||
*.suo
|
*.suo
|
||||||
*.user
|
*.user
|
||||||
@@ -40,10 +43,6 @@ TestResult.xml
|
|||||||
[Rr]eleasePS/
|
[Rr]eleasePS/
|
||||||
dlldata.c
|
dlldata.c
|
||||||
|
|
||||||
# DNX
|
|
||||||
project.lock.json
|
|
||||||
artifacts/
|
|
||||||
|
|
||||||
*_i.c
|
*_i.c
|
||||||
*_p.c
|
*_p.c
|
||||||
*_i.h
|
*_i.h
|
||||||
|
|||||||
@@ -37,7 +37,9 @@ namespace Webpack.ActionResults
|
|||||||
_moduleExport,
|
_moduleExport,
|
||||||
request.GetEncodedUrl(),
|
request.GetEncodedUrl(),
|
||||||
request.Path + request.QueryString.Value,
|
request.Path + request.QueryString.Value,
|
||||||
_dataToSupply
|
_dataToSupply,
|
||||||
|
/* timeoutMilliseconds */ 30000,
|
||||||
|
/* requestPathBase */ "/"
|
||||||
);
|
);
|
||||||
|
|
||||||
response.ContentType = "text/html";
|
response.ContentType = "text/html";
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
FROM microsoft/aspnet:1.0.0-rc1-update1
|
|
||||||
|
|
||||||
RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
|
|
||||||
RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
COPY . /app
|
|
||||||
WORKDIR /app
|
|
||||||
RUN ["dnu", "restore"]
|
|
||||||
|
|
||||||
EXPOSE 5000/tcp
|
|
||||||
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
|
|
||||||
26
samples/misc/Webpack/Webpack.csproj
Normal file
26
samples/misc/Webpack/Webpack.csproj
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.SpaServices\Microsoft.AspNetCore.SpaServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>a8905301-8492-42fd-9e83-f715a0fdc3a2</ProjectGuid>
|
|
||||||
<RootNamespace>Webpack</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\JavaScriptServices.sln\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<DevelopmentServerPort>2018</DevelopmentServerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -11,9 +11,10 @@
|
|||||||
"webpack-hot-middleware": "^2.7.1"
|
"webpack-hot-middleware": "^2.7.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aspnet-webpack": "^1.0.3",
|
|
||||||
"aspnet-prerendering": "^1.0.4",
|
"aspnet-prerendering": "^1.0.4",
|
||||||
|
"aspnet-webpack": "^1.0.3",
|
||||||
"ts-loader": "^0.8.1",
|
"ts-loader": "^0.8.1",
|
||||||
"typescript": "^1.7.5"
|
"typescript": "^2.0.0",
|
||||||
|
"webpack": "^1.13.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true,
|
|
||||||
"preserveCompilationContext": true
|
|
||||||
},
|
|
||||||
"runtimeOptions": {
|
|
||||||
"gcServer": true
|
|
||||||
},
|
|
||||||
"tooling": {
|
|
||||||
"defaultNamespace": "Webpack"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.Json": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0",
|
|
||||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
|
||||||
"Microsoft.Extensions.Logging.Debug": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.SpaServices": "1.0.0-*"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"publishOptions": {
|
|
||||||
"exclude": [
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"**.xproj",
|
|
||||||
"**.user",
|
|
||||||
"**.vspscc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"prepublish": [ "npm install" ],
|
|
||||||
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,9 +2,10 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
"target": "es6",
|
"target": "es5",
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"sourceMap": true
|
"sourceMap": true,
|
||||||
|
"lib": ["es6", "dom"]
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ module.exports = {
|
|||||||
devtool: 'inline-source-map',
|
devtool: 'inline-source-map',
|
||||||
module: {
|
module: {
|
||||||
loaders: [
|
loaders: [
|
||||||
{ test: /\.less$/, loader: 'style!css!less' }
|
{ test: /\.less$/, loader: 'style-loader!css-loader!less-loader' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ var extractLESS = new ExtractTextPlugin('my-styles.css');
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
module: {
|
module: {
|
||||||
loaders: [
|
loaders: [
|
||||||
{ test: /\.less$/, loader: extractLESS.extract(['css', 'less']) },
|
{ test: /\.less$/, loader: extractLESS.extract(['css-loader', 'less-loader']) },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
extractLESS,
|
extractLESS,
|
||||||
new webpack.optimize.UglifyJsPlugin({ minimize: true })
|
new webpack.optimize.UglifyJsPlugin({ minimize: true, compressor: { warnings: false } })
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
1
samples/react/MusicStore/.gitignore
vendored
1
samples/react/MusicStore/.gitignore
vendored
@@ -1,3 +1,4 @@
|
|||||||
music-db.sqlite
|
music-db.sqlite
|
||||||
/wwwroot/dist/
|
/wwwroot/dist/
|
||||||
/node_modules/
|
/node_modules/
|
||||||
|
yarn.lock
|
||||||
|
|||||||
39
samples/react/MusicStore/MusicStore.csproj
Normal file
39
samples/react/MusicStore/MusicStore.csproj
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="node_modules\**\*" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.ReactServices\Microsoft.AspNetCore.ReactServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SQLite" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="AutoMapper" Version="$(AutoMapperVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
<Exec Command="node node_modules/webpack/bin/webpack.js" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<DotNetCliToolReference Include="Microsoft.DotNet.Watcher.Tools" Version="$(AspNetCoreToolsVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>c870a92c-9e3f-4bf2-82b8-5758545a8b7c</ProjectGuid>
|
|
||||||
<RootNamespace>MusicStore</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\JavaScriptServices.sln\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<DevelopmentServerPort>2018</DevelopmentServerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -5,19 +5,29 @@ import { match, RouterContext } from 'react-router';
|
|||||||
import createMemoryHistory from 'history/lib/createMemoryHistory';
|
import createMemoryHistory from 'history/lib/createMemoryHistory';
|
||||||
import { routes } from './routes';
|
import { routes } from './routes';
|
||||||
import configureStore from './configureStore';
|
import configureStore from './configureStore';
|
||||||
React;
|
type BootResult = { html?: string, globals?: { [key: string]: any }, redirectUrl?: string};
|
||||||
|
|
||||||
export default function (params: any): Promise<{ html: string }> {
|
export default function (params: any): Promise<{ html: string }> {
|
||||||
return new Promise<{ html: string, globals: { [key: string]: any } }>((resolve, reject) => {
|
return new Promise<BootResult>((resolve, reject) => {
|
||||||
// Match the incoming request against the list of client-side routes
|
// Match the incoming request against the list of client-side routes
|
||||||
match({ routes, location: params.location }, (error, redirectLocation, renderProps: any) => {
|
match({ routes, location: params.location }, (error, redirectLocation, renderProps: any) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If there's a redirection, just send this information back to the host application
|
||||||
|
if (redirectLocation) {
|
||||||
|
resolve({ redirectUrl: redirectLocation.pathname });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If it didn't match any route, renderProps will be undefined
|
||||||
|
if (!renderProps) {
|
||||||
|
throw new Error(`The location '${ params.url }' doesn't match any route configured in react-router.`);
|
||||||
|
}
|
||||||
|
|
||||||
// Build an instance of the application
|
// Build an instance of the application
|
||||||
const history = createMemoryHistory(params.url);
|
const store = configureStore();
|
||||||
const store = configureStore(history);
|
|
||||||
const app = (
|
const app = (
|
||||||
<Provider store={ store }>
|
<Provider store={ store }>
|
||||||
<RouterContext {...renderProps} />
|
<RouterContext {...renderProps} />
|
||||||
|
|||||||
@@ -1,21 +1,25 @@
|
|||||||
|
import './styles/styles.css';
|
||||||
|
import 'bootstrap/dist/css/bootstrap.css';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as ReactDOM from 'react-dom';
|
import * as ReactDOM from 'react-dom';
|
||||||
import { browserHistory, Router } from 'react-router';
|
import { browserHistory, Router } from 'react-router';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
React; // Need this reference otherwise TypeScript doesn't think we're using it and ignores the import
|
import { syncHistoryWithStore } from 'react-router-redux';
|
||||||
|
|
||||||
import './styles/styles.css';
|
|
||||||
import 'bootstrap/dist/css/bootstrap.css';
|
|
||||||
import configureStore from './configureStore';
|
|
||||||
import { routes } from './routes';
|
import { routes } from './routes';
|
||||||
|
import configureStore from './configureStore';
|
||||||
import { ApplicationState } from './store';
|
import { ApplicationState } from './store';
|
||||||
|
|
||||||
|
// Get the application-wide store instance, prepopulating with state from the server where available.
|
||||||
const initialState = (window as any).initialReduxState as ApplicationState;
|
const initialState = (window as any).initialReduxState as ApplicationState;
|
||||||
const store = configureStore(browserHistory, initialState);
|
const store = configureStore(initialState);
|
||||||
|
const history = syncHistoryWithStore(browserHistory, store);
|
||||||
|
|
||||||
|
// This code starts up the React app when it runs in a browser. It sets up the routing configuration
|
||||||
|
// and injects the app into a DOM element.
|
||||||
ReactDOM.render(
|
ReactDOM.render(
|
||||||
<Provider store={ store }>
|
<Provider store={ store }>
|
||||||
<Router history={ browserHistory } children={ routes } />
|
<Router history={ history } children={ routes } />
|
||||||
</Provider>,
|
</Provider>,
|
||||||
document.getElementById('react-app')
|
document.getElementById('react-app')
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,28 +1,22 @@
|
|||||||
import { createStore, applyMiddleware, compose, combineReducers } from 'redux';
|
import { createStore, applyMiddleware, compose, combineReducers, GenericStoreEnhancer, Store as ReduxStore } from 'redux';
|
||||||
import * as thunkModule from 'redux-thunk';
|
import thunk from 'redux-thunk';
|
||||||
import { syncHistory, routeReducer } from 'react-router-redux';
|
import { routerReducer } from 'react-router-redux';
|
||||||
import * as Store from './store';
|
import * as Store from './store';
|
||||||
import { typedToPlain } from 'redux-typed';
|
import { typedToPlain } from 'redux-typed';
|
||||||
|
|
||||||
export default function configureStore(history: HistoryModule.History, initialState?: Store.ApplicationState) {
|
export default function configureStore(initialState?: Store.ApplicationState) {
|
||||||
// Build middleware
|
// Build middleware. These are functions that can process the actions before they reach the store.
|
||||||
const thunk = (thunkModule as any).default; // Workaround for TypeScript not importing thunk module as expected
|
const windowIfDefined = typeof window === 'undefined' ? null : window as any;
|
||||||
const reduxRouterMiddleware = syncHistory(history);
|
// If devTools is installed, connect to it
|
||||||
const middlewares = [thunk, reduxRouterMiddleware, typedToPlain];
|
const devToolsExtension = windowIfDefined && windowIfDefined.devToolsExtension as () => GenericStoreEnhancer;
|
||||||
const devToolsExtension = null;//(window as any).devToolsExtension; // If devTools is installed, connect to it
|
const createStoreWithMiddleware = compose(
|
||||||
|
applyMiddleware(thunk, typedToPlain),
|
||||||
const finalCreateStore = compose(
|
|
||||||
applyMiddleware(...middlewares),
|
|
||||||
devToolsExtension ? devToolsExtension() : f => f
|
devToolsExtension ? devToolsExtension() : f => f
|
||||||
)(createStore)
|
)(createStore);
|
||||||
|
|
||||||
// Combine all reducers
|
// Combine all reducers and instantiate the app-wide store instance
|
||||||
const allReducers = buildRootReducer(Store.reducers);
|
const allReducers = buildRootReducer(Store.reducers);
|
||||||
|
const store = createStoreWithMiddleware(allReducers, initialState) as ReduxStore<Store.ApplicationState>;
|
||||||
const store = finalCreateStore(allReducers, initialState) as Redux.Store;
|
|
||||||
|
|
||||||
// Required for replaying actions from devtools to work
|
|
||||||
reduxRouterMiddleware.listenForReplays(store);
|
|
||||||
|
|
||||||
// Enable Webpack hot module replacement for reducers
|
// Enable Webpack hot module replacement for reducers
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
@@ -36,5 +30,5 @@ export default function configureStore(history: HistoryModule.History, initialSt
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildRootReducer(allReducers) {
|
function buildRootReducer(allReducers) {
|
||||||
return combineReducers(Object.assign({}, allReducers, { routing: routeReducer })) as Redux.Reducer;
|
return combineReducers<Store.ApplicationState>(Object.assign({}, allReducers, { routing: routerReducer }));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +1,52 @@
|
|||||||
{
|
{
|
||||||
"name": "MusicStore",
|
"name": "music-store",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"devDependencies": {
|
"dependencies": {
|
||||||
"babel-loader": "^6.2.1",
|
"@types/history": "^2.0.0",
|
||||||
"babel-plugin-react-transform": "^2.0.0",
|
"@types/react": "^0.14.29",
|
||||||
"babel-preset-es2015": "^6.3.13",
|
"@types/react-bootstrap": "^0.0.35",
|
||||||
"babel-preset-react": "^6.3.13",
|
"@types/react-dom": "^0.14.14",
|
||||||
|
"@types/react-redux": "^4.4.29",
|
||||||
|
"@types/react-router": "^2.0.30",
|
||||||
|
"@types/react-router-bootstrap": "^0.0.27",
|
||||||
|
"@types/react-router-redux": "^4.0.30",
|
||||||
|
"@types/redux-thunk": "^2.1.28",
|
||||||
|
"@types/source-map": "^0.1.28",
|
||||||
|
"@types/uglify-js": "^2.0.27",
|
||||||
|
"@types/webpack": "^1.12.35",
|
||||||
|
"@types/webpack-env": "^1.12.1",
|
||||||
|
"@types/whatwg-fetch": "0.0.28",
|
||||||
|
"aspnet-prerendering": "^1.0.7",
|
||||||
|
"aspnet-webpack": "^1.0.17",
|
||||||
|
"aspnet-webpack-react": "^1.0.2",
|
||||||
|
"babel-core": "^6.5.2",
|
||||||
|
"babel-loader": "^6.2.3",
|
||||||
|
"babel-preset-es2015": "^6.5.0",
|
||||||
|
"babel-preset-react": "^6.5.0",
|
||||||
|
"bootstrap": "^3.3.6",
|
||||||
"css-loader": "^0.23.1",
|
"css-loader": "^0.23.1",
|
||||||
"express": "^4.13.4",
|
"domain-task": "^2.0.1",
|
||||||
|
"event-source-polyfill": "^0.0.7",
|
||||||
"extract-text-webpack-plugin": "^1.0.1",
|
"extract-text-webpack-plugin": "^1.0.1",
|
||||||
"file-loader": "^0.8.5",
|
"file-loader": "^0.8.5",
|
||||||
"react-transform-hmr": "^1.0.2",
|
"jquery": "^2.2.1",
|
||||||
|
"react": "^15.3.2",
|
||||||
|
"react-bootstrap": "^0.30.6",
|
||||||
|
"react-dom": "^15.3.2",
|
||||||
|
"react-redux": "^4.4.5",
|
||||||
|
"react-router": "^2.8.1",
|
||||||
|
"react-router-bootstrap": "^0.23.1",
|
||||||
|
"react-router-redux": "^4.0.6",
|
||||||
|
"redux": "^3.6.0",
|
||||||
|
"redux-thunk": "^2.1.0",
|
||||||
|
"redux-typed": "^2.0.0",
|
||||||
"style-loader": "^0.13.0",
|
"style-loader": "^0.13.0",
|
||||||
"ts-loader": "^0.8.0",
|
"ts-loader": "^0.8.1",
|
||||||
"typescript": "^1.7.5",
|
"typescript": "^2.0.3",
|
||||||
"url-loader": "^0.5.7",
|
"url-loader": "^0.5.7",
|
||||||
"webpack": "^1.12.12",
|
"webpack": "^1.13.2",
|
||||||
"webpack-dev-middleware": "^1.5.1",
|
"webpack-hot-middleware": "^2.12.2",
|
||||||
"webpack-hot-middleware": "^2.6.4"
|
"webpack-merge": "^0.14.1",
|
||||||
},
|
"webpack-node-externals": "^1.4.3"
|
||||||
"dependencies": {
|
|
||||||
"aspnet-prerendering": "^1.0.0",
|
|
||||||
"aspnet-webpack": "^1.0.3",
|
|
||||||
"aspnet-webpack-react": "^1.0.1",
|
|
||||||
"bootstrap": "^3.3.6",
|
|
||||||
"domain-context": "^0.5.1",
|
|
||||||
"domain-task": "^2.0.0",
|
|
||||||
"history": "^2.0.0",
|
|
||||||
"isomorphic-fetch": "^2.2.1",
|
|
||||||
"memory-fs": "^0.3.0",
|
|
||||||
"react": "^0.14.7",
|
|
||||||
"react-bootstrap": "^0.28.2",
|
|
||||||
"react-dom": "^0.14.7",
|
|
||||||
"react-redux": "^4.2.1",
|
|
||||||
"react-router": "^2.0.0-rc5",
|
|
||||||
"react-router-bootstrap": "^0.20.1",
|
|
||||||
"react-router-redux": "^2.1.0",
|
|
||||||
"redux": "^3.2.1",
|
|
||||||
"redux-thunk": "^1.0.3",
|
|
||||||
"redux-typed": "^1.0.0",
|
|
||||||
"require-from-string": "^1.1.0",
|
|
||||||
"webpack-externals-plugin": "^1.0.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,56 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true,
|
|
||||||
"preserveCompilationContext": true
|
|
||||||
},
|
|
||||||
"runtimeOptions": {
|
|
||||||
"gcServer": true
|
|
||||||
},
|
|
||||||
"tooling": {
|
|
||||||
"defaultNamespace": "MusicStore"
|
|
||||||
},
|
|
||||||
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.Json": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0",
|
|
||||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
|
||||||
"Microsoft.Extensions.Logging.Debug": "1.0.0",
|
|
||||||
"Microsoft.EntityFrameworkCore.SQLite": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.ReactServices": "1.0.0-*",
|
|
||||||
"AutoMapper": "5.0.2"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"publishOptions": {
|
|
||||||
"exclude": [
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"**.xproj",
|
|
||||||
"**.user",
|
|
||||||
"**.vspscc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"prepublish": [ "npm install" ],
|
|
||||||
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,19 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"baseUrl": ".",
|
||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"target": "es6",
|
"target": "es6",
|
||||||
"jsx": "preserve",
|
"jsx": "preserve",
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"experimentalDecorators": true
|
"experimentalDecorators": true,
|
||||||
|
"types": [ "webpack-env", "whatwg-fetch" ],
|
||||||
|
"paths": {
|
||||||
|
// Fix "Duplicate identifier" errors caused by multiple dependencies fetching their own copies of type definitions.
|
||||||
|
// We tell TypeScript which type definitions module to treat as the canonical one (instead of combining all of them).
|
||||||
|
"history": ["./node_modules/@types/history/index"],
|
||||||
|
"redux": ["./node_modules/@types/redux/index"],
|
||||||
|
"react": ["./node_modules/@types/react/index"]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"exclude": [
|
"exclude": [
|
||||||
"node_modules"
|
"node_modules"
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "v4",
|
|
||||||
"repo": "borisyankov/DefinitelyTyped",
|
|
||||||
"ref": "master",
|
|
||||||
"path": "typings",
|
|
||||||
"bundle": "typings/tsd.d.ts",
|
|
||||||
"installed": {
|
|
||||||
"react/react.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"react/react-dom.d.ts": {
|
|
||||||
"commit": "86dbea8fc37d9473fee465da4f0a21bea4f8cbd9"
|
|
||||||
},
|
|
||||||
"redux/redux.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"webpack/webpack-env.d.ts": {
|
|
||||||
"commit": "717a5fdb079f8dd7c19f1b22f7f656dd990f0ccf"
|
|
||||||
},
|
|
||||||
"react-redux/react-redux.d.ts": {
|
|
||||||
"commit": "717a5fdb079f8dd7c19f1b22f7f656dd990f0ccf"
|
|
||||||
},
|
|
||||||
"react-bootstrap/react-bootstrap.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"react-router/react-router.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"react-router/history.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"react-router-bootstrap/react-router-bootstrap.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"react-router-redux/react-router-redux.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"redux-thunk/redux-thunk.d.ts": {
|
|
||||||
"commit": "e69fe60f2d6377ea4fae539493997b098f52cad1"
|
|
||||||
},
|
|
||||||
"whatwg-fetch/whatwg-fetch.d.ts": {
|
|
||||||
"commit": "f4b1797c1201b6c575668f5d7ea12d9b1ab21846"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,976 +0,0 @@
|
|||||||
// Type definitions for react-bootstrap
|
|
||||||
// Project: https://github.com/react-bootstrap/react-bootstrap
|
|
||||||
// Definitions by: Walker Burgin <https://github.com/walkerburgin>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
///<reference path="../react/react.d.ts"/>
|
|
||||||
|
|
||||||
declare module "react-bootstrap" {
|
|
||||||
// Import React
|
|
||||||
import React = require("react");
|
|
||||||
|
|
||||||
|
|
||||||
// <Button />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ButtonProps extends React.Props<ButtonClass>{
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
active?: boolean;
|
|
||||||
disabled?: boolean;
|
|
||||||
block?: boolean;
|
|
||||||
bsStyle?: string;
|
|
||||||
bsSize?: string;
|
|
||||||
className?: string;
|
|
||||||
navItem?: boolean;
|
|
||||||
navDropdown?: boolean;
|
|
||||||
componentClass?: string;
|
|
||||||
href?: string;
|
|
||||||
onClick?: Function; // Add more specific type
|
|
||||||
target?: string;
|
|
||||||
type?: string;
|
|
||||||
}
|
|
||||||
interface Button extends React.ReactElement<ButtonProps> { }
|
|
||||||
interface ButtonClass extends React.ComponentClass<ButtonProps> { }
|
|
||||||
var Button: ButtonClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <ButtonToolbar />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ButtonToolbarProps extends React.Props<ButtonToolbarClass> {
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
block?: boolean;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
justified?: boolean;
|
|
||||||
vertical?: boolean;
|
|
||||||
}
|
|
||||||
interface ButtonToolbar extends React.ReactElement<ButtonToolbarProps> { }
|
|
||||||
interface ButtonToolbarClass extends React.ComponentClass<ButtonToolbarProps> { }
|
|
||||||
var ButtonToolbar: ButtonToolbarClass;
|
|
||||||
|
|
||||||
// <ButtonGroup />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ButtonGroupProps extends React.Props<ButtonGroupClass> {
|
|
||||||
// Optional
|
|
||||||
block?: boolean;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
justified?: boolean;
|
|
||||||
vertical?: boolean;
|
|
||||||
}
|
|
||||||
interface ButtonGroup extends React.ReactElement<ButtonGroupProps> { }
|
|
||||||
interface ButtonGroupClass extends React.ComponentClass<ButtonGroupProps> { }
|
|
||||||
var ButtonGroup: ButtonGroupClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <DropdownButton />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface DropdownButtonProps extends React.Props<DropdownButtonClass> {
|
|
||||||
bsStyle?: string;
|
|
||||||
bsSize?: string;
|
|
||||||
buttonClassName?: string;
|
|
||||||
className?: string;
|
|
||||||
dropup?: boolean;
|
|
||||||
href?: string;
|
|
||||||
id?: string | number;
|
|
||||||
navItem?: boolean;
|
|
||||||
noCaret?: boolean;
|
|
||||||
onClick?: Function; // TODO: Add more specifc type
|
|
||||||
onSelect?: Function; // TODO: Add more specific type
|
|
||||||
pullRight?: boolean;
|
|
||||||
title?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface DropdownButton extends React.ReactElement<DropdownButtonProps> { }
|
|
||||||
interface DropdownButtonClass extends React.ComponentClass<DropdownButtonProps> { }
|
|
||||||
var DropdownButton: DropdownButtonClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <SplitButton />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface SplitButtonProps extends React.Props<SplitButtonClass>{
|
|
||||||
bsStyle?: string;
|
|
||||||
bsSize?: string;
|
|
||||||
className?: string;
|
|
||||||
disabled?: boolean;
|
|
||||||
dropdownTitle?: any; // TODO: Add more specific type
|
|
||||||
dropup?: boolean;
|
|
||||||
href?: string;
|
|
||||||
id?: string;
|
|
||||||
onClick?: Function; // TODO: Add more specific type
|
|
||||||
onSelect?: Function; // TODO: Add more specific type
|
|
||||||
pullRight?: boolean;
|
|
||||||
target?: string;
|
|
||||||
title?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface SplitButton extends React.ReactElement<SplitButtonProps> { }
|
|
||||||
interface SplitButtonClass extends React.ComponentClass<SplitButtonProps> { }
|
|
||||||
var SplitButton: SplitButtonClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <MenuItem />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface MenuItemProps extends React.Props<MenuItemClass> {
|
|
||||||
active?: boolean;
|
|
||||||
className?: string;
|
|
||||||
disabled?: boolean;
|
|
||||||
divider?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
header?: boolean;
|
|
||||||
href?: string;
|
|
||||||
onClick?: Function;
|
|
||||||
onKeyDown?: Function;
|
|
||||||
onSelect?: Function;
|
|
||||||
target?: string;
|
|
||||||
title?: string;
|
|
||||||
}
|
|
||||||
interface MenuItem extends React.ReactElement<MenuItemProps> { }
|
|
||||||
interface MenuItemClass extends React.ComponentClass<MenuItemProps> { }
|
|
||||||
var MenuItem: MenuItemClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Panel />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PanelProps extends React.Props<PanelClass> {
|
|
||||||
className?: string;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
collapsible?: boolean;
|
|
||||||
defaultExpanded?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
expanded?: boolean;
|
|
||||||
footer?: any; // TODO: Add more specific type
|
|
||||||
header?: any; // TODO: Add more specific type
|
|
||||||
id?: string;
|
|
||||||
onSelect?: Function; // TODO: Add more specific type
|
|
||||||
onClick?: Function; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Panel extends React.ReactElement<PanelProps> { }
|
|
||||||
interface PanelClass extends React.ComponentClass<PanelProps> { }
|
|
||||||
var Panel: PanelClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Accordion />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface AccordionProps extends React.Props<AccordionClass> {
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
collapsible?: boolean;
|
|
||||||
defaultExpanded?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
expanded?: boolean;
|
|
||||||
footer?: any; // TODO: Add more specific type
|
|
||||||
header?: any; // TODO: Add more specific type
|
|
||||||
id?: string;
|
|
||||||
onSelect?: Function; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Accordion extends React.ReactElement<AccordionProps> { }
|
|
||||||
interface AccordionClass extends React.ComponentClass<AccordionProps> { }
|
|
||||||
var Accordion: AccordionClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <PanelGroup />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PanelGroupProps extends React.Props<PanelGroupClass> {
|
|
||||||
accordion?: boolean;
|
|
||||||
activeKey?: any;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
defaultActiveKey?: any;
|
|
||||||
onSelect?: Function;
|
|
||||||
}
|
|
||||||
interface PanelGroup extends React.ReactElement<PanelGroupProps> { }
|
|
||||||
interface PanelGroupClass extends React.ComponentClass<PanelGroupProps> { }
|
|
||||||
var PanelGroup: PanelGroupClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal.Dialog />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalDialogProps extends React.Props<ModalDialogClass> {
|
|
||||||
// TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface ModalDialog extends React.ReactElement<ModalDialogProps> { }
|
|
||||||
interface ModalDialogClass extends React.ComponentClass<ModalHeaderProps> { }
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal.Header />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalHeaderProps extends React.Props<ModalHeaderClass> {
|
|
||||||
className?: string;
|
|
||||||
closeButton?: boolean;
|
|
||||||
modalClassName?: string;
|
|
||||||
onHide?: Function;
|
|
||||||
// undefined?: string;
|
|
||||||
}
|
|
||||||
interface ModalHeader extends React.ReactElement<ModalHeaderProps> { }
|
|
||||||
interface ModalHeaderClass extends React.ComponentClass<ModalHeaderProps> { }
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal.Title/>
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalTitleProps extends React.Props<ModalTitleClass> {
|
|
||||||
className?: string;
|
|
||||||
modalClassName?: string;
|
|
||||||
}
|
|
||||||
interface ModalTitle extends React.ReactElement<ModalTitleProps> { }
|
|
||||||
interface ModalTitleClass extends React.ComponentClass<ModalTitleProps> { }
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal.Body />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalBodyProps extends React.Props<ModalBodyClass> {
|
|
||||||
className?: string;
|
|
||||||
modalClassName?: string;
|
|
||||||
}
|
|
||||||
interface ModalBody extends React.ReactElement<ModalBodyProps> { }
|
|
||||||
interface ModalBodyClass extends React.ComponentClass<ModalBodyProps> { }
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal.Footer />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalFooterProps extends React.Props<ModalFooterClass> {
|
|
||||||
className?: string;
|
|
||||||
modalClassName?: string;
|
|
||||||
}
|
|
||||||
interface ModalFooter extends React.ReactElement<ModalFooterProps> { }
|
|
||||||
interface ModalFooterClass extends React.ComponentClass<ModalFooterProps> { }
|
|
||||||
|
|
||||||
|
|
||||||
// <Modal />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ModalProps extends React.Props<ModalClass> {
|
|
||||||
// Required
|
|
||||||
onHide: Function;
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
animation?: boolean;
|
|
||||||
autoFocus?: boolean;
|
|
||||||
backdrop?: boolean|string;
|
|
||||||
bsSize?: string;
|
|
||||||
container?: any; // TODO: Add more specific type
|
|
||||||
dialogClassName?: string;
|
|
||||||
dialogComponent?: any; // TODO: Add more specific type
|
|
||||||
enforceFocus?: boolean;
|
|
||||||
keyboard?: boolean;
|
|
||||||
show?: boolean;
|
|
||||||
}
|
|
||||||
interface Modal extends React.ReactElement<ModalProps> { }
|
|
||||||
interface ModalClass extends React.ComponentClass<ModalProps> {
|
|
||||||
Header: ModalHeaderClass;
|
|
||||||
Title: ModalTitleClass;
|
|
||||||
Body: ModalBodyClass;
|
|
||||||
Footer: ModalFooterClass;
|
|
||||||
Dialog: ModalDialogClass;
|
|
||||||
}
|
|
||||||
var Modal: ModalClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <OverlayTrigger />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface OverlayTriggerProps extends React.Props<OverlayTriggerClass> {
|
|
||||||
// Required
|
|
||||||
overlay: any; // TODO: Add more specific type
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
animation?: any; // TODO: Add more specific type
|
|
||||||
container?: any; // TODO: Add more specific type
|
|
||||||
containerPadding?: number;
|
|
||||||
defaultOverlayShown?: boolean;
|
|
||||||
delay?: number;
|
|
||||||
delayHide?: number;
|
|
||||||
delayShow?: number;
|
|
||||||
onEnter?: Function;
|
|
||||||
onEntered?: Function;
|
|
||||||
onEntering?: Function;
|
|
||||||
onExit?: Function;
|
|
||||||
onExited?: Function;
|
|
||||||
onExiting?: Function;
|
|
||||||
placement?: string;
|
|
||||||
rootClose?: boolean;
|
|
||||||
trigger?: string;
|
|
||||||
}
|
|
||||||
interface OverlayTrigger extends React.ReactElement<OverlayTriggerProps> { }
|
|
||||||
interface OverlayTriggerClass extends React.ComponentClass<OverlayTriggerProps> { }
|
|
||||||
var OverlayTrigger: OverlayTriggerClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Tooltip />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface TooltipProps extends React.Props<TooltipClass> {
|
|
||||||
// Optional
|
|
||||||
arrowOffsetLeft?: number | string;
|
|
||||||
arrowOffsetTop?: number | string;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
id?: string;
|
|
||||||
placement?: string;
|
|
||||||
positionLeft?: number;
|
|
||||||
positionTop?: number;
|
|
||||||
title?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Tooltip extends React.ReactElement<TooltipProps> { }
|
|
||||||
interface TooltipClass extends React.ComponentClass<TooltipProps> { }
|
|
||||||
var Tooltip: TooltipClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Popover/>
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PopoverProps extends React.Props<PopoverClass> {
|
|
||||||
// Optional
|
|
||||||
arrowOffsetLeft?: number | string;
|
|
||||||
arrowOffsetTop?: number | string;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
id?: string;
|
|
||||||
placement?: string;
|
|
||||||
positionLeft?: number;
|
|
||||||
positionTop?: number;
|
|
||||||
title?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Popover extends React.ReactElement<PopoverProps> { }
|
|
||||||
interface PopoverClass extends React.ComponentClass<PopoverProps> { }
|
|
||||||
var Popover: PopoverClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Overlay />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface OverlayProps extends React.Props<OverlayClass> {
|
|
||||||
// Optional
|
|
||||||
animation?: any; // TODO: Add more specific type
|
|
||||||
container?: any; // TODO: Add more specific type
|
|
||||||
containerPadding?: number; // TODO: Add more specific type
|
|
||||||
onEnter?: Function;
|
|
||||||
onEntered?: Function;
|
|
||||||
onEntering?: Function;
|
|
||||||
onExit?: Function;
|
|
||||||
onExited?: Function;
|
|
||||||
onExiting?: Function;
|
|
||||||
onHide?: Function;
|
|
||||||
placement?: string;
|
|
||||||
rootClose?: boolean;
|
|
||||||
show?: boolean;
|
|
||||||
target?: Function;
|
|
||||||
}
|
|
||||||
interface Overlay extends React.ReactElement<OverlayProps> { }
|
|
||||||
interface OverlayClass extends React.ComponentClass<OverlayProps> { }
|
|
||||||
var Overlay: OverlayClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <ProgressBar />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ProgressBarProps extends React.Props<ProgressBarClass> {
|
|
||||||
// Optional
|
|
||||||
active?: boolean;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
interpolatedClass?: any; // TODO: Add more specific type
|
|
||||||
label?: any; // TODO: Add more specific type
|
|
||||||
max?: number;
|
|
||||||
min?: number;
|
|
||||||
now?: number;
|
|
||||||
srOnly?: boolean;
|
|
||||||
striped?: boolean;
|
|
||||||
}
|
|
||||||
interface ProgressBar extends React.ReactElement<ProgressBarProps> { }
|
|
||||||
interface ProgressBarClass extends React.ComponentClass<ProgressBarProps> { }
|
|
||||||
var ProgressBar: ProgressBarClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Nav />
|
|
||||||
// ----------------------------------------
|
|
||||||
// TODO: This one turned into a union of two different types
|
|
||||||
interface NavProps extends React.Props<NavClass> {
|
|
||||||
// Optional
|
|
||||||
activeHref?: string;
|
|
||||||
activeKey?: any;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
collapsible?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
expanded?: boolean;
|
|
||||||
id?: string;
|
|
||||||
justified?: boolean;
|
|
||||||
navbar?: boolean;
|
|
||||||
onSelect?: Function;
|
|
||||||
pullRight?: boolean;
|
|
||||||
right?: boolean;
|
|
||||||
stacked?: boolean;
|
|
||||||
ulClassName?: string;
|
|
||||||
ulId?: string;
|
|
||||||
}
|
|
||||||
interface Nav extends React.ReactElement<NavProps> { }
|
|
||||||
interface NavClass extends React.ComponentClass<NavProps> { }
|
|
||||||
var Nav: NavClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <NavItem />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavItemProps extends React.Props<NavItemClass> {
|
|
||||||
active?: boolean;
|
|
||||||
brand?: any; // TODO: Add more specific type
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
defaultNavExpanded?: boolean;
|
|
||||||
disabled?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
fixedBottom?: boolean;
|
|
||||||
fixedTop?: boolean;
|
|
||||||
fluid?: boolean;
|
|
||||||
href?: string;
|
|
||||||
inverse?: boolean;
|
|
||||||
linkId?: string;
|
|
||||||
navExpanded?: boolean;
|
|
||||||
onClick?: Function;
|
|
||||||
onSelect?: Function;
|
|
||||||
onToggle?: Function;
|
|
||||||
role?: string;
|
|
||||||
staticTop?: boolean;
|
|
||||||
target?: string;
|
|
||||||
title?: string;
|
|
||||||
toggleButton?: any; // TODO: Add more specific type
|
|
||||||
toggleNavKey?: string | number;
|
|
||||||
}
|
|
||||||
interface NavItem extends React.ReactElement<NavItemProps> { }
|
|
||||||
interface NavItemClass extends React.ComponentClass<NavItemProps> { }
|
|
||||||
var NavItem: NavItemClass;
|
|
||||||
|
|
||||||
// <Navbar.Brand />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavbarBrandProps extends React.Props<NavbarBrandClass> {
|
|
||||||
}
|
|
||||||
interface NavbarBrand extends React.ReactElement<NavbarBrandProps> { }
|
|
||||||
interface NavbarBrandClass extends React.ComponentClass<NavbarBrandProps> { }
|
|
||||||
|
|
||||||
// <Navbar.Collapse />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavbarCollapseProps extends React.Props<NavbarCollapseClass> {
|
|
||||||
}
|
|
||||||
interface NavbarCollapse extends React.ReactElement<NavbarCollapseProps> { }
|
|
||||||
interface NavbarCollapseClass extends React.ComponentClass<NavbarCollapseProps> { }
|
|
||||||
|
|
||||||
// <Navbar.Header />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavbarHeaderProps extends React.Props<NavbarHeaderClass> {
|
|
||||||
}
|
|
||||||
interface NavbarHeader extends React.ReactElement<NavbarHeaderProps> { }
|
|
||||||
interface NavbarHeaderClass extends React.ComponentClass<NavbarHeaderProps> { }
|
|
||||||
|
|
||||||
// <Navbar.Toggle />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavbarToggleProps extends React.Props<NavbarToggleClass> {
|
|
||||||
}
|
|
||||||
interface NavbarToggle extends React.ReactElement<NavbarToggleProps> { }
|
|
||||||
interface NavbarToggleClass extends React.ComponentClass<NavbarToggleProps> { }
|
|
||||||
|
|
||||||
// <Navbar />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavbarProps extends React.Props<NavbarClass> {
|
|
||||||
brand?: any; // TODO: Add more specific type
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
defaultNavExpanded?: boolean;
|
|
||||||
fixedBottom?: boolean;
|
|
||||||
fixedTop?: boolean;
|
|
||||||
fluid?: boolean;
|
|
||||||
inverse?: boolean;
|
|
||||||
navExpanded?: boolean;
|
|
||||||
onToggle?: Function;
|
|
||||||
role?: string;
|
|
||||||
staticTop?: boolean;
|
|
||||||
toggleButton?: any; // TODO: Add more specific type
|
|
||||||
toggleNavKey?: string | number;
|
|
||||||
}
|
|
||||||
interface Navbar extends React.ReactElement<NavbarProps> { }
|
|
||||||
interface NavbarClass extends React.ComponentClass<NavbarProps> {
|
|
||||||
Brand: NavbarBrandClass;
|
|
||||||
Collapse: NavbarCollapseClass;
|
|
||||||
Header: NavbarHeaderClass;
|
|
||||||
Toggle: NavbarToggleClass;
|
|
||||||
}
|
|
||||||
var Navbar: NavbarClass;
|
|
||||||
|
|
||||||
// <NavBrand />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavBrandProps {
|
|
||||||
|
|
||||||
}
|
|
||||||
interface NavBrand extends React.ReactElement<NavbarProps> { }
|
|
||||||
interface NavBrandClass extends React.ComponentClass<NavbarProps> { }
|
|
||||||
var NavBrand: NavBrandClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <NavDropdown />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface NavDropdownProps extends React.Props<NavDropdownClass> {
|
|
||||||
className?: string;
|
|
||||||
eventKey?: any;
|
|
||||||
title?: string;
|
|
||||||
id?: string;
|
|
||||||
}
|
|
||||||
interface NavDropdown extends React.ReactElement<NavDropdownProps> { }
|
|
||||||
interface NavDropdownClass extends React.ComponentClass<NavDropdownProps> { }
|
|
||||||
var NavDropdown: NavDropdownClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Tabs />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface TabsProps extends React.Props<TabsClass> {
|
|
||||||
activeKey?: any;
|
|
||||||
animation?: boolean;
|
|
||||||
bsStyle?: string;
|
|
||||||
defaultActiveKey?: any;
|
|
||||||
id?: string | number;
|
|
||||||
onSelect?: Function;
|
|
||||||
paneWidth?: any; // TODO: Add more specific type
|
|
||||||
position?: string;
|
|
||||||
tabWidth?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Tabs extends React.ReactElement<TabsProps> { }
|
|
||||||
interface TabsClass extends React.ComponentClass<TabsProps> { }
|
|
||||||
var Tabs: TabsClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Tab />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface TabProps extends React.Props<TabClass> {
|
|
||||||
animation?: boolean;
|
|
||||||
className?: string;
|
|
||||||
disabled?: boolean;
|
|
||||||
eventKey?: any; // TODO: Add more specific type
|
|
||||||
title?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Tab extends React.ReactElement<TabProps> { }
|
|
||||||
interface TabClass extends React.ComponentClass<TabProps> { }
|
|
||||||
var Tab: TabClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Pager />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PagerProps extends React.Props<PagerClass> {
|
|
||||||
className?: string;
|
|
||||||
onSelect?: Function;
|
|
||||||
}
|
|
||||||
interface Pager extends React.ReactElement<PagerProps> { }
|
|
||||||
interface PagerClass extends React.ComponentClass<PagerProps> { }
|
|
||||||
var Pager: PagerClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <PageItem />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PageItemProps extends React.Props<PageItemClass> {
|
|
||||||
className?: string;
|
|
||||||
disabled?: boolean;
|
|
||||||
eventKey?: any;
|
|
||||||
href?: string;
|
|
||||||
next?: boolean;
|
|
||||||
onSelect?: Function;
|
|
||||||
previous?: boolean;
|
|
||||||
target?: string;
|
|
||||||
title?: string;
|
|
||||||
}
|
|
||||||
interface PageItem extends React.ReactElement<PageItemProps> { }
|
|
||||||
interface PageItemClass extends React.ComponentClass<PageItemProps> { }
|
|
||||||
var PageItem: PageItemClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Pagination />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PaginationProps extends React.Props<PaginationClass> {
|
|
||||||
activePage?: number;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
buttonComponentClass?: any; // TODO: Add more specific type
|
|
||||||
className?: string;
|
|
||||||
ellipsis?: boolean;
|
|
||||||
first?: boolean;
|
|
||||||
items?: number;
|
|
||||||
last?: boolean;
|
|
||||||
maxButtons?: number;
|
|
||||||
next?: boolean;
|
|
||||||
onSelect?: Function;
|
|
||||||
prev?: boolean;
|
|
||||||
}
|
|
||||||
interface Pagination extends React.ReactElement<PaginationProps> { }
|
|
||||||
interface PaginationClass extends React.ComponentClass<PaginationProps> { }
|
|
||||||
var Pagination: PaginationClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Alert />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface AlertProps extends React.Props<AlertClass> {
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
closeLabel?: string;
|
|
||||||
dismissAfter?: number;
|
|
||||||
onDismiss?: Function;
|
|
||||||
}
|
|
||||||
interface Alert extends React.ReactElement<AlertProps> { }
|
|
||||||
interface AlertClass extends React.ComponentClass<AlertProps> { }
|
|
||||||
var Alert: AlertClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Carousel />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface CarouselProps extends React.Props<CarouselClass> {
|
|
||||||
activeIndex?: number;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
controls?: boolean;
|
|
||||||
defaultActiveIndex?: number;
|
|
||||||
direction?: string;
|
|
||||||
indicators?: boolean;
|
|
||||||
interval?: number;
|
|
||||||
nextIcon?: any; // TODO: Add more specific type
|
|
||||||
onSelect?: Function;
|
|
||||||
onSlideEnd?: Function;
|
|
||||||
pauseOnHover?: boolean;
|
|
||||||
prevIcon?: any; // TODO: Add more specific type
|
|
||||||
slide?: boolean;
|
|
||||||
wrap?: boolean;
|
|
||||||
}
|
|
||||||
interface Carousel extends React.ReactElement<CarouselProps> { }
|
|
||||||
interface CarouselClass extends React.ComponentClass<CarouselProps> { }
|
|
||||||
var Carousel: CarouselClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <CarouselItem />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface CarouselItemProps extends React.Props<CarouselItemClass> {
|
|
||||||
active?: boolean;
|
|
||||||
animtateIn?: boolean;
|
|
||||||
animateOut?: boolean;
|
|
||||||
caption?: any; // TODO: Add more specific type
|
|
||||||
className?: string;
|
|
||||||
direction?: string;
|
|
||||||
index?: number;
|
|
||||||
onAnimateOutEnd?: Function;
|
|
||||||
}
|
|
||||||
interface CarouselItem extends React.ReactElement<CarouselItemProps> { }
|
|
||||||
interface CarouselItemClass extends React.ComponentClass<CarouselItemProps> { }
|
|
||||||
var CarouselItem: CarouselItemClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Grid />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface GridProps extends React.Props<GridClass> {
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
fluid?: boolean;
|
|
||||||
}
|
|
||||||
interface Grid extends React.ReactElement<GridProps> { }
|
|
||||||
interface GridClass extends React.ComponentClass<GridProps> { }
|
|
||||||
var Grid: GridClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Row />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface RowProps extends React.Props<RowClass> {
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Row extends React.ReactElement<RowProps> { }
|
|
||||||
interface RowClass extends React.ComponentClass<RowProps> { }
|
|
||||||
var Row: RowClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Col />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ColProps extends React.Props<ColClass> {
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
lg?: number;
|
|
||||||
lgOffset?: number;
|
|
||||||
lgPull?: number;
|
|
||||||
lgPush?: number;
|
|
||||||
md?: number;
|
|
||||||
mdOffset?: number;
|
|
||||||
mdPull?: number;
|
|
||||||
mdPush?: number;
|
|
||||||
sm?: number;
|
|
||||||
smOffset?: number;
|
|
||||||
smPull?: number;
|
|
||||||
smPush?: number;
|
|
||||||
xs?: number;
|
|
||||||
xsOffset?: number;
|
|
||||||
xsPull?: number;
|
|
||||||
xsPush?: number;
|
|
||||||
}
|
|
||||||
interface Col extends React.ReactElement<ColProps> { }
|
|
||||||
interface ColClass extends React.ComponentClass<ColProps> { }
|
|
||||||
var Col: ColClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Thumbnail />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ThumbnailProps extends React.Props<ThumbnailClass> {
|
|
||||||
alt?: string;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
href?: string;
|
|
||||||
src?: string;
|
|
||||||
}
|
|
||||||
interface Thumbnail extends React.ReactElement<ThumbnailProps> { }
|
|
||||||
interface ThumbnailClass extends React.ComponentClass<ThumbnailProps> { }
|
|
||||||
var Thumbnail: ThumbnailClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <ListGroup />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ListGroupProps extends React.Props<ListGroupClass> {
|
|
||||||
className?: string;
|
|
||||||
id?: string | number;
|
|
||||||
fill?: boolean; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface ListGroup extends React.ReactElement<ListGroupProps> { }
|
|
||||||
interface ListGroupClass extends React.ComponentClass<ListGroupProps> { }
|
|
||||||
var ListGroup: ListGroupClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <ListGroupItem />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ListGroupItemProps extends React.Props<ListGroupItemClass> {
|
|
||||||
active?: any;
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
disabled?: any;
|
|
||||||
eventKey?: any;
|
|
||||||
header?: any; // TODO: Add more specific type
|
|
||||||
href?: string;
|
|
||||||
key?: any; // TODO: Add more specific type
|
|
||||||
listItem?: boolean;
|
|
||||||
onClick?: Function; // TODO: Add more specific type
|
|
||||||
target?: string;
|
|
||||||
}
|
|
||||||
interface ListGroupItem extends React.ReactElement<ListGroupItemProps> { }
|
|
||||||
interface ListGroupItemClass extends React.ComponentClass<ListGroupItemProps> { }
|
|
||||||
var ListGroupItem: ListGroupItemClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Label />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface LabelProps extends React.Props<LabelClass> {
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
interface Label extends React.ReactElement<LabelProps> { }
|
|
||||||
interface LabelClass extends React.ComponentClass<LabelProps> { }
|
|
||||||
var Label: LabelClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Badge />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface BadgeProps extends React.Props<BadgeClass> {
|
|
||||||
className?: string;
|
|
||||||
pullRight?: boolean;
|
|
||||||
}
|
|
||||||
interface Badge extends React.ReactElement<BadgeProps> { }
|
|
||||||
interface BadgeClass extends React.ComponentClass<BadgeProps> { }
|
|
||||||
var Badge: BadgeClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Jumbotron />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface JumbotronProps extends React.Props<JumbotronClass> {
|
|
||||||
className?: string;
|
|
||||||
componentClass?: any; // TODO: Add more specific type
|
|
||||||
}
|
|
||||||
interface Jumbotron extends React.ReactElement<JumbotronProps> { }
|
|
||||||
interface JumbotronClass extends React.ComponentClass<JumbotronProps> { }
|
|
||||||
var Jumbotron: JumbotronClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <PageHeader />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PageHeaderProps extends React.Props<PageHeaderClass> {
|
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
interface PageHeader extends React.ReactElement<PageHeaderProps> { }
|
|
||||||
interface PageHeaderClass extends React.ComponentClass<PageHeaderProps> { }
|
|
||||||
var PageHeader: PageHeaderClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Well />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface WellProps extends React.Props<WellClass> {
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
className?: string;
|
|
||||||
}
|
|
||||||
interface Well extends React.ReactElement<WellProps> { }
|
|
||||||
interface WellClass extends React.ComponentClass<WellProps> { }
|
|
||||||
var Well: WellClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Glyphicon />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface GlyphiconProps extends React.Props<GlyphiconClass> {
|
|
||||||
className?: string;
|
|
||||||
// Required
|
|
||||||
glyph: string;
|
|
||||||
}
|
|
||||||
interface Glyphicon extends React.ReactElement<GlyphiconProps> { }
|
|
||||||
interface GlyphiconClass extends React.ComponentClass<GlyphiconProps> { }
|
|
||||||
var Glyphicon: GlyphiconClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Table />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface TableProps extends React.Props<TableClass> {
|
|
||||||
bordered?: boolean;
|
|
||||||
className?: string;
|
|
||||||
condensed?: boolean;
|
|
||||||
hover?: boolean;
|
|
||||||
responsive?: boolean;
|
|
||||||
striped?: boolean;
|
|
||||||
}
|
|
||||||
interface Table extends React.ReactElement<TableProps> { }
|
|
||||||
interface TableClass extends React.ComponentClass<TableProps> { }
|
|
||||||
var Table: TableClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Input />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface InputProps extends React.Props<InputClass> {
|
|
||||||
defaultValue?:string;
|
|
||||||
addonAfter?: any; // TODO: Add more specific type
|
|
||||||
addonBefore?: any; // TODO: Add more specific type
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
buttonAfter?: any; // TODO: Add more specific type
|
|
||||||
buttonBefore?: any; // TODO: Add more specific type
|
|
||||||
className?: string;
|
|
||||||
checked?: boolean;
|
|
||||||
disabled?: boolean;
|
|
||||||
feedbackIcon?: any; // TODO: Add more specific type
|
|
||||||
groupClassName?: string;
|
|
||||||
hasFeedback?: boolean;
|
|
||||||
help?: any; // TODO: Add more specific type
|
|
||||||
id?: string | number;
|
|
||||||
label?: any; // TODO: Add more specific type
|
|
||||||
labelClassName?: string;
|
|
||||||
multiple?: boolean;
|
|
||||||
placeholder?: string;
|
|
||||||
readOnly?: boolean;
|
|
||||||
type?: string;
|
|
||||||
onChange?: Function; // TODO: Add more specific type
|
|
||||||
onKeyDown?: Function; // TODO: Add more specific type
|
|
||||||
onKeyUp?: Function; // TODO: Add more specific type
|
|
||||||
onKeyPress?: Function; // TODO: Add more specific type
|
|
||||||
value?: any; // TODO: Add more specific type
|
|
||||||
wrapperClassName?: string;
|
|
||||||
}
|
|
||||||
interface Input extends React.ReactElement<InputProps> { }
|
|
||||||
interface InputClass extends React.ComponentClass<InputProps> { }
|
|
||||||
var Input: InputClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <ButtonInput />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface ButtonInputProps extends React.Props<ButtonInputClass> {
|
|
||||||
addonAfter?: any; // TODO: Add more specific type
|
|
||||||
addonBefore?: any; // TODO: Add more specific type
|
|
||||||
bsSize?: string;
|
|
||||||
bsStyle?: string;
|
|
||||||
buttonAfter?: any; // TODO: Add more specific type
|
|
||||||
buttonBefore?: any; // TODO: Add more specific type
|
|
||||||
className?: string;
|
|
||||||
disabled?: boolean;
|
|
||||||
feedbackIcon?: any; // TODO: Add more specific type
|
|
||||||
groupClassName?: string;
|
|
||||||
hasFeedback?: boolean;
|
|
||||||
help?: any; // TODO: Add more specific type
|
|
||||||
id?: string | number;
|
|
||||||
label?: any; // TODO: Add more specific type
|
|
||||||
labelClassName?: string;
|
|
||||||
multiple?: boolean;
|
|
||||||
onClick?: Function; // TODO: Add more specific type
|
|
||||||
type?: string;
|
|
||||||
value?: any; // TODO: Add more specific type
|
|
||||||
wrapperClassName?: string;
|
|
||||||
}
|
|
||||||
interface ButtonInput extends React.ReactElement<ButtonInputProps> { }
|
|
||||||
interface ButtonInputClass extends React.ComponentClass<ButtonInputProps> { }
|
|
||||||
var ButtonInput: ButtonInputClass;
|
|
||||||
|
|
||||||
|
|
||||||
// TODO: FormControls.Static
|
|
||||||
|
|
||||||
|
|
||||||
// <Portal />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PortalProps extends React.Props<PortalClass> {
|
|
||||||
dimension?: string | Function;
|
|
||||||
getDimensionValue?: Function;
|
|
||||||
in?: boolean;
|
|
||||||
onEnter?: Function;
|
|
||||||
onEntered?: Function;
|
|
||||||
onEntering?: Function;
|
|
||||||
onExit?: Function;
|
|
||||||
onExited?: Function;
|
|
||||||
onExiting?: Function;
|
|
||||||
role?: string;
|
|
||||||
timeout?: number;
|
|
||||||
transitionAppear?: boolean;
|
|
||||||
unmountOnExit?: boolean;
|
|
||||||
}
|
|
||||||
interface Portal extends React.ReactElement<PortalProps> { }
|
|
||||||
interface PortalClass extends React.ComponentClass<PortalProps> { }
|
|
||||||
var Portal: PortalClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Position />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface PositionProps extends React.Props<PositionClass> {
|
|
||||||
dimension?: string | Function;
|
|
||||||
getDimensionValue?: Function;
|
|
||||||
in?: boolean;
|
|
||||||
onEnter?: Function;
|
|
||||||
onEntered?: Function;
|
|
||||||
onEntering?: Function;
|
|
||||||
onExit?: Function;
|
|
||||||
onExited?: Function;
|
|
||||||
onExiting?: Function;
|
|
||||||
role?: string;
|
|
||||||
timeout?: number;
|
|
||||||
transitionAppear?: boolean;
|
|
||||||
unmountOnExit?: boolean;
|
|
||||||
}
|
|
||||||
interface Position extends React.ReactElement<PositionProps> { }
|
|
||||||
interface PositionClass extends React.ComponentClass<PositionProps> { }
|
|
||||||
var Position: PositionClass;
|
|
||||||
|
|
||||||
|
|
||||||
// <Fade />
|
|
||||||
// ----------------------------------------
|
|
||||||
interface FadeProps extends React.Props<FadeClass> {
|
|
||||||
in?: boolean;
|
|
||||||
onEnter?: Function;
|
|
||||||
onEntered?: Function;
|
|
||||||
onEntering?: Function;
|
|
||||||
onExit?: Function;
|
|
||||||
onExited?: Function;
|
|
||||||
onExiting?: Function;
|
|
||||||
timeout?: number;
|
|
||||||
transitionAppear?: boolean;
|
|
||||||
unmountOnExit?: boolean;
|
|
||||||
}
|
|
||||||
interface Fade extends React.ReactElement<FadeProps> { }
|
|
||||||
interface FadeClass extends React.ComponentClass<FadeProps> { }
|
|
||||||
var Fade: FadeClass;
|
|
||||||
}
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
// Type definitions for react-redux 2.1.2
|
|
||||||
// Project: https://github.com/rackt/react-redux
|
|
||||||
// Definitions by: Qubo <https://github.com/tkqubo>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
/// <reference path="../react/react.d.ts" />
|
|
||||||
/// <reference path="../redux/redux.d.ts" />
|
|
||||||
|
|
||||||
declare module "react-redux" {
|
|
||||||
import { Component } from 'react';
|
|
||||||
import { Store, Dispatch, ActionCreator } from 'redux';
|
|
||||||
|
|
||||||
export class ElementClass extends Component<any, any> { }
|
|
||||||
export interface ClassDecorator {
|
|
||||||
<T extends (typeof ElementClass)>(component: T): T
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Connects a React component to a Redux store.
|
|
||||||
* @param mapStateToProps
|
|
||||||
* @param mapDispatchToProps
|
|
||||||
* @param mergeProps
|
|
||||||
* @param options
|
|
||||||
*/
|
|
||||||
export function connect(mapStateToProps?: MapStateToProps,
|
|
||||||
mapDispatchToProps?: MapDispatchToPropsFunction|MapDispatchToPropsObject,
|
|
||||||
mergeProps?: MergeProps,
|
|
||||||
options?: Options): ClassDecorator;
|
|
||||||
|
|
||||||
interface MapStateToProps {
|
|
||||||
(state: any, ownProps?: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MapDispatchToPropsFunction {
|
|
||||||
(dispatch: Dispatch, ownProps?: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MapDispatchToPropsObject {
|
|
||||||
[name: string]: ActionCreator;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MergeProps {
|
|
||||||
(stateProps: any, dispatchProps: any, ownProps: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Options {
|
|
||||||
/**
|
|
||||||
* If true, implements shouldComponentUpdate and shallowly compares the result of mergeProps,
|
|
||||||
* preventing unnecessary updates, assuming that the component is a “pure” component
|
|
||||||
* and does not rely on any input or state other than its props and the selected Redux store’s state.
|
|
||||||
* Defaults to true.
|
|
||||||
* @default true
|
|
||||||
*/
|
|
||||||
pure: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Property {
|
|
||||||
/**
|
|
||||||
* The single Redux store in your application.
|
|
||||||
*/
|
|
||||||
store?: Store;
|
|
||||||
children?: Function;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Makes the Redux store available to the connect() calls in the component hierarchy below.
|
|
||||||
*/
|
|
||||||
export class Provider extends Component<Property, {}> { }
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
// Type definitions for react-router-bootstrap
|
|
||||||
// Project: https://github.com/react-bootstrap/react-router-bootstrap
|
|
||||||
// Definitions by: Vincent Lesierse <https://github.com/vlesierse>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
///<reference path="../react/react.d.ts"/>
|
|
||||||
///<reference path="../react-router/react-router.d.ts"/>
|
|
||||||
|
|
||||||
declare namespace ReactRouterBootstrap {
|
|
||||||
// Import React
|
|
||||||
import React = __React;
|
|
||||||
|
|
||||||
interface LinkContainerProps extends ReactRouter.LinkProps {
|
|
||||||
disabled?: boolean
|
|
||||||
}
|
|
||||||
interface LinkContainer extends React.ComponentClass<LinkContainerProps> {}
|
|
||||||
interface LinkContainerElement extends React.ReactElement<LinkContainerProps> {}
|
|
||||||
const LinkContainer: LinkContainer
|
|
||||||
|
|
||||||
const IndexLinkContainer: LinkContainer
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router-bootstrap/lib/LinkContainer" {
|
|
||||||
|
|
||||||
export default ReactRouterBootstrap.LinkContainer
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router-bootstrap/lib/IndexLinkContainer" {
|
|
||||||
|
|
||||||
export default ReactRouterBootstrap.IndexLinkContainer
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router-bootstrap" {
|
|
||||||
|
|
||||||
import LinkContainer from "react-router-bootstrap/lib/LinkContainer"
|
|
||||||
|
|
||||||
import IndexLinkContainer from "react-router-bootstrap/lib/IndexLinkContainer"
|
|
||||||
|
|
||||||
export {
|
|
||||||
LinkContainer,
|
|
||||||
IndexLinkContainer
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
// Type definitions for react-router-redux v2.1.0
|
|
||||||
// Project: https://github.com/rackt/react-router-redux
|
|
||||||
// Definitions by: Isman Usoh <http://github.com/isman-usoh>, Noah Shipley <https://github.com/noah79>, Dimitri Rosenberg <https://github.com/rosendi>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
/// <reference path="../redux/redux.d.ts" />
|
|
||||||
/// <reference path="../react-router/react-router.d.ts"/>
|
|
||||||
|
|
||||||
declare namespace ReactRouterRedux {
|
|
||||||
import R = Redux;
|
|
||||||
import H = HistoryModule;
|
|
||||||
|
|
||||||
const TRANSITION: string;
|
|
||||||
const UPDATE_LOCATION: string;
|
|
||||||
|
|
||||||
const push: PushAction;
|
|
||||||
const replace: ReplaceAction;
|
|
||||||
const go: GoAction;
|
|
||||||
const goBack: GoForwardAction;
|
|
||||||
const goForward: GoBackAction;
|
|
||||||
const routeActions: RouteActions;
|
|
||||||
|
|
||||||
type LocationDescriptor = H.Location | H.Path;
|
|
||||||
type PushAction = (nextLocation: LocationDescriptor) => void;
|
|
||||||
type ReplaceAction = (nextLocation: LocationDescriptor) => void;
|
|
||||||
type GoAction = (n: number) => void;
|
|
||||||
type GoForwardAction = () => void;
|
|
||||||
type GoBackAction = () => void;
|
|
||||||
|
|
||||||
interface RouteActions {
|
|
||||||
push: PushAction;
|
|
||||||
replace: ReplaceAction;
|
|
||||||
go: GoAction;
|
|
||||||
goForward: GoForwardAction;
|
|
||||||
goBack: GoBackAction;
|
|
||||||
}
|
|
||||||
interface HistoryMiddleware extends R.Middleware {
|
|
||||||
listenForReplays(store: R.Store, selectLocationState?: Function): void;
|
|
||||||
unsubscribe(): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
function routeReducer(state?: any, options?: any): R.Reducer;
|
|
||||||
function syncHistory(history: H.History): HistoryMiddleware;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router-redux" {
|
|
||||||
export = ReactRouterRedux;
|
|
||||||
}
|
|
||||||
@@ -1,192 +0,0 @@
|
|||||||
// Type definitions for history v1.13.1
|
|
||||||
// Project: https://github.com/rackt/history
|
|
||||||
// Definitions by: Sergey Buturlakin <http://github.com/sergey-buturlakin>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
|
|
||||||
declare namespace HistoryModule {
|
|
||||||
|
|
||||||
// types based on https://github.com/rackt/history/blob/master/docs/Terms.md
|
|
||||||
|
|
||||||
type Action = string
|
|
||||||
|
|
||||||
type BeforeUnloadHook = () => string | boolean
|
|
||||||
|
|
||||||
type CreateHistory<T> = (options?: HistoryOptions) => T
|
|
||||||
|
|
||||||
type CreateHistoryEnhancer<T, E> = (createHistory: CreateHistory<T>) => CreateHistory<T & E>
|
|
||||||
|
|
||||||
interface History {
|
|
||||||
listenBefore(hook: TransitionHook): Function
|
|
||||||
listen(listener: LocationListener): Function
|
|
||||||
transitionTo(location: Location): void
|
|
||||||
pushState(state: LocationState, path: Path): void
|
|
||||||
replaceState(state: LocationState, path: Path): void
|
|
||||||
push(path: Path): void
|
|
||||||
replace(path: Path): void
|
|
||||||
go(n: number): void
|
|
||||||
goBack(): void
|
|
||||||
goForward(): void
|
|
||||||
createKey(): LocationKey
|
|
||||||
createPath(path: Path): Path
|
|
||||||
createHref(path: Path): Href
|
|
||||||
createLocation(path?: Path, state?: LocationState, action?: Action, key?: LocationKey): Location
|
|
||||||
|
|
||||||
/** @deprecated use location.key to save state instead */
|
|
||||||
setState(state: LocationState): void
|
|
||||||
/** @deprecated use listenBefore instead */
|
|
||||||
registerTransitionHook(hook: TransitionHook): void
|
|
||||||
/** @deprecated use the callback returned from listenBefore instead */
|
|
||||||
unregisterTransitionHook(hook: TransitionHook): void
|
|
||||||
}
|
|
||||||
|
|
||||||
type HistoryOptions = Object
|
|
||||||
|
|
||||||
type Href = string
|
|
||||||
|
|
||||||
type Location = {
|
|
||||||
pathname: Pathname
|
|
||||||
search: QueryString
|
|
||||||
query: Query
|
|
||||||
state: LocationState
|
|
||||||
action: Action
|
|
||||||
key: LocationKey
|
|
||||||
}
|
|
||||||
|
|
||||||
type LocationKey = string
|
|
||||||
|
|
||||||
type LocationListener = (location: Location) => void
|
|
||||||
|
|
||||||
type LocationState = Object
|
|
||||||
|
|
||||||
type Path = string // Pathname + QueryString
|
|
||||||
|
|
||||||
type Pathname = string
|
|
||||||
|
|
||||||
type Query = Object
|
|
||||||
|
|
||||||
type QueryString = string
|
|
||||||
|
|
||||||
type TransitionHook = (location: Location, callback: Function) => any
|
|
||||||
|
|
||||||
|
|
||||||
interface HistoryBeforeUnload {
|
|
||||||
listenBeforeUnload(hook: BeforeUnloadHook): Function
|
|
||||||
}
|
|
||||||
|
|
||||||
interface HistoryQueries {
|
|
||||||
pushState(state: LocationState, pathname: Pathname | Path, query?: Query): void
|
|
||||||
replaceState(state: LocationState, pathname: Pathname | Path, query?: Query): void
|
|
||||||
createPath(path: Path, query?: Query): Path
|
|
||||||
createHref(path: Path, query?: Query): Href
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Global usage, without modules, needs the small trick, because lib.d.ts
|
|
||||||
// already has `history` and `History` global definitions:
|
|
||||||
// var createHistory = ((window as any).History as HistoryModule.Module).createHistory;
|
|
||||||
interface Module {
|
|
||||||
createHistory: CreateHistory<History>
|
|
||||||
createHashHistory: CreateHistory<History>
|
|
||||||
createMemoryHistory: CreateHistory<History>
|
|
||||||
createLocation(path?: Path, state?: LocationState, action?: Action, key?: LocationKey): Location
|
|
||||||
useBasename<T>(createHistory: CreateHistory<T>): CreateHistory<T>
|
|
||||||
useBeforeUnload<T>(createHistory: CreateHistory<T>): CreateHistory<T & HistoryBeforeUnload>
|
|
||||||
useQueries<T>(createHistory: CreateHistory<T>): CreateHistory<T & HistoryQueries>
|
|
||||||
actions: {
|
|
||||||
PUSH: string
|
|
||||||
REPLACE: string
|
|
||||||
POP: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/createBrowserHistory" {
|
|
||||||
|
|
||||||
export default function createBrowserHistory(options?: HistoryModule.HistoryOptions): HistoryModule.History
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/createHashHistory" {
|
|
||||||
|
|
||||||
export default function createHashHistory(options?: HistoryModule.HistoryOptions): HistoryModule.History
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/createMemoryHistory" {
|
|
||||||
|
|
||||||
export default function createMemoryHistory(options?: HistoryModule.HistoryOptions): HistoryModule.History
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/createLocation" {
|
|
||||||
|
|
||||||
export default function createLocation(path?: HistoryModule.Path, state?: HistoryModule.LocationState, action?: HistoryModule.Action, key?: HistoryModule.LocationKey): HistoryModule.Location
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/useBasename" {
|
|
||||||
|
|
||||||
export default function useBasename<T>(createHistory: HistoryModule.CreateHistory<T>): HistoryModule.CreateHistory<T>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/useBeforeUnload" {
|
|
||||||
|
|
||||||
export default function useBeforeUnload<T>(createHistory: HistoryModule.CreateHistory<T>): HistoryModule.CreateHistory<T & HistoryModule.HistoryBeforeUnload>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/useQueries" {
|
|
||||||
|
|
||||||
export default function useQueries<T>(createHistory: HistoryModule.CreateHistory<T>): HistoryModule.CreateHistory<T & HistoryModule.HistoryQueries>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history/lib/actions" {
|
|
||||||
|
|
||||||
export const PUSH: string
|
|
||||||
|
|
||||||
export const REPLACE: string
|
|
||||||
|
|
||||||
export const POP: string
|
|
||||||
|
|
||||||
export default {
|
|
||||||
PUSH,
|
|
||||||
REPLACE,
|
|
||||||
POP
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "history" {
|
|
||||||
|
|
||||||
export { default as createHistory } from "history/lib/createBrowserHistory"
|
|
||||||
|
|
||||||
export { default as createHashHistory } from "history/lib/createHashHistory"
|
|
||||||
|
|
||||||
export { default as createMemoryHistory } from "history/lib/createMemoryHistory"
|
|
||||||
|
|
||||||
export { default as createLocation } from "history/lib/createLocation"
|
|
||||||
|
|
||||||
export { default as useBasename } from "history/lib/useBasename"
|
|
||||||
|
|
||||||
export { default as useBeforeUnload } from "history/lib/useBeforeUnload"
|
|
||||||
|
|
||||||
export { default as useQueries } from "history/lib/useQueries"
|
|
||||||
|
|
||||||
import * as Actions from "history/lib/actions"
|
|
||||||
|
|
||||||
export { Actions }
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,474 +0,0 @@
|
|||||||
// Type definitions for react-router v2.0.0-rc5
|
|
||||||
// Project: https://github.com/rackt/react-router
|
|
||||||
// Definitions by: Sergey Buturlakin <http://github.com/sergey-buturlakin>, Yuichi Murata <https://github.com/mrk21>, Václav Ostrožlík <https://github.com/vasek17>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
|
|
||||||
/// <reference path="../react/react.d.ts" />
|
|
||||||
/// <reference path="./history.d.ts"/>
|
|
||||||
|
|
||||||
|
|
||||||
declare namespace ReactRouter {
|
|
||||||
|
|
||||||
import React = __React
|
|
||||||
|
|
||||||
import H = HistoryModule
|
|
||||||
|
|
||||||
// types based on https://github.com/rackt/react-router/blob/master/docs/Glossary.md
|
|
||||||
|
|
||||||
type Component = React.ReactType
|
|
||||||
|
|
||||||
type EnterHook = (nextState: RouterState, replaceState: RedirectFunction, callback?: Function) => any
|
|
||||||
|
|
||||||
type LeaveHook = () => any
|
|
||||||
|
|
||||||
type Params = Object
|
|
||||||
|
|
||||||
type ParseQueryString = (queryString: H.QueryString) => H.Query
|
|
||||||
|
|
||||||
type RedirectFunction = (state: H.LocationState, pathname: H.Pathname | H.Path, query?: H.Query) => void
|
|
||||||
|
|
||||||
type RouteComponent = Component
|
|
||||||
|
|
||||||
// use the following interface in an app code to get access to route param values, history, location...
|
|
||||||
// interface MyComponentProps extends ReactRouter.RouteComponentProps<{}, { id: number }> {}
|
|
||||||
// somewhere in MyComponent
|
|
||||||
// ...
|
|
||||||
// let id = this.props.routeParams.id
|
|
||||||
// ...
|
|
||||||
// this.props.history. ...
|
|
||||||
// ...
|
|
||||||
interface RouteComponentProps<P, R> {
|
|
||||||
history?: History
|
|
||||||
location?: H.Location
|
|
||||||
params?: P
|
|
||||||
route?: PlainRoute
|
|
||||||
routeParams?: R
|
|
||||||
routes?: PlainRoute[]
|
|
||||||
children?: React.ReactElement<any>
|
|
||||||
}
|
|
||||||
|
|
||||||
type RouteComponents = { [key: string]: RouteComponent }
|
|
||||||
|
|
||||||
type RouteConfig = React.ReactNode | PlainRoute | PlainRoute[]
|
|
||||||
|
|
||||||
type RouteHook = (nextLocation?: H.Location) => any
|
|
||||||
|
|
||||||
type RoutePattern = string
|
|
||||||
|
|
||||||
type StringifyQuery = (queryObject: H.Query) => H.QueryString
|
|
||||||
|
|
||||||
type RouterListener = (error: Error, nextState: RouterState) => void
|
|
||||||
|
|
||||||
interface RouterState {
|
|
||||||
location: H.Location
|
|
||||||
routes: PlainRoute[]
|
|
||||||
params: Params
|
|
||||||
components: RouteComponent[]
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
interface HistoryBase extends H.History {
|
|
||||||
routes: PlainRoute[]
|
|
||||||
parseQueryString?: ParseQueryString
|
|
||||||
stringifyQuery?: StringifyQuery
|
|
||||||
}
|
|
||||||
|
|
||||||
type History = HistoryBase & H.HistoryQueries & HistoryRoutes
|
|
||||||
const browserHistory: History;
|
|
||||||
const hashHistory: History;
|
|
||||||
|
|
||||||
/* components */
|
|
||||||
|
|
||||||
interface RouterProps extends React.Props<Router> {
|
|
||||||
history?: H.History
|
|
||||||
routes?: RouteConfig // alias for children
|
|
||||||
createElement?: (component: RouteComponent, props: Object) => any
|
|
||||||
onError?: (error: any) => any
|
|
||||||
onUpdate?: () => any
|
|
||||||
parseQueryString?: ParseQueryString
|
|
||||||
stringifyQuery?: StringifyQuery
|
|
||||||
}
|
|
||||||
interface Router extends React.ComponentClass<RouterProps> {}
|
|
||||||
interface RouterElement extends React.ReactElement<RouterProps> {}
|
|
||||||
const Router: Router
|
|
||||||
|
|
||||||
|
|
||||||
interface LinkProps extends React.HTMLAttributes, React.Props<Link> {
|
|
||||||
activeStyle?: React.CSSProperties
|
|
||||||
activeClassName?: string
|
|
||||||
onlyActiveOnIndex?: boolean
|
|
||||||
to: RoutePattern
|
|
||||||
query?: H.Query
|
|
||||||
state?: H.LocationState
|
|
||||||
}
|
|
||||||
interface Link extends React.ComponentClass<LinkProps> {}
|
|
||||||
interface LinkElement extends React.ReactElement<LinkProps> {}
|
|
||||||
const Link: Link
|
|
||||||
|
|
||||||
|
|
||||||
const IndexLink: Link
|
|
||||||
|
|
||||||
|
|
||||||
interface RouterContextProps extends React.Props<RouterContext> {
|
|
||||||
history?: H.History
|
|
||||||
router: Router
|
|
||||||
createElement: (component: RouteComponent, props: Object) => any
|
|
||||||
location: H.Location
|
|
||||||
routes: RouteConfig
|
|
||||||
params: Params
|
|
||||||
components?: RouteComponent[]
|
|
||||||
}
|
|
||||||
interface RouterContext extends React.ComponentClass<RouterContextProps> {}
|
|
||||||
interface RouterContextElement extends React.ReactElement<RouterContextProps> {
|
|
||||||
history?: H.History
|
|
||||||
location: H.Location
|
|
||||||
router?: Router
|
|
||||||
}
|
|
||||||
const RouterContext: RouterContext
|
|
||||||
|
|
||||||
|
|
||||||
/* components (configuration) */
|
|
||||||
|
|
||||||
interface RouteProps extends React.Props<Route> {
|
|
||||||
path?: RoutePattern
|
|
||||||
component?: RouteComponent
|
|
||||||
components?: RouteComponents
|
|
||||||
getComponent?: (location: H.Location, cb: (error: any, component?: RouteComponent) => void) => void
|
|
||||||
getComponents?: (location: H.Location, cb: (error: any, components?: RouteComponents) => void) => void
|
|
||||||
onEnter?: EnterHook
|
|
||||||
onLeave?: LeaveHook
|
|
||||||
getIndexRoute?: (location: H.Location, cb: (error: any, indexRoute: RouteConfig) => void) => void
|
|
||||||
getChildRoutes?: (location: H.Location, cb: (error: any, childRoutes: RouteConfig) => void) => void
|
|
||||||
}
|
|
||||||
interface Route extends React.ComponentClass<RouteProps> {}
|
|
||||||
interface RouteElement extends React.ReactElement<RouteProps> {}
|
|
||||||
const Route: Route
|
|
||||||
|
|
||||||
|
|
||||||
interface PlainRoute {
|
|
||||||
path?: RoutePattern
|
|
||||||
component?: RouteComponent
|
|
||||||
components?: RouteComponents
|
|
||||||
getComponent?: (location: H.Location, cb: (error: any, component?: RouteComponent) => void) => void
|
|
||||||
getComponents?: (location: H.Location, cb: (error: any, components?: RouteComponents) => void) => void
|
|
||||||
onEnter?: EnterHook
|
|
||||||
onLeave?: LeaveHook
|
|
||||||
indexRoute?: PlainRoute
|
|
||||||
getIndexRoute?: (location: H.Location, cb: (error: any, indexRoute: RouteConfig) => void) => void
|
|
||||||
childRoutes?: PlainRoute[]
|
|
||||||
getChildRoutes?: (location: H.Location, cb: (error: any, childRoutes: RouteConfig) => void) => void
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
interface RedirectProps extends React.Props<Redirect> {
|
|
||||||
path?: RoutePattern
|
|
||||||
from?: RoutePattern // alias for path
|
|
||||||
to: RoutePattern
|
|
||||||
query?: H.Query
|
|
||||||
state?: H.LocationState
|
|
||||||
}
|
|
||||||
interface Redirect extends React.ComponentClass<RedirectProps> {}
|
|
||||||
interface RedirectElement extends React.ReactElement<RedirectProps> {}
|
|
||||||
const Redirect: Redirect
|
|
||||||
|
|
||||||
|
|
||||||
interface IndexRouteProps extends React.Props<IndexRoute> {
|
|
||||||
component?: RouteComponent
|
|
||||||
components?: RouteComponents
|
|
||||||
getComponent?: (location: H.Location, cb: (error: any, component?: RouteComponent) => void) => void
|
|
||||||
getComponents?: (location: H.Location, cb: (error: any, components?: RouteComponents) => void) => void
|
|
||||||
onEnter?: EnterHook
|
|
||||||
onLeave?: LeaveHook
|
|
||||||
}
|
|
||||||
interface IndexRoute extends React.ComponentClass<IndexRouteProps> {}
|
|
||||||
interface IndexRouteElement extends React.ReactElement<IndexRouteProps> {}
|
|
||||||
const IndexRoute: IndexRoute
|
|
||||||
|
|
||||||
|
|
||||||
interface IndexRedirectProps extends React.Props<IndexRedirect> {
|
|
||||||
to: RoutePattern
|
|
||||||
query?: H.Query
|
|
||||||
state?: H.LocationState
|
|
||||||
}
|
|
||||||
interface IndexRedirect extends React.ComponentClass<IndexRedirectProps> {}
|
|
||||||
interface IndexRedirectElement extends React.ReactElement<IndexRedirectProps> {}
|
|
||||||
const IndexRedirect: IndexRedirect
|
|
||||||
|
|
||||||
|
|
||||||
/* mixins */
|
|
||||||
|
|
||||||
interface HistoryMixin {
|
|
||||||
history: History
|
|
||||||
}
|
|
||||||
const History: React.Mixin<any, any>
|
|
||||||
|
|
||||||
|
|
||||||
interface LifecycleMixin {
|
|
||||||
routerWillLeave(nextLocation: H.Location): string | boolean
|
|
||||||
}
|
|
||||||
const Lifecycle: React.Mixin<any, any>
|
|
||||||
|
|
||||||
|
|
||||||
const RouteContext: React.Mixin<any, any>
|
|
||||||
|
|
||||||
|
|
||||||
/* utils */
|
|
||||||
|
|
||||||
interface HistoryRoutes {
|
|
||||||
listen(listener: RouterListener): Function
|
|
||||||
listenBeforeLeavingRoute(route: PlainRoute, hook: RouteHook): void
|
|
||||||
match(location: H.Location, callback: (error: any, nextState: RouterState, nextLocation: H.Location) => void): void
|
|
||||||
isActive(pathname: H.Pathname, query?: H.Query, indexOnly?: boolean): boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
function useRoutes<T>(createHistory: HistoryModule.CreateHistory<T>): HistoryModule.CreateHistory<T & HistoryRoutes>
|
|
||||||
|
|
||||||
|
|
||||||
function createRoutes(routes: RouteConfig): PlainRoute[]
|
|
||||||
|
|
||||||
|
|
||||||
interface MatchArgs {
|
|
||||||
routes?: RouteConfig
|
|
||||||
history?: H.History
|
|
||||||
location?: H.Location
|
|
||||||
parseQueryString?: ParseQueryString
|
|
||||||
stringifyQuery?: StringifyQuery
|
|
||||||
}
|
|
||||||
interface MatchState extends RouterState {
|
|
||||||
history: History
|
|
||||||
}
|
|
||||||
function match(args: MatchArgs, cb: (error: any, nextLocation: H.Location, nextState: MatchState) => void): void
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/Router" {
|
|
||||||
|
|
||||||
export default ReactRouter.Router
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/Link" {
|
|
||||||
|
|
||||||
export default ReactRouter.Link
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/IndexLink" {
|
|
||||||
|
|
||||||
export default ReactRouter.IndexLink
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/IndexRedirect" {
|
|
||||||
|
|
||||||
export default ReactRouter.IndexRedirect
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/IndexRoute" {
|
|
||||||
|
|
||||||
export default ReactRouter.IndexRoute
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/Redirect" {
|
|
||||||
|
|
||||||
export default ReactRouter.Redirect
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/Route" {
|
|
||||||
|
|
||||||
export default ReactRouter.Route
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/History" {
|
|
||||||
|
|
||||||
export default ReactRouter.History
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/Lifecycle" {
|
|
||||||
|
|
||||||
export default ReactRouter.Lifecycle
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/RouteContext" {
|
|
||||||
|
|
||||||
export default ReactRouter.RouteContext
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/useRoutes" {
|
|
||||||
|
|
||||||
export default ReactRouter.useRoutes
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router/lib/PatternUtils" {
|
|
||||||
|
|
||||||
export function formatPattern(pattern: string, params: {}): string;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router/lib/RouteUtils" {
|
|
||||||
|
|
||||||
type E = __React.ReactElement<any>
|
|
||||||
|
|
||||||
export function isReactChildren(object: E | E[]): boolean
|
|
||||||
|
|
||||||
export function createRouteFromReactElement(element: E): ReactRouter.PlainRoute
|
|
||||||
|
|
||||||
export function createRoutesFromReactChildren(children: E | E[], parentRoute: ReactRouter.PlainRoute): ReactRouter.PlainRoute[]
|
|
||||||
|
|
||||||
export import createRoutes = ReactRouter.createRoutes
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/RouterContext" {
|
|
||||||
|
|
||||||
export default ReactRouter.RouterContext
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router/lib/PropTypes" {
|
|
||||||
|
|
||||||
import React = __React
|
|
||||||
|
|
||||||
export function falsy(props: any, propName: string, componentName: string): Error;
|
|
||||||
|
|
||||||
export const history: React.Requireable<any>
|
|
||||||
|
|
||||||
export const location: React.Requireable<any>
|
|
||||||
|
|
||||||
export const component: React.Requireable<any>
|
|
||||||
|
|
||||||
export const components: React.Requireable<any>
|
|
||||||
|
|
||||||
export const route: React.Requireable<any>
|
|
||||||
|
|
||||||
export const routes: React.Requireable<any>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
falsy,
|
|
||||||
history,
|
|
||||||
location,
|
|
||||||
component,
|
|
||||||
components,
|
|
||||||
route
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router/lib/browserHistory" {
|
|
||||||
export default ReactRouter.browserHistory;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router/lib/hashHistory" {
|
|
||||||
export default ReactRouter.hashHistory;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-router/lib/match" {
|
|
||||||
|
|
||||||
export default ReactRouter.match
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare module "react-router" {
|
|
||||||
|
|
||||||
import Router from "react-router/lib/Router"
|
|
||||||
|
|
||||||
import Link from "react-router/lib/Link"
|
|
||||||
|
|
||||||
import IndexLink from "react-router/lib/IndexLink"
|
|
||||||
|
|
||||||
import IndexRedirect from "react-router/lib/IndexRedirect"
|
|
||||||
|
|
||||||
import IndexRoute from "react-router/lib/IndexRoute"
|
|
||||||
|
|
||||||
import Redirect from "react-router/lib/Redirect"
|
|
||||||
|
|
||||||
import Route from "react-router/lib/Route"
|
|
||||||
|
|
||||||
import History from "react-router/lib/History"
|
|
||||||
|
|
||||||
import Lifecycle from "react-router/lib/Lifecycle"
|
|
||||||
|
|
||||||
import RouteContext from "react-router/lib/RouteContext"
|
|
||||||
|
|
||||||
import browserHistory from "react-router/lib/browserHistory"
|
|
||||||
|
|
||||||
import hashHistory from "react-router/lib/hashHistory"
|
|
||||||
|
|
||||||
import useRoutes from "react-router/lib/useRoutes"
|
|
||||||
|
|
||||||
import { createRoutes } from "react-router/lib/RouteUtils"
|
|
||||||
|
|
||||||
import { formatPattern } from "react-router/lib/PatternUtils"
|
|
||||||
|
|
||||||
import RouterContext from "react-router/lib/RouterContext"
|
|
||||||
|
|
||||||
import PropTypes from "react-router/lib/PropTypes"
|
|
||||||
|
|
||||||
import match from "react-router/lib/match"
|
|
||||||
|
|
||||||
// PlainRoute is defined in the API documented at:
|
|
||||||
// https://github.com/rackt/react-router/blob/master/docs/API.md
|
|
||||||
// but not included in any of the .../lib modules above.
|
|
||||||
export type PlainRoute = ReactRouter.PlainRoute
|
|
||||||
|
|
||||||
// The following definitions are also very useful to export
|
|
||||||
// because by using these types lots of potential type errors
|
|
||||||
// can be exposed:
|
|
||||||
export type EnterHook = ReactRouter.EnterHook
|
|
||||||
export type LeaveHook = ReactRouter.LeaveHook
|
|
||||||
export type ParseQueryString = ReactRouter.ParseQueryString
|
|
||||||
export type RedirectFunction = ReactRouter.RedirectFunction
|
|
||||||
export type RouteComponentProps<P,R> = ReactRouter.RouteComponentProps<P,R>;
|
|
||||||
export type RouteHook = ReactRouter.RouteHook
|
|
||||||
export type StringifyQuery = ReactRouter.StringifyQuery
|
|
||||||
export type RouterListener = ReactRouter.RouterListener
|
|
||||||
export type RouterState = ReactRouter.RouterState
|
|
||||||
export type HistoryBase = ReactRouter.HistoryBase
|
|
||||||
|
|
||||||
export {
|
|
||||||
Router,
|
|
||||||
Link,
|
|
||||||
IndexLink,
|
|
||||||
IndexRedirect,
|
|
||||||
IndexRoute,
|
|
||||||
Redirect,
|
|
||||||
Route,
|
|
||||||
History,
|
|
||||||
browserHistory,
|
|
||||||
hashHistory,
|
|
||||||
Lifecycle,
|
|
||||||
RouteContext,
|
|
||||||
useRoutes,
|
|
||||||
createRoutes,
|
|
||||||
formatPattern,
|
|
||||||
RouterContext,
|
|
||||||
PropTypes,
|
|
||||||
match
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Router
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
// Type definitions for React v0.14 (react-dom)
|
|
||||||
// Project: http://facebook.github.io/react/
|
|
||||||
// Definitions by: Asana <https://asana.com>, AssureSign <http://www.assuresign.com>, Microsoft <https://microsoft.com>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
/// <reference path="react.d.ts" />
|
|
||||||
|
|
||||||
declare namespace __React {
|
|
||||||
namespace __DOM {
|
|
||||||
function findDOMNode<E extends Element>(instance: ReactInstance): E;
|
|
||||||
function findDOMNode(instance: ReactInstance): Element;
|
|
||||||
|
|
||||||
function render<P>(
|
|
||||||
element: DOMElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (element: Element) => any): Element;
|
|
||||||
function render<P, S>(
|
|
||||||
element: ClassicElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (component: ClassicComponent<P, S>) => any): ClassicComponent<P, S>;
|
|
||||||
function render<P, S>(
|
|
||||||
element: ReactElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (component: Component<P, S>) => any): Component<P, S>;
|
|
||||||
|
|
||||||
function unmountComponentAtNode(container: Element): boolean;
|
|
||||||
|
|
||||||
var version: string;
|
|
||||||
|
|
||||||
function unstable_batchedUpdates<A, B>(callback: (a: A, b: B) => any, a: A, b: B): void;
|
|
||||||
function unstable_batchedUpdates<A>(callback: (a: A) => any, a: A): void;
|
|
||||||
function unstable_batchedUpdates(callback: () => any): void;
|
|
||||||
|
|
||||||
function unstable_renderSubtreeIntoContainer<P>(
|
|
||||||
parentComponent: Component<any, any>,
|
|
||||||
nextElement: DOMElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (element: Element) => any): Element;
|
|
||||||
function unstable_renderSubtreeIntoContainer<P, S>(
|
|
||||||
parentComponent: Component<any, any>,
|
|
||||||
nextElement: ClassicElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (component: ClassicComponent<P, S>) => any): ClassicComponent<P, S>;
|
|
||||||
function unstable_renderSubtreeIntoContainer<P, S>(
|
|
||||||
parentComponent: Component<any, any>,
|
|
||||||
nextElement: ReactElement<P>,
|
|
||||||
container: Element,
|
|
||||||
callback?: (component: Component<P, S>) => any): Component<P, S>;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace __DOMServer {
|
|
||||||
function renderToString(element: ReactElement<any>): string;
|
|
||||||
function renderToStaticMarkup(element: ReactElement<any>): string;
|
|
||||||
var version: string;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-dom" {
|
|
||||||
import DOM = __React.__DOM;
|
|
||||||
export = DOM;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "react-dom/server" {
|
|
||||||
import DOMServer = __React.__DOMServer;
|
|
||||||
export = DOMServer;
|
|
||||||
}
|
|
||||||
2274
samples/react/MusicStore/typings/react/react.d.ts
vendored
2274
samples/react/MusicStore/typings/react/react.d.ts
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,18 +0,0 @@
|
|||||||
// Type definitions for redux-thunk
|
|
||||||
// Project: https://github.com/gaearon/redux-thunk
|
|
||||||
// Definitions by: Qubo <https://github.com/tkqubo>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
/// <reference path="../redux/redux.d.ts" />
|
|
||||||
|
|
||||||
declare module ReduxThunk {
|
|
||||||
export interface Thunk extends Redux.Middleware {}
|
|
||||||
export interface ThunkInterface {
|
|
||||||
<T>(dispatch: Redux.Dispatch, getState?: () => T): any;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "redux-thunk" {
|
|
||||||
var thunk: ReduxThunk.Thunk;
|
|
||||||
export = thunk;
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
// Type definitions for Redux v1.0.0
|
|
||||||
// Project: https://github.com/rackt/redux
|
|
||||||
// Definitions by: William Buchwalter <https://github.com/wbuchwalter/>, Vincent Prouillet <https://github.com/Keats/>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
declare module Redux {
|
|
||||||
|
|
||||||
interface ActionCreator extends Function {
|
|
||||||
(...args: any[]): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Reducer extends Function {
|
|
||||||
(state: any, action: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Dispatch extends Function {
|
|
||||||
(action: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface StoreMethods {
|
|
||||||
dispatch: Dispatch;
|
|
||||||
getState(): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
interface MiddlewareArg {
|
|
||||||
dispatch: Dispatch;
|
|
||||||
getState: Function;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Middleware extends Function {
|
|
||||||
(obj: MiddlewareArg): Function;
|
|
||||||
}
|
|
||||||
|
|
||||||
class Store {
|
|
||||||
getReducer(): Reducer;
|
|
||||||
replaceReducer(nextReducer: Reducer): void;
|
|
||||||
dispatch(action: any): any;
|
|
||||||
getState(): any;
|
|
||||||
subscribe(listener: Function): Function;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createStore(reducer: Reducer, initialState?: any): Store;
|
|
||||||
function bindActionCreators<T>(actionCreators: T, dispatch: Dispatch): T;
|
|
||||||
function combineReducers(reducers: any): Reducer;
|
|
||||||
function applyMiddleware(...middlewares: Middleware[]): Function;
|
|
||||||
function compose<T extends Function>(...functions: Function[]): T;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "redux" {
|
|
||||||
export = Redux;
|
|
||||||
}
|
|
||||||
12
samples/react/MusicStore/typings/tsd.d.ts
vendored
12
samples/react/MusicStore/typings/tsd.d.ts
vendored
@@ -1,12 +0,0 @@
|
|||||||
/// <reference path="react-redux/react-redux.d.ts" />
|
|
||||||
/// <reference path="react/react-dom.d.ts" />
|
|
||||||
/// <reference path="react/react.d.ts" />
|
|
||||||
/// <reference path="redux/redux.d.ts" />
|
|
||||||
/// <reference path="webpack/webpack-env.d.ts" />
|
|
||||||
/// <reference path="react-bootstrap/react-bootstrap.d.ts" />
|
|
||||||
/// <reference path="react-router/history.d.ts" />
|
|
||||||
/// <reference path="react-router/react-router.d.ts" />
|
|
||||||
/// <reference path="react-router-bootstrap/react-router-bootstrap.d.ts" />
|
|
||||||
/// <reference path="react-router-redux/react-router-redux.d.ts" />
|
|
||||||
/// <reference path="redux-thunk/redux-thunk.d.ts" />
|
|
||||||
/// <reference path="whatwg-fetch/whatwg-fetch.d.ts" />
|
|
||||||
@@ -1,232 +0,0 @@
|
|||||||
// Type definitions for webpack 1.12.2 (module API)
|
|
||||||
// Project: https://github.com/webpack/webpack
|
|
||||||
// Definitions by: use-strict <https://github.com/use-strict>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Webpack module API - variables and global functions available inside modules
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare namespace __WebpackModuleApi {
|
|
||||||
interface RequireContext {
|
|
||||||
keys(): string[];
|
|
||||||
<T>(id: string): T;
|
|
||||||
resolve(id: string): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface RequireFunction {
|
|
||||||
/**
|
|
||||||
* Returns the exports from a dependency. The call is sync. No request to the server is fired. The compiler ensures that the dependency is available.
|
|
||||||
*/
|
|
||||||
<T>(path: string): T;
|
|
||||||
/**
|
|
||||||
* Behaves similar to require.ensure, but the callback is called with the exports of each dependency in the paths array. There is no option to provide a chunk name.
|
|
||||||
*/
|
|
||||||
(paths: string[], callback: (...modules: any[]) => void): void;
|
|
||||||
/**
|
|
||||||
* Download additional dependencies on demand. The paths array lists modules that should be available. When they are, callback is called. If the callback is a function expression, dependencies in that source part are extracted and also loaded on demand. A single request is fired to the server, except if all modules are already available.
|
|
||||||
*
|
|
||||||
* This creates a chunk. The chunk can be named. If a chunk with this name already exists, the dependencies are merged into that chunk and that chunk is used.
|
|
||||||
*/
|
|
||||||
ensure: (paths: string[], callback: (require: <T>(path: string) => T) => void, chunkName?: string) => void;
|
|
||||||
context: (path: string, deep?: boolean, filter?: RegExp) => RequireContext;
|
|
||||||
/**
|
|
||||||
* Returns the module id of a dependency. The call is sync. No request to the server is fired. The compiler ensures that the dependency is available.
|
|
||||||
*
|
|
||||||
* The module id is a number in webpack (in contrast to node.js where it is a string, the filename).
|
|
||||||
*/
|
|
||||||
resolve(path: string): number;
|
|
||||||
/**
|
|
||||||
* Like require.resolve, but doesn’t include the module into the bundle. It’s a weak dependency.
|
|
||||||
*/
|
|
||||||
resolveWeak(path: string): number;
|
|
||||||
/**
|
|
||||||
* Ensures that the dependency is available, but don’t execute it. This can be use for optimizing the position of a module in the chunks.
|
|
||||||
*/
|
|
||||||
include(path: string): void;
|
|
||||||
/**
|
|
||||||
* Multiple requires to the same module result in only one module execution and only one export. Therefore a cache in the runtime exists. Removing values from this cache cause new module execution and a new export. This is only needed in rare cases (for compatibility!).
|
|
||||||
*/
|
|
||||||
cache: {
|
|
||||||
[id: string]: any;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Module {
|
|
||||||
exports: any;
|
|
||||||
require(id: string): any;
|
|
||||||
id: string;
|
|
||||||
filename: string;
|
|
||||||
loaded: boolean;
|
|
||||||
parent: any;
|
|
||||||
children: any[];
|
|
||||||
hot: Hot;
|
|
||||||
}
|
|
||||||
type ModuleId = string|number;
|
|
||||||
|
|
||||||
interface Hot {
|
|
||||||
/**
|
|
||||||
* Accept code updates for the specified dependencies. The callback is called when dependencies were replaced.
|
|
||||||
* @param dependencies
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
accept(dependencies: string[], callback: (updatedDependencies: ModuleId[]) => void): void;
|
|
||||||
/**
|
|
||||||
* Accept code updates for the specified dependencies. The callback is called when dependencies were replaced.
|
|
||||||
* @param dependency
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
accept(dependency: string, callback: () => void): void;
|
|
||||||
/**
|
|
||||||
* Accept code updates for this module without notification of parents.
|
|
||||||
* This should only be used if the module doesn’t export anything.
|
|
||||||
* The errHandler can be used to handle errors that occur while loading the updated module.
|
|
||||||
* @param errHandler
|
|
||||||
*/
|
|
||||||
accept(errHandler?: (err: Error) => void): void;
|
|
||||||
/**
|
|
||||||
* Do not accept updates for the specified dependencies. If any dependencies is updated, the code update fails with code "decline".
|
|
||||||
*/
|
|
||||||
decline(dependencies: string[]): void;
|
|
||||||
/**
|
|
||||||
* Do not accept updates for the specified dependencies. If any dependencies is updated, the code update fails with code "decline".
|
|
||||||
*/
|
|
||||||
decline(dependency: string): void;
|
|
||||||
/**
|
|
||||||
* Flag the current module as not update-able. If updated the update code would fail with code "decline".
|
|
||||||
*/
|
|
||||||
decline(): void;
|
|
||||||
/**
|
|
||||||
* Add a one time handler, which is executed when the current module code is replaced.
|
|
||||||
* Here you should destroy/remove any persistent resource you have claimed/created.
|
|
||||||
* If you want to transfer state to the new module, add it to data object.
|
|
||||||
* The data will be available at module.hot.data on the new module.
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
dispose<T>(callback: (data: T) => void): void;
|
|
||||||
/**
|
|
||||||
* Add a one time handler, which is executed when the current module code is replaced.
|
|
||||||
* Here you should destroy/remove any persistent resource you have claimed/created.
|
|
||||||
* If you want to transfer state to the new module, add it to data object.
|
|
||||||
* The data will be available at module.hot.data on the new module.
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
addDisposeHandler<T>(callback: (data: T) => void): void;
|
|
||||||
/**
|
|
||||||
* Remove a handler.
|
|
||||||
* This can useful to add a temporary dispose handler. You could i. e. replace code while in the middle of a multi-step async function.
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
removeDisposeHandler<T>(callback: (data: T) => void): void;
|
|
||||||
/**
|
|
||||||
* Throws an exceptions if status() is not idle.
|
|
||||||
* Check all currently loaded modules for updates and apply updates if found.
|
|
||||||
* If no update was found, the callback is called with null.
|
|
||||||
* If autoApply is truthy the callback will be called with all modules that were disposed.
|
|
||||||
* apply() is automatically called with autoApply as options parameter.
|
|
||||||
* If autoApply is not set the callback will be called with all modules that will be disposed on apply().
|
|
||||||
* @param autoApply
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
check(autoApply: boolean, callback: (err: Error, outdatedModules: ModuleId[]) => void): void;
|
|
||||||
/**
|
|
||||||
* Throws an exceptions if status() is not idle.
|
|
||||||
* Check all currently loaded modules for updates and apply updates if found.
|
|
||||||
* If no update was found, the callback is called with null.
|
|
||||||
* The callback will be called with all modules that will be disposed on apply().
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
check(callback: (err: Error, outdatedModules: ModuleId[]) => void): void;
|
|
||||||
/**
|
|
||||||
* If status() != "ready" it throws an error.
|
|
||||||
* Continue the update process.
|
|
||||||
* @param options
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
apply(options: AcceptOptions, callback: (err: Error, outdatedModules: ModuleId[]) => void): void;
|
|
||||||
/**
|
|
||||||
* If status() != "ready" it throws an error.
|
|
||||||
* Continue the update process.
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
apply(callback: (err: Error, outdatedModules: ModuleId[]) => void): void;
|
|
||||||
/**
|
|
||||||
* Return one of idle, check, watch, watch-delay, prepare, ready, dispose, apply, abort or fail.
|
|
||||||
*/
|
|
||||||
status(): string;
|
|
||||||
/** Register a callback on status change. */
|
|
||||||
status(callback: (status: string) => void): void;
|
|
||||||
/** Register a callback on status change. */
|
|
||||||
addStatusHandler(callback: (status: string) => void): void;
|
|
||||||
/**
|
|
||||||
* Remove a registered status change handler.
|
|
||||||
* @param callback
|
|
||||||
*/
|
|
||||||
removeStatusHandler(callback: (status: string) => void): void;
|
|
||||||
|
|
||||||
active: boolean;
|
|
||||||
data: {};
|
|
||||||
}
|
|
||||||
|
|
||||||
interface AcceptOptions {
|
|
||||||
/**
|
|
||||||
* If true the update process continues even if some modules are not accepted (and would bubble to the entry point).
|
|
||||||
*/
|
|
||||||
ignoreUnaccepted?: boolean;
|
|
||||||
/**
|
|
||||||
* Indicates that apply() is automatically called by check function
|
|
||||||
*/
|
|
||||||
autoApply?: boolean;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var require: __WebpackModuleApi.RequireFunction;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The resource query of the current module.
|
|
||||||
*
|
|
||||||
* e.g. __resourceQuery === "?test" // Inside "file.js?test"
|
|
||||||
*/
|
|
||||||
declare var __resourceQuery: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Equals the config options output.publicPath.
|
|
||||||
*/
|
|
||||||
declare var __webpack_public_path__: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The raw require function. This expression isn’t parsed by the Parser for dependencies.
|
|
||||||
*/
|
|
||||||
declare var __webpack_require__: any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The internal chunk loading function
|
|
||||||
*
|
|
||||||
* @param chunkId The id for the chunk to load.
|
|
||||||
* @param callback A callback function called once the chunk is loaded.
|
|
||||||
*/
|
|
||||||
declare var __webpack_chunk_load__: (chunkId: any, callback: (require: (id: string) => any) => void) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Access to the internal object of all modules.
|
|
||||||
*/
|
|
||||||
declare var __webpack_modules__: any[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Access to the hash of the compilation.
|
|
||||||
*
|
|
||||||
* Only available with the HotModuleReplacementPlugin or the ExtendedAPIPlugin
|
|
||||||
*/
|
|
||||||
declare var __webpack_hash__: any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates a require function that is not parsed by webpack. Can be used to do cool stuff with a global require function if available.
|
|
||||||
*/
|
|
||||||
declare var __non_webpack_require__: any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Equals the config option debug
|
|
||||||
*/
|
|
||||||
declare var DEBUG: boolean;
|
|
||||||
|
|
||||||
declare var module: __WebpackModuleApi.Module;
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
// Type definitions for fetch API
|
|
||||||
// Project: https://github.com/github/fetch
|
|
||||||
// Definitions by: Ryan Graham <https://github.com/ryan-codingintrigue>
|
|
||||||
// Definitions: https://github.com/borisyankov/DefinitelyTyped
|
|
||||||
|
|
||||||
declare class Request extends Body {
|
|
||||||
constructor(input: string|Request, init?:RequestInit);
|
|
||||||
method: string;
|
|
||||||
url: string;
|
|
||||||
headers: Headers;
|
|
||||||
context: string|RequestContext;
|
|
||||||
referrer: string;
|
|
||||||
mode: string|RequestMode;
|
|
||||||
credentials: string|RequestCredentials;
|
|
||||||
cache: string|RequestCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface RequestInit {
|
|
||||||
method?: string;
|
|
||||||
headers?: HeaderInit|{ [index: string]: string };
|
|
||||||
body?: BodyInit;
|
|
||||||
mode?: string|RequestMode;
|
|
||||||
credentials?: string|RequestCredentials;
|
|
||||||
cache?: string|RequestCache;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare enum RequestContext {
|
|
||||||
"audio", "beacon", "cspreport", "download", "embed", "eventsource", "favicon", "fetch",
|
|
||||||
"font", "form", "frame", "hyperlink", "iframe", "image", "imageset", "import",
|
|
||||||
"internal", "location", "manifest", "object", "ping", "plugin", "prefetch", "script",
|
|
||||||
"serviceworker", "sharedworker", "subresource", "style", "track", "video", "worker",
|
|
||||||
"xmlhttprequest", "xslt"
|
|
||||||
}
|
|
||||||
declare enum RequestMode { "same-origin", "no-cors", "cors" }
|
|
||||||
declare enum RequestCredentials { "omit", "same-origin", "include" }
|
|
||||||
declare enum RequestCache { "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached" }
|
|
||||||
|
|
||||||
declare class Headers {
|
|
||||||
append(name: string, value: string): void;
|
|
||||||
delete(name: string):void;
|
|
||||||
get(name: string): string;
|
|
||||||
getAll(name: string): Array<string>;
|
|
||||||
has(name: string): boolean;
|
|
||||||
set(name: string, value: string): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare class Body {
|
|
||||||
bodyUsed: boolean;
|
|
||||||
arrayBuffer(): Promise<ArrayBuffer>;
|
|
||||||
blob(): Promise<Blob>;
|
|
||||||
formData(): Promise<FormData>;
|
|
||||||
json(): Promise<any>;
|
|
||||||
json<T>(): Promise<T>;
|
|
||||||
text(): Promise<string>;
|
|
||||||
}
|
|
||||||
declare class Response extends Body {
|
|
||||||
constructor(body?: BodyInit, init?: ResponseInit);
|
|
||||||
error(): Response;
|
|
||||||
redirect(url: string, status: number): Response;
|
|
||||||
type: string|ResponseType;
|
|
||||||
url: string;
|
|
||||||
status: number;
|
|
||||||
ok: boolean;
|
|
||||||
statusText: string;
|
|
||||||
headers: Headers;
|
|
||||||
clone(): Response;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare enum ResponseType { "basic", "cors", "default", "error", "opaque" }
|
|
||||||
|
|
||||||
interface ResponseInit {
|
|
||||||
status: number;
|
|
||||||
statusText?: string;
|
|
||||||
headers?: HeaderInit;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare type HeaderInit = Headers|Array<string>;
|
|
||||||
declare type BodyInit = Blob|FormData|string;
|
|
||||||
declare type RequestInfo = Request|string;
|
|
||||||
|
|
||||||
interface Window {
|
|
||||||
fetch(url: string|Request, init?: RequestInit): Promise<Response>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var fetch: typeof window.fetch;
|
|
||||||
@@ -10,7 +10,7 @@ module.exports = {
|
|||||||
module: {
|
module: {
|
||||||
loaders: [
|
loaders: [
|
||||||
{ test: /\.ts(x?)$/, include: /ReactApp/, exclude: /node_modules/, loader: 'babel-loader' },
|
{ test: /\.ts(x?)$/, include: /ReactApp/, exclude: /node_modules/, loader: 'babel-loader' },
|
||||||
{ test: /\.ts(x?)$/, include: /ReactApp/, exclude: /node_modules/, loader: 'ts-loader' },
|
{ test: /\.ts(x?)$/, include: /ReactApp/, exclude: /node_modules/, loader: 'ts-loader?silent' },
|
||||||
{ test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') },
|
{ test: /\.css$/, loader: ExtractTextPlugin.extract('style-loader', 'css-loader') },
|
||||||
{ test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' }
|
{ test: /\.(png|woff|woff2|eot|ttf|svg)$/, loader: 'url-loader?limit=100000' }
|
||||||
]
|
]
|
||||||
|
|||||||
1
samples/react/ReactGrid/.gitignore
vendored
1
samples/react/ReactGrid/.gitignore
vendored
@@ -1,4 +1,3 @@
|
|||||||
/node_modules/
|
/node_modules/
|
||||||
project.lock.json
|
|
||||||
/wwwroot/dist/
|
/wwwroot/dist/
|
||||||
/Properties/launchSettings.json
|
/Properties/launchSettings.json
|
||||||
|
|||||||
25
samples/react/ReactGrid/ReactGrid.csproj
Normal file
25
samples/react/ReactGrid/ReactGrid.csproj
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<Import Project="..\..\..\build\dependencies.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp1.1</TargetFramework>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\..\src\Microsoft.AspNetCore.ReactServices\Microsoft.AspNetCore.ReactServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="$(AspNetCoreVersion)" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>abf90a5b-f4e0-438c-a6e4-9549fb43690b</ProjectGuid>
|
|
||||||
<RootNamespace>ReactGrid</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\..\..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
<DevelopmentServerPort>2311</DevelopmentServerPort>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"buildOptions": {
|
|
||||||
"emitEntryPoint": true,
|
|
||||||
"preserveCompilationContext": true
|
|
||||||
},
|
|
||||||
"runtimeOptions": {
|
|
||||||
"gcServer": true
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"type": "platform"
|
|
||||||
},
|
|
||||||
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Configuration.Json": "1.0.0",
|
|
||||||
"Microsoft.Extensions.Logging.Console": "1.0.0",
|
|
||||||
"Microsoft.NETCore.Platforms": "1.0.1",
|
|
||||||
"Microsoft.Extensions.Logging.Debug": "1.0.0",
|
|
||||||
"Microsoft.AspNetCore.ReactServices": "1.0.0-*"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"netcoreapp1.0": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"publishOptions": {
|
|
||||||
"exclude": [
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"**.xproj",
|
|
||||||
"**.user",
|
|
||||||
"**.vspscc"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"prepublish": [ "npm install" ],
|
|
||||||
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<Import Project="..\..\build\common.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Description>Helpers for building Angular 2 applications on ASP.NET Core.</Description>
|
||||||
|
<TargetFrameworks>net451;netstandard1.6</TargetFrameworks>
|
||||||
|
<VersionPrefix>1.1.0</VersionPrefix>
|
||||||
|
<VersionSuffix>beta2</VersionSuffix>
|
||||||
|
<PackageTags>aspnetcore;aspnetcoremvc;nodeservices</PackageTags>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Microsoft.AspNetCore.SpaServices\Microsoft.AspNetCore.SpaServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" Version="$(AspNetCoreVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">14.0</VisualStudioVersion>
|
|
||||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid>421807e6-b62c-417b-b901-46c5dedaa8f1</ProjectGuid>
|
|
||||||
<RootNamespace>Microsoft.AspNetCore.AngularServices</RootNamespace>
|
|
||||||
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'=='' ">..\artifacts\obj\$(MSBuildProjectName)</BaseIntermediateOutputPath>
|
|
||||||
<OutputPath Condition="'$(OutputPath)'=='' ">.\bin\</OutputPath>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup>
|
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" Condition="'$(VSToolsPath)' != ''" />
|
|
||||||
</Project>
|
|
||||||
@@ -9,14 +9,31 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace Microsoft.AspNetCore.AngularServices
|
namespace Microsoft.AspNetCore.AngularServices
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Helpers for prepopulating Angular 2's 'http' service with data.
|
||||||
|
/// </summary>
|
||||||
public static class PrimeCacheHelper
|
public static class PrimeCacheHelper
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Performs an HTTP GET request to the specified URL and adds the resulting JSON data
|
||||||
|
/// to the Angular 'http' service cache.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="html">The <see cref="IHtmlHelper"/>.</param>
|
||||||
|
/// <param name="url">The URL to be requested.</param>
|
||||||
|
/// <returns>A task representing the HTML content to be rendered into the document.</returns>
|
||||||
[Obsolete("Use PrimeCacheAsync instead")]
|
[Obsolete("Use PrimeCacheAsync instead")]
|
||||||
public static Task<IHtmlContent> PrimeCache(this IHtmlHelper html, string url)
|
public static Task<IHtmlContent> PrimeCache(this IHtmlHelper html, string url)
|
||||||
{
|
{
|
||||||
return PrimeCacheAsync(html, url);
|
return PrimeCacheAsync(html, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs an HTTP GET request to the specified URL and adds the resulting JSON data
|
||||||
|
/// to the Angular 'http' service cache.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="html">The <see cref="IHtmlHelper"/>.</param>
|
||||||
|
/// <param name="url">The URL to be requested.</param>
|
||||||
|
/// <returns>A task representing the HTML content to be rendered into the document.</returns>
|
||||||
public static async Task<IHtmlContent> PrimeCacheAsync(this IHtmlHelper html, string url)
|
public static async Task<IHtmlContent> PrimeCacheAsync(this IHtmlHelper html, string url)
|
||||||
{
|
{
|
||||||
// TODO: Consider deduplicating the PrimeCacheAsync calls (that is, if there are multiple requests to precache
|
// TODO: Consider deduplicating the PrimeCacheAsync calls (that is, if there are multiple requests to precache
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
/node_modules/
|
|
||||||
/dist/
|
|
||||||
/bundles/
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
/src/
|
|
||||||
/tsconfig.json
|
|
||||||
/build.js
|
|
||||||
/typings/
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
// -------------
|
|
||||||
// No need to invoke this directly. To run a build, execute:
|
|
||||||
// npm run prepublish
|
|
||||||
// -------------
|
|
||||||
|
|
||||||
var Builder = require('systemjs-builder');
|
|
||||||
var builder = new Builder('./');
|
|
||||||
builder.config({
|
|
||||||
defaultJSExtensions: true,
|
|
||||||
paths: {
|
|
||||||
'angular2-aspnet': 'dist/Exports',
|
|
||||||
'angular2-aspnet/*': 'dist/*'
|
|
||||||
},
|
|
||||||
meta: {
|
|
||||||
'angular2/*': { build: false },
|
|
||||||
'rxjs/*': { build: false }
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var entryPoint = 'dist/Exports';
|
|
||||||
var tasks = [
|
|
||||||
builder.bundle(entryPoint, './bundles/angular2-aspnet.js'),
|
|
||||||
builder.bundle(entryPoint, './bundles/angular2-aspnet.min.js', { minify: true })
|
|
||||||
];
|
|
||||||
|
|
||||||
Promise.all(tasks)
|
|
||||||
.then(function() {
|
|
||||||
console.log('Build complete');
|
|
||||||
})
|
|
||||||
.catch(function(err) {
|
|
||||||
console.error('Build error');
|
|
||||||
console.error(err);
|
|
||||||
});
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "angular2-aspnet",
|
|
||||||
"version": "0.0.6",
|
|
||||||
"description": "Helpers for Angular 2 apps built on ASP.NET",
|
|
||||||
"main": "./dist/Exports",
|
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1",
|
|
||||||
"prepublish": "rimraf *.d.ts dist/*.d.ts && tsd install && tsc && node build.js"
|
|
||||||
},
|
|
||||||
"typings": "dist/Exports",
|
|
||||||
"author": "Microsoft",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/aspnet/JavaScriptServices/issues"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/aspnet/JavaScriptServices.git"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"angular2": "^2.0.0-beta.13",
|
|
||||||
"rxjs": "5.0.0-beta.2"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"es6-shim": "^0.35.0",
|
|
||||||
"reflect-metadata": "^0.1.2",
|
|
||||||
"rimraf": "^2.5.4",
|
|
||||||
"systemjs-builder": "^0.14.11",
|
|
||||||
"typescript": "^1.8.10",
|
|
||||||
"zone.js": "^0.6.10"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
If you just want to use this package, then you *don't have to build it*. Instead, just grab the prebuilt package from NPM:
|
|
||||||
|
|
||||||
npm install angular2-aspnet
|
|
||||||
|
|
||||||
The rest of this file is notes for anyone contributing to this package itself.
|
|
||||||
|
|
||||||
## How to build
|
|
||||||
|
|
||||||
Run the following:
|
|
||||||
|
|
||||||
npm install
|
|
||||||
npm run prepublish
|
|
||||||
|
|
||||||
Requirements:
|
|
||||||
|
|
||||||
* Node, NPM
|
|
||||||
* `tsc` installed globally (via `npm install -g typescript`)
|
|
||||||
|
|
||||||
## Project structure
|
|
||||||
|
|
||||||
This package is intended to be consumable both on the server in Node.js, and on the client. Also, it's written in TypeScript,
|
|
||||||
which neither of those environments knows natively, but the TypeScript type definitions need to get delivered with the package
|
|
||||||
so that developers get a good IDE experience when consuming it.
|
|
||||||
|
|
||||||
The build process is therefore:
|
|
||||||
|
|
||||||
1. Compile the TypeScript to produce the development-time (.d.ts) and server-side (.js) artifacts
|
|
||||||
|
|
||||||
`tsc` reads `tsconfig.json` and is instructed to compile all the `.ts` files in `src/`. It produces a corresponding
|
|
||||||
structure of `.js` and `.d.ts` files in `dist/`.
|
|
||||||
|
|
||||||
When a developer consumes the resulting package (via `npm install angular2-aspnet`),
|
|
||||||
|
|
||||||
- No additional copy of `angular2` will be installed, because this package's dependency on it is declared as a
|
|
||||||
`peerDependency`. This means it will work with whatever (compatible) version of `angular2` is already installed.
|
|
||||||
- At runtime inside Node.js, the `main` configuration in `package.json` means the developer can use a standard
|
|
||||||
`import` statement to consume this package (i.e., `import * from 'angular2-aspnet';` in either JS or TS files).
|
|
||||||
- At development time inside an IDE such as Visual Studio Code, the `typings` configuration in `package.json` means
|
|
||||||
the IDE will use the corresponding `.d.ts` file as type metadata for the variable imported that way.
|
|
||||||
|
|
||||||
2. Use the SystemJS builder to produce the client-side artifacts
|
|
||||||
|
|
||||||
`build.js` uses the SystemJS Builder API to combine files in `dist/` into `.js` files ready for use in client-side
|
|
||||||
SystemJS environments, and puts them in `bundles/`. The bundle files contain `System.register` calls so that any
|
|
||||||
other part of your client-side code that tries to import `angular2-aspnet` via SystemJS will get that module at runtime.
|
|
||||||
|
|
||||||
To make it work in an application:
|
|
||||||
- Set up some build step that copies your chosen bundle file from `bundles/` to some location where it will
|
|
||||||
be served to the client
|
|
||||||
- Below your `<script>` tag that loads SystemJS itself, and above the `<script>` tag that makes the first call to
|
|
||||||
`System.import`, have a `<script>` tag that loads the desired `angular2-aspnet.js` bundle file
|
|
||||||
|
|
||||||
For an example, see https://github.com/aspnet/NodeServices/tree/master/samples/angular/MusicStore
|
|
||||||
|
|
||||||
Of course, you can also bundle the `angular2-aspnet.js` file into a larger SystemJS bundle if you want to combine
|
|
||||||
it with the rest of the code in your application.
|
|
||||||
|
|
||||||
Currently, this build system does *not* attempt to send sourcemaps of the original TypeScript to the client. This
|
|
||||||
could be added if a strong need emerges.
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
import { provide, Injectable, Provider } from 'angular2/core';
|
|
||||||
import { Connection, ConnectionBackend, Http, XHRBackend, RequestOptions, Request, RequestMethod, Response, ResponseOptions, ReadyState } from 'angular2/http';
|
|
||||||
|
|
||||||
@Injectable()
|
|
||||||
export class CachePrimedConnectionBackend extends ConnectionBackend {
|
|
||||||
private _preCachedResponses: PreCachedResponses;
|
|
||||||
|
|
||||||
constructor(private _underlyingBackend: ConnectionBackend, private _baseResponseOptions: ResponseOptions) {
|
|
||||||
super();
|
|
||||||
this._preCachedResponses = (<any>window).__preCachedResponses || {};
|
|
||||||
}
|
|
||||||
|
|
||||||
public createConnection(request: Request): Connection {
|
|
||||||
let cacheKey = request.url;
|
|
||||||
if (request.method === RequestMethod.Get && this._preCachedResponses.hasOwnProperty(cacheKey)) {
|
|
||||||
return new CacheHitConnection(request, this._preCachedResponses[cacheKey], this._baseResponseOptions);
|
|
||||||
} else {
|
|
||||||
return this._underlyingBackend.createConnection(request);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class CacheHitConnection implements Connection {
|
|
||||||
readyState: ReadyState;
|
|
||||||
request: Request;
|
|
||||||
response: any;
|
|
||||||
|
|
||||||
constructor (req: Request, cachedResponse: PreCachedResponse, baseResponseOptions: ResponseOptions) {
|
|
||||||
this.request = req;
|
|
||||||
this.readyState = ReadyState.Done;
|
|
||||||
|
|
||||||
// Workaround for difficulty consuming CommonJS default exports in TypeScript. Note that it has to be a dynamic
|
|
||||||
// 'require', and not an 'import' statement, because the module isn't available on the server.
|
|
||||||
let obsCtor: any = require('rxjs/Observable').Observable;
|
|
||||||
this.response = new obsCtor(responseObserver => {
|
|
||||||
let response = new Response(new ResponseOptions({ body: cachedResponse.body, status: cachedResponse.statusCode }));
|
|
||||||
responseObserver.next(response);
|
|
||||||
responseObserver.complete();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var require: any; // Part of the workaround mentioned below. Can remove this after updating Angular.
|
|
||||||
|
|
||||||
interface PreCachedResponses {
|
|
||||||
[url: string]: PreCachedResponse;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface PreCachedResponse {
|
|
||||||
statusCode: number;
|
|
||||||
body: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const CACHE_PRIMED_HTTP_PROVIDERS = [
|
|
||||||
provide(Http, {
|
|
||||||
useFactory: (xhrBackend, requestOptions, responseOptions) => new Http(new CachePrimedConnectionBackend(xhrBackend, responseOptions), requestOptions),
|
|
||||||
deps: [XHRBackend, RequestOptions, ResponseOptions]
|
|
||||||
}),
|
|
||||||
];
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export * from './CachePrimedHttp';
|
|
||||||
export * from './Validation';
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
import { ControlGroup } from 'angular2/common';
|
|
||||||
import { Response } from 'angular2/http';
|
|
||||||
|
|
||||||
export class Validation {
|
|
||||||
|
|
||||||
public static showValidationErrors(response: ValidationErrorResult | Response, controlGroup: ControlGroup): void {
|
|
||||||
if (response instanceof Response) {
|
|
||||||
var httpResponse = <Response>response;
|
|
||||||
response = <ValidationErrorResult>(httpResponse.json());
|
|
||||||
}
|
|
||||||
|
|
||||||
// It's not yet clear whether this is a legitimate and supported use of the ng.ControlGroup API.
|
|
||||||
// Need feedback from the Angular 2 team on whether there's a better way.
|
|
||||||
var errors = <ValidationErrorResult>response;
|
|
||||||
Object.keys(errors || {}).forEach(key => {
|
|
||||||
errors[key].forEach(errorMessage => {
|
|
||||||
// If there's a specific control for this key, then use it. Otherwise associate the error
|
|
||||||
// with the whole control group.
|
|
||||||
var control = controlGroup.controls[key] || controlGroup;
|
|
||||||
|
|
||||||
// This is rough. Need to find out if there's a better way, or if this is even supported.
|
|
||||||
if (!control.errors) {
|
|
||||||
(<any>control)._errors = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
control.errors[errorMessage] = true;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ValidationErrorResult {
|
|
||||||
[propertyName: string]: string[];
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"module": "commonjs",
|
|
||||||
"target": "es5",
|
|
||||||
"sourceMap": false,
|
|
||||||
"declaration": true,
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"noLib": false,
|
|
||||||
"outDir": "./dist"
|
|
||||||
},
|
|
||||||
"exclude": [
|
|
||||||
"node_modules"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "v4",
|
|
||||||
"repo": "borisyankov/DefinitelyTyped",
|
|
||||||
"ref": "master",
|
|
||||||
"path": "typings",
|
|
||||||
"bundle": "typings/tsd.d.ts",
|
|
||||||
"installed": {
|
|
||||||
"es6-shim/es6-shim.d.ts": {
|
|
||||||
"commit": "ec9eb4b28c74665a602c22db3457f0a76fa0fa23"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,668 +0,0 @@
|
|||||||
// Type definitions for es6-shim v0.31.2
|
|
||||||
// Project: https://github.com/paulmillr/es6-shim
|
|
||||||
// Definitions by: Ron Buckton <http://github.com/rbuckton>
|
|
||||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
||||||
|
|
||||||
declare type PropertyKey = string | number | symbol;
|
|
||||||
|
|
||||||
interface IteratorResult<T> {
|
|
||||||
done: boolean;
|
|
||||||
value?: T;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IterableShim<T> {
|
|
||||||
/**
|
|
||||||
* Shim for an ES6 iterable. Not intended for direct use by user code.
|
|
||||||
*/
|
|
||||||
"_es6-shim iterator_"(): Iterator<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Iterator<T> {
|
|
||||||
next(value?: any): IteratorResult<T>;
|
|
||||||
return?(value?: any): IteratorResult<T>;
|
|
||||||
throw?(e?: any): IteratorResult<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IterableIteratorShim<T> extends IterableShim<T>, Iterator<T> {
|
|
||||||
/**
|
|
||||||
* Shim for an ES6 iterable iterator. Not intended for direct use by user code.
|
|
||||||
*/
|
|
||||||
"_es6-shim iterator_"(): IterableIteratorShim<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface StringConstructor {
|
|
||||||
/**
|
|
||||||
* Return the String value whose elements are, in order, the elements in the List elements.
|
|
||||||
* If length is 0, the empty string is returned.
|
|
||||||
*/
|
|
||||||
fromCodePoint(...codePoints: number[]): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* String.raw is intended for use as a tag function of a Tagged Template String. When called
|
|
||||||
* as such the first argument will be a well formed template call site object and the rest
|
|
||||||
* parameter will contain the substitution values.
|
|
||||||
* @param template A well-formed template string call site representation.
|
|
||||||
* @param substitutions A set of substitution values.
|
|
||||||
*/
|
|
||||||
raw(template: TemplateStringsArray, ...substitutions: any[]): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface String {
|
|
||||||
/**
|
|
||||||
* Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point
|
|
||||||
* value of the UTF-16 encoded code point starting at the string element at position pos in
|
|
||||||
* the String resulting from converting this object to a String.
|
|
||||||
* If there is no element at that position, the result is undefined.
|
|
||||||
* If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos.
|
|
||||||
*/
|
|
||||||
codePointAt(pos: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if searchString appears as a substring of the result of converting this
|
|
||||||
* object to a String, at one or more positions that are
|
|
||||||
* greater than or equal to position; otherwise, returns false.
|
|
||||||
* @param searchString search string
|
|
||||||
* @param position If position is undefined, 0 is assumed, so as to search all of the String.
|
|
||||||
*/
|
|
||||||
includes(searchString: string, position?: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the sequence of elements of searchString converted to a String is the
|
|
||||||
* same as the corresponding elements of this object (converted to a String) starting at
|
|
||||||
* endPosition – length(this). Otherwise returns false.
|
|
||||||
*/
|
|
||||||
endsWith(searchString: string, endPosition?: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a String value that is made from count copies appended together. If count is 0,
|
|
||||||
* T is the empty String is returned.
|
|
||||||
* @param count number of copies to append
|
|
||||||
*/
|
|
||||||
repeat(count: number): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the sequence of elements of searchString converted to a String is the
|
|
||||||
* same as the corresponding elements of this object (converted to a String) starting at
|
|
||||||
* position. Otherwise returns false.
|
|
||||||
*/
|
|
||||||
startsWith(searchString: string, position?: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an <a> HTML anchor element and sets the name attribute to the text value
|
|
||||||
* @param name
|
|
||||||
*/
|
|
||||||
anchor(name: string): string;
|
|
||||||
|
|
||||||
/** Returns a <big> HTML element */
|
|
||||||
big(): string;
|
|
||||||
|
|
||||||
/** Returns a <blink> HTML element */
|
|
||||||
blink(): string;
|
|
||||||
|
|
||||||
/** Returns a <b> HTML element */
|
|
||||||
bold(): string;
|
|
||||||
|
|
||||||
/** Returns a <tt> HTML element */
|
|
||||||
fixed(): string
|
|
||||||
|
|
||||||
/** Returns a <font> HTML element and sets the color attribute value */
|
|
||||||
fontcolor(color: string): string
|
|
||||||
|
|
||||||
/** Returns a <font> HTML element and sets the size attribute value */
|
|
||||||
fontsize(size: number): string;
|
|
||||||
|
|
||||||
/** Returns a <font> HTML element and sets the size attribute value */
|
|
||||||
fontsize(size: string): string;
|
|
||||||
|
|
||||||
/** Returns an <i> HTML element */
|
|
||||||
italics(): string;
|
|
||||||
|
|
||||||
/** Returns an <a> HTML element and sets the href attribute value */
|
|
||||||
link(url: string): string;
|
|
||||||
|
|
||||||
/** Returns a <small> HTML element */
|
|
||||||
small(): string;
|
|
||||||
|
|
||||||
/** Returns a <strike> HTML element */
|
|
||||||
strike(): string;
|
|
||||||
|
|
||||||
/** Returns a <sub> HTML element */
|
|
||||||
sub(): string;
|
|
||||||
|
|
||||||
/** Returns a <sup> HTML element */
|
|
||||||
sup(): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shim for an ES6 iterable. Not intended for direct use by user code.
|
|
||||||
*/
|
|
||||||
"_es6-shim iterator_"(): IterableIteratorShim<string>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ArrayConstructor {
|
|
||||||
/**
|
|
||||||
* Creates an array from an array-like object.
|
|
||||||
* @param arrayLike An array-like object to convert to an array.
|
|
||||||
* @param mapfn A mapping function to call on every element of the array.
|
|
||||||
* @param thisArg Value of 'this' used to invoke the mapfn.
|
|
||||||
*/
|
|
||||||
from<T, U>(arrayLike: ArrayLike<T>, mapfn: (v: T, k: number) => U, thisArg?: any): Array<U>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array from an iterable object.
|
|
||||||
* @param iterable An iterable object to convert to an array.
|
|
||||||
* @param mapfn A mapping function to call on every element of the array.
|
|
||||||
* @param thisArg Value of 'this' used to invoke the mapfn.
|
|
||||||
*/
|
|
||||||
from<T, U>(iterable: IterableShim<T>, mapfn: (v: T, k: number) => U, thisArg?: any): Array<U>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array from an array-like object.
|
|
||||||
* @param arrayLike An array-like object to convert to an array.
|
|
||||||
*/
|
|
||||||
from<T>(arrayLike: ArrayLike<T>): Array<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an array from an iterable object.
|
|
||||||
* @param iterable An iterable object to convert to an array.
|
|
||||||
*/
|
|
||||||
from<T>(iterable: IterableShim<T>): Array<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a new array from a set of elements.
|
|
||||||
* @param items A set of elements to include in the new array object.
|
|
||||||
*/
|
|
||||||
of<T>(...items: T[]): Array<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Array<T> {
|
|
||||||
/**
|
|
||||||
* Returns the value of the first element in the array where predicate is true, and undefined
|
|
||||||
* otherwise.
|
|
||||||
* @param predicate find calls predicate once for each element of the array, in ascending
|
|
||||||
* order, until it finds one where predicate returns true. If such an element is found, find
|
|
||||||
* immediately returns that element value. Otherwise, find returns undefined.
|
|
||||||
* @param thisArg If provided, it will be used as the this value for each invocation of
|
|
||||||
* predicate. If it is not provided, undefined is used instead.
|
|
||||||
*/
|
|
||||||
find(predicate: (value: T, index: number, obj: Array<T>) => boolean, thisArg?: any): T;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the index of the first element in the array where predicate is true, and undefined
|
|
||||||
* otherwise.
|
|
||||||
* @param predicate find calls predicate once for each element of the array, in ascending
|
|
||||||
* order, until it finds one where predicate returns true. If such an element is found, find
|
|
||||||
* immediately returns that element value. Otherwise, find returns undefined.
|
|
||||||
* @param thisArg If provided, it will be used as the this value for each invocation of
|
|
||||||
* predicate. If it is not provided, undefined is used instead.
|
|
||||||
*/
|
|
||||||
findIndex(predicate: (value: T) => boolean, thisArg?: any): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the this object after filling the section identified by start and end with value
|
|
||||||
* @param value value to fill array section with
|
|
||||||
* @param start index to start filling the array at. If start is negative, it is treated as
|
|
||||||
* length+start where length is the length of the array.
|
|
||||||
* @param end index to stop filling the array at. If end is negative, it is treated as
|
|
||||||
* length+end.
|
|
||||||
*/
|
|
||||||
fill(value: T, start?: number, end?: number): T[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the this object after copying a section of the array identified by start and end
|
|
||||||
* to the same array starting at position target
|
|
||||||
* @param target If target is negative, it is treated as length+target where length is the
|
|
||||||
* length of the array.
|
|
||||||
* @param start If start is negative, it is treated as length+start. If end is negative, it
|
|
||||||
* is treated as length+end.
|
|
||||||
* @param end If not specified, length of the this object is used as its default value.
|
|
||||||
*/
|
|
||||||
copyWithin(target: number, start: number, end?: number): T[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an array of key, value pairs for every entry in the array
|
|
||||||
*/
|
|
||||||
entries(): IterableIteratorShim<[number, T]>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an list of keys in the array
|
|
||||||
*/
|
|
||||||
keys(): IterableIteratorShim<number>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an list of values in the array
|
|
||||||
*/
|
|
||||||
values(): IterableIteratorShim<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shim for an ES6 iterable. Not intended for direct use by user code.
|
|
||||||
*/
|
|
||||||
"_es6-shim iterator_"(): IterableIteratorShim<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface NumberConstructor {
|
|
||||||
/**
|
|
||||||
* The value of Number.EPSILON is the difference between 1 and the smallest value greater than 1
|
|
||||||
* that is representable as a Number value, which is approximately:
|
|
||||||
* 2.2204460492503130808472633361816 x 10−16.
|
|
||||||
*/
|
|
||||||
EPSILON: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if passed value is finite.
|
|
||||||
* Unlike the global isFininte, Number.isFinite doesn't forcibly convert the parameter to a
|
|
||||||
* number. Only finite values of the type number, result in true.
|
|
||||||
* @param number A numeric value.
|
|
||||||
*/
|
|
||||||
isFinite(number: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the value passed is an integer, false otherwise.
|
|
||||||
* @param number A numeric value.
|
|
||||||
*/
|
|
||||||
isInteger(number: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a Boolean value that indicates whether a value is the reserved value NaN (not a
|
|
||||||
* number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter
|
|
||||||
* to a number. Only values of the type number, that are also NaN, result in true.
|
|
||||||
* @param number A numeric value.
|
|
||||||
*/
|
|
||||||
isNaN(number: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the value passed is a safe integer.
|
|
||||||
* @param number A numeric value.
|
|
||||||
*/
|
|
||||||
isSafeInteger(number: number): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The value of the largest integer n such that n and n + 1 are both exactly representable as
|
|
||||||
* a Number value.
|
|
||||||
* The value of Number.MIN_SAFE_INTEGER is 9007199254740991 2^53 − 1.
|
|
||||||
*/
|
|
||||||
MAX_SAFE_INTEGER: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The value of the smallest integer n such that n and n − 1 are both exactly representable as
|
|
||||||
* a Number value.
|
|
||||||
* The value of Number.MIN_SAFE_INTEGER is −9007199254740991 (−(2^53 − 1)).
|
|
||||||
*/
|
|
||||||
MIN_SAFE_INTEGER: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a string to a floating-point number.
|
|
||||||
* @param string A string that contains a floating-point number.
|
|
||||||
*/
|
|
||||||
parseFloat(string: string): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts A string to an integer.
|
|
||||||
* @param s A string to convert into a number.
|
|
||||||
* @param radix A value between 2 and 36 that specifies the base of the number in numString.
|
|
||||||
* If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
|
|
||||||
* All other strings are considered decimal.
|
|
||||||
*/
|
|
||||||
parseInt(string: string, radix?: number): number;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ObjectConstructor {
|
|
||||||
/**
|
|
||||||
* Copy the values of all of the enumerable own properties from one or more source objects to a
|
|
||||||
* target object. Returns the target object.
|
|
||||||
* @param target The target object to copy to.
|
|
||||||
* @param sources One or more source objects to copy properties from.
|
|
||||||
*/
|
|
||||||
assign(target: any, ...sources: any[]): any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the values are the same value, false otherwise.
|
|
||||||
* @param value1 The first value.
|
|
||||||
* @param value2 The second value.
|
|
||||||
*/
|
|
||||||
is(value1: any, value2: any): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the prototype of a specified object o to object proto or null. Returns the object o.
|
|
||||||
* @param o The object to change its prototype.
|
|
||||||
* @param proto The value of the new prototype or null.
|
|
||||||
* @remarks Requires `__proto__` support.
|
|
||||||
*/
|
|
||||||
setPrototypeOf(o: any, proto: any): any;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface RegExp {
|
|
||||||
/**
|
|
||||||
* Returns a string indicating the flags of the regular expression in question. This field is read-only.
|
|
||||||
* The characters in this string are sequenced and concatenated in the following order:
|
|
||||||
*
|
|
||||||
* - "g" for global
|
|
||||||
* - "i" for ignoreCase
|
|
||||||
* - "m" for multiline
|
|
||||||
* - "u" for unicode
|
|
||||||
* - "y" for sticky
|
|
||||||
*
|
|
||||||
* If no flags are set, the value is the empty string.
|
|
||||||
*/
|
|
||||||
flags: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Math {
|
|
||||||
/**
|
|
||||||
* Returns the number of leading zero bits in the 32-bit binary representation of a number.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
clz32(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the result of 32-bit multiplication of two numbers.
|
|
||||||
* @param x First number
|
|
||||||
* @param y Second number
|
|
||||||
*/
|
|
||||||
imul(x: number, y: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the sign of the x, indicating whether x is positive, negative or zero.
|
|
||||||
* @param x The numeric expression to test
|
|
||||||
*/
|
|
||||||
sign(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the base 10 logarithm of a number.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
log10(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the base 2 logarithm of a number.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
log2(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the natural logarithm of 1 + x.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
log1p(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the result of (e^x - 1) of x (e raised to the power of x, where e is the base of
|
|
||||||
* the natural logarithms).
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
expm1(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the hyperbolic cosine of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
cosh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the hyperbolic sine of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
sinh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the hyperbolic tangent of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
tanh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the inverse hyperbolic cosine of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
acosh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the inverse hyperbolic sine of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
asinh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the inverse hyperbolic tangent of a number.
|
|
||||||
* @param x A numeric expression that contains an angle measured in radians.
|
|
||||||
*/
|
|
||||||
atanh(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the square root of the sum of squares of its arguments.
|
|
||||||
* @param values Values to compute the square root for.
|
|
||||||
* If no arguments are passed, the result is +0.
|
|
||||||
* If there is only one argument, the result is the absolute value.
|
|
||||||
* If any argument is +Infinity or -Infinity, the result is +Infinity.
|
|
||||||
* If any argument is NaN, the result is NaN.
|
|
||||||
* If all arguments are either +0 or −0, the result is +0.
|
|
||||||
*/
|
|
||||||
hypot(...values: number[]): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the integral part of the a numeric expression, x, removing any fractional digits.
|
|
||||||
* If x is already an integer, the result is x.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
trunc(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the nearest single precision float representation of a number.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
fround(x: number): number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an implementation-dependent approximation to the cube root of number.
|
|
||||||
* @param x A numeric expression.
|
|
||||||
*/
|
|
||||||
cbrt(x: number): number;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface PromiseLike<T> {
|
|
||||||
/**
|
|
||||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
|
||||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
|
||||||
* @param onrejected The callback to execute when the Promise is rejected.
|
|
||||||
* @returns A Promise for the completion of which ever callback is executed.
|
|
||||||
*/
|
|
||||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>;
|
|
||||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents the completion of an asynchronous operation
|
|
||||||
*/
|
|
||||||
interface Promise<T> {
|
|
||||||
/**
|
|
||||||
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
|
||||||
* @param onfulfilled The callback to execute when the Promise is resolved.
|
|
||||||
* @param onrejected The callback to execute when the Promise is rejected.
|
|
||||||
* @returns A Promise for the completion of which ever callback is executed.
|
|
||||||
*/
|
|
||||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<TResult>;
|
|
||||||
then<TResult>(onfulfilled?: (value: T) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): Promise<TResult>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attaches a callback for only the rejection of the Promise.
|
|
||||||
* @param onrejected The callback to execute when the Promise is rejected.
|
|
||||||
* @returns A Promise for the completion of the callback.
|
|
||||||
*/
|
|
||||||
catch(onrejected?: (reason: any) => T | PromiseLike<T>): Promise<T>;
|
|
||||||
catch(onrejected?: (reason: any) => void): Promise<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface PromiseConstructor {
|
|
||||||
/**
|
|
||||||
* A reference to the prototype.
|
|
||||||
*/
|
|
||||||
prototype: Promise<any>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new Promise.
|
|
||||||
* @param executor A callback used to initialize the promise. This callback is passed two arguments:
|
|
||||||
* a resolve callback used resolve the promise with a value or the result of another promise,
|
|
||||||
* and a reject callback used to reject the promise with a provided reason or error.
|
|
||||||
*/
|
|
||||||
new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Promise that is resolved with an array of results when all of the provided Promises
|
|
||||||
* resolve, or rejected when any Promise is rejected.
|
|
||||||
* @param values An array of Promises.
|
|
||||||
* @returns A new Promise.
|
|
||||||
*/
|
|
||||||
all<T>(values: IterableShim<T | PromiseLike<T>>): Promise<T[]>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Promise that is resolved or rejected when any of the provided Promises are resolved
|
|
||||||
* or rejected.
|
|
||||||
* @param values An array of Promises.
|
|
||||||
* @returns A new Promise.
|
|
||||||
*/
|
|
||||||
race<T>(values: IterableShim<T | PromiseLike<T>>): Promise<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new rejected promise for the provided reason.
|
|
||||||
* @param reason The reason the promise was rejected.
|
|
||||||
* @returns A new rejected Promise.
|
|
||||||
*/
|
|
||||||
reject(reason: any): Promise<void>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new rejected promise for the provided reason.
|
|
||||||
* @param reason The reason the promise was rejected.
|
|
||||||
* @returns A new rejected Promise.
|
|
||||||
*/
|
|
||||||
reject<T>(reason: any): Promise<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new resolved promise for the provided value.
|
|
||||||
* @param value A promise.
|
|
||||||
* @returns A promise whose internal state matches the provided promise.
|
|
||||||
*/
|
|
||||||
resolve<T>(value: T | PromiseLike<T>): Promise<T>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new resolved promise .
|
|
||||||
* @returns A resolved promise.
|
|
||||||
*/
|
|
||||||
resolve(): Promise<void>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var Promise: PromiseConstructor;
|
|
||||||
|
|
||||||
interface Map<K, V> {
|
|
||||||
clear(): void;
|
|
||||||
delete(key: K): boolean;
|
|
||||||
forEach(callbackfn: (value: V, index: K, map: Map<K, V>) => void, thisArg?: any): void;
|
|
||||||
get(key: K): V;
|
|
||||||
has(key: K): boolean;
|
|
||||||
set(key: K, value?: V): Map<K, V>;
|
|
||||||
size: number;
|
|
||||||
entries(): IterableIteratorShim<[K, V]>;
|
|
||||||
keys(): IterableIteratorShim<K>;
|
|
||||||
values(): IterableIteratorShim<V>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface MapConstructor {
|
|
||||||
new <K, V>(): Map<K, V>;
|
|
||||||
new <K, V>(iterable: IterableShim<[K, V]>): Map<K, V>;
|
|
||||||
prototype: Map<any, any>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var Map: MapConstructor;
|
|
||||||
|
|
||||||
interface Set<T> {
|
|
||||||
add(value: T): Set<T>;
|
|
||||||
clear(): void;
|
|
||||||
delete(value: T): boolean;
|
|
||||||
forEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void;
|
|
||||||
has(value: T): boolean;
|
|
||||||
size: number;
|
|
||||||
entries(): IterableIteratorShim<[T, T]>;
|
|
||||||
keys(): IterableIteratorShim<T>;
|
|
||||||
values(): IterableIteratorShim<T>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface SetConstructor {
|
|
||||||
new <T>(): Set<T>;
|
|
||||||
new <T>(iterable: IterableShim<T>): Set<T>;
|
|
||||||
prototype: Set<any>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var Set: SetConstructor;
|
|
||||||
|
|
||||||
interface WeakMap<K, V> {
|
|
||||||
delete(key: K): boolean;
|
|
||||||
get(key: K): V;
|
|
||||||
has(key: K): boolean;
|
|
||||||
set(key: K, value?: V): WeakMap<K, V>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface WeakMapConstructor {
|
|
||||||
new <K, V>(): WeakMap<K, V>;
|
|
||||||
new <K, V>(iterable: IterableShim<[K, V]>): WeakMap<K, V>;
|
|
||||||
prototype: WeakMap<any, any>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var WeakMap: WeakMapConstructor;
|
|
||||||
|
|
||||||
interface WeakSet<T> {
|
|
||||||
add(value: T): WeakSet<T>;
|
|
||||||
delete(value: T): boolean;
|
|
||||||
has(value: T): boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface WeakSetConstructor {
|
|
||||||
new <T>(): WeakSet<T>;
|
|
||||||
new <T>(iterable: IterableShim<T>): WeakSet<T>;
|
|
||||||
prototype: WeakSet<any>;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var WeakSet: WeakSetConstructor;
|
|
||||||
|
|
||||||
declare namespace Reflect {
|
|
||||||
function apply(target: Function, thisArgument: any, argumentsList: ArrayLike<any>): any;
|
|
||||||
function construct(target: Function, argumentsList: ArrayLike<any>): any;
|
|
||||||
function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean;
|
|
||||||
function deleteProperty(target: any, propertyKey: PropertyKey): boolean;
|
|
||||||
function enumerate(target: any): IterableIteratorShim<any>;
|
|
||||||
function get(target: any, propertyKey: PropertyKey, receiver?: any): any;
|
|
||||||
function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor;
|
|
||||||
function getPrototypeOf(target: any): any;
|
|
||||||
function has(target: any, propertyKey: PropertyKey): boolean;
|
|
||||||
function isExtensible(target: any): boolean;
|
|
||||||
function ownKeys(target: any): Array<PropertyKey>;
|
|
||||||
function preventExtensions(target: any): boolean;
|
|
||||||
function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean;
|
|
||||||
function setPrototypeOf(target: any, proto: any): boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "es6-shim" {
|
|
||||||
var String: StringConstructor;
|
|
||||||
var Array: ArrayConstructor;
|
|
||||||
var Number: NumberConstructor;
|
|
||||||
var Math: Math;
|
|
||||||
var Object: ObjectConstructor;
|
|
||||||
var Map: MapConstructor;
|
|
||||||
var Set: SetConstructor;
|
|
||||||
var WeakMap: WeakMapConstructor;
|
|
||||||
var WeakSet: WeakSetConstructor;
|
|
||||||
var Promise: PromiseConstructor;
|
|
||||||
namespace Reflect {
|
|
||||||
function apply(target: Function, thisArgument: any, argumentsList: ArrayLike<any>): any;
|
|
||||||
function construct(target: Function, argumentsList: ArrayLike<any>): any;
|
|
||||||
function defineProperty(target: any, propertyKey: PropertyKey, attributes: PropertyDescriptor): boolean;
|
|
||||||
function deleteProperty(target: any, propertyKey: PropertyKey): boolean;
|
|
||||||
function enumerate(target: any): Iterator<any>;
|
|
||||||
function get(target: any, propertyKey: PropertyKey, receiver?: any): any;
|
|
||||||
function getOwnPropertyDescriptor(target: any, propertyKey: PropertyKey): PropertyDescriptor;
|
|
||||||
function getPrototypeOf(target: any): any;
|
|
||||||
function has(target: any, propertyKey: PropertyKey): boolean;
|
|
||||||
function isExtensible(target: any): boolean;
|
|
||||||
function ownKeys(target: any): Array<PropertyKey>;
|
|
||||||
function preventExtensions(target: any): boolean;
|
|
||||||
function set(target: any, propertyKey: PropertyKey, value: any, receiver?: any): boolean;
|
|
||||||
function setPrototypeOf(target: any, proto: any): boolean;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
|
|
||||||
/// <reference path="es6-shim/es6-shim.d.ts" />
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "1.0.0-*",
|
|
||||||
"description": "Helpers for building Angular 2 applications on ASP.NET Core.",
|
|
||||||
"compilationOptions": {
|
|
||||||
"keyFile": "../../tools/Key.snk"
|
|
||||||
},
|
|
||||||
"authors": [ "Microsoft" ],
|
|
||||||
"tooling": {
|
|
||||||
"defaultNamespace": "Microsoft.AspNetCore.AngularServices"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.1",
|
|
||||||
"Microsoft.AspNetCore.SpaServices": "1.0.0-*"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net451": {
|
|
||||||
},
|
|
||||||
"netstandard1.6": {
|
|
||||||
"imports": [
|
|
||||||
"dotnet5.6",
|
|
||||||
"dnxcore50",
|
|
||||||
"portable-net45+win8"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
3
src/Microsoft.AspNetCore.NodeServices.Sockets/.gitignore
vendored
Normal file
3
src/Microsoft.AspNetCore.NodeServices.Sockets/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
/bin/
|
||||||
|
/node_modules/
|
||||||
|
yarn.lock
|
||||||
@@ -44,11 +44,81 @@
|
|||||||
/* 0 */
|
/* 0 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
module.exports = __webpack_require__(7);
|
module.exports = __webpack_require__(1);
|
||||||
|
|
||||||
|
|
||||||
|
/***/ },
|
||||||
|
/* 1 */
|
||||||
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
// Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive,
|
||||||
|
// but simplifies things for the consumer of this module.
|
||||||
|
__webpack_require__(2);
|
||||||
|
var net = __webpack_require__(3);
|
||||||
|
var path = __webpack_require__(4);
|
||||||
|
var readline = __webpack_require__(5);
|
||||||
|
var ArgsUtil_1 = __webpack_require__(6);
|
||||||
|
var ExitWhenParentExits_1 = __webpack_require__(7);
|
||||||
|
var virtualConnectionServer = __webpack_require__(8);
|
||||||
|
// Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct
|
||||||
|
// reference to Node's runtime 'require' function.
|
||||||
|
var dynamicRequire = eval('require');
|
||||||
|
// Signal to the .NET side when we're ready to accept invocations
|
||||||
|
var server = net.createServer().on('listening', function () {
|
||||||
|
console.log('[Microsoft.AspNetCore.NodeServices:Listening]');
|
||||||
|
});
|
||||||
|
// Each virtual connection represents a separate invocation
|
||||||
|
virtualConnectionServer.createInterface(server).on('connection', function (connection) {
|
||||||
|
readline.createInterface(connection, null).on('line', function (line) {
|
||||||
|
try {
|
||||||
|
// Get a reference to the function to invoke
|
||||||
|
var invocation = JSON.parse(line);
|
||||||
|
var invokedModule = dynamicRequire(path.resolve(process.cwd(), invocation.moduleName));
|
||||||
|
var invokedFunction = invocation.exportedFunctionName ? invokedModule[invocation.exportedFunctionName] : invokedModule;
|
||||||
|
// Prepare a callback for accepting non-streamed JSON responses
|
||||||
|
var hasInvokedCallback_1 = false;
|
||||||
|
var invocationCallback = function (errorValue, successValue) {
|
||||||
|
if (hasInvokedCallback_1) {
|
||||||
|
throw new Error('Cannot supply more than one result. The callback has already been invoked,'
|
||||||
|
+ ' or the result stream has already been accessed');
|
||||||
|
}
|
||||||
|
hasInvokedCallback_1 = true;
|
||||||
|
connection.end(JSON.stringify({
|
||||||
|
result: successValue,
|
||||||
|
errorMessage: errorValue && (errorValue.message || errorValue),
|
||||||
|
errorDetails: errorValue && (errorValue.stack || null)
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
// Also support streamed binary responses
|
||||||
|
Object.defineProperty(invocationCallback, 'stream', {
|
||||||
|
enumerable: true,
|
||||||
|
get: function () {
|
||||||
|
hasInvokedCallback_1 = true;
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Actually invoke it, passing through any supplied args
|
||||||
|
invokedFunction.apply(null, [invocationCallback].concat(invocation.args));
|
||||||
|
}
|
||||||
|
catch (ex) {
|
||||||
|
connection.end(JSON.stringify({
|
||||||
|
errorMessage: ex.message,
|
||||||
|
errorDetails: ex.stack
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// Begin listening now. The underlying transport varies according to the runtime platform.
|
||||||
|
// On Windows it's Named Pipes; on Linux/OSX it's Domain Sockets.
|
||||||
|
var useWindowsNamedPipes = /^win/.test(process.platform);
|
||||||
|
var parsedArgs = ArgsUtil_1.parseArgs(process.argv);
|
||||||
|
var listenAddress = (useWindowsNamedPipes ? '\\\\.\\pipe\\' : '/tmp/') + parsedArgs.listenAddress;
|
||||||
|
server.listen(listenAddress);
|
||||||
|
ExitWhenParentExits_1.exitWhenParentExits(parseInt(parsedArgs.parentPid));
|
||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 1 */,
|
|
||||||
/* 2 */
|
/* 2 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
@@ -90,7 +160,12 @@
|
|||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 3 */,
|
/* 3 */
|
||||||
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
|
module.exports = require("net");
|
||||||
|
|
||||||
|
/***/ },
|
||||||
/* 4 */
|
/* 4 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
@@ -98,6 +173,12 @@
|
|||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 5 */
|
/* 5 */
|
||||||
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
|
module.exports = require("readline");
|
||||||
|
|
||||||
|
/***/ },
|
||||||
|
/* 6 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
@@ -123,7 +204,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 6 */
|
/* 7 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -189,96 +270,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***/ },
|
|
||||||
/* 7 */
|
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
// Limit dependencies to core Node modules. This means the code in this file has to be very low-level and unattractive,
|
|
||||||
// but simplifies things for the consumer of this module.
|
|
||||||
__webpack_require__(2);
|
|
||||||
var net = __webpack_require__(8);
|
|
||||||
var path = __webpack_require__(4);
|
|
||||||
var readline = __webpack_require__(9);
|
|
||||||
var ArgsUtil_1 = __webpack_require__(5);
|
|
||||||
var ExitWhenParentExits_1 = __webpack_require__(6);
|
|
||||||
var virtualConnectionServer = __webpack_require__(10);
|
|
||||||
// Webpack doesn't support dynamic requires for files not present at compile time, so grab a direct
|
|
||||||
// reference to Node's runtime 'require' function.
|
|
||||||
var dynamicRequire = eval('require');
|
|
||||||
// Signal to the .NET side when we're ready to accept invocations
|
|
||||||
var server = net.createServer().on('listening', function () {
|
|
||||||
console.log('[Microsoft.AspNetCore.NodeServices:Listening]');
|
|
||||||
});
|
|
||||||
// Each virtual connection represents a separate invocation
|
|
||||||
virtualConnectionServer.createInterface(server).on('connection', function (connection) {
|
|
||||||
readline.createInterface(connection, null).on('line', function (line) {
|
|
||||||
try {
|
|
||||||
// Get a reference to the function to invoke
|
|
||||||
var invocation = JSON.parse(line);
|
|
||||||
var invokedModule = dynamicRequire(path.resolve(process.cwd(), invocation.moduleName));
|
|
||||||
var invokedFunction = invocation.exportedFunctionName ? invokedModule[invocation.exportedFunctionName] : invokedModule;
|
|
||||||
// Prepare a callback for accepting non-streamed JSON responses
|
|
||||||
var hasInvokedCallback_1 = false;
|
|
||||||
var invocationCallback = function (errorValue, successValue) {
|
|
||||||
if (hasInvokedCallback_1) {
|
|
||||||
throw new Error('Cannot supply more than one result. The callback has already been invoked,'
|
|
||||||
+ ' or the result stream has already been accessed');
|
|
||||||
}
|
|
||||||
hasInvokedCallback_1 = true;
|
|
||||||
connection.end(JSON.stringify({
|
|
||||||
result: successValue,
|
|
||||||
errorMessage: errorValue && (errorValue.message || errorValue),
|
|
||||||
errorDetails: errorValue && (errorValue.stack || null)
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
// Also support streamed binary responses
|
|
||||||
Object.defineProperty(invocationCallback, 'stream', {
|
|
||||||
enumerable: true,
|
|
||||||
get: function () {
|
|
||||||
hasInvokedCallback_1 = true;
|
|
||||||
return connection;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// Actually invoke it, passing through any supplied args
|
|
||||||
invokedFunction.apply(null, [invocationCallback].concat(invocation.args));
|
|
||||||
}
|
|
||||||
catch (ex) {
|
|
||||||
connection.end(JSON.stringify({
|
|
||||||
errorMessage: ex.message,
|
|
||||||
errorDetails: ex.stack
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// Begin listening now. The underlying transport varies according to the runtime platform.
|
|
||||||
// On Windows it's Named Pipes; on Linux/OSX it's Domain Sockets.
|
|
||||||
var useWindowsNamedPipes = /^win/.test(process.platform);
|
|
||||||
var parsedArgs = ArgsUtil_1.parseArgs(process.argv);
|
|
||||||
var listenAddress = (useWindowsNamedPipes ? '\\\\.\\pipe\\' : '/tmp/') + parsedArgs.listenAddress;
|
|
||||||
server.listen(listenAddress);
|
|
||||||
ExitWhenParentExits_1.exitWhenParentExits(parseInt(parsedArgs.parentPid));
|
|
||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 8 */
|
/* 8 */
|
||||||
/***/ function(module, exports) {
|
|
||||||
|
|
||||||
module.exports = require("net");
|
|
||||||
|
|
||||||
/***/ },
|
|
||||||
/* 9 */
|
|
||||||
/***/ function(module, exports) {
|
|
||||||
|
|
||||||
module.exports = require("readline");
|
|
||||||
|
|
||||||
/***/ },
|
|
||||||
/* 10 */
|
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
var events_1 = __webpack_require__(11);
|
var events_1 = __webpack_require__(9);
|
||||||
var VirtualConnection_1 = __webpack_require__(12);
|
var VirtualConnection_1 = __webpack_require__(10);
|
||||||
// Keep this in sync with the equivalent constant in the .NET code. Both sides split up their transmissions into frames with this max length,
|
// Keep this in sync with the equivalent constant in the .NET code. Both sides split up their transmissions into frames with this max length,
|
||||||
// and both will reject longer frames.
|
// and both will reject longer frames.
|
||||||
var MaxFrameBodyLength = 16 * 1024;
|
var MaxFrameBodyLength = 16 * 1024;
|
||||||
@@ -460,13 +458,13 @@
|
|||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 11 */
|
/* 9 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
module.exports = require("events");
|
module.exports = require("events");
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 12 */
|
/* 10 */
|
||||||
/***/ function(module, exports, __webpack_require__) {
|
/***/ function(module, exports, __webpack_require__) {
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
@@ -475,17 +473,18 @@
|
|||||||
function __() { this.constructor = d; }
|
function __() { this.constructor = d; }
|
||||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||||
};
|
};
|
||||||
var stream_1 = __webpack_require__(13);
|
var stream_1 = __webpack_require__(11);
|
||||||
/**
|
/**
|
||||||
* Represents a virtual connection. Multiple virtual connections may be multiplexed over a single physical socket connection.
|
* Represents a virtual connection. Multiple virtual connections may be multiplexed over a single physical socket connection.
|
||||||
*/
|
*/
|
||||||
var VirtualConnection = (function (_super) {
|
var VirtualConnection = (function (_super) {
|
||||||
__extends(VirtualConnection, _super);
|
__extends(VirtualConnection, _super);
|
||||||
function VirtualConnection(_beginWriteCallback) {
|
function VirtualConnection(_beginWriteCallback) {
|
||||||
_super.call(this);
|
var _this = _super.call(this) || this;
|
||||||
this._beginWriteCallback = _beginWriteCallback;
|
_this._beginWriteCallback = _beginWriteCallback;
|
||||||
this._flowing = false;
|
_this._flowing = false;
|
||||||
this._receivedDataQueue = [];
|
_this._receivedDataQueue = [];
|
||||||
|
return _this;
|
||||||
}
|
}
|
||||||
VirtualConnection.prototype._read = function () {
|
VirtualConnection.prototype._read = function () {
|
||||||
this._flowing = true;
|
this._flowing = true;
|
||||||
@@ -516,7 +515,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/***/ },
|
/***/ },
|
||||||
/* 13 */
|
/* 11 */
|
||||||
/***/ function(module, exports) {
|
/***/ function(module, exports) {
|
||||||
|
|
||||||
module.exports = require("stream");
|
module.exports = require("stream");
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<Import Project="..\..\build\common.props" />
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<Description>Socket-based RPC for Microsoft.AspNetCore.NodeServices.</Description>
|
||||||
|
<TargetFrameworks>net451;netstandard1.6</TargetFrameworks>
|
||||||
|
<VersionPrefix>1.1.0</VersionPrefix>
|
||||||
|
<VersionSuffix>beta2</VersionSuffix>
|
||||||
|
<PackageTags>aspnetcore;aspnetcoremvc;nodeservices</PackageTags>
|
||||||
|
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="Content\**\*" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Microsoft.AspNetCore.NodeServices\Microsoft.AspNetCore.NodeServices.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition=" '$(TargetFramework)' == 'net451' ">
|
||||||
|
<PackageReference Include="Microsoft.Tpl.Dataflow" Version="$(MicrosoftDataflowVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
|
||||||
|
<PackageReference Include="System.IO.Pipes" Version="$(CoreFxVersion)" />
|
||||||
|
<PackageReference Include="System.Threading.Tasks.Dataflow" Version="$(ThreadingDataflowVersion)" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish" Condition=" '$(IsCrossTargetingBuild)' != 'true' ">
|
||||||
|
<Exec Command="npm install" />
|
||||||
|
<Exec Command="node node_modules/webpack/bin/webpack.js" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -2,7 +2,7 @@ using System.IO;
|
|||||||
using System.IO.Pipes;
|
using System.IO.Pipes;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections
|
namespace Microsoft.AspNetCore.NodeServices.Sockets.PhysicalConnections
|
||||||
{
|
{
|
||||||
internal class NamedPipeConnection : StreamConnection
|
internal class NamedPipeConnection : StreamConnection
|
||||||
{
|
{
|
||||||
@@ -2,7 +2,7 @@ using System;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections
|
namespace Microsoft.AspNetCore.NodeServices.Sockets.PhysicalConnections
|
||||||
{
|
{
|
||||||
internal abstract class StreamConnection : IDisposable
|
internal abstract class StreamConnection : IDisposable
|
||||||
{
|
{
|
||||||
@@ -2,7 +2,7 @@ using System.IO;
|
|||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections
|
namespace Microsoft.AspNetCore.NodeServices.Sockets.PhysicalConnections
|
||||||
{
|
{
|
||||||
internal class UnixDomainSocketConnection : StreamConnection
|
internal class UnixDomainSocketConnection : StreamConnection
|
||||||
{
|
{
|
||||||
@@ -3,7 +3,7 @@ using System.Net;
|
|||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections
|
namespace Microsoft.AspNetCore.NodeServices.Sockets.PhysicalConnections
|
||||||
{
|
{
|
||||||
// From System.IO.Pipes/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs (an internal class in System.IO.Pipes)
|
// From System.IO.Pipes/src/System/Net/Sockets/UnixDomainSocketEndPoint.cs (an internal class in System.IO.Pipes)
|
||||||
internal sealed class UnixDomainSocketEndPoint : EndPoint
|
internal sealed class UnixDomainSocketEndPoint : EndPoint
|
||||||
@@ -1,16 +1,15 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.NodeServices.HostingModels.PhysicalConnections;
|
using Microsoft.AspNetCore.NodeServices.HostingModels;
|
||||||
using Microsoft.AspNetCore.NodeServices.HostingModels.VirtualConnections;
|
using Microsoft.AspNetCore.NodeServices.Sockets.PhysicalConnections;
|
||||||
|
using Microsoft.AspNetCore.NodeServices.Sockets.VirtualConnections;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
namespace Microsoft.AspNetCore.NodeServices.Sockets
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A specialisation of the OutOfProcessNodeInstance base class that uses a lightweight binary streaming protocol
|
/// A specialisation of the OutOfProcessNodeInstance base class that uses a lightweight binary streaming protocol
|
||||||
@@ -33,27 +32,28 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
TypeNameHandling = TypeNameHandling.None
|
TypeNameHandling = TypeNameHandling.None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private readonly static int streamBufferSize = 16 * 1024;
|
||||||
|
private readonly static UTF8Encoding utf8EncodingWithoutBom = new UTF8Encoding(false);
|
||||||
|
|
||||||
private readonly SemaphoreSlim _connectionCreationSemaphore = new SemaphoreSlim(1);
|
private readonly SemaphoreSlim _connectionCreationSemaphore = new SemaphoreSlim(1);
|
||||||
private bool _connectionHasFailed;
|
private bool _connectionHasFailed;
|
||||||
private StreamConnection _physicalConnection;
|
private StreamConnection _physicalConnection;
|
||||||
private string _socketAddress;
|
private string _socketAddress;
|
||||||
private VirtualConnectionClient _virtualConnectionClient;
|
private VirtualConnectionClient _virtualConnectionClient;
|
||||||
|
|
||||||
public SocketNodeInstance(string projectPath, string[] watchFileExtensions, string socketAddress,
|
public SocketNodeInstance(NodeServicesOptions options, string socketAddress)
|
||||||
ILogger nodeInstanceOutputLogger, IDictionary<string, string> environmentVars,
|
|
||||||
int invocationTimeoutMilliseconds, bool launchWithDebugging, int debuggingPort)
|
|
||||||
: base(
|
: base(
|
||||||
EmbeddedResourceReader.Read(
|
EmbeddedResourceReader.Read(
|
||||||
typeof(SocketNodeInstance),
|
typeof(SocketNodeInstance),
|
||||||
"/Content/Node/entrypoint-socket.js"),
|
"/Content/Node/entrypoint-socket.js"),
|
||||||
projectPath,
|
options.ProjectPath,
|
||||||
watchFileExtensions,
|
options.WatchFileExtensions,
|
||||||
MakeNewCommandLineOptions(socketAddress),
|
MakeNewCommandLineOptions(socketAddress),
|
||||||
nodeInstanceOutputLogger,
|
options.NodeInstanceOutputLogger,
|
||||||
environmentVars,
|
options.EnvironmentVariables,
|
||||||
invocationTimeoutMilliseconds,
|
options.InvocationTimeoutMilliseconds,
|
||||||
launchWithDebugging,
|
options.LaunchWithDebugging,
|
||||||
debuggingPort)
|
options.DebuggingPort)
|
||||||
{
|
{
|
||||||
_socketAddress = socketAddress;
|
_socketAddress = socketAddress;
|
||||||
}
|
}
|
||||||
@@ -62,11 +62,15 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
{
|
{
|
||||||
if (_connectionHasFailed)
|
if (_connectionHasFailed)
|
||||||
{
|
{
|
||||||
|
// _connectionHasFailed implies a protocol-level error. The old instance is no longer of any use.
|
||||||
|
var allowConnectionDraining = false;
|
||||||
|
|
||||||
// This special exception type forces NodeServicesImpl to restart the Node instance
|
// This special exception type forces NodeServicesImpl to restart the Node instance
|
||||||
throw new NodeInvocationException(
|
throw new NodeInvocationException(
|
||||||
"The SocketNodeInstance socket connection failed. See logs to identify the reason.",
|
"The SocketNodeInstance socket connection failed. See logs to identify the reason.",
|
||||||
null,
|
details: null,
|
||||||
nodeInstanceUnavailable: true);
|
nodeInstanceUnavailable: true,
|
||||||
|
allowConnectionDraining: allowConnectionDraining);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_virtualConnectionClient == null)
|
if (_virtualConnectionClient == null)
|
||||||
@@ -76,7 +80,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
// wait for the same connection task. There's no reason why the first caller should have the
|
// wait for the same connection task. There's no reason why the first caller should have the
|
||||||
// special ability to cancel the connection process in a way that would affect subsequent
|
// special ability to cancel the connection process in a way that would affect subsequent
|
||||||
// callers. So, each caller just independently stops awaiting connection if that call is cancelled.
|
// callers. So, each caller just independently stops awaiting connection if that call is cancelled.
|
||||||
await EnsureVirtualConnectionClientCreated().OrThrowOnCancellation(cancellationToken);
|
await ThrowOnCancellation(EnsureVirtualConnectionClientCreated(), cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
// For each invocation, we open a new virtual connection. This gives an API equivalent to opening a new
|
// For each invocation, we open a new virtual connection. This gives an API equivalent to opening a new
|
||||||
@@ -89,7 +93,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
virtualConnection = _virtualConnectionClient.OpenVirtualConnection();
|
virtualConnection = _virtualConnectionClient.OpenVirtualConnection();
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
await WriteJsonLineAsync(virtualConnection, invocationInfo, cancellationToken);
|
WriteJsonLine(virtualConnection, invocationInfo);
|
||||||
|
|
||||||
// Determine what kind of response format is expected
|
// Determine what kind of response format is expected
|
||||||
if (typeof(T) == typeof(Stream))
|
if (typeof(T) == typeof(Stream))
|
||||||
@@ -169,11 +173,21 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
base.Dispose(disposing);
|
base.Dispose(disposing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task WriteJsonLineAsync(Stream stream, object serializableObject, CancellationToken cancellationToken)
|
private static void WriteJsonLine(Stream stream, object serializableObject)
|
||||||
{
|
{
|
||||||
var json = JsonConvert.SerializeObject(serializableObject, jsonSerializerSettings);
|
using (var streamWriter = new StreamWriter(stream, utf8EncodingWithoutBom, streamBufferSize, true))
|
||||||
var bytes = Encoding.UTF8.GetBytes(json + '\n');
|
using (var jsonWriter = new JsonTextWriter(streamWriter))
|
||||||
await stream.WriteAsync(bytes, 0, bytes.Length, cancellationToken);
|
{
|
||||||
|
jsonWriter.CloseOutput = false;
|
||||||
|
jsonWriter.AutoCompleteOnClose = false;
|
||||||
|
|
||||||
|
var serializer = JsonSerializer.Create(jsonSerializerSettings);
|
||||||
|
serializer.Serialize(jsonWriter, serializableObject);
|
||||||
|
jsonWriter.Flush();
|
||||||
|
|
||||||
|
streamWriter.WriteLine();
|
||||||
|
streamWriter.Flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task<T> ReadJsonAsync<T>(Stream stream, CancellationToken cancellationToken)
|
private static async Task<T> ReadJsonAsync<T>(Stream stream, CancellationToken cancellationToken)
|
||||||
@@ -184,7 +198,7 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
|
|
||||||
private static async Task<byte[]> ReadAllBytesAsync(Stream input, CancellationToken cancellationToken)
|
private static async Task<byte[]> ReadAllBytesAsync(Stream input, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
byte[] buffer = new byte[16 * 1024];
|
byte[] buffer = new byte[streamBufferSize];
|
||||||
|
|
||||||
using (var ms = new MemoryStream())
|
using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
@@ -203,6 +217,17 @@ namespace Microsoft.AspNetCore.NodeServices.HostingModels
|
|||||||
return $"--listenAddress {listenAddress}";
|
return $"--listenAddress {listenAddress}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Task ThrowOnCancellation(Task task, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return task.IsCompleted
|
||||||
|
? task // If the task is already completed, no need to wrap it in a further layer of task
|
||||||
|
: task.ContinueWith(
|
||||||
|
_ => {}, // If the task completes, allow execution to continue
|
||||||
|
cancellationToken,
|
||||||
|
TaskContinuationOptions.ExecuteSynchronously,
|
||||||
|
TaskScheduler.Default);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma warning disable 649 // These properties are populated via JSON deserialization
|
#pragma warning disable 649 // These properties are populated via JSON deserialization
|
||||||
private class RpcJsonResponse<TResult>
|
private class RpcJsonResponse<TResult>
|
||||||
{
|
{
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user