@bleedingdev/modern-js-app-tools-extensions 3.8.3-ultramodern.2

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 (198) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/cloudflare/artifacts.js +127 -0
  4. package/dist/cjs/cloudflare/constants.js +141 -0
  5. package/dist/cjs/cloudflare/delivery-unit.js +161 -0
  6. package/dist/cjs/cloudflare/i18n-worker.js +135 -0
  7. package/dist/cjs/cloudflare/index.js +156 -0
  8. package/dist/cjs/cloudflare/security-policies.js +205 -0
  9. package/dist/cjs/cloudflare/types.js +18 -0
  10. package/dist/cjs/cloudflare/utils.js +66 -0
  11. package/dist/cjs/cloudflare/worker-manifest.js +239 -0
  12. package/dist/cjs/cloudflare/wrangler-config.js +205 -0
  13. package/dist/cjs/cloudflare-builder.js +394 -0
  14. package/dist/cjs/cloudflare-output-contract.js +108 -0
  15. package/dist/cjs/cloudflare-output-plan.js +93 -0
  16. package/dist/cjs/cloudflare-output-verifier/identity.js +92 -0
  17. package/dist/cjs/cloudflare-output-verifier/index.js +188 -0
  18. package/dist/cjs/cloudflare-output-verifier/issues.js +54 -0
  19. package/dist/cjs/cloudflare-output-verifier/manifest.js +89 -0
  20. package/dist/cjs/cloudflare-output-verifier/mutation-policy.js +151 -0
  21. package/dist/cjs/cloudflare-output-verifier/worker-bundles.js +378 -0
  22. package/dist/cjs/config.js +18 -0
  23. package/dist/cjs/css-extract-runtime-plugin.js +74 -0
  24. package/dist/cjs/index.js +125 -0
  25. package/dist/cjs/read-template.js +56 -0
  26. package/dist/cjs/release-envelope/canonical.js +68 -0
  27. package/dist/cjs/release-envelope/framework-output.js +649 -0
  28. package/dist/cjs/release-envelope/index.js +399 -0
  29. package/dist/cjs/release-envelope/plugin.js +102 -0
  30. package/dist/cjs/release-envelope/types.js +51 -0
  31. package/dist/cjs/release-identity.js +110 -0
  32. package/dist/cjs/templates/cloudflare-entry.001-bootstrap-security.mjs +251 -0
  33. package/dist/cjs/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  34. package/dist/cjs/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  35. package/dist/cjs/templates/cloudflare-entry.004-rendering-css.mjs +1194 -0
  36. package/dist/cjs/templates/cloudflare-entry.005-worker-dispatch.mjs +421 -0
  37. package/dist/cjs/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  38. package/dist/cjs/templates/cloudflare-worker-fs-promises.mjs +11 -0
  39. package/dist/cjs/templates/cloudflare-worker-loadable-server.mjs +281 -0
  40. package/dist/cjs/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  41. package/dist/cjs/templates/cloudflare-worker-path.mjs +98 -0
  42. package/dist/esm/cloudflare/artifacts.mjs +64 -0
  43. package/dist/esm/cloudflare/constants.mjs +34 -0
  44. package/dist/esm/cloudflare/delivery-unit.mjs +110 -0
  45. package/dist/esm/cloudflare/i18n-worker.mjs +97 -0
  46. package/dist/esm/cloudflare/index.mjs +108 -0
  47. package/dist/esm/cloudflare/security-policies.mjs +167 -0
  48. package/dist/esm/cloudflare/types.mjs +0 -0
  49. package/dist/esm/cloudflare/utils.mjs +12 -0
  50. package/dist/esm/cloudflare/worker-manifest.mjs +179 -0
  51. package/dist/esm/cloudflare/wrangler-config.mjs +151 -0
  52. package/dist/esm/cloudflare-builder.mjs +327 -0
  53. package/dist/esm/cloudflare-output-contract.mjs +31 -0
  54. package/dist/esm/cloudflare-output-plan.mjs +45 -0
  55. package/dist/esm/cloudflare-output-verifier/identity.mjs +54 -0
  56. package/dist/esm/cloudflare-output-verifier/index.mjs +133 -0
  57. package/dist/esm/cloudflare-output-verifier/issues.mjs +10 -0
  58. package/dist/esm/cloudflare-output-verifier/manifest.mjs +51 -0
  59. package/dist/esm/cloudflare-output-verifier/mutation-policy.mjs +99 -0
  60. package/dist/esm/cloudflare-output-verifier/worker-bundles.mjs +313 -0
  61. package/dist/esm/config.mjs +0 -0
  62. package/dist/esm/css-extract-runtime-plugin.mjs +32 -0
  63. package/dist/esm/index.mjs +10 -0
  64. package/dist/esm/read-template.mjs +5 -0
  65. package/dist/esm/release-envelope/canonical.mjs +21 -0
  66. package/dist/esm/release-envelope/framework-output.mjs +573 -0
  67. package/dist/esm/release-envelope/index.mjs +335 -0
  68. package/dist/esm/release-envelope/plugin.mjs +54 -0
  69. package/dist/esm/release-envelope/types.mjs +7 -0
  70. package/dist/esm/release-identity.mjs +66 -0
  71. package/dist/esm/templates/cloudflare-entry.001-bootstrap-security.mjs +251 -0
  72. package/dist/esm/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  73. package/dist/esm/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  74. package/dist/esm/templates/cloudflare-entry.004-rendering-css.mjs +1194 -0
  75. package/dist/esm/templates/cloudflare-entry.005-worker-dispatch.mjs +421 -0
  76. package/dist/esm/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  77. package/dist/esm/templates/cloudflare-worker-fs-promises.mjs +11 -0
  78. package/dist/esm/templates/cloudflare-worker-loadable-server.mjs +281 -0
  79. package/dist/esm/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  80. package/dist/esm/templates/cloudflare-worker-path.mjs +98 -0
  81. package/dist/esm-node/cloudflare/artifacts.mjs +65 -0
  82. package/dist/esm-node/cloudflare/constants.mjs +35 -0
  83. package/dist/esm-node/cloudflare/delivery-unit.mjs +111 -0
  84. package/dist/esm-node/cloudflare/i18n-worker.mjs +98 -0
  85. package/dist/esm-node/cloudflare/index.mjs +109 -0
  86. package/dist/esm-node/cloudflare/security-policies.mjs +168 -0
  87. package/dist/esm-node/cloudflare/types.mjs +1 -0
  88. package/dist/esm-node/cloudflare/utils.mjs +13 -0
  89. package/dist/esm-node/cloudflare/worker-manifest.mjs +180 -0
  90. package/dist/esm-node/cloudflare/wrangler-config.mjs +152 -0
  91. package/dist/esm-node/cloudflare-builder.mjs +328 -0
  92. package/dist/esm-node/cloudflare-output-contract.mjs +32 -0
  93. package/dist/esm-node/cloudflare-output-plan.mjs +46 -0
  94. package/dist/esm-node/cloudflare-output-verifier/identity.mjs +55 -0
  95. package/dist/esm-node/cloudflare-output-verifier/index.mjs +134 -0
  96. package/dist/esm-node/cloudflare-output-verifier/issues.mjs +11 -0
  97. package/dist/esm-node/cloudflare-output-verifier/manifest.mjs +52 -0
  98. package/dist/esm-node/cloudflare-output-verifier/mutation-policy.mjs +100 -0
  99. package/dist/esm-node/cloudflare-output-verifier/worker-bundles.mjs +314 -0
  100. package/dist/esm-node/config.mjs +1 -0
  101. package/dist/esm-node/css-extract-runtime-plugin.mjs +33 -0
  102. package/dist/esm-node/index.mjs +11 -0
  103. package/dist/esm-node/read-template.mjs +9 -0
  104. package/dist/esm-node/release-envelope/canonical.mjs +22 -0
  105. package/dist/esm-node/release-envelope/framework-output.mjs +574 -0
  106. package/dist/esm-node/release-envelope/index.mjs +336 -0
  107. package/dist/esm-node/release-envelope/plugin.mjs +55 -0
  108. package/dist/esm-node/release-envelope/types.mjs +8 -0
  109. package/dist/esm-node/release-identity.mjs +67 -0
  110. package/dist/esm-node/templates/cloudflare-entry.001-bootstrap-security.mjs +251 -0
  111. package/dist/esm-node/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  112. package/dist/esm-node/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  113. package/dist/esm-node/templates/cloudflare-entry.004-rendering-css.mjs +1194 -0
  114. package/dist/esm-node/templates/cloudflare-entry.005-worker-dispatch.mjs +421 -0
  115. package/dist/esm-node/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  116. package/dist/esm-node/templates/cloudflare-worker-fs-promises.mjs +11 -0
  117. package/dist/esm-node/templates/cloudflare-worker-loadable-server.mjs +281 -0
  118. package/dist/esm-node/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  119. package/dist/esm-node/templates/cloudflare-worker-path.mjs +98 -0
  120. package/dist/types/cloudflare/artifacts.d.ts +15 -0
  121. package/dist/types/cloudflare/constants.d.ts +24 -0
  122. package/dist/types/cloudflare/delivery-unit.d.ts +23 -0
  123. package/dist/types/cloudflare/i18n-worker.d.ts +22 -0
  124. package/dist/types/cloudflare/index.d.ts +2 -0
  125. package/dist/types/cloudflare/security-policies.d.ts +52 -0
  126. package/dist/types/cloudflare/types.d.ts +28 -0
  127. package/dist/types/cloudflare/utils.d.ts +6 -0
  128. package/dist/types/cloudflare/worker-manifest.d.ts +149 -0
  129. package/dist/types/cloudflare/wrangler-config.d.ts +51 -0
  130. package/dist/types/cloudflare-builder.d.ts +59 -0
  131. package/dist/types/cloudflare-output-contract.d.ts +14 -0
  132. package/dist/types/cloudflare-output-plan.d.ts +34 -0
  133. package/dist/types/cloudflare-output-verifier/identity.d.ts +8 -0
  134. package/dist/types/cloudflare-output-verifier/index.d.ts +18 -0
  135. package/dist/types/cloudflare-output-verifier/issues.d.ts +14 -0
  136. package/dist/types/cloudflare-output-verifier/manifest.d.ts +2 -0
  137. package/dist/types/cloudflare-output-verifier/mutation-policy.d.ts +14 -0
  138. package/dist/types/cloudflare-output-verifier/worker-bundles.d.ts +20 -0
  139. package/dist/types/config.d.ts +175 -0
  140. package/dist/types/css-extract-runtime-plugin.d.ts +6 -0
  141. package/dist/types/index.d.ts +10 -0
  142. package/dist/types/read-template.d.ts +2 -0
  143. package/dist/types/release-envelope/canonical.d.ts +5 -0
  144. package/dist/types/release-envelope/framework-output.d.ts +32 -0
  145. package/dist/types/release-envelope/index.d.ts +6 -0
  146. package/dist/types/release-envelope/plugin.d.ts +30 -0
  147. package/dist/types/release-envelope/types.d.ts +62 -0
  148. package/dist/types/release-identity.d.ts +16 -0
  149. package/dist/types/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -0
  150. package/dist/types/templates/cloudflare-entry.002-assets-routes.d.mts +1 -0
  151. package/dist/types/templates/cloudflare-entry.003-i18n-locales.d.mts +1 -0
  152. package/dist/types/templates/cloudflare-entry.004-rendering-css.d.mts +1 -0
  153. package/dist/types/templates/cloudflare-entry.005-worker-dispatch.d.mts +1 -0
  154. package/dist/types/templates/cloudflare-entry.006-fetch-handler.d.mts +4 -0
  155. package/dist/types/templates/cloudflare-worker-fs-promises.d.mts +5 -0
  156. package/dist/types/templates/cloudflare-worker-loadable-server.d.mts +48 -0
  157. package/dist/types/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +13 -0
  158. package/dist/types/templates/cloudflare-worker-path.d.mts +21 -0
  159. package/package.json +131 -0
  160. package/src/cloudflare/artifacts.ts +165 -0
  161. package/src/cloudflare/constants.ts +50 -0
  162. package/src/cloudflare/delivery-unit.ts +195 -0
  163. package/src/cloudflare/i18n-worker.ts +197 -0
  164. package/src/cloudflare/index.ts +259 -0
  165. package/src/cloudflare/security-policies.ts +194 -0
  166. package/src/cloudflare/types.ts +33 -0
  167. package/src/cloudflare/utils.ts +40 -0
  168. package/src/cloudflare/worker-manifest.ts +313 -0
  169. package/src/cloudflare/wrangler-config.ts +338 -0
  170. package/src/cloudflare-builder.ts +653 -0
  171. package/src/cloudflare-output-contract.ts +30 -0
  172. package/src/cloudflare-output-plan.ts +108 -0
  173. package/src/cloudflare-output-verifier/identity.ts +87 -0
  174. package/src/cloudflare-output-verifier/index.ts +277 -0
  175. package/src/cloudflare-output-verifier/issues.ts +54 -0
  176. package/src/cloudflare-output-verifier/manifest.ts +76 -0
  177. package/src/cloudflare-output-verifier/mutation-policy.ts +159 -0
  178. package/src/cloudflare-output-verifier/worker-bundles.ts +664 -0
  179. package/src/config.ts +196 -0
  180. package/src/css-extract-runtime-plugin.ts +70 -0
  181. package/src/index.ts +10 -0
  182. package/src/read-template.ts +8 -0
  183. package/src/release-envelope/canonical.ts +58 -0
  184. package/src/release-envelope/framework-output.ts +1121 -0
  185. package/src/release-envelope/index.ts +656 -0
  186. package/src/release-envelope/plugin.ts +125 -0
  187. package/src/release-envelope/types.ts +83 -0
  188. package/src/release-identity.ts +134 -0
  189. package/src/templates/cloudflare-entry.001-bootstrap-security.mjs +251 -0
  190. package/src/templates/cloudflare-entry.002-assets-routes.mjs +191 -0
  191. package/src/templates/cloudflare-entry.003-i18n-locales.mjs +514 -0
  192. package/src/templates/cloudflare-entry.004-rendering-css.mjs +1194 -0
  193. package/src/templates/cloudflare-entry.005-worker-dispatch.mjs +421 -0
  194. package/src/templates/cloudflare-entry.006-fetch-handler.mjs +93 -0
  195. package/src/templates/cloudflare-worker-fs-promises.mjs +11 -0
  196. package/src/templates/cloudflare-worker-loadable-server.mjs +281 -0
  197. package/src/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  198. package/src/templates/cloudflare-worker-path.mjs +98 -0
@@ -0,0 +1,30 @@
1
+ type ReleaseEnvelopeTarget = 'cloudflare' | 'node' | string;
2
+ export interface ReleaseEnvelopeConfig {
3
+ deploy?: {
4
+ target?: string;
5
+ };
6
+ }
7
+ export interface ReleaseEnvelopeAppContext {
8
+ apiOnly: boolean;
9
+ appDirectory: string;
10
+ distDirectory: string;
11
+ metaName: string;
12
+ }
13
+ export interface ReleaseEnvelopePluginApi<Config extends ReleaseEnvelopeConfig = ReleaseEnvelopeConfig> {
14
+ getAppContext(): ReleaseEnvelopeAppContext;
15
+ getNormalizedConfig(): Config;
16
+ onAfterBuild(handler: () => Promise<void>): void;
17
+ onBeforeDeploy(handler: () => Promise<void>): void;
18
+ onAfterDeploy(handler: () => Promise<void>): void;
19
+ }
20
+ export interface ReleaseEnvelopePlugin<Config extends ReleaseEnvelopeConfig = ReleaseEnvelopeConfig> {
21
+ name: string;
22
+ pre: string[];
23
+ post: string[];
24
+ setup(api: ReleaseEnvelopePluginApi<Config>): void;
25
+ }
26
+ export type ResolveDeployTarget<Config extends ReleaseEnvelopeConfig = ReleaseEnvelopeConfig> = (config: Config) => ReleaseEnvelopeTarget;
27
+ export declare const createUltramodernReleaseEnvelopePlugin: <Config extends ReleaseEnvelopeConfig>({ resolveDeployTarget, }: {
28
+ resolveDeployTarget: ResolveDeployTarget<Config>;
29
+ }) => ReleaseEnvelopePlugin<Config>;
30
+ export {};
@@ -0,0 +1,62 @@
1
+ export declare const MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION: 3;
2
+ export declare const MICROVERTICAL_RELEASE_ENVELOPE_KIND: 'ultramodern-target-microvertical-release-envelope';
3
+ export declare const MICROVERTICAL_RELEASE_TARGETS: readonly ['node', 'cloudflare'];
4
+ export type MicroVerticalReleaseTarget = (typeof MICROVERTICAL_RELEASE_TARGETS)[number];
5
+ export type MicroVerticalReleaseIdentity = {
6
+ unitId: string;
7
+ buildMarker: string;
8
+ sourceRevision: string;
9
+ releaseVersion: string;
10
+ };
11
+ export type MicroVerticalReleaseArtifactInput = {
12
+ logicalPath: string;
13
+ runtime: string;
14
+ };
15
+ export type MicroVerticalReleaseFileArtifact = MicroVerticalReleaseArtifactInput & {
16
+ kind: 'file';
17
+ byteLength: number;
18
+ sha256: string;
19
+ };
20
+ export type MicroVerticalReleaseSymbolicLinkArtifact = MicroVerticalReleaseArtifactInput & {
21
+ kind: 'symbolic-link';
22
+ linkTarget: string;
23
+ targetKind: 'directory' | 'file';
24
+ targetLogicalPath: string;
25
+ };
26
+ export type MicroVerticalReleaseArtifact = MicroVerticalReleaseFileArtifact | MicroVerticalReleaseSymbolicLinkArtifact;
27
+ export type MicroVerticalReleaseArtifactInputs = {
28
+ artifacts: MicroVerticalReleaseArtifactInput[];
29
+ surfaces: MicroVerticalReleaseSurfaces;
30
+ };
31
+ export type MicroVerticalReleaseSurfaces = {
32
+ uiClient: string[];
33
+ ssr: string[];
34
+ apiBackend: string[];
35
+ backendFederation: {
36
+ manifest: string;
37
+ container: string;
38
+ };
39
+ };
40
+ export type MicroVerticalReleaseEnvelopePayload = {
41
+ schemaVersion: typeof MICROVERTICAL_RELEASE_ENVELOPE_SCHEMA_VERSION;
42
+ kind: typeof MICROVERTICAL_RELEASE_ENVELOPE_KIND;
43
+ target: MicroVerticalReleaseTarget;
44
+ identity: MicroVerticalReleaseIdentity;
45
+ artifacts: MicroVerticalReleaseArtifact[];
46
+ surfaces: MicroVerticalReleaseSurfaces;
47
+ };
48
+ export type MicroVerticalReleaseEnvelope = MicroVerticalReleaseEnvelopePayload & {
49
+ envelopeDigest: string;
50
+ };
51
+ export type CreateMicroVerticalReleaseEnvelopeInput = {
52
+ artifactRoot: string;
53
+ target: MicroVerticalReleaseTarget;
54
+ identity: MicroVerticalReleaseIdentity;
55
+ artifacts: MicroVerticalReleaseArtifactInput[];
56
+ surfaces: MicroVerticalReleaseSurfaces;
57
+ };
58
+ export type VerifyMicroVerticalReleaseEnvelopeOptions = {
59
+ artifactRoot: string;
60
+ logicalPathForArtifact?: (artifact: MicroVerticalReleaseArtifact) => string;
61
+ expectedTarget?: MicroVerticalReleaseTarget;
62
+ };
@@ -0,0 +1,16 @@
1
+ export type UltramodernReleaseIdentity = {
2
+ buildMarker: string;
3
+ sourceRevision: string;
4
+ };
5
+ export declare const createUltramodernReleaseBuildMarker: ({ generationBuildMarker, sourceRevision, unitId, }: {
6
+ generationBuildMarker: string;
7
+ sourceRevision: string;
8
+ unitId: string;
9
+ }) => string;
10
+ export declare const resolveUltramodernSourceRevision: (workspaceRoot?: string, configuredSourceRevision?: string) => string;
11
+ export declare const resolveUltramodernReleaseIdentity: ({ generationBuildMarker, sourceRevision: configuredSourceRevision, unitId, workspaceRoot, }: {
12
+ generationBuildMarker: string;
13
+ sourceRevision?: string;
14
+ unitId: string;
15
+ workspaceRoot?: string;
16
+ }) => UltramodernReleaseIdentity;
@@ -0,0 +1 @@
1
+ export declare const modernWorkerManifest: any;
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ fetch(request: any, env: any, ctx: any): Promise<any>;
3
+ };
4
+ export default _default;
@@ -0,0 +1,5 @@
1
+ export declare const readFile: () => Promise<never>;
2
+ declare const _default: {
3
+ readFile: () => Promise<never>;
4
+ };
5
+ export default _default;
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ export declare function ChunkExtractorManager({ extractor, children }: {
3
+ children: any;
4
+ extractor: any;
5
+ }): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
6
+ export declare class ChunkExtractor {
7
+ namespace: string;
8
+ stats: any;
9
+ publicPath: any;
10
+ outputPath: any;
11
+ entrypoints: string[];
12
+ chunks: any[];
13
+ constructor({ stats, entrypoints, namespace, outputPath, publicPath, }?: {
14
+ entrypoints?: string[] | undefined;
15
+ namespace?: string | undefined;
16
+ outputPath?: string | undefined;
17
+ });
18
+ addChunk(chunk: any): void;
19
+ collectChunks(app: any): React.DetailedReactHTMLElement<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>;
20
+ getChunkGroup(chunk: any): any;
21
+ getChunkInfo(chunkId: any): any;
22
+ resolvePublicUrl(filename: any): string;
23
+ createChunkAsset({ filename, chunk, type, linkType }: {
24
+ chunk: any;
25
+ filename: any;
26
+ linkType: any;
27
+ type: any;
28
+ }): {
29
+ filename: any;
30
+ integrity: any;
31
+ scriptType: string;
32
+ chunk: any;
33
+ url: string;
34
+ path: string;
35
+ type: any;
36
+ linkType: any;
37
+ } | undefined;
38
+ getChunkAssets(chunks: any): any;
39
+ getChunkChildAssets(chunks: any, type: any): any;
40
+ getChunkDependencies(chunks: any): any;
41
+ getRequiredChunksScriptContent(): string;
42
+ getRequiredChunksNamesScriptContent(): string;
43
+ getRequiredChunksScriptTag(extraProps?: {}): string;
44
+ getMainAssets(scriptType: any): any;
45
+ getScriptTags(extraProps?: {}): string;
46
+ getStyleTags(extraProps?: {}): any;
47
+ getLinkTags(extraProps?: {}): any;
48
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Workerd cannot initialize Module Federation's Node-oriented SSR data-fetch
3
+ * runtime. Cloudflare workers do not load native MF remotes, so retain the
4
+ * runtime-plugin contract without installing its server data-fetch hooks.
5
+ */
6
+ export declare const injectDataFetchFunctionPlugin: () => {
7
+ name: string;
8
+ setup(): void;
9
+ };
10
+ export declare const mfSSRDevPlugin: () => {
11
+ name: string;
12
+ setup(): void;
13
+ };
@@ -0,0 +1,21 @@
1
+ export declare const sep = "/";
2
+ export declare const delimiter = ":";
3
+ export declare function isAbsolute(filePath: any): boolean;
4
+ export declare function normalize(filePath: any): string;
5
+ export declare function join(...segments: any[]): string;
6
+ export declare function resolve(...segments: any[]): string;
7
+ export declare function dirname(filePath: any): string;
8
+ export declare function basename(filePath: any, suffix?: string): string;
9
+ export declare function extname(filePath: any): string;
10
+ declare const _default: {
11
+ basename: typeof basename;
12
+ delimiter: string;
13
+ dirname: typeof dirname;
14
+ extname: typeof extname;
15
+ isAbsolute: typeof isAbsolute;
16
+ join: typeof join;
17
+ normalize: typeof normalize;
18
+ resolve: typeof resolve;
19
+ sep: string;
20
+ };
21
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,131 @@
1
+ {
2
+ "name": "@bleedingdev/modern-js-app-tools-extensions",
3
+ "description": "Fork-owned UltraModern.js app-tools extensions for Cloudflare delivery and release envelopes.",
4
+ "homepage": "https://github.com/BleedingDev/ultramodern.js#readme",
5
+ "bugs": {
6
+ "url": "https://github.com/BleedingDev/ultramodern.js/issues"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/BleedingDev/ultramodern.js.git",
11
+ "directory": "packages/solutions/app-tools-extensions"
12
+ },
13
+ "license": "MIT",
14
+ "version": "3.8.3-ultramodern.2",
15
+ "files": [
16
+ "dist",
17
+ "src"
18
+ ],
19
+ "types": "./dist/types/index.d.ts",
20
+ "main": "./dist/cjs/index.js",
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/types/index.d.ts",
24
+ "node": {
25
+ "import": "./dist/esm-node/index.mjs",
26
+ "require": "./dist/cjs/index.js"
27
+ },
28
+ "default": "./dist/cjs/index.js"
29
+ },
30
+ "./cloudflare": {
31
+ "types": "./dist/types/cloudflare/index.d.ts",
32
+ "import": "./dist/esm-node/cloudflare/index.mjs",
33
+ "require": "./dist/cjs/cloudflare/index.js"
34
+ },
35
+ "./cloudflare-builder": {
36
+ "types": "./dist/types/cloudflare-builder.d.ts",
37
+ "import": "./dist/esm-node/cloudflare-builder.mjs",
38
+ "require": "./dist/cjs/cloudflare-builder.js"
39
+ },
40
+ "./cloudflare/*": {
41
+ "types": "./dist/types/cloudflare/*.d.ts",
42
+ "import": "./dist/esm-node/cloudflare/*.mjs",
43
+ "require": "./dist/cjs/cloudflare/*.js"
44
+ },
45
+ "./cloudflare-output-contract": {
46
+ "types": "./dist/types/cloudflare-output-contract.d.ts",
47
+ "import": "./dist/esm-node/cloudflare-output-contract.mjs",
48
+ "require": "./dist/cjs/cloudflare-output-contract.js"
49
+ },
50
+ "./cloudflare-output-plan": {
51
+ "types": "./dist/types/cloudflare-output-plan.d.ts",
52
+ "import": "./dist/esm-node/cloudflare-output-plan.mjs",
53
+ "require": "./dist/cjs/cloudflare-output-plan.js"
54
+ },
55
+ "./cloudflare-output-verifier": {
56
+ "types": "./dist/types/cloudflare-output-verifier/index.d.ts",
57
+ "import": "./dist/esm-node/cloudflare-output-verifier/index.mjs",
58
+ "require": "./dist/cjs/cloudflare-output-verifier/index.js"
59
+ },
60
+ "./cloudflare-output-verifier/*": {
61
+ "types": "./dist/types/cloudflare-output-verifier/*.d.ts",
62
+ "import": "./dist/esm-node/cloudflare-output-verifier/*.mjs",
63
+ "require": "./dist/cjs/cloudflare-output-verifier/*.js"
64
+ },
65
+ "./config": {
66
+ "types": "./dist/types/config.d.ts",
67
+ "import": "./dist/esm-node/config.mjs",
68
+ "require": "./dist/cjs/config.js"
69
+ },
70
+ "./release-envelope": {
71
+ "types": "./dist/types/release-envelope/index.d.ts",
72
+ "import": "./dist/esm-node/release-envelope/index.mjs",
73
+ "require": "./dist/cjs/release-envelope/index.js"
74
+ },
75
+ "./release-envelope/*": {
76
+ "types": "./dist/types/release-envelope/*.d.ts",
77
+ "import": "./dist/esm-node/release-envelope/*.mjs",
78
+ "require": "./dist/cjs/release-envelope/*.js"
79
+ },
80
+ "./release-identity": {
81
+ "types": "./dist/types/release-identity.d.ts",
82
+ "import": "./dist/esm-node/release-identity.mjs",
83
+ "require": "./dist/cjs/release-identity.js"
84
+ }
85
+ },
86
+ "typesVersions": {
87
+ "*": {
88
+ "*": [
89
+ "./dist/types/*",
90
+ "./src/*"
91
+ ]
92
+ }
93
+ },
94
+ "engines": {
95
+ "node": ">=26.7.0"
96
+ },
97
+ "dependencies": {
98
+ "@babel/parser": "^8.0.0",
99
+ "@babel/traverse": "^8.0.0",
100
+ "@loadable/component": "5.16.7",
101
+ "@modern-js/builder": "npm:@bleedingdev/modern-js-builder@3.8.3-ultramodern.2",
102
+ "@modern-js/server-core": "npm:@bleedingdev/modern-js-server-core@3.8.3-ultramodern.2",
103
+ "@modern-js/types": "npm:@bleedingdev/modern-js-types@3.8.3-ultramodern.2",
104
+ "@modern-js/utils": "npm:@bleedingdev/modern-js-utils@3.8.3-ultramodern.2",
105
+ "@swc/helpers": "^0.5.23",
106
+ "std-env": "4.2.0"
107
+ },
108
+ "peerDependencies": {
109
+ "@rsbuild/core": "2.2.0"
110
+ },
111
+ "devDependencies": {
112
+ "@module-federation/runtime-tools": "2.9.0",
113
+ "@rsbuild/core": "2.2.0",
114
+ "@rslib/core": "0.23.2",
115
+ "@scripts/rstest-config": "2.66.0",
116
+ "@types/babel__traverse": "7.28.0",
117
+ "@types/node": "^26.2.0",
118
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
119
+ "core-js": "^3.49.0"
120
+ },
121
+ "sideEffects": false,
122
+ "publishConfig": {
123
+ "access": "public"
124
+ },
125
+ "scripts": {
126
+ "pretest": "pnpm run build",
127
+ "dev": "rslib build --watch",
128
+ "build": "rslib build",
129
+ "test": "rstest"
130
+ }
131
+ }
@@ -0,0 +1,165 @@
1
+ import path from 'node:path';
2
+ import { fs as fse } from '@modern-js/utils';
3
+ import type {
4
+ CloudflareWorkerArtifactConfig,
5
+ CloudflareWorkerPublicAssetConfig,
6
+ } from '../config';
7
+ import {
8
+ RESERVED_ARTIFACT_DESTINATION_DIRECTORIES,
9
+ RESERVED_ARTIFACT_DESTINATION_FILES,
10
+ ROUTE_SPEC_OUTPUT,
11
+ } from './constants';
12
+ import type { CloudflareModernConfig } from './types';
13
+ import { normalizeRelativePath } from './utils';
14
+
15
+ const normalizeCloudflareArtifact = (
16
+ artifact: CloudflareWorkerArtifactConfig,
17
+ index: number,
18
+ ) => {
19
+ const from = normalizeRelativePath(
20
+ artifact.from,
21
+ `deploy.worker.artifacts[${index}].from`,
22
+ 'app root',
23
+ );
24
+ const to = normalizeRelativePath(
25
+ artifact.to,
26
+ `deploy.worker.artifacts[${index}].to`,
27
+ 'Cloudflare output',
28
+ );
29
+ const [topLevelDestination] = to.split('/');
30
+ const reservedDestination = RESERVED_ARTIFACT_DESTINATION_FILES.has(to)
31
+ ? to
32
+ : topLevelDestination;
33
+
34
+ if (
35
+ RESERVED_ARTIFACT_DESTINATION_FILES.has(to) ||
36
+ RESERVED_ARTIFACT_DESTINATION_DIRECTORIES.has(topLevelDestination)
37
+ ) {
38
+ throw new Error(
39
+ `deploy.worker.artifacts[${index}].to must not target generated Cloudflare output path ${JSON.stringify(
40
+ reservedDestination,
41
+ )}.`,
42
+ );
43
+ }
44
+
45
+ return {
46
+ from,
47
+ to,
48
+ index,
49
+ };
50
+ };
51
+
52
+ export const getCloudflareArtifacts = (modernConfig: CloudflareModernConfig) =>
53
+ (modernConfig.deploy?.worker?.artifacts ?? []).map(
54
+ normalizeCloudflareArtifact,
55
+ );
56
+
57
+ const normalizeCloudflarePublicAsset = (
58
+ asset: CloudflareWorkerPublicAssetConfig,
59
+ index: number,
60
+ ) => {
61
+ const from = normalizeRelativePath(
62
+ asset.from,
63
+ `deploy.worker.publicAssets[${index}].from`,
64
+ 'app root',
65
+ );
66
+ const to = normalizeRelativePath(
67
+ asset.to,
68
+ `deploy.worker.publicAssets[${index}].to`,
69
+ 'Cloudflare public output',
70
+ { allowRoot: true },
71
+ );
72
+
73
+ return {
74
+ from,
75
+ to,
76
+ index,
77
+ };
78
+ };
79
+
80
+ export const getCloudflarePublicAssets = (
81
+ modernConfig: CloudflareModernConfig,
82
+ ) =>
83
+ (modernConfig.deploy?.worker?.publicAssets ?? []).map(
84
+ normalizeCloudflarePublicAsset,
85
+ );
86
+
87
+ export const copyCloudflareArtifacts = async (
88
+ appDirectory: string,
89
+ outputDirectory: string,
90
+ artifacts: ReturnType<typeof getCloudflareArtifacts>,
91
+ ) => {
92
+ for (const artifact of artifacts) {
93
+ const sourcePath = path.join(appDirectory, artifact.from);
94
+
95
+ if (!(await fse.pathExists(sourcePath))) {
96
+ throw new Error(
97
+ `deploy.worker.artifacts[${artifact.index}].from does not exist: ${artifact.from}`,
98
+ );
99
+ }
100
+
101
+ await fse.copy(sourcePath, path.join(outputDirectory, artifact.to));
102
+ }
103
+ };
104
+
105
+ export const copyCloudflarePublicAssets = async (
106
+ appDirectory: string,
107
+ publicDirectory: string,
108
+ publicAssets: ReturnType<typeof getCloudflarePublicAssets>,
109
+ ) => {
110
+ for (const asset of publicAssets) {
111
+ const sourcePath = path.join(appDirectory, asset.from);
112
+
113
+ if (!(await fse.pathExists(sourcePath))) {
114
+ throw new Error(
115
+ `deploy.worker.publicAssets[${asset.index}].from does not exist: ${asset.from}`,
116
+ );
117
+ }
118
+
119
+ await fse.copy(sourcePath, path.join(publicDirectory, asset.to));
120
+ }
121
+ };
122
+
123
+ export const copyCloudflareD1Migrations = async (
124
+ appDirectory: string,
125
+ outputDirectory: string,
126
+ modernConfig: CloudflareModernConfig,
127
+ ) => {
128
+ for (const [index, database] of (
129
+ modernConfig.deploy?.worker?.d1Databases ?? []
130
+ ).entries()) {
131
+ if (!database.migrationsDir) {
132
+ continue;
133
+ }
134
+
135
+ const migrationsDir = normalizeRelativePath(
136
+ database.migrationsDir,
137
+ `deploy.worker.d1Databases[${index}].migrationsDir`,
138
+ 'app root',
139
+ );
140
+ const sourcePath = path.join(appDirectory, migrationsDir);
141
+
142
+ if (!(await fse.pathExists(sourcePath))) {
143
+ throw new Error(
144
+ `deploy.worker.d1Databases[${index}].migrationsDir does not exist: ${migrationsDir}`,
145
+ );
146
+ }
147
+
148
+ await fse.copy(sourcePath, path.join(outputDirectory, migrationsDir));
149
+ }
150
+ };
151
+
152
+ export const readRouteSpec = async (outputDirectory: string) => {
153
+ const routeSpecPath = path.join(outputDirectory, ROUTE_SPEC_OUTPUT);
154
+
155
+ if (!(await fse.pathExists(routeSpecPath))) {
156
+ return { routes: [] };
157
+ }
158
+
159
+ const routeSpec = await fse.readJSON(routeSpecPath);
160
+
161
+ return {
162
+ ...routeSpec,
163
+ routes: Array.isArray(routeSpec.routes) ? routeSpec.routes : [],
164
+ };
165
+ };
@@ -0,0 +1,50 @@
1
+ import {
2
+ CLOUDFLARE_ASSETS_BINDING,
3
+ CLOUDFLARE_OUTPUT_PACKAGE_FILE,
4
+ CLOUDFLARE_PUBLIC_ASSETS_DIRECTORY,
5
+ CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS,
6
+ CLOUDFLARE_RUNTIME_TYPE,
7
+ CLOUDFLARE_WORKER_BUNDLE_DIRECTORY,
8
+ CLOUDFLARE_WORKER_BUNDLE_FORMAT,
9
+ CLOUDFLARE_WORKER_ENTRY,
10
+ CLOUDFLARE_WORKER_MANIFEST,
11
+ CLOUDFLARE_WRANGLER_CONFIG_FILE,
12
+ } from '../cloudflare-output-contract';
13
+
14
+ export { CLOUDFLARE_RUNTIME_TYPE, CLOUDFLARE_WORKER_BUNDLE_FORMAT };
15
+
16
+ export const WORKER_ENTRY = CLOUDFLARE_WORKER_ENTRY;
17
+ export const WORKER_MANIFEST = CLOUDFLARE_WORKER_MANIFEST;
18
+ export const WRANGLER_CONFIG_FILE = CLOUDFLARE_WRANGLER_CONFIG_FILE;
19
+ export const OUTPUT_PACKAGE_FILE = CLOUDFLARE_OUTPUT_PACKAGE_FILE;
20
+ export const ASSETS_BINDING = CLOUDFLARE_ASSETS_BINDING;
21
+ export const ROUTE_SPEC_FILE = 'route.json';
22
+ export const ROUTE_SPEC_OUTPUT = `server/${ROUTE_SPEC_FILE}`;
23
+ export const LOADABLE_STATS_FILE = 'loadable-stats.json';
24
+ export const ROUTE_MANIFEST_FILE = 'routes-manifest.json';
25
+ export const PUBLIC_ASSETS_DIRECTORY = CLOUDFLARE_PUBLIC_ASSETS_DIRECTORY;
26
+ export const WORKER_BUNDLE_DIRECTORY = CLOUDFLARE_WORKER_BUNDLE_DIRECTORY;
27
+ export const SERVER_BUNDLE_DIRECTORY = 'bundles';
28
+ export const SERVER_OUTPUT_DIRECTORY = 'server';
29
+ export const DEFAULT_SERVER_ONLY_PUBLIC_ASSET_EXCLUDES = [
30
+ 'api',
31
+ 'shared',
32
+ ] as const;
33
+ export const BFF_EFFECT_WORKER_ENTRY = `${WORKER_BUNDLE_DIRECTORY}/__modern_bff_effect.js`;
34
+ export const BFF_EFFECT_WORKER_DISPATCHER_EXPORT =
35
+ '__modern_create_effect_bff_dispatcher';
36
+ export const EFFECT_BFF_CLOUDFLARE_IMPORT_GUIDANCE =
37
+ 'Ensure the Effect API entry exists at api/index.ts or bff.effect.entry, and import Cloudflare edge handlers from @modern-js/plugin-bff/effect-edge instead of lambda/Hono server helpers.';
38
+ export const DEFAULT_COMPATIBILITY_DATE = '2026-06-02';
39
+ export const COMPATIBILITY_DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/u;
40
+ export const REQUIRED_COMPATIBILITY_FLAGS =
41
+ CLOUDFLARE_REQUIRED_COMPATIBILITY_FLAGS;
42
+ export const RESERVED_ARTIFACT_DESTINATION_FILES = new Set([
43
+ WRANGLER_CONFIG_FILE,
44
+ OUTPUT_PACKAGE_FILE,
45
+ ]);
46
+ export const RESERVED_ARTIFACT_DESTINATION_DIRECTORIES = new Set([
47
+ PUBLIC_ASSETS_DIRECTORY,
48
+ SERVER_OUTPUT_DIRECTORY,
49
+ WORKER_BUNDLE_DIRECTORY,
50
+ ]);