piral-blazor 1.0.0-pre.2217 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +55 -12
  3. package/convert.d.ts +13 -10
  4. package/convert.js +17 -12
  5. package/esm/converter.d.ts +10 -6
  6. package/esm/converter.js +164 -48
  7. package/esm/converter.js.map +1 -1
  8. package/esm/create.d.ts +21 -1
  9. package/esm/create.js +29 -15
  10. package/esm/create.js.map +1 -1
  11. package/esm/dependencies.d.ts +6 -3
  12. package/esm/dependencies.js +104 -14
  13. package/esm/dependencies.js.map +1 -1
  14. package/esm/events.d.ts +6 -0
  15. package/esm/events.js +145 -0
  16. package/esm/events.js.map +1 -0
  17. package/esm/interop.d.ts +29 -0
  18. package/esm/interop.js +205 -0
  19. package/esm/interop.js.map +1 -0
  20. package/esm/navigation.d.ts +2 -0
  21. package/esm/navigation.js +30 -0
  22. package/esm/navigation.js.map +1 -0
  23. package/esm/types.d.ts +97 -4
  24. package/infra.codegen +53 -68
  25. package/lib/converter.d.ts +10 -6
  26. package/lib/converter.js +164 -48
  27. package/lib/converter.js.map +1 -1
  28. package/lib/create.d.ts +21 -1
  29. package/lib/create.js +31 -17
  30. package/lib/create.js.map +1 -1
  31. package/lib/dependencies.d.ts +6 -3
  32. package/lib/dependencies.js +104 -14
  33. package/lib/dependencies.js.map +1 -1
  34. package/lib/events.d.ts +6 -0
  35. package/lib/events.js +154 -0
  36. package/lib/events.js.map +1 -0
  37. package/lib/index.js +1 -1
  38. package/lib/interop.d.ts +29 -0
  39. package/lib/interop.js +226 -0
  40. package/lib/interop.js.map +1 -0
  41. package/lib/navigation.d.ts +2 -0
  42. package/lib/navigation.js +35 -0
  43. package/lib/navigation.js.map +1 -0
  44. package/lib/types.d.ts +97 -4
  45. package/package.json +26 -13
  46. package/src/converter.ts +237 -57
  47. package/src/create.ts +53 -9
  48. package/src/dependencies.ts +122 -14
  49. package/src/events.ts +174 -0
  50. package/src/interop.ts +273 -0
  51. package/src/navigation.ts +36 -0
  52. package/src/types.ts +115 -4
  53. package/convert.ts +0 -17
  54. package/esm/internal/Environment.d.ts +0 -3
  55. package/esm/internal/Environment.js +0 -6
  56. package/esm/internal/Environment.js.map +0 -1
  57. package/esm/internal/Platform/BootConfig.d.ts +0 -20
  58. package/esm/internal/Platform/BootConfig.js +0 -10
  59. package/esm/internal/Platform/BootConfig.js.map +0 -1
  60. package/esm/internal/Platform/Mono/MonoDebugger.d.ts +0 -3
  61. package/esm/internal/Platform/Mono/MonoDebugger.js +0 -43
  62. package/esm/internal/Platform/Mono/MonoDebugger.js.map +0 -1
  63. package/esm/internal/Platform/Mono/MonoPlatform.d.ts +0 -2
  64. package/esm/internal/Platform/Mono/MonoPlatform.js +0 -403
  65. package/esm/internal/Platform/Mono/MonoPlatform.js.map +0 -1
  66. package/esm/internal/Platform/Mono/TimezoneDataFile.d.ts +0 -1
  67. package/esm/internal/Platform/Mono/TimezoneDataFile.js +0 -51
  68. package/esm/internal/Platform/Mono/TimezoneDataFile.js.map +0 -1
  69. package/esm/internal/Platform/Platform.d.ts +0 -31
  70. package/esm/internal/Platform/Platform.js +0 -2
  71. package/esm/internal/Platform/Platform.js.map +0 -1
  72. package/esm/internal/Platform/Url.d.ts +0 -2
  73. package/esm/internal/Platform/Url.js +0 -11
  74. package/esm/internal/Platform/Url.js.map +0 -1
  75. package/esm/internal/Platform/WebAssemblyConfigLoader.d.ts +0 -4
  76. package/esm/internal/Platform/WebAssemblyConfigLoader.js +0 -64
  77. package/esm/internal/Platform/WebAssemblyConfigLoader.js.map +0 -1
  78. package/esm/internal/Platform/WebAssemblyResourceLoader.d.ts +0 -24
  79. package/esm/internal/Platform/WebAssemblyResourceLoader.js +0 -223
  80. package/esm/internal/Platform/WebAssemblyResourceLoader.js.map +0 -1
  81. package/esm/internal/Platform/WebAssemblyStartOptions.d.ts +0 -13
  82. package/esm/internal/Platform/WebAssemblyStartOptions.js +0 -2
  83. package/esm/internal/Platform/WebAssemblyStartOptions.js.map +0 -1
  84. package/esm/internal/Rendering/BrowserRenderer.d.ts +0 -38
  85. package/esm/internal/Rendering/BrowserRenderer.js +0 -458
  86. package/esm/internal/Rendering/BrowserRenderer.js.map +0 -1
  87. package/esm/internal/Rendering/ElementReferenceCapture.d.ts +0 -1
  88. package/esm/internal/Rendering/ElementReferenceCapture.js +0 -24
  89. package/esm/internal/Rendering/ElementReferenceCapture.js.map +0 -1
  90. package/esm/internal/Rendering/EventDelegator.d.ts +0 -20
  91. package/esm/internal/Rendering/EventDelegator.js +0 -236
  92. package/esm/internal/Rendering/EventDelegator.js.map +0 -1
  93. package/esm/internal/Rendering/EventFieldInfo.d.ts +0 -6
  94. package/esm/internal/Rendering/EventFieldInfo.js +0 -32
  95. package/esm/internal/Rendering/EventFieldInfo.js.map +0 -1
  96. package/esm/internal/Rendering/EventForDotNet.d.ts +0 -10
  97. package/esm/internal/Rendering/EventForDotNet.js +0 -194
  98. package/esm/internal/Rendering/EventForDotNet.js.map +0 -1
  99. package/esm/internal/Rendering/LogicalElements.d.ts +0 -19
  100. package/esm/internal/Rendering/LogicalElements.js +0 -250
  101. package/esm/internal/Rendering/LogicalElements.js.map +0 -1
  102. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.d.ts +0 -5
  103. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.js +0 -34
  104. package/esm/internal/Rendering/RenderBatch/BinaryDecoder.js.map +0 -1
  105. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.d.ts +0 -18
  106. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js +0 -190
  107. package/esm/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js.map +0 -1
  108. package/esm/internal/Rendering/RenderBatch/RenderBatch.d.ts +0 -87
  109. package/esm/internal/Rendering/RenderBatch/RenderBatch.js +0 -26
  110. package/esm/internal/Rendering/RenderBatch/RenderBatch.js.map +0 -1
  111. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.d.ts +0 -52
  112. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js +0 -103
  113. package/esm/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js.map +0 -1
  114. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.d.ts +0 -1
  115. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.js +0 -63
  116. package/esm/internal/Rendering/RenderBatch/Utf8Decoder.js.map +0 -1
  117. package/esm/internal/Rendering/Renderer.d.ts +0 -8
  118. package/esm/internal/Rendering/Renderer.js +0 -69
  119. package/esm/internal/Rendering/Renderer.js.map +0 -1
  120. package/esm/internal/Rendering/RendererEventDispatcher.d.ts +0 -4
  121. package/esm/internal/Rendering/RendererEventDispatcher.js +0 -11
  122. package/esm/internal/Rendering/RendererEventDispatcher.js.map +0 -1
  123. package/esm/internal/Services/NavigationManager.d.ts +0 -16
  124. package/esm/internal/Services/NavigationManager.js +0 -138
  125. package/esm/internal/Services/NavigationManager.js.map +0 -1
  126. package/esm/internal/globals.d.ts +0 -1
  127. package/esm/internal/globals.js +0 -5
  128. package/esm/internal/globals.js.map +0 -1
  129. package/esm/internal/index.d.ts +0 -15
  130. package/esm/internal/index.js +0 -152
  131. package/esm/internal/index.js.map +0 -1
  132. package/lib/internal/Environment.d.ts +0 -3
  133. package/lib/internal/Environment.js +0 -9
  134. package/lib/internal/Environment.js.map +0 -1
  135. package/lib/internal/Platform/BootConfig.d.ts +0 -20
  136. package/lib/internal/Platform/BootConfig.js +0 -13
  137. package/lib/internal/Platform/BootConfig.js.map +0 -1
  138. package/lib/internal/Platform/Mono/MonoDebugger.d.ts +0 -3
  139. package/lib/internal/Platform/Mono/MonoDebugger.js +0 -48
  140. package/lib/internal/Platform/Mono/MonoDebugger.js.map +0 -1
  141. package/lib/internal/Platform/Mono/MonoPlatform.d.ts +0 -2
  142. package/lib/internal/Platform/Mono/MonoPlatform.js +0 -406
  143. package/lib/internal/Platform/Mono/MonoPlatform.js.map +0 -1
  144. package/lib/internal/Platform/Mono/TimezoneDataFile.d.ts +0 -1
  145. package/lib/internal/Platform/Mono/TimezoneDataFile.js +0 -55
  146. package/lib/internal/Platform/Mono/TimezoneDataFile.js.map +0 -1
  147. package/lib/internal/Platform/Platform.d.ts +0 -31
  148. package/lib/internal/Platform/Platform.js +0 -3
  149. package/lib/internal/Platform/Platform.js.map +0 -1
  150. package/lib/internal/Platform/Url.d.ts +0 -2
  151. package/lib/internal/Platform/Url.js +0 -16
  152. package/lib/internal/Platform/Url.js.map +0 -1
  153. package/lib/internal/Platform/WebAssemblyConfigLoader.d.ts +0 -4
  154. package/lib/internal/Platform/WebAssemblyConfigLoader.js +0 -67
  155. package/lib/internal/Platform/WebAssemblyConfigLoader.js.map +0 -1
  156. package/lib/internal/Platform/WebAssemblyResourceLoader.d.ts +0 -24
  157. package/lib/internal/Platform/WebAssemblyResourceLoader.js +0 -226
  158. package/lib/internal/Platform/WebAssemblyResourceLoader.js.map +0 -1
  159. package/lib/internal/Platform/WebAssemblyStartOptions.d.ts +0 -13
  160. package/lib/internal/Platform/WebAssemblyStartOptions.js +0 -3
  161. package/lib/internal/Platform/WebAssemblyStartOptions.js.map +0 -1
  162. package/lib/internal/Rendering/BrowserRenderer.d.ts +0 -38
  163. package/lib/internal/Rendering/BrowserRenderer.js +0 -461
  164. package/lib/internal/Rendering/BrowserRenderer.js.map +0 -1
  165. package/lib/internal/Rendering/ElementReferenceCapture.d.ts +0 -1
  166. package/lib/internal/Rendering/ElementReferenceCapture.js +0 -28
  167. package/lib/internal/Rendering/ElementReferenceCapture.js.map +0 -1
  168. package/lib/internal/Rendering/EventDelegator.d.ts +0 -20
  169. package/lib/internal/Rendering/EventDelegator.js +0 -239
  170. package/lib/internal/Rendering/EventDelegator.js.map +0 -1
  171. package/lib/internal/Rendering/EventFieldInfo.d.ts +0 -6
  172. package/lib/internal/Rendering/EventFieldInfo.js +0 -35
  173. package/lib/internal/Rendering/EventFieldInfo.js.map +0 -1
  174. package/lib/internal/Rendering/EventForDotNet.d.ts +0 -10
  175. package/lib/internal/Rendering/EventForDotNet.js +0 -197
  176. package/lib/internal/Rendering/EventForDotNet.js.map +0 -1
  177. package/lib/internal/Rendering/LogicalElements.d.ts +0 -19
  178. package/lib/internal/Rendering/LogicalElements.js +0 -265
  179. package/lib/internal/Rendering/LogicalElements.js.map +0 -1
  180. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.d.ts +0 -5
  181. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.js +0 -42
  182. package/lib/internal/Rendering/RenderBatch/BinaryDecoder.js.map +0 -1
  183. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.d.ts +0 -18
  184. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js +0 -193
  185. package/lib/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.js.map +0 -1
  186. package/lib/internal/Rendering/RenderBatch/RenderBatch.d.ts +0 -87
  187. package/lib/internal/Rendering/RenderBatch/RenderBatch.js +0 -29
  188. package/lib/internal/Rendering/RenderBatch/RenderBatch.js.map +0 -1
  189. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.d.ts +0 -52
  190. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js +0 -106
  191. package/lib/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.js.map +0 -1
  192. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.d.ts +0 -1
  193. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.js +0 -66
  194. package/lib/internal/Rendering/RenderBatch/Utf8Decoder.js.map +0 -1
  195. package/lib/internal/Rendering/Renderer.d.ts +0 -8
  196. package/lib/internal/Rendering/Renderer.js +0 -76
  197. package/lib/internal/Rendering/Renderer.js.map +0 -1
  198. package/lib/internal/Rendering/RendererEventDispatcher.d.ts +0 -4
  199. package/lib/internal/Rendering/RendererEventDispatcher.js +0 -16
  200. package/lib/internal/Rendering/RendererEventDispatcher.js.map +0 -1
  201. package/lib/internal/Services/NavigationManager.d.ts +0 -16
  202. package/lib/internal/Services/NavigationManager.js +0 -144
  203. package/lib/internal/Services/NavigationManager.js.map +0 -1
  204. package/lib/internal/globals.d.ts +0 -1
  205. package/lib/internal/globals.js +0 -7
  206. package/lib/internal/globals.js.map +0 -1
  207. package/lib/internal/index.d.ts +0 -15
  208. package/lib/internal/index.js +0 -161
  209. package/lib/internal/index.js.map +0 -1
  210. package/src/internal/Environment.ts +0 -11
  211. package/src/internal/Platform/BootConfig.ts +0 -21
  212. package/src/internal/Platform/Mono/MonoDebugger.ts +0 -48
  213. package/src/internal/Platform/Mono/MonoPlatform.ts +0 -494
  214. package/src/internal/Platform/Mono/MonoTypes.d.ts +0 -27
  215. package/src/internal/Platform/Mono/TimezoneDataFile.ts +0 -46
  216. package/src/internal/Platform/Platform.ts +0 -40
  217. package/src/internal/Platform/Url.ts +0 -11
  218. package/src/internal/Platform/WebAssemblyConfigLoader.ts +0 -34
  219. package/src/internal/Platform/WebAssemblyResourceLoader.ts +0 -234
  220. package/src/internal/Platform/WebAssemblyStartOptions.ts +0 -22
  221. package/src/internal/Rendering/BrowserRenderer.ts +0 -616
  222. package/src/internal/Rendering/ElementReferenceCapture.ts +0 -27
  223. package/src/internal/Rendering/EventDelegator.ts +0 -293
  224. package/src/internal/Rendering/EventFieldInfo.ts +0 -31
  225. package/src/internal/Rendering/EventForDotNet.ts +0 -370
  226. package/src/internal/Rendering/LogicalElements.ts +0 -289
  227. package/src/internal/Rendering/RenderBatch/BinaryDecoder.ts +0 -43
  228. package/src/internal/Rendering/RenderBatch/OutOfProcessRenderBatch.ts +0 -244
  229. package/src/internal/Rendering/RenderBatch/RenderBatch.ts +0 -100
  230. package/src/internal/Rendering/RenderBatch/SharedMemoryRenderBatch.ts +0 -137
  231. package/src/internal/Rendering/RenderBatch/Utf8Decoder.ts +0 -66
  232. package/src/internal/Rendering/Renderer.ts +0 -98
  233. package/src/internal/Rendering/RendererEventDispatcher.ts +0 -20
  234. package/src/internal/Services/NavigationManager.ts +0 -157
  235. package/src/internal/globals.ts +0 -5
  236. package/src/internal/index.ts +0 -170
package/esm/types.d.ts CHANGED
@@ -1,4 +1,60 @@
1
- import type { ForeignComponent } from 'piral-core';
1
+ import type { ForeignComponent, PiletApi } from 'piral-core';
2
+ export type BlazorRootConfig = [
3
+ root: HTMLDivElement,
4
+ capabilities: Array<string>,
5
+ applyChanges: (pilet: PiletApi) => void
6
+ ];
7
+ export interface BlazorDependencyLoader {
8
+ (config: BlazorRootConfig): Promise<void>;
9
+ }
10
+ export type WebAssemblyBootResourceType = 'assembly' | 'pdb' | 'dotnetjs' | 'dotnetwasm' | 'globalization' | 'manifest';
11
+ export interface WebAssemblyStartOptions {
12
+ /**
13
+ * Overrides the built-in boot resource loading mechanism so that boot resources can be fetched
14
+ * from a custom source, such as an external CDN.
15
+ * @param type The type of the resource to be loaded.
16
+ * @param name The name of the resource to be loaded.
17
+ * @param defaultUri The URI from which the framework would fetch the resource by default. The URI may be relative or absolute.
18
+ * @param integrity The integrity string representing the expected content in the response.
19
+ * @returns A URI string or a Response promise to override the loading process, or null/undefined to allow the default loading behavior.
20
+ */
21
+ loadBootResource?(type: WebAssemblyBootResourceType, name: string, defaultUri: string, integrity: string): string | Promise<Response> | null | undefined;
22
+ /**
23
+ * Override built-in environment setting on start.
24
+ */
25
+ environment?: string;
26
+ /**
27
+ * Gets the application culture. This is a name specified in the BCP 47 format. See https://tools.ietf.org/html/bcp47
28
+ */
29
+ applicationCulture?: string;
30
+ }
31
+ declare global {
32
+ interface Window {
33
+ Blazor: {
34
+ start(options?: Partial<WebAssemblyStartOptions>): Promise<void>;
35
+ emitPiralEvent(type: string, args: any): void;
36
+ emitRenderEvent(source: HTMLElement, name: string, params: any, sourceRef: any, fallbackComponent: string | null): void;
37
+ emitNavigateEvent(target: Element, path: string, replace?: boolean, state?: any): void;
38
+ _internal: {
39
+ navigationManager: any;
40
+ applyHotReload: any;
41
+ NavigationLock: any;
42
+ };
43
+ };
44
+ DotNet: any;
45
+ $blazorLoader: Promise<BlazorRootConfig>;
46
+ $blazorDependencyPrios: Array<{
47
+ prio: number;
48
+ load(): Promise<void>;
49
+ }>;
50
+ $blazorDependencies: Array<{
51
+ name: string;
52
+ url: string;
53
+ count: number;
54
+ promise: Promise<void>;
55
+ }>;
56
+ }
57
+ }
2
58
  declare module 'piral-core/lib/types/custom' {
3
59
  interface PiletCustomApi extends PiletBlazorApi {
4
60
  }
@@ -6,6 +62,24 @@ declare module 'piral-core/lib/types/custom' {
6
62
  blazor(component: BlazorComponent): ForeignComponent<TProps>;
7
63
  }
8
64
  }
65
+ export declare const enum BlazorLogLevel {
66
+ trace = 0,
67
+ debug = 1,
68
+ info = 2,
69
+ warn = 3,
70
+ error = 4,
71
+ critical = 5,
72
+ none = 6
73
+ }
74
+ /**
75
+ * Additional options for the Blazor component
76
+ */
77
+ export interface BlazorOptions {
78
+ /**
79
+ * The root path where resources are located.
80
+ */
81
+ resourcePathRoot?: string;
82
+ }
9
83
  export interface BlazorComponent {
10
84
  /**
11
85
  * The name of the Blazor module to render.
@@ -19,26 +93,45 @@ export interface BlazorComponent {
19
93
  * An optional dependency that needs to load before
20
94
  * the component can be properly displayed.
21
95
  */
22
- dependency?: () => Promise<void>;
96
+ dependency?: BlazorDependencyLoader;
23
97
  /**
24
98
  * The type of the Blazor component.
25
99
  */
26
100
  type: 'blazor';
101
+ /**
102
+ * Additional options for the Blazor component.
103
+ */
104
+ options?: BlazorOptions;
27
105
  }
28
106
  /**
29
107
  * Defines the provided set of Blazor Pilet API extensions.
30
108
  */
31
109
  export interface PiletBlazorApi {
32
110
  /**
33
- * Defines the additional libraries to Blazor via their URLs.
111
+ * Defines the additional libraries (and their symbols) to Blazor via
112
+ * their URLs.
113
+ *
34
114
  * @param referenceUrls The URLs pointing to the different DLLs to include.
115
+ * @param satellites The URLs of the potential satellite DLLs to include.
116
+ * @param prio The loading priority of the DLLs. Higher numbers will always be loaded before lower numbers.
35
117
  */
36
- defineBlazorReferences(referenceUrls: Array<string>): void;
118
+ defineBlazorReferences(referenceUrls: Array<string>, satellites?: Record<string, Array<string>>, prio?: number): void;
37
119
  /**
38
120
  * Wraps a Blazor module for use in Piral.
121
+ *
39
122
  * @param moduleName The name of the exposed Blazor component.
40
123
  * @param args The optional props to use as arguments for the Blazor component.
41
124
  * @returns The Piral Blazor component.
42
125
  */
43
126
  fromBlazor(moduleName: string, args?: Record<string, any>): BlazorComponent;
127
+ /**
128
+ * Defines the additional options to be shared by all Blazor components.
129
+ *
130
+ * @param options The options for the Blazor components.
131
+ */
132
+ defineBlazorOptions(options: BlazorOptions): void;
133
+ /**
134
+ * Releases all defined blazor references from the current pilet.
135
+ */
136
+ releaseBlazorReferences(): void;
44
137
  }
package/infra.codegen CHANGED
@@ -1,84 +1,69 @@
1
- const axios = require('axios');
2
- const yauzl = require('yauzl');
3
1
  const fs = require('fs');
4
- const path = require('path');
2
+ const { join, basename, dirname, resolve } = require('path');
5
3
 
6
- const prefix = 'staticwebassets/';
4
+ function copyFileSync(source, target) {
5
+ let targetFile = target;
7
6
 
8
- function readSourceFromBuffer(buffer, outDir) {
9
- return new Promise((resolve, reject) => {
10
- yauzl.fromBuffer(buffer, { lazyEntries: true }, (err, zip) => {
11
- if (err) {
12
- reject(err);
13
- } else {
14
- zip.on('entry', (entry) => {
15
- const file = entry.fileName;
16
- const dir = path.dirname(file);
7
+ // If target is a directory, a new file with the same name will be created
8
+ if (fs.existsSync(target) && fs.lstatSync(target).isDirectory()) {
9
+ targetFile = join(target, basename(source));
10
+ }
17
11
 
18
- if (dir.startsWith(prefix)) {
19
- const target = path.resolve(outDir, file.substring(prefix.length));
20
- zip.openReadStream(entry, (err, rs) => {
21
- if (err) {
22
- reject(err);
23
- } else {
24
- const ws = fs.createWriteStream(target);
25
- rs.on('end', () => {
26
- ws.close();
27
- zip.readEntry();
28
- });
29
- rs.pipe(ws);
30
- }
31
- });
32
- } else {
33
- zip.readEntry();
34
- }
35
- });
36
- zip.on('end', resolve);
37
- zip.readEntry();
38
- }
39
- });
40
- });
12
+ fs.writeFileSync(targetFile, fs.readFileSync(source));
13
+ }
14
+
15
+ function copyFolderRecursiveSync(source, target) {
16
+ // Check if folder needs to be created or integrated
17
+ const targetFolder = join(target, basename(source));
18
+
19
+ if (!fs.existsSync(targetFolder)) {
20
+ fs.mkdirSync(targetFolder);
21
+ }
22
+
23
+ copyContentRecursiveSync(source, targetFolder);
41
24
  }
42
25
 
43
- function generateModule(blazorBootFile) {
44
- return new Promise((resolve) => {
45
- // we introduce an artificial delay here for slower FS esp. in WSL
46
- setTimeout(() => {
47
- const content = fs.readFileSync(blazorBootFile, 'utf8');
48
- resolve(`module.exports = ${content};`);
49
- }, 50);
50
- });
26
+ function copyContentRecursiveSync(source, target) {
27
+ // Copy
28
+ if (fs.lstatSync(source).isDirectory()) {
29
+ const files = fs.readdirSync(source);
30
+
31
+ files.forEach((file) => {
32
+ const curSource = join(source, file);
33
+
34
+ if (fs.lstatSync(curSource).isDirectory()) {
35
+ copyFolderRecursiveSync(curSource, target);
36
+ } else {
37
+ copyFileSync(curSource, target);
38
+ }
39
+ });
40
+ }
51
41
  }
52
42
 
53
43
  module.exports = function () {
54
- const version = process.env.PIRAL_BLAZOR_VERSION || '';
55
- const localFile = process.env.PIRAL_BLAZOR_LOCAL_NUPKG;
56
44
  const outDir = this.options.outDir;
57
- const frameworkDir = path.resolve(outDir, '_framework');
58
- const binDir = path.resolve(frameworkDir, '_bin');
59
- const wasmDir = path.resolve(frameworkDir, 'wasm');
60
- const blazorBootFile = path.resolve(frameworkDir, 'blazor.boot.json');
61
45
 
62
46
  !fs.existsSync(outDir) && fs.mkdirSync(outDir, { recursive: true });
63
- !fs.existsSync(frameworkDir) && fs.mkdirSync(frameworkDir);
64
- !fs.existsSync(binDir) && fs.mkdirSync(binDir);
65
- !fs.existsSync(wasmDir) && fs.mkdirSync(wasmDir);
66
-
67
- if (localFile) {
68
- if (!fs.existsSync(localFile)) {
69
- throw new Error(
70
- `The file provided via env. variable "PIRAL_BLAZOR_LOCAL_NUPKG" cannot be found: "${localFile}".`,
71
- );
72
- }
73
47
 
74
- const content = fs.readFileSync(localFile);
75
- return readSourceFromBuffer(content, outDir).then(() => generateModule(blazorBootFile));
76
- }
48
+ try {
49
+ const blazorPackagePath = require.resolve('blazor/package.json');
50
+ const releaseType = process.env.NODE_ENV === 'production' ? 'release' : 'debug';
51
+ const { blazorConfig = {} } = require(blazorPackagePath);
52
+ const blazorBaseDir = resolve(dirname(blazorPackagePath), releaseType);
53
+ const wwwRootDir = resolve(blazorBaseDir, 'wwwroot');
54
+ const noMutation = blazorConfig.noMutation || false;
55
+ const satellites = blazorConfig.satellites || [];
56
+ const url = blazorConfig.url || '_framework/blazor.webassembly.js';
57
+ const bootConfig = {
58
+ url,
59
+ satellites,
60
+ noMutation,
61
+ };
77
62
 
78
- console.log(`Downloading Piral.Blazor.Core@${version || 'latest'} from NuGet ...`);
63
+ copyContentRecursiveSync(wwwRootDir, outDir);
79
64
 
80
- return axios
81
- .get(`https://www.nuget.org/api/v2/package/Piral.Blazor.Core/${version}`, { responseType: 'arraybuffer' })
82
- .then((res) => readSourceFromBuffer(res.data, outDir))
83
- .then(() => generateModule(blazorBootFile));
65
+ return `export default (${JSON.stringify(bootConfig)});`;
66
+ } catch (err) {
67
+ throw new Error(`The npm package "blazor" was not found. Make sure to install it via "npm i blazor": ${err}`);
68
+ }
84
69
  };
@@ -1,7 +1,11 @@
1
- import { ForeignComponent, BaseComponentProps } from 'piral-core';
2
- export declare function createConverter(lazy?: boolean): {
3
- <TProps extends BaseComponentProps>(moduleName: string, dependency: () => Promise<void>, args: Record<string, any>): ForeignComponent<TProps>;
4
- loader: Promise<{
5
- platform: import("./internal/Platform/Platform").Platform;
6
- }>;
1
+ import type { BaseComponentProps, ForeignComponent } from 'piral-core';
2
+ import { BlazorDependencyLoader, BlazorLogLevel, BlazorOptions, BlazorRootConfig, WebAssemblyStartOptions } from './types';
3
+ export interface LanguageOptions {
4
+ current: string | undefined;
5
+ onChange(inform: (language: string) => void): void;
6
+ }
7
+ export declare function createConverter(lazy: boolean, opts?: WebAssemblyStartOptions, language?: LanguageOptions, logLevel?: BlazorLogLevel): {
8
+ <TProps extends BaseComponentProps>(moduleName: string, dependency: BlazorDependencyLoader, args: Record<string, any>, options?: BlazorOptions): ForeignComponent<TProps>;
9
+ loader: Promise<BlazorRootConfig>;
10
+ lazy: boolean;
7
11
  };
package/lib/converter.js CHANGED
@@ -1,58 +1,174 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createConverter = void 0;
4
- var tslib_1 = require("tslib");
5
- var internal_1 = require("./internal");
6
- function createConverter(lazy) {
7
- if (lazy === void 0) { lazy = true; }
8
- var bootConfig = require('../infra.codegen');
9
- var boot = function () { return internal_1.initialize(bootConfig); };
10
- var root = document.body.appendChild(document.createElement('div'));
11
- var loader = !lazy && boot();
12
- root.style.display = 'none';
13
- root.id = 'blazor-root';
14
- var convert = function (moduleName, dependency, args) {
15
- var id;
16
- var referenceId;
17
- var node;
18
- var dispose = function () { };
19
- var state;
20
- return {
21
- mount: function (el, data, ctx) {
22
- var props = tslib_1.__assign(tslib_1.__assign({}, args), data);
23
- el.setAttribute('data-blazor-pilet-root', 'true');
24
- (loader || (loader = boot()))
25
- .then(dependency)
26
- .then(function () { return internal_1.activate(moduleName, props); })
27
- .then(function (refId) {
28
- if (state === 'fresh') {
29
- id = moduleName + "-" + refId;
30
- node = el.appendChild(root.querySelector("#" + id + " > div"));
31
- state = 'mounted';
32
- referenceId = refId;
4
+ const tslib_1 = require("tslib");
5
+ const events_1 = require("./events");
6
+ const interop_1 = require("./interop");
7
+ const infra_codegen_1 = require("../infra.codegen");
8
+ const noop = () => { };
9
+ const mediaRules = [
10
+ { attribute: 'src', selector: 'img, embed, video > source, video > track, audio > source' },
11
+ { attribute: 'srcset', selector: 'picture > source' },
12
+ ];
13
+ function prefixMediaSources(component, prefix) {
14
+ const prefixAttributeValue = (el, attr) => el.setAttribute(attr, prefix + el.getAttribute(attr));
15
+ for (const { attribute, selector } of mediaRules) {
16
+ Array.from(component.querySelectorAll(selector))
17
+ .filter((el) => el.hasAttribute(attribute) && !el.getAttribute(attribute).match(/^https?:/))
18
+ .forEach((el) => prefixAttributeValue(el, attribute));
19
+ }
20
+ }
21
+ function project(component, destination, options) {
22
+ if ((options === null || options === void 0 ? void 0 : options.resourcePathRoot) && !infra_codegen_1.default.noMutation) {
23
+ prefixMediaSources(component, options.resourcePathRoot);
24
+ }
25
+ destination.appendChild(component);
26
+ }
27
+ function makeUrl(href) {
28
+ const origin = document.location.origin;
29
+ if (!href.startsWith(origin)) {
30
+ return `${origin}${href}`;
31
+ }
32
+ return href;
33
+ }
34
+ function createConverter(lazy, opts, language, logLevel) {
35
+ const bootLoader = (0, interop_1.createBootLoader)(infra_codegen_1.default.url, infra_codegen_1.default.satellites);
36
+ const boot = (opts) => bootLoader(opts).then((res) => tslib_1.__awaiter(this, void 0, void 0, function* () {
37
+ const [_, capabilities] = res;
38
+ if (capabilities.includes('logging')) {
39
+ if (typeof logLevel === 'number') {
40
+ yield (0, interop_1.setLogLevel)(logLevel);
41
+ }
42
+ }
43
+ if (language && capabilities.includes('language')) {
44
+ if (typeof language.current === 'string') {
45
+ yield (0, interop_1.setLanguage)(language.current);
46
+ }
47
+ if (capabilities.includes('events')) {
48
+ const eventDispatcher = document.body.dispatchEvent;
49
+ // listen to all events for forwarding them
50
+ document.body.dispatchEvent = function (ev) {
51
+ if (ev.type.startsWith('piral-')) {
52
+ const type = ev.type.replace('piral-', '');
53
+ const args = ev.detail.arg;
54
+ (0, interop_1.processEvent)(type, args);
55
+ }
56
+ return eventDispatcher.call(this, ev);
57
+ };
58
+ }
59
+ if (typeof language.onChange === 'function') {
60
+ language.onChange(interop_1.setLanguage);
61
+ }
62
+ }
63
+ window.dispatchEvent(new CustomEvent('loaded-blazor-core'));
64
+ return res;
65
+ }));
66
+ let loader = !lazy && boot(opts);
67
+ let listener = undefined;
68
+ const enqueueChange = (locals, update) => {
69
+ if (typeof update !== 'function') {
70
+ // nothing to do in this case
71
+ }
72
+ else if (locals.state === 'mounted') {
73
+ loader.then(update);
74
+ }
75
+ else {
76
+ locals.next = update;
77
+ }
78
+ };
79
+ const convert = (moduleName, dependency, args, options) => ({
80
+ mount(el, data, ctx, locals) {
81
+ const props = Object.assign(Object.assign({}, args), data);
82
+ const { piral } = data;
83
+ const nav = ctx.navigation;
84
+ el.setAttribute('data-blazor-pilet-root', 'true');
85
+ (0, events_1.addGlobalEventListeners)(el);
86
+ if (listener === undefined) {
87
+ listener = nav.listen(({ location, action }) => {
88
+ // POP is already handled by .NET
89
+ if (action !== 'POP') {
90
+ const url = makeUrl(location.href);
91
+ (0, interop_1.callNotifyLocationChanged)(url, action === 'REPLACE', location.state);
33
92
  }
34
- })
35
- .catch(function (err) { return console.error(err); });
36
- dispose = internal_1.attachEvents(el, function (ev) { return data.piral.renderHtmlExtension(ev.detail.target, ev.detail.props); }, function (ev) {
37
- return ev.detail.replace
38
- ? ctx.router.history.replace(ev.detail.to, ev.detail.store)
39
- : ctx.router.history.push(ev.detail.to, ev.detail.state);
40
93
  });
41
- state = 'fresh';
42
- },
43
- unmount: function (el) {
44
- el.removeAttribute('data-blazor-pilet-root');
45
- dispose();
46
- if (state === 'mounted') {
47
- root.querySelector("#" + id).appendChild(node);
48
- internal_1.deactivate(moduleName, referenceId);
94
+ }
95
+ locals.state = 'fresh';
96
+ locals.next = noop;
97
+ locals.dispose = (0, events_1.attachEvents)(el, (ev) => {
98
+ ev.stopPropagation();
99
+ const { target, props } = ev.detail;
100
+ piral.renderHtmlExtension(target, props);
101
+ }, (ev) => {
102
+ ev.stopPropagation();
103
+ const { to, state, replace } = ev.detail;
104
+ replace ? nav.replace(to, state) : nav.push(to, state);
105
+ }, (ev) => {
106
+ ev.stopPropagation();
107
+ const { type, args } = ev.detail;
108
+ piral.emit(type, args);
109
+ });
110
+ function mountClassic(config) {
111
+ return (0, interop_1.activate)(moduleName, props).then((refId) => {
112
+ const [root] = config;
113
+ const node = root.querySelector(`#${refId} > div`);
114
+ locals.unmount = () => {
115
+ var _a;
116
+ (_a = root.querySelector(`#${refId}`)) === null || _a === void 0 ? void 0 : _a.appendChild(node);
117
+ (0, interop_1.deactivate)(moduleName, refId);
118
+ el.innerHTML = '';
119
+ };
120
+ locals.update = (props) => {
121
+ (0, interop_1.reactivate)(moduleName, refId, props);
122
+ };
123
+ project(node, el, options);
124
+ });
125
+ }
126
+ function mountModern(_) {
127
+ return (0, interop_1.createElement)(moduleName, props).then((refId) => {
128
+ const child = document.createElement('piral-blazor-component');
129
+ child.setAttribute('rid', refId);
130
+ el.appendChild(child);
131
+ locals.unmount = () => {
132
+ (0, interop_1.destroyElement)(refId);
133
+ child.remove();
134
+ el.innerHTML = '';
135
+ };
136
+ locals.update = (props) => {
137
+ (0, interop_1.updateElement)(refId, props);
138
+ };
139
+ });
140
+ }
141
+ (loader || (convert.loader = loader = boot(opts)))
142
+ .then((config) => dependency(config).then(() => {
143
+ if (locals.state === 'fresh') {
144
+ const [_, capabilities, applyChanges] = config;
145
+ const fn = capabilities.includes('custom-element') ? mountModern : mountClassic;
146
+ applyChanges(piral);
147
+ return fn(config).then(() => {
148
+ locals.state = 'mounted';
149
+ locals.next(config);
150
+ locals.next = noop;
151
+ });
49
152
  }
50
- el.innerHTML = '';
51
- state = 'removed';
52
- },
53
- };
54
- };
153
+ }))
154
+ .catch((err) => console.error(err));
155
+ },
156
+ update(el, data, ctx, locals) {
157
+ enqueueChange(locals, () => {
158
+ var _a;
159
+ (_a = locals.update) === null || _a === void 0 ? void 0 : _a.call(locals, Object.assign(Object.assign({}, args), data));
160
+ });
161
+ },
162
+ unmount(el, locals) {
163
+ (0, events_1.removeGlobalEventListeners)(el);
164
+ el.removeAttribute('data-blazor-pilet-root');
165
+ locals.dispose();
166
+ enqueueChange(locals, locals.unmount);
167
+ locals.state = 'removed';
168
+ },
169
+ });
55
170
  convert.loader = loader;
171
+ convert.lazy = lazy;
56
172
  return convert;
57
173
  }
58
174
  exports.createConverter = createConverter;
@@ -1 +1 @@
1
- {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":";;;;AACA,uCAA4E;AAE5E,SAAgB,eAAe,CAAC,IAAW;IAAX,qBAAA,EAAA,WAAW;IACzC,IAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAM,IAAI,GAAG,cAAM,OAAA,qBAAU,CAAC,UAAU,CAAC,EAAtB,CAAsB,CAAC;IAC1C,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC;IAExB,IAAM,OAAO,GAAG,UACd,UAAkB,EAClB,UAA+B,EAC/B,IAAyB;QAEzB,IAAI,EAAU,CAAC;QACf,IAAI,WAAmB,CAAC;QACxB,IAAI,IAAiB,CAAC;QACtB,IAAI,OAAO,GAAG,cAAO,CAAC,CAAC;QACvB,IAAI,KAAsC,CAAC;QAE3C,OAAO;YACL,KAAK,YAAC,EAAE,EAAE,IAAI,EAAE,GAAG;gBACjB,IAAM,KAAK,yCAAQ,IAAI,GAAK,IAAI,CAAE,CAAC;gBACnC,EAAE,CAAC,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;gBAElD,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;qBAC1B,IAAI,CAAC,UAAU,CAAC;qBAChB,IAAI,CAAC,cAAM,OAAA,mBAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,EAA3B,CAA2B,CAAC;qBACvC,IAAI,CAAC,UAAC,KAAK;oBACV,IAAI,KAAK,KAAK,OAAO,EAAE;wBACrB,EAAE,GAAM,UAAU,SAAI,KAAO,CAAC;wBAC9B,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,MAAI,EAAE,WAAQ,CAAC,CAAC,CAAC;wBAC1D,KAAK,GAAG,SAAS,CAAC;wBAClB,WAAW,GAAG,KAAK,CAAC;qBACrB;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,UAAC,GAAG,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAC;gBACtC,OAAO,GAAG,uBAAY,CACpB,EAAE,EACF,UAAC,EAAE,IAAK,OAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAjE,CAAiE,EACzE,UAAC,EAAE;oBACD,OAAA,EAAE,CAAC,MAAM,CAAC,OAAO;wBACf,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;wBAC3D,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;gBAF1D,CAE0D,CAC7D,CAAC;gBACF,KAAK,GAAG,OAAO,CAAC;YAClB,CAAC;YACD,OAAO,YAAC,EAAE;gBACR,EAAE,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC;gBAEV,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,IAAI,CAAC,aAAa,CAAC,MAAI,EAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC/C,qBAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;iBACrC;gBAED,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;gBAClB,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,OAAO,CAAC;AACjB,CAAC;AAhED,0CAgEC"}
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
package/lib/create.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { PiralPlugin } from 'piral-core';
2
- import type { PiletBlazorApi } from './types';
2
+ import type { BlazorLogLevel, PiletBlazorApi, WebAssemblyStartOptions } from './types';
3
3
  /**
4
4
  * Available configuration options for the Blazor plugin.
5
5
  */
@@ -9,6 +9,26 @@ export interface BlazorConfig {
9
9
  * @default true
10
10
  */
11
11
  lazy?: boolean;
12
+ /**
13
+ * Determines the used log level, if any. Otherwise, will use
14
+ * the default log level (info).
15
+ */
16
+ logLevel?: BlazorLogLevel;
17
+ /**
18
+ * Determines the initial language to use, if any.
19
+ * Otherwise, falls back to Blazor's default language.
20
+ */
21
+ initialLanguage?: string;
22
+ /**
23
+ * Installs a function to handle language change. By default,
24
+ * this will hook on to the `select-language` event from Piral.
25
+ * @param inform The callback to use for passing in a new locale.
26
+ */
27
+ onLanguageChange?: ((inform: (language: string) => void) => void) | false;
28
+ /**
29
+ * Determines the start options to use for booting Blazor.
30
+ */
31
+ options?: WebAssemblyStartOptions;
12
32
  }
13
33
  /**
14
34
  * Creates new Pilet API extensions for integration of Blazor.
package/lib/create.js CHANGED
@@ -1,30 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createBlazorApi = void 0;
4
- var converter_1 = require("./converter");
5
- var dependencies_1 = require("./dependencies");
4
+ const converter_1 = require("./converter");
5
+ const dependencies_1 = require("./dependencies");
6
+ function createDefaultHandler(context) {
7
+ return (inform) => {
8
+ context.on('select-language', (ev) => {
9
+ inform(ev.currentLanguage);
10
+ });
11
+ };
12
+ }
6
13
  /**
7
14
  * Creates new Pilet API extensions for integration of Blazor.
8
15
  */
9
- function createBlazorApi(config) {
10
- if (config === void 0) { config = {}; }
11
- var lazy = config.lazy;
12
- return function (context) {
13
- var convert = converter_1.createConverter(lazy);
14
- context.converters.blazor = function (_a) {
15
- var moduleName = _a.moduleName, args = _a.args, dependency = _a.dependency;
16
- return convert(moduleName, dependency, args);
17
- };
18
- return function () {
19
- var loader = dependencies_1.createDependencyLoader(convert, lazy);
16
+ function createBlazorApi(config = {}) {
17
+ return (context) => {
18
+ const { lazy = true, initialLanguage, onLanguageChange = createDefaultHandler(context), logLevel } = config;
19
+ const convert = (0, converter_1.createConverter)(lazy, config.options, {
20
+ current: initialLanguage,
21
+ onChange: onLanguageChange || (() => { }),
22
+ }, logLevel);
23
+ context.converters.blazor = ({ moduleName, args, dependency, options }) => convert(moduleName, dependency, args, options);
24
+ return (_, meta) => {
25
+ const loader = (0, dependencies_1.createDependencyLoader)(convert);
26
+ let options;
20
27
  return {
21
- defineBlazorReferences: loader.defineBlazorReferences,
22
- fromBlazor: function (moduleName, args) {
28
+ defineBlazorReferences(references, satellites, prio) {
29
+ return loader.defineBlazorReferences(references, meta, satellites, prio);
30
+ },
31
+ defineBlazorOptions(blazorOptions) {
32
+ options = blazorOptions;
33
+ },
34
+ releaseBlazorReferences: loader.releaseBlazorReferences,
35
+ fromBlazor(moduleName, args) {
23
36
  return {
24
37
  type: 'blazor',
25
38
  dependency: loader.getDependency(),
26
- moduleName: moduleName,
27
- args: args,
39
+ moduleName,
40
+ args,
41
+ options,
28
42
  };
29
43
  },
30
44
  };