@bleedingdev/modern-js-create 3.2.0-ultramodern.120 → 3.2.0-ultramodern.121

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 (118) hide show
  1. package/README.md +35 -12
  2. package/dist/cjs/create-package-root.cjs +7 -9
  3. package/dist/cjs/index.cjs +74 -44
  4. package/dist/cjs/locale/en.cjs +6 -7
  5. package/dist/cjs/locale/zh.cjs +6 -7
  6. package/dist/cjs/ultramodern-workspace/add-vertical.cjs +337 -0
  7. package/dist/cjs/ultramodern-workspace/app-files.cjs +223 -0
  8. package/dist/cjs/ultramodern-workspace/contracts.cjs +836 -0
  9. package/dist/cjs/ultramodern-workspace/demo-components.cjs +422 -0
  10. package/dist/cjs/ultramodern-workspace/descriptors.cjs +222 -0
  11. package/dist/cjs/ultramodern-workspace/effect-api.cjs +952 -0
  12. package/dist/cjs/ultramodern-workspace/fs-io.cjs +191 -0
  13. package/dist/cjs/ultramodern-workspace/index.cjs +48 -0
  14. package/dist/cjs/ultramodern-workspace/locales.cjs +173 -0
  15. package/dist/cjs/ultramodern-workspace/module-federation.cjs +487 -0
  16. package/dist/cjs/ultramodern-workspace/naming.cjs +161 -0
  17. package/dist/cjs/ultramodern-workspace/package-json.cjs +406 -0
  18. package/dist/cjs/ultramodern-workspace/package-source.cjs +59 -0
  19. package/dist/cjs/ultramodern-workspace/policy.cjs +248 -0
  20. package/dist/cjs/ultramodern-workspace/public-surface.cjs +268 -0
  21. package/dist/cjs/ultramodern-workspace/routes.cjs +375 -0
  22. package/dist/cjs/ultramodern-workspace/types.cjs +61 -0
  23. package/dist/cjs/ultramodern-workspace/versions.cjs +153 -0
  24. package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +153 -0
  25. package/dist/cjs/ultramodern-workspace/write-workspace.cjs +175 -0
  26. package/dist/esm/create-package-root.js +7 -9
  27. package/dist/esm/index.js +72 -42
  28. package/dist/esm/locale/en.js +6 -7
  29. package/dist/esm/locale/zh.js +6 -7
  30. package/dist/esm/ultramodern-workspace/add-vertical.js +252 -0
  31. package/dist/esm/ultramodern-workspace/app-files.js +149 -0
  32. package/dist/esm/ultramodern-workspace/contracts.js +741 -0
  33. package/dist/esm/ultramodern-workspace/demo-components.js +363 -0
  34. package/dist/esm/ultramodern-workspace/descriptors.js +133 -0
  35. package/dist/esm/ultramodern-workspace/effect-api.js +854 -0
  36. package/dist/esm/ultramodern-workspace/fs-io.js +90 -0
  37. package/dist/esm/ultramodern-workspace/index.js +3 -0
  38. package/dist/esm/ultramodern-workspace/locales.js +122 -0
  39. package/dist/esm/ultramodern-workspace/module-federation.js +415 -0
  40. package/dist/esm/ultramodern-workspace/naming.js +71 -0
  41. package/dist/esm/ultramodern-workspace/package-json.js +338 -0
  42. package/dist/esm/ultramodern-workspace/package-source.js +21 -0
  43. package/dist/esm/ultramodern-workspace/policy.js +183 -0
  44. package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
  45. package/dist/esm/ultramodern-workspace/routes.js +280 -0
  46. package/dist/esm/ultramodern-workspace/types.js +16 -0
  47. package/dist/esm/ultramodern-workspace/versions.js +34 -0
  48. package/dist/esm/ultramodern-workspace/workspace-scripts.js +91 -0
  49. package/dist/esm/ultramodern-workspace/write-workspace.js +121 -0
  50. package/dist/esm-node/create-package-root.js +7 -9
  51. package/dist/esm-node/index.js +72 -42
  52. package/dist/esm-node/locale/en.js +6 -7
  53. package/dist/esm-node/locale/zh.js +6 -7
  54. package/dist/esm-node/ultramodern-workspace/add-vertical.js +253 -0
  55. package/dist/esm-node/ultramodern-workspace/app-files.js +150 -0
  56. package/dist/esm-node/ultramodern-workspace/contracts.js +742 -0
  57. package/dist/esm-node/ultramodern-workspace/demo-components.js +364 -0
  58. package/dist/esm-node/ultramodern-workspace/descriptors.js +134 -0
  59. package/dist/esm-node/ultramodern-workspace/effect-api.js +855 -0
  60. package/dist/esm-node/ultramodern-workspace/fs-io.js +91 -0
  61. package/dist/esm-node/ultramodern-workspace/index.js +4 -0
  62. package/dist/esm-node/ultramodern-workspace/locales.js +123 -0
  63. package/dist/esm-node/ultramodern-workspace/module-federation.js +416 -0
  64. package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
  65. package/dist/esm-node/ultramodern-workspace/package-json.js +339 -0
  66. package/dist/esm-node/ultramodern-workspace/package-source.js +22 -0
  67. package/dist/esm-node/ultramodern-workspace/policy.js +184 -0
  68. package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
  69. package/dist/esm-node/ultramodern-workspace/routes.js +281 -0
  70. package/dist/esm-node/ultramodern-workspace/types.js +17 -0
  71. package/dist/esm-node/ultramodern-workspace/versions.js +35 -0
  72. package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +92 -0
  73. package/dist/esm-node/ultramodern-workspace/write-workspace.js +122 -0
  74. package/dist/types/locale/en.d.ts +4 -5
  75. package/dist/types/locale/index.d.ts +8 -10
  76. package/dist/types/locale/zh.d.ts +4 -5
  77. package/dist/types/ultramodern-workspace/add-vertical.d.ts +19 -0
  78. package/dist/types/ultramodern-workspace/app-files.d.ts +14 -0
  79. package/dist/types/ultramodern-workspace/contracts.d.ts +21 -0
  80. package/dist/types/ultramodern-workspace/demo-components.d.ts +9 -0
  81. package/dist/types/ultramodern-workspace/descriptors.d.ts +39 -0
  82. package/dist/types/ultramodern-workspace/effect-api.d.ts +73 -0
  83. package/dist/types/ultramodern-workspace/fs-io.d.ts +18 -0
  84. package/dist/types/ultramodern-workspace/index.d.ts +4 -0
  85. package/dist/types/ultramodern-workspace/locales.d.ts +183 -0
  86. package/dist/types/ultramodern-workspace/module-federation.d.ts +16 -0
  87. package/dist/types/ultramodern-workspace/naming.d.ts +16 -0
  88. package/dist/types/ultramodern-workspace/package-json.d.ts +12 -0
  89. package/dist/types/ultramodern-workspace/package-source.d.ts +2 -0
  90. package/dist/types/ultramodern-workspace/policy.d.ts +60 -0
  91. package/dist/types/ultramodern-workspace/public-surface.d.ts +37 -0
  92. package/dist/types/ultramodern-workspace/routes.d.ts +25 -0
  93. package/dist/types/ultramodern-workspace/types.d.ts +95 -0
  94. package/dist/types/ultramodern-workspace/versions.d.ts +38 -0
  95. package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +10 -0
  96. package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -0
  97. package/package.json +4 -3
  98. package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +1 -4
  99. package/template-workspace/.mise.toml.handlebars +1 -0
  100. package/template-workspace/{AGENTS.md → AGENTS.md.handlebars} +12 -7
  101. package/template-workspace/README.md.handlebars +40 -24
  102. package/template-workspace/{pnpm-workspace.yaml → pnpm-workspace.yaml.handlebars} +2 -2
  103. package/template-workspace/scripts/bootstrap-agent-skills.mjs +31 -51
  104. package/templates/app/shell-frame.tsx +49 -0
  105. package/templates/app/ultramodern-route-head.tsx.handlebars +142 -0
  106. package/templates/packages/shared-contracts-index.ts +466 -0
  107. package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +69 -0
  108. package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mjs +9 -0
  109. package/templates/workspace-scripts/generate-public-surface-assets.mjs +529 -0
  110. package/templates/workspace-scripts/proof-cloudflare-version.mjs +125 -0
  111. package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +851 -0
  112. package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
  113. package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +223 -0
  114. package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +593 -0
  115. package/dist/cjs/ultramodern-workspace.cjs +0 -6797
  116. package/dist/esm/ultramodern-workspace.js +0 -6738
  117. package/dist/esm-node/ultramodern-workspace.js +0 -6739
  118. package/dist/types/ultramodern-workspace.d.ts +0 -29
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ PUBLIC_WEBSITE_POLICY: ()=>PUBLIC_WEBSITE_POLICY,
32
+ createCloudflareDeployContract: ()=>createCloudflareDeployContract,
33
+ createCloudflareProofRoute: ()=>createCloudflareProofRoute,
34
+ createCloudflareSecurityContract: ()=>createCloudflareSecurityContract,
35
+ createPublicHeadRobotsPolicy: ()=>createPublicHeadRobotsPolicy,
36
+ createPublicSurfaceContentExpansionPolicy: ()=>createPublicSurfaceContentExpansionPolicy,
37
+ createPublicWebsiteBudgetFallback: ()=>createPublicWebsiteBudgetFallback,
38
+ createPublicWebsiteQualityGateContract: ()=>createPublicWebsiteQualityGateContract,
39
+ formatIntegerCodeLiteral: ()=>formatIntegerCodeLiteral,
40
+ formatTsJsonValue: ()=>formatTsJsonValue
41
+ });
42
+ const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
43
+ const external_routes_cjs_namespaceObject = require("./routes.cjs");
44
+ const external_types_cjs_namespaceObject = require("./types.cjs");
45
+ const external_versions_cjs_namespaceObject = require("./versions.cjs");
46
+ function createCloudflareProofRoute(app) {
47
+ if ('shell' === app.kind) return {
48
+ ssr: '/en',
49
+ mfManifest: '/mf-manifest.json',
50
+ locale: `/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app)}.json`
51
+ };
52
+ const languageRoutes = (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(app);
53
+ const firstCanonicalPath = Object.keys(languageRoutes)[0];
54
+ const localizedPath = firstCanonicalPath && (0, external_types_cjs_namespaceObject.isRecord)(languageRoutes[firstCanonicalPath]) ? languageRoutes[firstCanonicalPath].en : void 0;
55
+ return {
56
+ ssr: localizedPath ?? '/en',
57
+ mfManifest: '/mf-manifest.json',
58
+ locale: `/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(app)}.json`,
59
+ ...(0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(app) ? {
60
+ effectReadiness: `${(0, external_descriptors_cjs_namespaceObject.effectApiPrefix)(app)}/effect/${(0, external_descriptors_cjs_namespaceObject.effectApiStem)(app)}/readiness`
61
+ } : {}
62
+ };
63
+ }
64
+ function createCloudflareSecurityContract() {
65
+ return {
66
+ enabled: true,
67
+ headers: {
68
+ referrerPolicy: 'strict-origin-when-cross-origin',
69
+ contentTypeOptions: 'nosniff',
70
+ permissionsPolicy: 'camera=(), geolocation=(), microphone=(), payment=(), usb=()'
71
+ },
72
+ contentSecurityPolicy: {
73
+ mode: 'report-only',
74
+ directives: {
75
+ 'base-uri': [
76
+ "'self'"
77
+ ],
78
+ 'connect-src': [
79
+ "'self'",
80
+ 'https:',
81
+ 'http:',
82
+ 'wss:',
83
+ 'ws:'
84
+ ],
85
+ 'default-src': [
86
+ "'self'"
87
+ ],
88
+ 'font-src': [
89
+ "'self'",
90
+ 'data:',
91
+ 'https:',
92
+ 'http:'
93
+ ],
94
+ 'form-action': [
95
+ "'self'"
96
+ ],
97
+ 'frame-ancestors': [
98
+ "'self'"
99
+ ],
100
+ 'img-src': [
101
+ "'self'",
102
+ 'data:',
103
+ 'blob:',
104
+ 'https:',
105
+ 'http:'
106
+ ],
107
+ 'manifest-src': [
108
+ "'self'",
109
+ 'https:',
110
+ 'http:'
111
+ ],
112
+ 'object-src': [
113
+ "'none'"
114
+ ],
115
+ "script-src": [
116
+ "'self'",
117
+ "'unsafe-inline'",
118
+ "'unsafe-eval'",
119
+ 'https:',
120
+ 'http:',
121
+ 'blob:'
122
+ ],
123
+ 'style-src': [
124
+ "'self'",
125
+ "'unsafe-inline'",
126
+ 'https:',
127
+ 'http:'
128
+ ],
129
+ 'worker-src': [
130
+ "'self'",
131
+ 'blob:'
132
+ ]
133
+ },
134
+ reason: "Report-only by default so Cloudflare Module Federation SSR can prove remote script, style, and connect compatibility before enforcement."
135
+ },
136
+ noindex: {
137
+ workersDev: true,
138
+ localhost: true,
139
+ previewHostnames: []
140
+ }
141
+ };
142
+ }
143
+ const PUBLIC_WEBSITE_POLICY = {
144
+ qualityGates: {
145
+ publicRoutes: {
146
+ requireSitemapWhenPresent: true,
147
+ requireRobotsSitemapConsistency: true,
148
+ requireWebManifestWhenPresent: true
149
+ },
150
+ statusCodes: {
151
+ notFoundRoute: '/__ultramodern-smoke-missing',
152
+ unknownRouteStatus: 404
153
+ },
154
+ indexing: {
155
+ previewNoindex: true,
156
+ productionPublicRoutesIndexable: true
157
+ },
158
+ assets: {
159
+ cssPreloadRequired: true,
160
+ cssResponseRequired: true,
161
+ cacheControlRequiredForCss: true,
162
+ sourcemapsPubliclyReferenced: false
163
+ },
164
+ budgets: {
165
+ ssrHtmlMaxBytes: 250000,
166
+ mfManifestMaxBytes: 500000,
167
+ localeJsonMaxBytes: 100000,
168
+ sitemapXmlMaxBytes: 500000,
169
+ cssAssetMaxBytes: 750000
170
+ },
171
+ csp: {
172
+ finalMode: 'report-only-dogfood',
173
+ decision: "Report-only remains the generated final mode until public smoke proof records MF SSR script/style/connect compatibility for the deployed surface."
174
+ }
175
+ },
176
+ publicHead: {
177
+ indexableRobots: 'index, follow',
178
+ privateRouteRobots: 'noindex, nofollow'
179
+ },
180
+ publicSurface: {
181
+ defaultProviderFile: 'route.sitemap.mjs',
182
+ draftPolicy: 'omit-draft-by-default',
183
+ indexablePolicy: 'omit-indexable-false'
184
+ }
185
+ };
186
+ function formatTsJsonValue(value, indent) {
187
+ return JSON.stringify(value, null, 2).replaceAll('\n', `\n${' '.repeat(indent)}`);
188
+ }
189
+ function formatIntegerCodeLiteral(value) {
190
+ return String(value).replace(/\B(?=(\d{3})+(?!\d))/gu, '_');
191
+ }
192
+ function createPublicWebsiteQualityGateContract() {
193
+ return PUBLIC_WEBSITE_POLICY.qualityGates;
194
+ }
195
+ function createPublicWebsiteBudgetFallback(budgetName) {
196
+ return formatIntegerCodeLiteral(PUBLIC_WEBSITE_POLICY.qualityGates.budgets[budgetName]);
197
+ }
198
+ function createPublicHeadRobotsPolicy() {
199
+ return PUBLIC_WEBSITE_POLICY.publicHead;
200
+ }
201
+ function createPublicSurfaceContentExpansionPolicy() {
202
+ return PUBLIC_WEBSITE_POLICY.publicSurface;
203
+ }
204
+ function createCloudflareDeployContract(scope, app) {
205
+ return {
206
+ target: 'cloudflare',
207
+ workerName: (0, external_descriptors_cjs_namespaceObject.createCloudflareWorkerName)(scope, app),
208
+ publicUrlEnv: (0, external_descriptors_cjs_namespaceObject.createCloudflarePublicUrlEnv)(app),
209
+ compatibilityDate: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE,
210
+ compatibilityFlags: [
211
+ 'nodejs_compat',
212
+ 'global_fetch_strictly_public'
213
+ ],
214
+ assetsBinding: 'ASSETS',
215
+ routes: createCloudflareProofRoute(app),
216
+ security: createCloudflareSecurityContract(),
217
+ qualityGates: createPublicWebsiteQualityGateContract(),
218
+ evidence: {
219
+ proofScript: "scripts/proof-cloudflare-version.mjs",
220
+ reportDefault: '.codex/reports/cloudflare-version-proof/public-url-proof.json'
221
+ }
222
+ };
223
+ }
224
+ exports.PUBLIC_WEBSITE_POLICY = __webpack_exports__.PUBLIC_WEBSITE_POLICY;
225
+ exports.createCloudflareDeployContract = __webpack_exports__.createCloudflareDeployContract;
226
+ exports.createCloudflareProofRoute = __webpack_exports__.createCloudflareProofRoute;
227
+ exports.createCloudflareSecurityContract = __webpack_exports__.createCloudflareSecurityContract;
228
+ exports.createPublicHeadRobotsPolicy = __webpack_exports__.createPublicHeadRobotsPolicy;
229
+ exports.createPublicSurfaceContentExpansionPolicy = __webpack_exports__.createPublicSurfaceContentExpansionPolicy;
230
+ exports.createPublicWebsiteBudgetFallback = __webpack_exports__.createPublicWebsiteBudgetFallback;
231
+ exports.createPublicWebsiteQualityGateContract = __webpack_exports__.createPublicWebsiteQualityGateContract;
232
+ exports.formatIntegerCodeLiteral = __webpack_exports__.formatIntegerCodeLiteral;
233
+ exports.formatTsJsonValue = __webpack_exports__.formatTsJsonValue;
234
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
235
+ "PUBLIC_WEBSITE_POLICY",
236
+ "createCloudflareDeployContract",
237
+ "createCloudflareProofRoute",
238
+ "createCloudflareSecurityContract",
239
+ "createPublicHeadRobotsPolicy",
240
+ "createPublicSurfaceContentExpansionPolicy",
241
+ "createPublicWebsiteBudgetFallback",
242
+ "createPublicWebsiteQualityGateContract",
243
+ "formatIntegerCodeLiteral",
244
+ "formatTsJsonValue"
245
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
246
+ Object.defineProperty(exports, '__esModule', {
247
+ value: true
248
+ });
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, getters, values)=>{
14
+ var define = (defs, kind)=>{
15
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
16
+ enumerable: true,
17
+ [kind]: defs[key]
18
+ });
19
+ };
20
+ define(getters, "get");
21
+ define(values, "value");
22
+ };
23
+ })();
24
+ (()=>{
25
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
26
+ })();
27
+ (()=>{
28
+ __webpack_require__.r = (exports1)=>{
29
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
30
+ value: 'Module'
31
+ });
32
+ Object.defineProperty(exports1, '__esModule', {
33
+ value: true
34
+ });
35
+ };
36
+ })();
37
+ var __webpack_exports__ = {};
38
+ __webpack_require__.r(__webpack_exports__);
39
+ __webpack_require__.d(__webpack_exports__, {
40
+ createLocalisedPublicPath: ()=>createLocalisedPublicPath,
41
+ createPublicHeadContract: ()=>createPublicHeadContract,
42
+ createPublicSurfaceContract: ()=>createPublicSurfaceContract,
43
+ createPublicSurfaceGenerationCommand: ()=>createPublicSurfaceGenerationCommand,
44
+ createPublicSurfaceOutputFiles: ()=>createPublicSurfaceOutputFiles,
45
+ createPublicSurfaceRouteEntries: ()=>createPublicSurfaceRouteEntries,
46
+ createPublicSurfaceUrlPaths: ()=>createPublicSurfaceUrlPaths,
47
+ createPublicWebAppArtifacts: ()=>createPublicWebAppArtifacts,
48
+ publicSurfaceBaseOutputFiles: ()=>publicSurfaceBaseOutputFiles,
49
+ publicSurfaceManagedSourceAssetPaths: ()=>publicSurfaceManagedSourceAssetPaths,
50
+ publicSurfacePublicRouteOutputFiles: ()=>publicSurfacePublicRouteOutputFiles,
51
+ rewriteWorkspaceAssetsForApp: ()=>rewriteWorkspaceAssetsForApp,
52
+ uniqueSorted: ()=>uniqueSorted
53
+ });
54
+ const external_node_fs_namespaceObject = require("node:fs");
55
+ var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
56
+ const external_node_path_namespaceObject = require("node:path");
57
+ var external_node_path_default = /*#__PURE__*/ __webpack_require__.n(external_node_path_namespaceObject);
58
+ const external_app_files_cjs_namespaceObject = require("./app-files.cjs");
59
+ const external_naming_cjs_namespaceObject = require("./naming.cjs");
60
+ const external_policy_cjs_namespaceObject = require("./policy.cjs");
61
+ const external_routes_cjs_namespaceObject = require("./routes.cjs");
62
+ const external_types_cjs_namespaceObject = require("./types.cjs");
63
+ const publicSurfaceManagedSourceAssetPaths = [
64
+ 'config/public/robots.txt',
65
+ 'config/public/sitemap.xml',
66
+ 'config/public/site.webmanifest'
67
+ ];
68
+ const publicSurfaceBaseOutputFiles = [
69
+ 'robots.txt'
70
+ ];
71
+ const publicSurfacePublicRouteOutputFiles = [
72
+ 'sitemap.xml',
73
+ 'site.webmanifest'
74
+ ];
75
+ function createLocalisedPublicPath(pathname, language) {
76
+ const publicPath = (0, external_routes_cjs_namespaceObject.normalisePublicPath)(pathname);
77
+ return '/' === publicPath ? `/${language}` : `/${language}${publicPath}`;
78
+ }
79
+ function uniqueSorted(values) {
80
+ return Array.from(new Set(values)).sort((left, right)=>left.localeCompare(right));
81
+ }
82
+ function createPublicSurfaceRouteEntries(app) {
83
+ return (0, external_routes_cjs_namespaceObject.createPublicRouteMetadata)(app).map((route)=>{
84
+ const localeUrlPaths = Object.fromEntries(external_types_cjs_namespaceObject.supportedWorkspaceLanguages.map((language)=>[
85
+ language,
86
+ createLocalisedPublicPath(route.localisedPaths[language], language)
87
+ ]));
88
+ if (!Object.values(localeUrlPaths).every(external_routes_cjs_namespaceObject.isConcretePublicPath)) return;
89
+ return {
90
+ ...route,
91
+ canonicalUrlPath: localeUrlPaths.en,
92
+ localeUrlPaths
93
+ };
94
+ }).filter((route)=>void 0 !== route).sort((left, right)=>left.canonicalUrlPath.localeCompare(right.canonicalUrlPath) || left.id.localeCompare(right.id));
95
+ }
96
+ function createPublicSurfaceUrlPaths(app) {
97
+ return uniqueSorted(createPublicSurfaceRouteEntries(app).flatMap((route)=>external_types_cjs_namespaceObject.supportedWorkspaceLanguages.map((language)=>route.localeUrlPaths[language])));
98
+ }
99
+ function createPublicSurfaceOutputFiles(app) {
100
+ return [
101
+ ...publicSurfaceBaseOutputFiles,
102
+ ...(0, external_routes_cjs_namespaceObject.createPublicRouteMetadata)(app).length > 0 ? publicSurfacePublicRouteOutputFiles : []
103
+ ];
104
+ }
105
+ function createPublicSurfaceGenerationCommand(app, target, requirePublicOrigin = false) {
106
+ return `node ${(0, external_naming_cjs_namespaceObject.relativeRootFor)(app.directory)}/scripts/generate-public-surface-assets.mjs --app ${app.id} --target ${target}${requirePublicOrigin ? ' --require-public-origin' : ''}`;
107
+ }
108
+ function rewriteWorkspaceAssetsForApp(workspaceRoot, app) {
109
+ for (const relativePath of publicSurfaceManagedSourceAssetPaths)external_node_fs_default().rmSync(external_node_path_default().join(workspaceRoot, app.directory, relativePath), {
110
+ force: true
111
+ });
112
+ }
113
+ function createPublicSurfaceContract(app) {
114
+ const files = createPublicSurfaceOutputFiles(app);
115
+ const contentExpansionPolicy = (0, external_policy_cjs_namespaceObject.createPublicSurfaceContentExpansionPolicy)();
116
+ return {
117
+ authoring: 'colocated-route-meta',
118
+ artifactLifecycle: 'build-and-deploy-output',
119
+ generatedManifest: './src/routes/ultramodern-route-metadata',
120
+ source: 'route-owned-public-routes',
121
+ metadataExport: './src/routes/ultramodern-route-metadata',
122
+ generator: "scripts/generate-public-surface-assets.mjs",
123
+ outputRoot: 'dist/public',
124
+ cloudflareOutputRoot: '.output/public',
125
+ privateRoutePolicy: 'omit-from-generated-public-surface',
126
+ files,
127
+ omittedByDefault: [
128
+ 'api-catalog.json',
129
+ 'llms.txt',
130
+ 'security.txt'
131
+ ],
132
+ languages: [
133
+ ...external_types_cjs_namespaceObject.supportedWorkspaceLanguages
134
+ ],
135
+ contentExpansion: {
136
+ authoring: 'route-owned-esm-provider',
137
+ defaultProviderFile: contentExpansionPolicy.defaultProviderFile,
138
+ entryExport: 'default-or-entries',
139
+ paramsSource: 'params-or-localeParams',
140
+ draftPolicy: contentExpansionPolicy.draftPolicy,
141
+ indexablePolicy: contentExpansionPolicy.indexablePolicy,
142
+ lifecycle: 'executed-during-public-surface-generation'
143
+ },
144
+ contentSources: [],
145
+ publicRoutes: (0, external_routes_cjs_namespaceObject.createPublicRouteMetadata)(app),
146
+ routeEntries: createPublicSurfaceRouteEntries(app),
147
+ concreteUrlPaths: createPublicSurfaceUrlPaths(app)
148
+ };
149
+ }
150
+ function createPublicHeadContract() {
151
+ const robotsPolicy = (0, external_policy_cjs_namespaceObject.createPublicHeadRobotsPolicy)();
152
+ return {
153
+ authoring: 'colocated-route-meta',
154
+ generator: './src/routes/ultramodern-route-head',
155
+ renderer: '@modern-js/runtime/head Helmet',
156
+ ssr: true,
157
+ title: {
158
+ required: true,
159
+ source: 'route.titleKey'
160
+ },
161
+ description: {
162
+ required: true,
163
+ source: "route.descriptionKey"
164
+ },
165
+ canonical: {
166
+ publicIndexableOnly: true,
167
+ source: 'localized canonical route URL'
168
+ },
169
+ alternates: {
170
+ hreflang: [
171
+ ...external_types_cjs_namespaceObject.supportedWorkspaceLanguages
172
+ ],
173
+ xDefault: 'en'
174
+ },
175
+ openGraph: {
176
+ publicIndexableOnly: true,
177
+ required: [
178
+ 'og:title',
179
+ "og:description",
180
+ 'og:url',
181
+ 'og:type'
182
+ ]
183
+ },
184
+ twitter: {
185
+ publicIndexableOnly: true,
186
+ required: [
187
+ 'twitter:card',
188
+ 'twitter:title',
189
+ "twitter:description"
190
+ ]
191
+ },
192
+ structuredData: {
193
+ publicIndexableOnly: true,
194
+ optional: true,
195
+ source: 'route.jsonLd',
196
+ inference: false,
197
+ helperModule: './src/routes/ultramodern-jsonld',
198
+ helperTypes: [
199
+ 'WebPage',
200
+ 'WebApplication',
201
+ 'SoftwareApplication',
202
+ 'BreadcrumbList',
203
+ 'FAQPage',
204
+ 'Organization'
205
+ ],
206
+ sanitizesHtmlOpenBracket: true
207
+ },
208
+ privateRouteRobots: robotsPolicy.privateRouteRobots
209
+ };
210
+ }
211
+ function createPublicWebAppArtifacts(app) {
212
+ const routeMetadata = (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(app);
213
+ return {
214
+ jsonLdHelperFile: {
215
+ path: `${app.directory}/src/routes/ultramodern-jsonld.ts`,
216
+ content: (0, external_routes_cjs_namespaceObject.createJsonLdHelperModule)()
217
+ },
218
+ routeMetadataFile: {
219
+ path: `${app.directory}/src/routes/ultramodern-route-metadata.ts`,
220
+ content: (0, external_routes_cjs_namespaceObject.createRouteMetadataModule)(app)
221
+ },
222
+ routeHeadFile: {
223
+ path: `${app.directory}/src/routes/ultramodern-route-head.tsx`,
224
+ content: (0, external_app_files_cjs_namespaceObject.createRouteHeadModule)(app)
225
+ },
226
+ routeMetaFiles: routeMetadata.map((route)=>({
227
+ path: (0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(app, route.canonicalPath),
228
+ content: (0, external_routes_cjs_namespaceObject.createRouteMetaModule)(route)
229
+ })),
230
+ routeAliasFiles: routeMetadata.filter((route)=>'/' !== route.canonicalPath && 'shell' !== app.kind).map((route)=>({
231
+ path: (0, external_routes_cjs_namespaceObject.createRoutePageFilePath)(app, route.canonicalPath),
232
+ content: (0, external_routes_cjs_namespaceObject.createRouteAliasPage)(route.canonicalPath)
233
+ })),
234
+ publicHead: createPublicHeadContract(),
235
+ publicSurface: createPublicSurfaceContract(app)
236
+ };
237
+ }
238
+ exports.createLocalisedPublicPath = __webpack_exports__.createLocalisedPublicPath;
239
+ exports.createPublicHeadContract = __webpack_exports__.createPublicHeadContract;
240
+ exports.createPublicSurfaceContract = __webpack_exports__.createPublicSurfaceContract;
241
+ exports.createPublicSurfaceGenerationCommand = __webpack_exports__.createPublicSurfaceGenerationCommand;
242
+ exports.createPublicSurfaceOutputFiles = __webpack_exports__.createPublicSurfaceOutputFiles;
243
+ exports.createPublicSurfaceRouteEntries = __webpack_exports__.createPublicSurfaceRouteEntries;
244
+ exports.createPublicSurfaceUrlPaths = __webpack_exports__.createPublicSurfaceUrlPaths;
245
+ exports.createPublicWebAppArtifacts = __webpack_exports__.createPublicWebAppArtifacts;
246
+ exports.publicSurfaceBaseOutputFiles = __webpack_exports__.publicSurfaceBaseOutputFiles;
247
+ exports.publicSurfaceManagedSourceAssetPaths = __webpack_exports__.publicSurfaceManagedSourceAssetPaths;
248
+ exports.publicSurfacePublicRouteOutputFiles = __webpack_exports__.publicSurfacePublicRouteOutputFiles;
249
+ exports.rewriteWorkspaceAssetsForApp = __webpack_exports__.rewriteWorkspaceAssetsForApp;
250
+ exports.uniqueSorted = __webpack_exports__.uniqueSorted;
251
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
252
+ "createLocalisedPublicPath",
253
+ "createPublicHeadContract",
254
+ "createPublicSurfaceContract",
255
+ "createPublicSurfaceGenerationCommand",
256
+ "createPublicSurfaceOutputFiles",
257
+ "createPublicSurfaceRouteEntries",
258
+ "createPublicSurfaceUrlPaths",
259
+ "createPublicWebAppArtifacts",
260
+ "publicSurfaceBaseOutputFiles",
261
+ "publicSurfaceManagedSourceAssetPaths",
262
+ "publicSurfacePublicRouteOutputFiles",
263
+ "rewriteWorkspaceAssetsForApp",
264
+ "uniqueSorted"
265
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
266
+ Object.defineProperty(exports, '__esModule', {
267
+ value: true
268
+ });