From 10b4d0eb4658004c7f39461a19503bcaf6c59e39 Mon Sep 17 00:00:00 2001 From: StevenTCramer Date: Wed, 23 Mar 2022 06:43:38 +0000 Subject: [PATCH 1/9] Switch to a esproj from csproj remove wepack config. I am trying to use inbrowser imports and eliminate webpack --- .gitignore | 1 + BlazorState.sln | 19 +-- Source/BlazorState.Js/BlazorState.Js.csproj | 44 ------- Source/BlazorState.Js/BlazorState.Js.esproj | 45 +++++++ Source/BlazorState.Js/package.json | 30 ++--- Source/BlazorState.Js/src/BlazorState.ts | 4 +- Source/BlazorState.Js/src/ReduxDevTools.ts | 6 +- .../src/blazor-state.lib.module.ts | 38 ++++++ Source/BlazorState.Js/tsconfig.json | 111 ++++++++++++++++-- Source/BlazorState.Js/webpack.config.js | 25 ---- Source/BlazorState/BlazorState.csproj | 24 +--- .../wwwroot/blazor-state.lib.module.ts | 7 -- Tests/TestApp/Client/TestApp.Client.csproj | 1 - Tests/TestApp/Server/Pages/_Host.cshtml | 1 - 14 files changed, 213 insertions(+), 143 deletions(-) delete mode 100644 Source/BlazorState.Js/BlazorState.Js.csproj create mode 100644 Source/BlazorState.Js/BlazorState.Js.esproj create mode 100644 Source/BlazorState.Js/src/blazor-state.lib.module.ts delete mode 100644 Source/BlazorState.Js/webpack.config.js delete mode 100644 Source/BlazorState/wwwroot/blazor-state.lib.module.ts diff --git a/.gitignore b/.gitignore index b906bedd4..340a77713 100644 --- a/.gitignore +++ b/.gitignore @@ -302,3 +302,4 @@ __pycache__/ /StatiqDocs/output /Source/BlazorState/wwwroot/*.js /Source/BlazorState/wwwroot/*.js.map +/Source/BlazorState/wwwroot/js/ diff --git a/BlazorState.sln b/BlazorState.sln index 64407a5e6..f469dfa1b 100644 --- a/BlazorState.sln +++ b/BlazorState.sln @@ -5,8 +5,6 @@ VisualStudioVersion = 17.0.31808.319 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorState", "source\BlazorState\BlazorState.csproj", "{DF355720-EA1E-4505-AE68-1D36BD0D4711}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorState.Js", "source\BlazorState.Js\BlazorState.Js.csproj", "{51173297-32B7-473E-BA34-788B8E022536}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{2902FDFD-016E-4BF7-8B41-53D674FA53DD}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApp.Client", "Tests\TestApp\Client\TestApp.Client.csproj", "{C98290C5-6C90-4A36-A561-E96FF367727C}" @@ -40,6 +38,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Samples", "Samples", "{FA45 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tutorial", "Tutorial", "{243A5B2C-5E9D-432B-A258-7BCE33645683}" EndProject +Project("{54A90642-561A-4BB1-A94E-469ADEE60C69}") = "BlazorState.Js", "Source\BlazorState.Js\BlazorState.Js.esproj", "{1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -53,12 +53,6 @@ Global {DF355720-EA1E-4505-AE68-1D36BD0D4711}.ReduxDevToolsEnabled|Any CPU.Build.0 = ReduxDevToolsEnabled|Any CPU {DF355720-EA1E-4505-AE68-1D36BD0D4711}.Release|Any CPU.ActiveCfg = Release|Any CPU {DF355720-EA1E-4505-AE68-1D36BD0D4711}.Release|Any CPU.Build.0 = Release|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.Debug|Any CPU.Build.0 = Debug|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.ReduxDevToolsEnabled|Any CPU.ActiveCfg = ReduxDevToolsEnabled|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.ReduxDevToolsEnabled|Any CPU.Build.0 = ReduxDevToolsEnabled|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.Release|Any CPU.ActiveCfg = Release|Any CPU - {51173297-32B7-473E-BA34-788B8E022536}.Release|Any CPU.Build.0 = Release|Any CPU {C98290C5-6C90-4A36-A561-E96FF367727C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C98290C5-6C90-4A36-A561-E96FF367727C}.Debug|Any CPU.Build.0 = Debug|Any CPU {C98290C5-6C90-4A36-A561-E96FF367727C}.ReduxDevToolsEnabled|Any CPU.ActiveCfg = ReduxDevToolsEnabled|Any CPU @@ -95,6 +89,15 @@ Global {1F8DBDA6-780A-414E-8517-E96A1B9536E1}.ReduxDevToolsEnabled|Any CPU.Build.0 = ReduxDevToolsEnabled|Any CPU {1F8DBDA6-780A-414E-8517-E96A1B9536E1}.Release|Any CPU.ActiveCfg = Release|Any CPU {1F8DBDA6-780A-414E-8517-E96A1B9536E1}.Release|Any CPU.Build.0 = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.ReduxDevToolsEnabled|Any CPU.ActiveCfg = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.ReduxDevToolsEnabled|Any CPU.Build.0 = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.ReduxDevToolsEnabled|Any CPU.Deploy.0 = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Release|Any CPU.Build.0 = Release|Any CPU + {1A63F7FA-E718-4C0E-8548-76A2B7B41EDF}.Release|Any CPU.Deploy.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Source/BlazorState.Js/BlazorState.Js.csproj b/Source/BlazorState.Js/BlazorState.Js.csproj deleted file mode 100644 index 9066eb8bf..000000000 --- a/Source/BlazorState.Js/BlazorState.Js.csproj +++ /dev/null @@ -1,44 +0,0 @@ - - - - Library - false - false - true - Latest - ${DefaultItemExcludes};node_modules\** - CS2008 - - - true - Debug;Release;ReduxDevToolsEnabled - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - blazorstate.js - - - - - - - \ No newline at end of file diff --git a/Source/BlazorState.Js/BlazorState.Js.esproj b/Source/BlazorState.Js/BlazorState.Js.esproj new file mode 100644 index 000000000..f5384930f --- /dev/null +++ b/Source/BlazorState.Js/BlazorState.Js.esproj @@ -0,0 +1,45 @@ + + + 1A63F7FA-E718-4C0E-8548-76A2B7B41EDF + NU1503;NU1105 + npm run build + + + + + + + + diff --git a/Source/BlazorState.Js/package.json b/Source/BlazorState.Js/package.json index 129ca3244..9ef006360 100644 --- a/Source/BlazorState.Js/package.json +++ b/Source/BlazorState.Js/package.json @@ -1,17 +1,13 @@ -{ - "name": "blazorstate", - "version": "0.0.1", - "description": "", - "main": "index.js", - "scripts": { - "build": "webpack", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "devDependencies": { - "@types/emscripten": "1.39.6", - "ts-loader": "9.2.8", - "typescript": "4.6.2", - "webpack": "5.70.0", - "webpack-cli": "4.9.2" - } -} +{ + "name": "blazorstate", + "version": "0.0.1", + "description": "", + "scripts": { + "build": "tsc --build --verbose", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "devDependencies": { + "@types/emscripten": "1.39.6", + "typescript": "4.6.2" + } +} diff --git a/Source/BlazorState.Js/src/BlazorState.ts b/Source/BlazorState.Js/src/BlazorState.ts index 5a7eb9347..97c3c4946 100644 --- a/Source/BlazorState.Js/src/BlazorState.ts +++ b/Source/BlazorState.Js/src/BlazorState.ts @@ -1,4 +1,4 @@ -import { JsonRequestHandlerMethodName, JsonRequestHandlerName } from './Constants'; +import { JsonRequestHandlerMethodName, JsonRequestHandlerName } from './Constants.js'; export class BlazorState { async DispatchRequest(requestTypeFullName: string, request: any ) { @@ -7,4 +7,4 @@ export class BlazorState { console.log(`Dispatching request of Type ${requestTypeFullName}: ${requestAsJson}`); await (window[JsonRequestHandlerName]).invokeMethodAsync(JsonRequestHandlerMethodName, requestTypeFullName, requestAsJson); } -} \ No newline at end of file +} diff --git a/Source/BlazorState.Js/src/ReduxDevTools.ts b/Source/BlazorState.Js/src/ReduxDevTools.ts index e86b9d162..8af528f60 100644 --- a/Source/BlazorState.Js/src/ReduxDevTools.ts +++ b/Source/BlazorState.Js/src/ReduxDevTools.ts @@ -1,5 +1,5 @@ -import { BlazorState } from './BlazorState'; -import { BlazorStateName, ReduxExtensionName, DevToolsName, ReduxDevToolsName } from './Constants'; +import { BlazorState } from './BlazorState.js'; +import { BlazorStateName, ReduxExtensionName, DevToolsName, ReduxDevToolsName } from './Constants.js'; export class ReduxDevTools { IsEnabled: boolean; @@ -108,4 +108,4 @@ export class ReduxDevTools { return window[DevToolsName].send(action, state); } } -} \ No newline at end of file +} diff --git a/Source/BlazorState.Js/src/blazor-state.lib.module.ts b/Source/BlazorState.Js/src/blazor-state.lib.module.ts new file mode 100644 index 000000000..5fa756477 --- /dev/null +++ b/Source/BlazorState.Js/src/blazor-state.lib.module.ts @@ -0,0 +1,38 @@ +import { BlazorState } from './BlazorState.js'; +import { ReduxDevTools } from './ReduxDevTools.js'; +import { + BlazorStateName, + InitializeJavaScriptInteropName, + JsonRequestHandlerName, + ReduxDevToolsFactoryName, + ReduxDevToolsName, +} from './Constants.js'; + +function InitializeJavaScriptInterop(JsonRequestHandler) { + console.log("InitializeJavaScriptInterop"); + window[JsonRequestHandlerName] = JsonRequestHandler; +}; + +function Initialize() { + console.log("Initialize BlazorState"); + if (typeof window !== 'undefined' && !window[BlazorStateName]) { + window[BlazorStateName] = new BlazorState(); + window[InitializeJavaScriptInteropName] = InitializeJavaScriptInterop; + window[ReduxDevToolsFactoryName] = ReduxDevToolsFactory; + } +} + +function ReduxDevToolsFactory(): boolean { + const reduxDevTools = new ReduxDevTools(); + window[ReduxDevToolsName] = reduxDevTools; + return reduxDevTools.IsEnabled; +} + +export function beforeStart(options, extensions) { + Initialize(); + console.log("****beforeStart timewarp-state ****"); +} + +export function afterStarted(blazor) { + console.log("****afterStarted timewarp-state ****"); +} diff --git a/Source/BlazorState.Js/tsconfig.json b/Source/BlazorState.Js/tsconfig.json index b23cff731..cced0dbe9 100644 --- a/Source/BlazorState.Js/tsconfig.json +++ b/Source/BlazorState.Js/tsconfig.json @@ -1,17 +1,102 @@ { "compilerOptions": { - "noImplicitAny": false, - "noEmitOnError": true, - "removeComments": false, - "sourceMap": true, - "target": "es6", - "module": "commonjs", - "lib": [ "es2016", "dom" ], - "strict": true, - "alwaysStrict": true, - "preserveConstEnums": true + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "ES2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "ES2022" /* Specify what module code is generated. */, + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "resolveJsonModule": true, /* Enable importing .json files */ + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + //"outFile": "./Web.Spa/wwwroot/js/blazorstate.js", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + "outDir": "../BlazorState/wwwroot/js" /* Specify an output folder for all emitted files. */, + "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + + /* Type Checking */ + "strict": true /* Enable all strict type-checking options. */, + "noImplicitAny": false /* Enable error reporting for expressions and declarations with an implied `any` type.. */, + "strictNullChecks": true /* When type checking, take into account `null` and `undefined`. */, + "strictFunctionTypes": true /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */, + "strictBindCallApply": true /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */, + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + "noImplicitThis": true /* Enable error reporting when `this` is given the type `any`. */, + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + "alwaysStrict": true /* Ensure 'use strict' is always emitted. */, + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "exclude": [ - "node_modules" - ] + "include": [ "./src/**/*" ] } diff --git a/Source/BlazorState.Js/webpack.config.js b/Source/BlazorState.Js/webpack.config.js deleted file mode 100644 index 1cd722e3b..000000000 --- a/Source/BlazorState.Js/webpack.config.js +++ /dev/null @@ -1,25 +0,0 @@ -const path = require("path"); -const webpack = require("webpack"); - -module.exports = { - mode: 'production', - resolve: { - extensions: [".ts", ".js"] - }, - devtool: "inline-source-map", - module: { - rules: [ - { - test: /\.ts?$/, - loader: "ts-loader" - } - ] - }, - entry: { - "blazorstate": "./src/Initialize.ts" - }, - output: { - path: path.join(__dirname, "../BlazorState/wwwroot"), - filename: "[name].js" - } -}; \ No newline at end of file diff --git a/Source/BlazorState/BlazorState.csproj b/Source/BlazorState/BlazorState.csproj index 781b6388d..70abf106e 100644 --- a/Source/BlazorState/BlazorState.csproj +++ b/Source/BlazorState/BlazorState.csproj @@ -1,16 +1,4 @@  - - ESNext - - - - ESNext - - - - ESNext - - @@ -32,10 +20,6 @@ false - - - - @@ -75,10 +59,6 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - @@ -93,7 +73,7 @@ - + - \ No newline at end of file + diff --git a/Source/BlazorState/wwwroot/blazor-state.lib.module.ts b/Source/BlazorState/wwwroot/blazor-state.lib.module.ts deleted file mode 100644 index c22796dd6..000000000 --- a/Source/BlazorState/wwwroot/blazor-state.lib.module.ts +++ /dev/null @@ -1,7 +0,0 @@ -export function beforeStart(options, extensions) { - console.log("****beforeStart timewarp-state ****"); -} - -export function afterStarted(blazor) { - console.log("****afterStarted timewarp-state ****"); -} \ No newline at end of file diff --git a/Tests/TestApp/Client/TestApp.Client.csproj b/Tests/TestApp/Client/TestApp.Client.csproj index 3143620e0..93e2fe1ab 100644 --- a/Tests/TestApp/Client/TestApp.Client.csproj +++ b/Tests/TestApp/Client/TestApp.Client.csproj @@ -21,7 +21,6 @@ - diff --git a/Tests/TestApp/Server/Pages/_Host.cshtml b/Tests/TestApp/Server/Pages/_Host.cshtml index b465266ac..7b814a490 100644 --- a/Tests/TestApp/Server/Pages/_Host.cshtml +++ b/Tests/TestApp/Server/Pages/_Host.cshtml @@ -23,7 +23,6 @@
@(await Html.RenderComponentAsync(RenderMode.Server))
- From dca48a63193bf03f76cc4b13e22fb4d5b2b3f08e Mon Sep 17 00:00:00 2001 From: StevenTCramer Date: Wed, 23 Mar 2022 07:49:29 +0000 Subject: [PATCH 3/9] Use the new JavaScript initializers --- Source/BlazorState.Js/src/BlazorState.ts | 5 +++ Source/BlazorState.Js/src/DotNet.ts | 6 ---- Source/BlazorState.Js/src/Initialize.ts | 32 ------------------- Source/BlazorState.Js/src/ReduxDevTools.ts | 4 +-- .../src/blazor-state.lib.module.ts | 1 - ...opTest.js => TestApp.Client.lib.module.js} | 13 ++++++-- Tests/TestApp/Server/Pages/_Host.cshtml | 1 - 7 files changed, 18 insertions(+), 44 deletions(-) delete mode 100644 Source/BlazorState.Js/src/DotNet.ts delete mode 100644 Source/BlazorState.Js/src/Initialize.ts rename Tests/TestApp/Client/wwwroot/{InteropTest.js => TestApp.Client.lib.module.js} (58%) diff --git a/Source/BlazorState.Js/src/BlazorState.ts b/Source/BlazorState.Js/src/BlazorState.ts index 97c3c4946..cc185fd5c 100644 --- a/Source/BlazorState.Js/src/BlazorState.ts +++ b/Source/BlazorState.Js/src/BlazorState.ts @@ -1,6 +1,9 @@ import { JsonRequestHandlerMethodName, JsonRequestHandlerName } from './Constants.js'; export class BlazorState { + + jsonRequestHandler: any; + async DispatchRequest(requestTypeFullName: string, request: any ) { const requestAsJson = JSON.stringify(request); @@ -8,3 +11,5 @@ export class BlazorState { await (window[JsonRequestHandlerName]).invokeMethodAsync(JsonRequestHandlerMethodName, requestTypeFullName, requestAsJson); } } + +export const blazorState = new BlazorState(); diff --git a/Source/BlazorState.Js/src/DotNet.ts b/Source/BlazorState.Js/src/DotNet.ts deleted file mode 100644 index c2539589f..000000000 --- a/Source/BlazorState.Js/src/DotNet.ts +++ /dev/null @@ -1,6 +0,0 @@ -type DotNetType = { - invokeMethod(assemblyName: string, methodIdentifier: string, ...args: any[]): T, - invokeMethodAsync(assemblyName: string, methodIdentifier: string, ...args: any[]): Promise -} - -export const DotNet: DotNetType = window["DotNet"]; \ No newline at end of file diff --git a/Source/BlazorState.Js/src/Initialize.ts b/Source/BlazorState.Js/src/Initialize.ts deleted file mode 100644 index 7084e4caa..000000000 --- a/Source/BlazorState.Js/src/Initialize.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { BlazorState } from './BlazorState'; -import { ReduxDevTools} from './ReduxDevTools'; -import { - BlazorStateName, - InitializeJavaScriptInteropName, - JsonRequestHandlerName, - ReduxDevToolsFactoryName, - ReduxDevToolsName, -} from './Constants'; - -function InitializeJavaScriptInterop(JsonRequestHandler) { - console.log("InitializeJavaScriptInterop"); - window[JsonRequestHandlerName] = JsonRequestHandler; -}; - - -function Initialize() { - console.log("Initialize BlazorState"); - if (typeof window !== 'undefined' && !window[BlazorStateName]) { - window[BlazorStateName] = new BlazorState(); - window[InitializeJavaScriptInteropName] = InitializeJavaScriptInterop; - window[ReduxDevToolsFactoryName] = ReduxDevToolsFactory; - } -} - -function ReduxDevToolsFactory(): boolean { - const reduxDevTools = new ReduxDevTools(); - window[ReduxDevToolsName] = reduxDevTools; - return reduxDevTools.IsEnabled; -} - -Initialize(); \ No newline at end of file diff --git a/Source/BlazorState.Js/src/ReduxDevTools.ts b/Source/BlazorState.Js/src/ReduxDevTools.ts index 8af528f60..74843ba34 100644 --- a/Source/BlazorState.Js/src/ReduxDevTools.ts +++ b/Source/BlazorState.Js/src/ReduxDevTools.ts @@ -1,4 +1,4 @@ -import { BlazorState } from './BlazorState.js'; +import { blazorState, BlazorState } from './BlazorState.js'; import { BlazorStateName, ReduxExtensionName, DevToolsName, ReduxDevToolsName } from './Constants.js'; export class ReduxDevTools { @@ -9,7 +9,7 @@ export class ReduxDevTools { BlazorState: BlazorState; constructor() { - this.BlazorState = window[BlazorStateName]; // Depends on this functionality + this.BlazorState = blazorState; this.Config = { name: 'Blazor State', features: { diff --git a/Source/BlazorState.Js/src/blazor-state.lib.module.ts b/Source/BlazorState.Js/src/blazor-state.lib.module.ts index 5fa756477..200190652 100644 --- a/Source/BlazorState.Js/src/blazor-state.lib.module.ts +++ b/Source/BlazorState.Js/src/blazor-state.lib.module.ts @@ -16,7 +16,6 @@ function InitializeJavaScriptInterop(JsonRequestHandler) { function Initialize() { console.log("Initialize BlazorState"); if (typeof window !== 'undefined' && !window[BlazorStateName]) { - window[BlazorStateName] = new BlazorState(); window[InitializeJavaScriptInteropName] = InitializeJavaScriptInterop; window[ReduxDevToolsFactoryName] = ReduxDevToolsFactory; } diff --git a/Tests/TestApp/Client/wwwroot/InteropTest.js b/Tests/TestApp/Client/wwwroot/TestApp.Client.lib.module.js similarity index 58% rename from Tests/TestApp/Client/wwwroot/InteropTest.js rename to Tests/TestApp/Client/wwwroot/TestApp.Client.lib.module.js index ab0a7fadc..551420593 100644 --- a/Tests/TestApp/Client/wwwroot/InteropTest.js +++ b/Tests/TestApp/Client/wwwroot/TestApp.Client.lib.module.js @@ -1,7 +1,9 @@ +import { blazorState } from '/_content/Blazor-State/js/BlazorState.js' + const dispatchIncrementCountAction = () => { console.log("%cdispatchIncrementCountAction", "color: green"); const IncrementCountActionName = "TestApp.Client.Features.Counter.CounterState+IncrementCounterAction, TestApp.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"; - const blazorState = window["BlazorState"]; + //const blazorState = window["BlazorState"]; blazorState.DispatchRequest(IncrementCountActionName, { amount: 7 }); }; @@ -10,4 +12,11 @@ function initialize() { window["InteropTest"] = dispatchIncrementCountAction; } -initialize(); \ No newline at end of file +export function beforeStart(options, extensions) { + initialize(); + console.log("****beforeStart TestApp.Client ****"); +} + +export function afterStarted(blazor) { + console.log("****afterStarted TestApp.Client ****"); +} diff --git a/Tests/TestApp/Server/Pages/_Host.cshtml b/Tests/TestApp/Server/Pages/_Host.cshtml index 7b814a490..643b9f779 100644 --- a/Tests/TestApp/Server/Pages/_Host.cshtml +++ b/Tests/TestApp/Server/Pages/_Host.cshtml @@ -24,7 +24,6 @@
@(await Html.RenderComponentAsync(RenderMode.Server))
-