├── .config
└── dotnet-tools.json
├── .gitignore
├── ASPNETCoreMVCwithReact.csproj
├── ASPNETCoreMVCwithReact.sln
├── ClientApp
├── README.md
├── build
│ ├── asset-manifest.json
│ ├── favicon.ico
│ ├── manifest.json
│ └── static
│ │ └── js
│ │ ├── 0.chunk.js
│ │ ├── 0.chunk.js.map
│ │ ├── bundle.js
│ │ ├── bundle.js.map
│ │ ├── main.chunk.js
│ │ └── main.chunk.js.map
├── config
│ ├── env.js
│ ├── jest
│ │ ├── babelTransform.js
│ │ ├── cssTransform.js
│ │ └── fileTransform.js
│ ├── modules.js
│ ├── paths.js
│ ├── pnpTs.js
│ └── webpack.config.js
├── main.js
├── package.json
├── public
│ ├── favicon.ico
│ └── manifest.json
├── scripts
│ ├── build.js
│ ├── eject.js
│ ├── init.js
│ ├── start.js
│ ├── test.js
│ └── utils
│ │ ├── createJestConfig.js
│ │ ├── verifyPackageTree.js
│ │ └── verifyTypeScriptSetup.js
└── src
│ ├── App.js
│ ├── components
│ ├── Article
│ │ └── Article.js
│ ├── Auxilary
│ │ └── Auxilary.js
│ └── LandingPage.js
│ ├── index.js
│ ├── registerServiceWorker.js
│ └── site.css
├── Codes
├── ArticleProvider.cs
└── BrowserRefresh.cs
├── Controllers
├── ArticleController.cs
├── ArticleDataController.cs
└── HomeController.cs
├── Models
├── ArticleData.cs
└── ErrorViewModel.cs
├── Program.cs
├── Properties
├── PublishProfiles
│ └── FolderProfile.pubxml
└── launchSettings.json
├── README.md
├── Startup.cs
├── Views
├── Article
│ └── Index.cshtml
├── Home
│ └── Index.cshtml
├── Shared
│ ├── Error.cshtml
│ ├── _Layout.cshtml
│ ├── _Layout_Template.cshtml
│ └── _ValidationScriptsPartial.cshtml
├── _ViewImports.cshtml
└── _ViewStart.cshtml
├── appsettings.Development.json
├── appsettings.json
└── log4net.config
/.config/dotnet-tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "isRoot": true,
4 | "tools": {
5 | "dotnet-ef": {
6 | "version": "3.1.3",
7 | "commands": [
8 | "dotnet-ef"
9 | ]
10 | }
11 | }
12 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 |
40 | # Dependency directories
41 | node_modules/
42 | jspm_packages/
43 |
44 | # TypeScript v1 declaration files
45 | typings/
46 |
47 | # TypeScript cache
48 | *.tsbuildinfo
49 |
50 | # Optional npm cache directory
51 | .npm
52 |
53 | # Optional eslint cache
54 | .eslintcache
55 |
56 | # Microbundle cache
57 | .rpt2_cache/
58 | .rts2_cache_cjs/
59 | .rts2_cache_es/
60 | .rts2_cache_umd/
61 |
62 | # Optional REPL history
63 | .node_repl_history
64 |
65 | # Output of 'npm pack'
66 | *.tgz
67 |
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
71 | # dotenv environment variables file
72 | .env
73 | .env.test
74 |
75 | # parcel-bundler cache (https://parceljs.org/)
76 | .cache
77 |
78 | # Next.js build output
79 | .next
80 |
81 | # Nuxt.js build / generate output
82 | .nuxt
83 | dist
84 |
85 | # Gatsby files
86 | .cache/
87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js
88 | # https://nextjs.org/blog/next-9-1#public-directory-support
89 | # public
90 |
91 | # vuepress build output
92 | .vuepress/dist
93 |
94 | # Serverless directories
95 | .serverless/
96 |
97 | # FuseBox cache
98 | .fusebox/
99 |
100 | # DynamoDB Local files
101 | .dynamodb/
102 |
103 | # TernJS port file
104 | .tern-port
105 |
106 | # Project
107 | bin
108 | obj
109 | .vs
110 | wwwroot/*
111 | *.user
112 | package-lock.json
113 |
--------------------------------------------------------------------------------
/ASPNETCoreMVCwithReact.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | net5.0
12 | true
13 | Latest
14 | false
15 | ClientApp\
16 | $(DefaultItemExcludes);$(SpaRoot)node_modules\**;$(SpaRoot)build\**
17 |
18 |
19 |
20 | DEBUG;TRACE
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 | %(DistFiles.Identity)
62 | PreserveNewest
63 | true
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/ASPNETCoreMVCwithReact.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.29920.165
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ASPNETCoreMVCwithReact", "ASPNETCoreMVCwithReact.csproj", "{6D94A183-0837-4DEB-A8D6-4A5740C448E1}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {6D94A183-0837-4DEB-A8D6-4A5740C448E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {6D94A183-0837-4DEB-A8D6-4A5740C448E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {6D94A183-0837-4DEB-A8D6-4A5740C448E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {6D94A183-0837-4DEB-A8D6-4A5740C448E1}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {335704FB-3D89-4495-BBEB-A5D4A5A16BD0}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ClientApp/build/asset-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "files": {
3 | "static/js/0.chunk.js": "/static/js/0.chunk.js",
4 | "static/js/0.chunk.js.map": "/static/js/0.chunk.js.map",
5 | "main.js": "/static/js/main.chunk.js",
6 | "main.js.map": "/static/js/main.chunk.js.map",
7 | "runtime-main.js": "/static/js/bundle.js",
8 | "runtime-main.js.map": "/static/js/bundle.js.map"
9 | },
10 | "entrypoints": [
11 | "static/js/bundle.js",
12 | "static/js/0.chunk.js",
13 | "static/js/main.chunk.js"
14 | ]
15 | }
--------------------------------------------------------------------------------
/ClientApp/build/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JZO001/ASPNETCoreMVCwithReact/1a71ebca71f7789562e9827f21f425d00fa44369/ClientApp/build/favicon.ico
--------------------------------------------------------------------------------
/ClientApp/build/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "ASPNETCoreMVCwithReact",
3 | "name": "ASPNETCoreMVCwithReact",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | }
10 | ],
11 | "display": "standalone",
12 | "theme_color": "#000000",
13 | "background_color": "#ffffff"
14 | }
15 |
--------------------------------------------------------------------------------
/ClientApp/build/static/js/bundle.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"static/js/bundle.js","sources":["C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/webpack/bootstrap"],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = this[\"webpackHotUpdate\"];\n \tthis[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"\" + chunkId + \".\" + hotCurrentHash + \".hot-update.js\";\n \t\tif (null) script.crossOrigin = null;\n \t\tdocument.head.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\t}\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"\" + hotCurrentHash + \".hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentHash = \"6fbc2cf3d835473a5f89\";\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParents = [];\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParentsTemp = [];\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) {\n \t\t\t\t\tme.children.push(request);\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\" &&\n \t\t\t\tname !== \"t\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\tfn.t = function(value, mode) {\n \t\t\tif (mode & 1) value = fn(value);\n \t\t\treturn __webpack_require__.t(value, mode & ~1);\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\") {\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\t}\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(\"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tfor(var chunkId in installedChunks)\n \t\t\t// eslint-disable-next-line no-lone-blocks\n \t\t\t{\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (!module || module.hot._selfAccepted) continue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted &&\n \t\t\t\t// removed self-accepted modules should not be required\n \t\t\t\tappliedUpdate[moduleId] !== warnUnexpectedRequire\n \t\t\t) {\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\thotCurrentHash = hotUpdateNewHash;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = [moduleId];\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"runtime-main\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n \tvar jsonpArray = this[\"webpackJsonpaspnetcoremvcwithreact\"] = this[\"webpackJsonpaspnetcoremvcwithreact\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// run deferred modules from other chunks\n \tcheckDeferredModules();\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A","sourceRoot":""}
--------------------------------------------------------------------------------
/ClientApp/build/static/js/main.chunk.js:
--------------------------------------------------------------------------------
1 | (this["webpackJsonpaspnetcoremvcwithreact"] = this["webpackJsonpaspnetcoremvcwithreact"] || []).push([["main"],{
2 |
3 | /***/ "./node_modules/css-loader/dist/cjs.js?!./node_modules/postcss-loader/src/index.js?!./src/site.css":
4 | /*!*************************************************************************************************************************!*\
5 | !*** ./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!./node_modules/postcss-loader/src??postcss!./src/site.css ***!
6 | \*************************************************************************************************************************/
7 | /*! no static exports found */
8 | /***/ (function(module, exports, __webpack_require__) {
9 |
10 | // Imports
11 | var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
12 | exports = ___CSS_LOADER_API_IMPORT___(false);
13 | // Module
14 | exports.push([module.i, "* {\r\n box-sizing: border-box;\r\n}\r\n", ""]);
15 | // Exports
16 | module.exports = exports;
17 |
18 |
19 | /***/ }),
20 |
21 | /***/ "./src/App.js":
22 | /*!********************!*\
23 | !*** ./src/App.js ***!
24 | \********************/
25 | /*! exports provided: default */
26 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
27 |
28 | "use strict";
29 | __webpack_require__.r(__webpack_exports__);
30 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return App; });
31 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
32 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
33 | /* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router */ "./node_modules/react-router/esm/react-router.js");
34 | /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
35 | /* harmony import */ var _components_LandingPage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/LandingPage */ "./src/components/LandingPage.js");
36 | /* harmony import */ var _components_Article_Article__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Article/Article */ "./src/components/Article/Article.js");
37 | var _jsxFileName = "C:\\Development\\NET\\Git\\ASPNETCoreMVCwithReact\\ClientApp\\src\\App.js";
38 |
39 |
40 |
41 |
42 |
43 | class App extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
44 | render() {
45 | return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
46 | __self: this,
47 | __source: {
48 | fileName: _jsxFileName,
49 | lineNumber: 10,
50 | columnNumber: 13
51 | }
52 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Switch"], {
53 | __self: this,
54 | __source: {
55 | fileName: _jsxFileName,
56 | lineNumber: 11,
57 | columnNumber: 17
58 | }
59 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router__WEBPACK_IMPORTED_MODULE_1__["Route"], {
60 | exact: true,
61 | path: "/",
62 | component: _components_LandingPage__WEBPACK_IMPORTED_MODULE_3__["default"],
63 | __self: this,
64 | __source: {
65 | fileName: _jsxFileName,
66 | lineNumber: 12,
67 | columnNumber: 21
68 | }
69 | }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router__WEBPACK_IMPORTED_MODULE_1__["Route"], {
70 | path: "/Article/:id",
71 | component: _components_Article_Article__WEBPACK_IMPORTED_MODULE_4__["default"],
72 | __self: this,
73 | __source: {
74 | fileName: _jsxFileName,
75 | lineNumber: 13,
76 | columnNumber: 21
77 | }
78 | }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router__WEBPACK_IMPORTED_MODULE_1__["Route"], {
79 | render: () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h3", {
80 | style: {
81 | textAlign: 'center'
82 | },
83 | __self: this,
84 | __source: {
85 | fileName: _jsxFileName,
86 | lineNumber: 14,
87 | columnNumber: 42
88 | }
89 | }, "Requested content not found. Please check your URL. (React/client)"),
90 | __self: this,
91 | __source: {
92 | fileName: _jsxFileName,
93 | lineNumber: 14,
94 | columnNumber: 21
95 | }
96 | })));
97 | }
98 |
99 | }
100 |
101 | /***/ }),
102 |
103 | /***/ "./src/components/Article/Article.js":
104 | /*!*******************************************!*\
105 | !*** ./src/components/Article/Article.js ***!
106 | \*******************************************/
107 | /*! exports provided: default */
108 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
109 |
110 | "use strict";
111 | __webpack_require__.r(__webpack_exports__);
112 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
113 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
114 | /* harmony import */ var reactstrap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! reactstrap */ "./node_modules/reactstrap/es/index.js");
115 | /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
116 | /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
117 | /* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_3__);
118 | /* harmony import */ var _Auxilary_Auxilary__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Auxilary/Auxilary */ "./src/components/Auxilary/Auxilary.js");
119 | var _jsxFileName = "C:\\Development\\NET\\Git\\ASPNETCoreMVCwithReact\\ClientApp\\src\\components\\Article\\Article.js";
120 |
121 |
122 |
123 |
124 |
125 |
126 | class Article extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
127 | constructor(...args) {
128 | super(...args);
129 | this.state = {
130 | isLoading: true,
131 | isError: false,
132 | article: null
133 | };
134 | }
135 |
136 | componentDidMount() {
137 | axios__WEBPACK_IMPORTED_MODULE_3___default.a.get('/ArticleData/' + this.props.match.params.id).then(response => {
138 | if (response.status === 200) {
139 | this.setState({
140 | isLoading: false,
141 | article: response.data
142 | });
143 | } else {
144 | this.setState({
145 | isLoading: false,
146 | isError: true
147 | });
148 | }
149 | }, error => {
150 | this.setState({
151 | isLoading: false,
152 | isError: true
153 | });
154 | console.log(error);
155 | });
156 | }
157 |
158 | static renderArticleContent(article) {
159 | return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Auxilary_Auxilary__WEBPACK_IMPORTED_MODULE_4__["default"], {
160 | __self: this,
161 | __source: {
162 | fileName: _jsxFileName,
163 | lineNumber: 33,
164 | columnNumber: 13
165 | }
166 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", {
167 | __self: this,
168 | __source: {
169 | fileName: _jsxFileName,
170 | lineNumber: 34,
171 | columnNumber: 17
172 | }
173 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("header", {
174 | __self: this,
175 | __source: {
176 | fileName: _jsxFileName,
177 | lineNumber: 35,
178 | columnNumber: 21
179 | }
180 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h1", {
181 | __self: this,
182 | __source: {
183 | fileName: _jsxFileName,
184 | lineNumber: 36,
185 | columnNumber: 25
186 | }
187 | }, article.header))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", {
188 | __self: this,
189 | __source: {
190 | fileName: _jsxFileName,
191 | lineNumber: 39,
192 | columnNumber: 17
193 | }
194 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("main", {
195 | dangerouslySetInnerHTML: {
196 | __html: article.content
197 | },
198 | __self: this,
199 | __source: {
200 | fileName: _jsxFileName,
201 | lineNumber: 40,
202 | columnNumber: 21
203 | }
204 | })));
205 | }
206 |
207 | render() {
208 | var content = "Loading article ...";
209 |
210 | if (this.state.isError) {
211 | content = "Ooops... something went wrong. Please visit back a little bit later.";
212 | } else if (!this.state.isLoading) {
213 | content = Article.renderArticleContent(this.state.article);
214 | }
215 |
216 | return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Auxilary_Auxilary__WEBPACK_IMPORTED_MODULE_4__["default"], {
217 | __self: this,
218 | __source: {
219 | fileName: _jsxFileName,
220 | lineNumber: 55,
221 | columnNumber: 13
222 | }
223 | }, content, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br", {
224 | __self: this,
225 | __source: {
226 | fileName: _jsxFileName,
227 | lineNumber: 57,
228 | columnNumber: 17
229 | }
230 | }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(reactstrap__WEBPACK_IMPORTED_MODULE_1__["NavLink"], {
231 | tag: react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"],
232 | to: "/",
233 | __self: this,
234 | __source: {
235 | fileName: _jsxFileName,
236 | lineNumber: 58,
237 | columnNumber: 17
238 | }
239 | }, "Back to Home"));
240 | }
241 |
242 | }
243 |
244 | /* harmony default export */ __webpack_exports__["default"] = (Article);
245 |
246 | /***/ }),
247 |
248 | /***/ "./src/components/Auxilary/Auxilary.js":
249 | /*!*********************************************!*\
250 | !*** ./src/components/Auxilary/Auxilary.js ***!
251 | \*********************************************/
252 | /*! exports provided: default */
253 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
254 |
255 | "use strict";
256 | __webpack_require__.r(__webpack_exports__);
257 | const aux = props => props.children;
258 |
259 | /* harmony default export */ __webpack_exports__["default"] = (aux);
260 |
261 | /***/ }),
262 |
263 | /***/ "./src/components/LandingPage.js":
264 | /*!***************************************!*\
265 | !*** ./src/components/LandingPage.js ***!
266 | \***************************************/
267 | /*! exports provided: default */
268 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
269 |
270 | "use strict";
271 | __webpack_require__.r(__webpack_exports__);
272 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
273 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
274 | /* harmony import */ var reactstrap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! reactstrap */ "./node_modules/reactstrap/es/index.js");
275 | /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
276 | var _jsxFileName = "C:\\Development\\NET\\Git\\ASPNETCoreMVCwithReact\\ClientApp\\src\\components\\LandingPage.js";
277 |
278 |
279 |
280 |
281 | class LandingPage extends react__WEBPACK_IMPORTED_MODULE_0__["Component"] {
282 | render() {
283 | return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
284 | __self: this,
285 | __source: {
286 | fileName: _jsxFileName,
287 | lineNumber: 8,
288 | columnNumber: 13
289 | }
290 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
291 | __self: this,
292 | __source: {
293 | fileName: _jsxFileName,
294 | lineNumber: 9,
295 | columnNumber: 17
296 | }
297 | }, "Landing page"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(reactstrap__WEBPACK_IMPORTED_MODULE_1__["NavLink"], {
298 | tag: react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"],
299 | to: "/article/1",
300 | __self: this,
301 | __source: {
302 | fileName: _jsxFileName,
303 | lineNumber: 10,
304 | columnNumber: 17
305 | }
306 | }, "Article 1 - How to ..."), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("br", {
307 | __self: this,
308 | __source: {
309 | fileName: _jsxFileName,
310 | lineNumber: 10,
311 | columnNumber: 87
312 | }
313 | }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(reactstrap__WEBPACK_IMPORTED_MODULE_1__["NavLink"], {
314 | tag: react_router_dom__WEBPACK_IMPORTED_MODULE_2__["Link"],
315 | to: "/article/2",
316 | __self: this,
317 | __source: {
318 | fileName: _jsxFileName,
319 | lineNumber: 11,
320 | columnNumber: 17
321 | }
322 | }, "Article 2 - Make it yourself"));
323 | }
324 |
325 | }
326 |
327 | /* harmony default export */ __webpack_exports__["default"] = (LandingPage);
328 |
329 | /***/ }),
330 |
331 | /***/ "./src/index.js":
332 | /*!**********************!*\
333 | !*** ./src/index.js ***!
334 | \**********************/
335 | /*! no exports provided */
336 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
337 |
338 | "use strict";
339 | __webpack_require__.r(__webpack_exports__);
340 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
341 | /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
342 | /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js");
343 | /* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
344 | /* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/esm/react-router-dom.js");
345 | /* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./App */ "./src/App.js");
346 | /* harmony import */ var _registerServiceWorker__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./registerServiceWorker */ "./src/registerServiceWorker.js");
347 | /* harmony import */ var _site_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./site.css */ "./src/site.css");
348 | /* harmony import */ var _site_css__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_site_css__WEBPACK_IMPORTED_MODULE_5__);
349 | var _jsxFileName = "C:\\Development\\NET\\Git\\ASPNETCoreMVCwithReact\\ClientApp\\src\\index.js";
350 |
351 |
352 |
353 |
354 |
355 |
356 | const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');
357 | const rootElement = document.getElementById('root');
358 | react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__["BrowserRouter"], {
359 | basename: baseUrl,
360 | __self: undefined,
361 | __source: {
362 | fileName: _jsxFileName,
363 | lineNumber: 13,
364 | columnNumber: 5
365 | }
366 | }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_App__WEBPACK_IMPORTED_MODULE_3__["default"], {
367 | __self: undefined,
368 | __source: {
369 | fileName: _jsxFileName,
370 | lineNumber: 14,
371 | columnNumber: 9
372 | }
373 | })), rootElement);
374 | Object(_registerServiceWorker__WEBPACK_IMPORTED_MODULE_4__["default"])();
375 |
376 | /***/ }),
377 |
378 | /***/ "./src/registerServiceWorker.js":
379 | /*!**************************************!*\
380 | !*** ./src/registerServiceWorker.js ***!
381 | \**************************************/
382 | /*! exports provided: default, unregister */
383 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
384 |
385 | "use strict";
386 | __webpack_require__.r(__webpack_exports__);
387 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return register; });
388 | /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unregister", function() { return unregister; });
389 | // In production, we register a service worker to serve assets from local cache.
390 | // This lets the app load faster on subsequent visits in production, and gives
391 | // it offline capabilities. However, it also means that developers (and users)
392 | // will only see deployed updates on the "N+1" visit to a page, since previously
393 | // cached resources are updated in the background.
394 | // To learn more about the benefits of this model, read https://goo.gl/KwvDNy.
395 | // This link also includes instructions on opting out of this behavior.
396 | const isLocalhost = Boolean(window.location.hostname === 'localhost' || // [::1] is the IPv6 localhost address.
397 | window.location.hostname === '[::1]' || // 127.0.0.1/8 is considered localhost for IPv4.
398 | window.location.hostname.match(/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/));
399 | function register() {
400 | if (false) {}
401 | }
402 |
403 | function registerValidSW(swUrl) {
404 | navigator.serviceWorker.register(swUrl).then(registration => {
405 | registration.onupdatefound = () => {
406 | const installingWorker = registration.installing;
407 |
408 | installingWorker.onstatechange = () => {
409 | if (installingWorker.state === 'installed') {
410 | if (navigator.serviceWorker.controller) {
411 | // At this point, the old content will have been purged and
412 | // the fresh content will have been added to the cache.
413 | // It's the perfect time to display a "New content is
414 | // available; please refresh." message in your web app.
415 | console.log('New content is available; please refresh.');
416 | } else {
417 | // At this point, everything has been precached.
418 | // It's the perfect time to display a
419 | // "Content is cached for offline use." message.
420 | console.log('Content is cached for offline use.');
421 | }
422 | }
423 | };
424 | };
425 | }).catch(error => {
426 | console.error('Error during service worker registration:', error);
427 | });
428 | }
429 |
430 | function checkValidServiceWorker(swUrl) {
431 | // Check if the service worker can be found. If it can't reload the page.
432 | fetch(swUrl).then(response => {
433 | // Ensure service worker exists, and that we really are getting a JS file.
434 | if (response.status === 404 || response.headers.get('content-type').indexOf('javascript') === -1) {
435 | // No service worker found. Probably a different app. Reload the page.
436 | navigator.serviceWorker.ready.then(registration => {
437 | registration.unregister().then(() => {
438 | window.location.reload();
439 | });
440 | });
441 | } else {
442 | // Service worker found. Proceed as normal.
443 | registerValidSW(swUrl);
444 | }
445 | }).catch(() => {
446 | console.log('No internet connection found. App is running in offline mode.');
447 | });
448 | }
449 |
450 | function unregister() {
451 | if ('serviceWorker' in navigator) {
452 | navigator.serviceWorker.ready.then(registration => {
453 | registration.unregister();
454 | });
455 | }
456 | }
457 |
458 | /***/ }),
459 |
460 | /***/ "./src/site.css":
461 | /*!**********************!*\
462 | !*** ./src/site.css ***!
463 | \**********************/
464 | /*! no static exports found */
465 | /***/ (function(module, exports, __webpack_require__) {
466 |
467 | var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
468 | var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src??postcss!./site.css */ "./node_modules/css-loader/dist/cjs.js?!./node_modules/postcss-loader/src/index.js?!./src/site.css");
469 |
470 | content = content.__esModule ? content.default : content;
471 |
472 | if (typeof content === 'string') {
473 | content = [[module.i, content, '']];
474 | }
475 |
476 | var options = {};
477 |
478 | options.insert = "head";
479 | options.singleton = false;
480 |
481 | var update = api(content, options);
482 |
483 | var exported = content.locals ? content.locals : {};
484 |
485 |
486 | if (true) {
487 | if (!content.locals) {
488 | module.hot.accept(
489 | /*! !../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src??postcss!./site.css */ "./node_modules/css-loader/dist/cjs.js?!./node_modules/postcss-loader/src/index.js?!./src/site.css",
490 | function () {
491 | var newContent = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src??postcss!./site.css */ "./node_modules/css-loader/dist/cjs.js?!./node_modules/postcss-loader/src/index.js?!./src/site.css");
492 |
493 | newContent = newContent.__esModule ? newContent.default : newContent;
494 |
495 | if (typeof newContent === 'string') {
496 | newContent = [[module.i, newContent, '']];
497 | }
498 |
499 | update(newContent);
500 | }
501 | )
502 | }
503 |
504 | module.hot.dispose(function() {
505 | update();
506 | });
507 | }
508 |
509 | module.exports = exported;
510 |
511 | /***/ }),
512 |
513 | /***/ 0:
514 | /*!****************************!*\
515 | !*** multi ./src/index.js ***!
516 | \****************************/
517 | /*! no static exports found */
518 | /***/ (function(module, exports, __webpack_require__) {
519 |
520 | module.exports = __webpack_require__(/*! C:\Development\NET\Git\ASPNETCoreMVCwithReact\ClientApp\src\index.js */"./src/index.js");
521 |
522 |
523 | /***/ })
524 |
525 | },[[0,"runtime-main",0]]]);
526 | //# sourceMappingURL=main.chunk.js.map
--------------------------------------------------------------------------------
/ClientApp/build/static/js/main.chunk.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"file":"static/js/main.chunk.js","sources":["C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/site.css","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/App.js","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/components/Article/Article.js","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/components/Auxilary/Auxilary.js","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/components/LandingPage.js","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/index.js","C:/Development/NET/Git/ASPNETCoreMVCwithReact/ClientApp/src/registerServiceWorker.js","webpack:///./src/site.css?0fac"],"sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"* {\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Switch } from \"react-router-dom\";\r\nimport LandingPage from \"./components/LandingPage\";\r\nimport Article from \"./components/Article/Article\";\r\n\r\nexport default class App extends Component {\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n Requested content not found. Please check your URL. (React/client)
} />\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport axios from \"axios\";\r\n\r\nimport Auxilary from \"../Auxilary/Auxilary\";\r\n\r\nclass Article extends Component {\r\n\r\n state = {\r\n isLoading: true,\r\n isError: false,\r\n article: null\r\n }\r\n\r\n componentDidMount() {\r\n axios.get('/ArticleData/' + this.props.match.params.id)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n this.setState({ isLoading: false, article: response.data });\r\n } else {\r\n this.setState({ isLoading: false, isError: true });\r\n }\r\n },\r\n (error) => {\r\n this.setState({ isLoading: false, isError: true });\r\n console.log(error);\r\n })\r\n }\r\n\r\n static renderArticleContent(article) {\r\n return (\r\n \r\n \r\n \r\n {article.header}
\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n var content = \"Loading article ...\";\r\n if (this.state.isError) {\r\n content = \"Ooops... something went wrong. Please visit back a little bit later.\";\r\n } else if (!this.state.isLoading) {\r\n content = Article.renderArticleContent(this.state.article);\r\n }\r\n\r\n return (\r\n \r\n {content}\r\n
\r\n Back to Home\r\n \r\n );\r\n }\r\n\r\n}\r\n\r\nexport default Article;\r\n","const aux = (props) => props.children;\r\n\r\nexport default aux;\r\n","import React, { Component } from \"react\";\r\nimport { NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\n\r\nclass LandingPage extends Component {\r\n render() {\r\n return (\r\n \r\n
Landing page
\r\n
Article 1 - How to ...\r\n
Article 2 - Make it yourself\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default LandingPage;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport registerServiceWorker from './registerServiceWorker';\r\n\r\nimport \"./site.css\";\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\nregisterServiceWorker();\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","var api = require(\"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src/index.js??postcss!./site.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\nif (module.hot) {\n if (!content.locals) {\n module.hot.accept(\n \"!!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src/index.js??postcss!./site.css\",\n function () {\n var newContent = require(\"!!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-3-1!../node_modules/postcss-loader/src/index.js??postcss!./site.css\");\n\n newContent = newContent.__esModule ? newContent.default : newContent;\n\n if (typeof newContent === 'string') {\n newContent = [[module.id, newContent, '']];\n }\n\n update(newContent);\n }\n )\n }\n\n module.hot.dispose(function() { \n update();\n });\n}\n\nmodule.exports = exported;"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AAZA;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAHA;AAFA;AACA;AAOA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;AACA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAtDA;AACA;AAwDA;;;;;;;;;;;;AChEA;AAAA;AACA;AACA;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AAVA;AACA;AAWA;;;;;;;;;;;;;;;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA;AAEA;AAKA;AACA,eAqBA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;A","sourceRoot":""}
--------------------------------------------------------------------------------
/ClientApp/config/env.js:
--------------------------------------------------------------------------------
1 | // @remove-on-eject-begin
2 | /**
3 | * Copyright (c) 2015-present, Facebook, Inc.
4 | *
5 | * This source code is licensed under the MIT license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 | // @remove-on-eject-end
9 | 'use strict';
10 |
11 | const fs = require('fs');
12 | const path = require('path');
13 | const paths = require('./paths');
14 |
15 | // Make sure that including paths.js after env.js will read .env variables.
16 | delete require.cache[require.resolve('./paths')];
17 |
18 | const NODE_ENV = process.env.NODE_ENV;
19 | if (!NODE_ENV) {
20 | throw new Error(
21 | 'The NODE_ENV environment variable is required but was not specified.'
22 | );
23 | }
24 |
25 | // https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use
26 | const dotenvFiles = [
27 | `${paths.dotenv}.${NODE_ENV}.local`,
28 | `${paths.dotenv}.${NODE_ENV}`,
29 | // Don't include `.env.local` for `test` environment
30 | // since normally you expect tests to produce the same
31 | // results for everyone
32 | NODE_ENV !== 'test' && `${paths.dotenv}.local`,
33 | paths.dotenv,
34 | ].filter(Boolean);
35 |
36 | // Load environment variables from .env* files. Suppress warnings using silent
37 | // if this file is missing. dotenv will never modify any environment variables
38 | // that have already been set. Variable expansion is supported in .env files.
39 | // https://github.com/motdotla/dotenv
40 | // https://github.com/motdotla/dotenv-expand
41 | dotenvFiles.forEach(dotenvFile => {
42 | if (fs.existsSync(dotenvFile)) {
43 | require('dotenv-expand')(
44 | require('dotenv').config({
45 | path: dotenvFile,
46 | })
47 | );
48 | }
49 | });
50 |
51 | // We support resolving modules according to `NODE_PATH`.
52 | // This lets you use absolute paths in imports inside large monorepos:
53 | // https://github.com/facebook/create-react-app/issues/253.
54 | // It works similar to `NODE_PATH` in Node itself:
55 | // https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
56 | // Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored.
57 | // Otherwise, we risk importing Node.js core modules into an app instead of webpack shims.
58 | // https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421
59 | // We also resolve them to make sure all tools using them work consistently.
60 | const appDirectory = fs.realpathSync(process.cwd());
61 | process.env.NODE_PATH = (process.env.NODE_PATH || '')
62 | .split(path.delimiter)
63 | .filter(folder => folder && !path.isAbsolute(folder))
64 | .map(folder => path.resolve(appDirectory, folder))
65 | .join(path.delimiter);
66 |
67 | // Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be
68 | // injected into the application via DefinePlugin in webpack configuration.
69 | const REACT_APP = /^REACT_APP_/i;
70 |
71 | function getClientEnvironment(publicUrl) {
72 | const raw = Object.keys(process.env)
73 | .filter(key => REACT_APP.test(key))
74 | .reduce(
75 | (env, key) => {
76 | env[key] = process.env[key];
77 | return env;
78 | },
79 | {
80 | // Useful for determining whether we’re running in production mode.
81 | // Most importantly, it switches React into the correct mode.
82 | NODE_ENV: process.env.NODE_ENV || 'development',
83 | // Useful for resolving the correct path to static assets in `public`.
84 | // For example,
.
85 | // This should only be used as an escape hatch. Normally you would put
86 | // images into the `src` and `import` them in code to get their paths.
87 | PUBLIC_URL: publicUrl,
88 | // We support configuring the sockjs pathname during development.
89 | // These settings let a developer run multiple simultaneous projects.
90 | // They are used as the connection `hostname`, `pathname` and `port`
91 | // in webpackHotDevClient. They are used as the `sockHost`, `sockPath`
92 | // and `sockPort` options in webpack-dev-server.
93 | WDS_SOCKET_HOST: process.env.WDS_SOCKET_HOST,
94 | WDS_SOCKET_PATH: process.env.WDS_SOCKET_PATH,
95 | WDS_SOCKET_PORT: process.env.WDS_SOCKET_PORT,
96 | }
97 | );
98 | // Stringify all values so we can feed into webpack DefinePlugin
99 | const stringified = {
100 | 'process.env': Object.keys(raw).reduce((env, key) => {
101 | env[key] = JSON.stringify(raw[key]);
102 | return env;
103 | }, {}),
104 | };
105 |
106 | return { raw, stringified };
107 | }
108 |
109 | module.exports = getClientEnvironment;
110 |
--------------------------------------------------------------------------------
/ClientApp/config/jest/babelTransform.js:
--------------------------------------------------------------------------------
1 | // @remove-file-on-eject
2 | /**
3 | * Copyright (c) 2014-present, Facebook, Inc.
4 | *
5 | * This source code is licensed under the MIT license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 | 'use strict';
9 |
10 | const babelJest = require('babel-jest');
11 |
12 | module.exports = babelJest.createTransformer({
13 | presets: [require.resolve('babel-preset-react-app')],
14 | babelrc: false,
15 | configFile: false,
16 | });
17 |
--------------------------------------------------------------------------------
/ClientApp/config/jest/cssTransform.js:
--------------------------------------------------------------------------------
1 | // @remove-on-eject-begin
2 | /**
3 | * Copyright (c) 2014-present, Facebook, Inc.
4 | *
5 | * This source code is licensed under the MIT license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 | // @remove-on-eject-end
9 | 'use strict';
10 |
11 | // This is a custom Jest transformer turning style imports into empty objects.
12 | // http://facebook.github.io/jest/docs/en/webpack.html
13 |
14 | module.exports = {
15 | process() {
16 | return 'module.exports = {};';
17 | },
18 | getCacheKey() {
19 | // The output is always the same.
20 | return 'cssTransform';
21 | },
22 | };
23 |
--------------------------------------------------------------------------------
/ClientApp/config/jest/fileTransform.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const path = require('path');
4 | const camelcase = require('camelcase');
5 |
6 | // This is a custom Jest transformer turning file imports into filenames.
7 | // http://facebook.github.io/jest/docs/en/webpack.html
8 |
9 | module.exports = {
10 | process(src, filename) {
11 | const assetFilename = JSON.stringify(path.basename(filename));
12 |
13 | if (filename.match(/\.svg$/)) {
14 | // Based on how SVGR generates a component name:
15 | // https://github.com/smooth-code/svgr/blob/01b194cf967347d43d4cbe6b434404731b87cf27/packages/core/src/state.js#L6
16 | const pascalCaseFilename = camelcase(path.parse(filename).name, {
17 | pascalCase: true,
18 | });
19 | const componentName = `Svg${pascalCaseFilename}`;
20 | return `const React = require('react');
21 | module.exports = {
22 | __esModule: true,
23 | default: ${assetFilename},
24 | ReactComponent: React.forwardRef(function ${componentName}(props, ref) {
25 | return {
26 | $$typeof: Symbol.for('react.element'),
27 | type: 'svg',
28 | ref: ref,
29 | key: null,
30 | props: Object.assign({}, props, {
31 | children: ${assetFilename}
32 | })
33 | };
34 | }),
35 | };`;
36 | }
37 |
38 | return `module.exports = ${assetFilename};`;
39 | },
40 | };
41 |
--------------------------------------------------------------------------------
/ClientApp/config/modules.js:
--------------------------------------------------------------------------------
1 | // @remove-on-eject-begin
2 | /**
3 | * Copyright (c) 2015-present, Facebook, Inc.
4 | *
5 | * This source code is licensed under the MIT license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 | // @remove-on-eject-end
9 | 'use strict';
10 |
11 | const fs = require('fs');
12 | const path = require('path');
13 | const paths = require('./paths');
14 | const chalk = require('react-dev-utils/chalk');
15 | const resolve = require('resolve');
16 |
17 | /**
18 | * Get additional module paths based on the baseUrl of a compilerOptions object.
19 | *
20 | * @param {Object} options
21 | */
22 | function getAdditionalModulePaths(options = {}) {
23 | const baseUrl = options.baseUrl;
24 |
25 | // We need to explicitly check for null and undefined (and not a falsy value) because
26 | // TypeScript treats an empty string as `.`.
27 | if (baseUrl == null) {
28 | // If there's no baseUrl set we respect NODE_PATH
29 | // Note that NODE_PATH is deprecated and will be removed
30 | // in the next major release of create-react-app.
31 |
32 | const nodePath = process.env.NODE_PATH || '';
33 | return nodePath.split(path.delimiter).filter(Boolean);
34 | }
35 |
36 | const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
37 |
38 | // We don't need to do anything if `baseUrl` is set to `node_modules`. This is
39 | // the default behavior.
40 | if (path.relative(paths.appNodeModules, baseUrlResolved) === '') {
41 | return null;
42 | }
43 |
44 | // Allow the user set the `baseUrl` to `appSrc`.
45 | if (path.relative(paths.appSrc, baseUrlResolved) === '') {
46 | return [paths.appSrc];
47 | }
48 |
49 | // If the path is equal to the root directory we ignore it here.
50 | // We don't want to allow importing from the root directly as source files are
51 | // not transpiled outside of `src`. We do allow importing them with the
52 | // absolute path (e.g. `src/Components/Button.js`) but we set that up with
53 | // an alias.
54 | if (path.relative(paths.appPath, baseUrlResolved) === '') {
55 | return null;
56 | }
57 |
58 | // Otherwise, throw an error.
59 | throw new Error(
60 | chalk.red.bold(
61 | "Your project's `baseUrl` can only be set to `src` or `node_modules`." +
62 | ' Create React App does not support other values at this time.'
63 | )
64 | );
65 | }
66 |
67 | /**
68 | * Get webpack aliases based on the baseUrl of a compilerOptions object.
69 | *
70 | * @param {*} options
71 | */
72 | function getWebpackAliases(options = {}) {
73 | const baseUrl = options.baseUrl;
74 |
75 | if (!baseUrl) {
76 | return {};
77 | }
78 |
79 | const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
80 |
81 | if (path.relative(paths.appPath, baseUrlResolved) === '') {
82 | return {
83 | src: paths.appSrc,
84 | };
85 | }
86 | }
87 |
88 | /**
89 | * Get jest aliases based on the baseUrl of a compilerOptions object.
90 | *
91 | * @param {*} options
92 | */
93 | function getJestAliases(options = {}) {
94 | const baseUrl = options.baseUrl;
95 |
96 | if (!baseUrl) {
97 | return {};
98 | }
99 |
100 | const baseUrlResolved = path.resolve(paths.appPath, baseUrl);
101 |
102 | if (path.relative(paths.appPath, baseUrlResolved) === '') {
103 | return {
104 | '^src/(.*)$': '/src/$1',
105 | };
106 | }
107 | }
108 |
109 | function getModules() {
110 | // Check if TypeScript is setup
111 | const hasTsConfig = fs.existsSync(paths.appTsConfig);
112 | const hasJsConfig = fs.existsSync(paths.appJsConfig);
113 |
114 | if (hasTsConfig && hasJsConfig) {
115 | throw new Error(
116 | 'You have both a tsconfig.json and a jsconfig.json. If you are using TypeScript please remove your jsconfig.json file.'
117 | );
118 | }
119 |
120 | let config;
121 |
122 | // If there's a tsconfig.json we assume it's a
123 | // TypeScript project and set up the config
124 | // based on tsconfig.json
125 | if (hasTsConfig) {
126 | const ts = require(resolve.sync('typescript', {
127 | basedir: paths.appNodeModules,
128 | }));
129 | config = ts.readConfigFile(paths.appTsConfig, ts.sys.readFile).config;
130 | // Otherwise we'll check if there is jsconfig.json
131 | // for non TS projects.
132 | } else if (hasJsConfig) {
133 | config = require(paths.appJsConfig);
134 | }
135 |
136 | config = config || {};
137 | const options = config.compilerOptions || {};
138 |
139 | const additionalModulePaths = getAdditionalModulePaths(options);
140 |
141 | return {
142 | additionalModulePaths: additionalModulePaths,
143 | webpackAliases: getWebpackAliases(options),
144 | jestAliases: getJestAliases(options),
145 | hasTsConfig,
146 | };
147 | }
148 |
149 | module.exports = getModules();
150 |
--------------------------------------------------------------------------------
/ClientApp/config/paths.js:
--------------------------------------------------------------------------------
1 | // @remove-on-eject-begin
2 | /**
3 | * Copyright (c) 2015-present, Facebook, Inc.
4 | *
5 | * This source code is licensed under the MIT license found in the
6 | * LICENSE file in the root directory of this source tree.
7 | */
8 | // @remove-on-eject-end
9 | 'use strict';
10 |
11 | const path = require('path');
12 | const fs = require('fs');
13 | const getPublicUrlOrPath = require('react-dev-utils/getPublicUrlOrPath');
14 |
15 | // Make sure any symlinks in the project folder are resolved:
16 | // https://github.com/facebook/create-react-app/issues/637
17 | const appDirectory = fs.realpathSync(process.cwd());
18 | const resolveApp = relativePath => path.resolve(appDirectory, relativePath);
19 |
20 | // We use `PUBLIC_URL` environment variable or "homepage" field to infer
21 | // "public path" at which the app is served.
22 | // webpack needs to know it to put the right
54 | @{
55 | #endif
56 | }
57 |
58 |