@next-bricks/vb-experiment 1.0.49 → 1.0.50

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.
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[345],{5345:(e,t,n)=>{var o=n(7732),s=n(2461),i=n.n(s),a=n(5060),r=n(2408),l=n(1914),c=n(3242),p=n(77),f=n(8403),d=n(8587),u=n(6315),m=n(743),g=n(7577),x=n(2582),j=n(535),h=n(4215),y=n(1330),w=n(3812),_=n(1259),b=n(1895),$=n(6414),A=n(4071),v=n(9055),k=n(8263);async function S(e){let{typescript:t,semi:n=!0,printWidth:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await(0,r.GP)(e,{parser:t?"babel-ts":"babel",plugins:[l,c],semi:n,printWidth:o,trailingComma:"es5"})}async function T(e,t,n){for(const o of e){const e=[...n,o.name];if("folder"===o.type){const n=t.folder(o.name);await T(o.items,n,e)}else t.file(`${o.name}.js${"routes"===o.nodeType||"bricks"===o.nodeType||"template"===o.nodeType?"x":""}`,await S((0,u.c)(o.node,o.nodeType,e)))}}function E(e){for(const[t,n]of Object.entries(e))switch(t){case"items":if(Array.isArray(n))for(const e of n)N(e);break;case"type":"main"===n&&delete e[t];break;case"if":break;case"i18n":0===Object.keys(n).length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}function N(e){for(const[t,n]of Object.entries(e))switch(t){case"children":Array.isArray(n)&&n.length>0&&N(n);break;case"if":break;case"activeExcludes":case"activeIncludes":Array.isArray(n)&&0===n.length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}customElements.define("vb-experiment.export-as-source-files",(0,o.createProviderClass)((async function(e){var t,n,o,s,r,l;let{projectDetail:c,storyboard:N}=e;const O=new(i()),I=O.folder("project"),P=I.folder("src"),C={extracts:[],namePool:new Map},J=(0,f.WM)(N.routes,[],C),M={id:c.appId,name:c.name,homepage:c.appSetting.homepage,layoutType:c.appSetting.layoutType,theme:c.appSetting.theme,noAuthGuard:c.appSetting.noAuthGuard,locales:c.appSetting.locales,defaultConfig:JSON.parse(c.appSetting.defaultConfig||"{}"),menuIcon:JSON.parse(c.appSetting.icon||"null"),standaloneMode:!0};P.file("app.js",await S(`export default ${JSON.stringify(M,null,2)};`));const F=null!==(t=N.meta)&&void 0!==t?t:{},G=null!==(n=F.customTemplates)&&void 0!==n?n:[],D=null!==(o=F.functions)&&void 0!==o?o:[],z=null!==(s=F.menus)&&void 0!==s?s:[],R=null!==(r=F.contracts)&&void 0!==r?r:[],W=null!==(l=F.i18n)&&void 0!==l?l:{};delete F.customTemplates,delete F.functions,delete F.menus,delete F.contracts,delete F.i18n,delete F.workflows,delete F.mocks,delete F.userGroups;const B=(0,f.pA)(G,["components"],C);C.extracts.push({name:"index",path:["components"],node:B,nodeType:"others"});const U=(0,d._)(C.extracts);P.file("index.js",g),P.file("routes.jsx",await S((0,u.c)(J,"routes",["routes.jsx"])));const H=P.folder("resources"),q=H.folder("functions"),K=[],L=[];for(const e of D){if("index"===e.name)throw new Error('Unexpected function name: "index"');const t=new Set;let{code:n}=(0,p.transform)(e.source,{filename:"expr."+(e.typescript?"ts":"js"),plugins:[...e.typescript?["syntax-typescript"]:[],v.A,[k.A,{imports:t}]]});const o=t.has("FN");o&&t.delete("FN");const s=[];t.size>0&&s.push(`import { ${[...t].join(", ")} } from "next-jsx/runtime";`),o&&s.push('import FN from "./index.js";'),s.length>0&&(n=`${s.join("\n")}\n\n${n}`),q.file(`${e.name}.${e.typescript?"ts":"js"}`,n),L.push(`import ${e.name} from "./${e.name}.js";`),K.push(e.name)}q.file("index.js",await S(`${L.join("\n")}\n\nconst FN = { ${K.join(",")} };\n\nexport default FN;`));const Q=H.folder("menus"),V=[],X=[];for(const e of z){if(E(e),"index"===e.menuId)throw new Error('Unexpected menu id: "index"');const t=`${e.menuId}.js`;Q.file(t,await S((0,u.c)(e,"menu",["resources","menus",t])));let n=e.menuId.replace(/^\d+|[^\w]+/g,"_");A.bB.has(n)&&(n=`${n}__2`),X.push(`import ${n} from "./${t}";`),V.push(n)}Q.file("index.js",await S(`${X.join("\n")}\n\nexport default [${V.join(",")}]`));const Y=H.folder("contracts"),Z=[],ee=new Set;for(const e of R){const t=e.name.replace(/^\d+|[^\w]+/g,"_");let n=2,o=t;for(;ee.has(o)||A.bB.has(o)||"index"===o;)o=`${t}_${n++}`;ee.add(o),Y.file(`${o}.js`,await S(`export default ${JSON.stringify(e)};`)),Z.push(`import ${o} from "./${o}.js";`)}Y.file("index.js",await S(`${Z.join("\n")}\n\nexport default [${[...ee].join(",")}]`)),H.folder("i18n").file("index.js",await S(`export default ${JSON.stringify(W)};`)),H.file("meta.js",await S(`export default ${JSON.stringify(F,null,2)};`)),H.file("index.js",m),await T(U,P,[]),I.folder("mock-micro-apps").folder(c.appId).file(".gitignore","*\n!.gitignore"),I.file(".editorconfig",x),I.file(".gitignore",j),I.file("dev.config.mjs",y),I.file("declarations.d.ts",h),I.file("jsconfig.json",w),I.file("next-jsx.config.js",_.replaceAll("__APP_ID__",c.appId)),I.file("package.json",b.replaceAll("__APP_ID__",c.appId)),I.file("README.md",$.replaceAll("__PROJECT_NAME__",c.name).replaceAll("__PROJECT_HOMEPAGE__",c.appSetting.homepage));const te=await O.generateAsync({type:"blob"});(0,a.saveAs)(te,"project.zip")}))),customElements.define("vb-experiment.export-widgets",(0,o.createProviderClass)((async function(e){let{name:t,files:n}=e;const o=new Map,s=new(i()),r=s.folder("widgets").folder(t);for(const{path:e,content:t}of n){const n=e.split("/"),s=n.pop();let i=r,a=1;for(const e of n){const t=n.slice(0,a).join("/"),s=o.get(t);s?i=s:(i=i.folder(e),o.set(t,i)),a++}i.file(s,t)}const l=await s.generateAsync({type:"blob"});(0,a.saveAs)(l,`${t}.zip`)})))}}]);
2
- //# sourceMappingURL=345.6e99522e.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[345],{5345:(e,t,n)=>{var o=n(4558),s=n(2461),i=n.n(s),a=n(5060),r=n(2408),l=n(1914),c=n(3242),p=n(77),f=n(8403),d=n(8587),u=n(6315),m=n(743),g=n(7577),x=n(2582),j=n(535),h=n(4215),y=n(1330),w=n(3812),_=n(1259),b=n(1895),$=n(6414),A=n(4071),v=n(9055),k=n(8263);async function S(e){let{typescript:t,semi:n=!0,printWidth:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await(0,r.GP)(e,{parser:t?"babel-ts":"babel",plugins:[l,c],semi:n,printWidth:o,trailingComma:"es5"})}async function T(e,t,n){for(const o of e){const e=[...n,o.name];if("folder"===o.type){const n=t.folder(o.name);await T(o.items,n,e)}else t.file(`${o.name}.js${"routes"===o.nodeType||"bricks"===o.nodeType||"template"===o.nodeType?"x":""}`,await S((0,u.c)(o.node,o.nodeType,e)))}}function E(e){for(const[t,n]of Object.entries(e))switch(t){case"items":if(Array.isArray(n))for(const e of n)N(e);break;case"type":"main"===n&&delete e[t];break;case"if":break;case"i18n":0===Object.keys(n).length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}function N(e){for(const[t,n]of Object.entries(e))switch(t){case"children":Array.isArray(n)&&n.length>0&&N(n);break;case"if":break;case"activeExcludes":case"activeIncludes":Array.isArray(n)&&0===n.length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}customElements.define("vb-experiment.export-as-source-files",(0,o.createProviderClass)((async function(e){var t,n,o,s,r,l;let{projectDetail:c,storyboard:N}=e;const O=new(i()),I=O.folder("project"),P=I.folder("src"),C={extracts:[],namePool:new Map},J=(0,f.WM)(N.routes,[],C),M={id:c.appId,name:c.name,homepage:c.appSetting.homepage,layoutType:c.appSetting.layoutType,theme:c.appSetting.theme,noAuthGuard:c.appSetting.noAuthGuard,locales:c.appSetting.locales,defaultConfig:JSON.parse(c.appSetting.defaultConfig||"{}"),menuIcon:JSON.parse(c.appSetting.icon||"null"),standaloneMode:!0};P.file("app.js",await S(`export default ${JSON.stringify(M,null,2)};`));const F=null!==(t=N.meta)&&void 0!==t?t:{},G=null!==(n=F.customTemplates)&&void 0!==n?n:[],D=null!==(o=F.functions)&&void 0!==o?o:[],z=null!==(s=F.menus)&&void 0!==s?s:[],R=null!==(r=F.contracts)&&void 0!==r?r:[],W=null!==(l=F.i18n)&&void 0!==l?l:{};delete F.customTemplates,delete F.functions,delete F.menus,delete F.contracts,delete F.i18n,delete F.workflows,delete F.mocks,delete F.userGroups;const B=(0,f.pA)(G,["components"],C);C.extracts.push({name:"index",path:["components"],node:B,nodeType:"others"});const U=(0,d._)(C.extracts);P.file("index.js",g),P.file("routes.jsx",await S((0,u.c)(J,"routes",["routes.jsx"])));const H=P.folder("resources"),q=H.folder("functions"),K=[],L=[];for(const e of D){if("index"===e.name)throw new Error('Unexpected function name: "index"');const t=new Set;let{code:n}=(0,p.transform)(e.source,{filename:"expr."+(e.typescript?"ts":"js"),plugins:[...e.typescript?["syntax-typescript"]:[],v.A,[k.A,{imports:t}]]});const o=t.has("FN");o&&t.delete("FN");const s=[];t.size>0&&s.push(`import { ${[...t].join(", ")} } from "next-jsx/runtime";`),o&&s.push('import FN from "./index.js";'),s.length>0&&(n=`${s.join("\n")}\n\n${n}`),q.file(`${e.name}.${e.typescript?"ts":"js"}`,n),L.push(`import ${e.name} from "./${e.name}.js";`),K.push(e.name)}q.file("index.js",await S(`${L.join("\n")}\n\nconst FN = { ${K.join(",")} };\n\nexport default FN;`));const Q=H.folder("menus"),V=[],X=[];for(const e of z){if(E(e),"index"===e.menuId)throw new Error('Unexpected menu id: "index"');const t=`${e.menuId}.js`;Q.file(t,await S((0,u.c)(e,"menu",["resources","menus",t])));let n=e.menuId.replace(/^\d+|[^\w]+/g,"_");A.bB.has(n)&&(n=`${n}__2`),X.push(`import ${n} from "./${t}";`),V.push(n)}Q.file("index.js",await S(`${X.join("\n")}\n\nexport default [${V.join(",")}]`));const Y=H.folder("contracts"),Z=[],ee=new Set;for(const e of R){const t=e.name.replace(/^\d+|[^\w]+/g,"_");let n=2,o=t;for(;ee.has(o)||A.bB.has(o)||"index"===o;)o=`${t}_${n++}`;ee.add(o),Y.file(`${o}.js`,await S(`export default ${JSON.stringify(e)};`)),Z.push(`import ${o} from "./${o}.js";`)}Y.file("index.js",await S(`${Z.join("\n")}\n\nexport default [${[...ee].join(",")}]`)),H.folder("i18n").file("index.js",await S(`export default ${JSON.stringify(W)};`)),H.file("meta.js",await S(`export default ${JSON.stringify(F,null,2)};`)),H.file("index.js",m),await T(U,P,[]),I.folder("mock-micro-apps").folder(c.appId).file(".gitignore","*\n!.gitignore"),I.file(".editorconfig",x),I.file(".gitignore",j),I.file("dev.config.mjs",y),I.file("declarations.d.ts",h),I.file("jsconfig.json",w),I.file("next-jsx.config.js",_.replaceAll("__APP_ID__",c.appId)),I.file("package.json",b.replaceAll("__APP_ID__",c.appId)),I.file("README.md",$.replaceAll("__PROJECT_NAME__",c.name).replaceAll("__PROJECT_HOMEPAGE__",c.appSetting.homepage));const te=await O.generateAsync({type:"blob"});(0,a.saveAs)(te,"project.zip")}))),customElements.define("vb-experiment.export-widgets",(0,o.createProviderClass)((async function(e){let{name:t,files:n}=e;const o=new Map,s=new(i()),r=s.folder("widgets").folder(t);for(const{path:e,content:t}of n){const n=e.split("/"),s=n.pop();let i=r,a=1;for(const e of n){const t=n.slice(0,a).join("/"),s=o.get(t);s?i=s:(i=i.folder(e),o.set(t,i)),a++}i.file(s,t)}const l=await s.generateAsync({type:"blob"});(0,a.saveAs)(l,`${t}.zip`)})))}}]);
2
+ //# sourceMappingURL=345.d22b0b06.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/345.6e99522e.js","mappings":"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","sources":["webpack:///./src/data-providers/export-as-source-files.ts","webpack:///./src/data-providers/export-widgets.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Storyboard, MicroApp, StoryboardMeta } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\nimport { format } from \"prettier/standalone\";\nimport * as prettierPluginBabel from \"prettier/plugins/babel\";\nimport * as prettierPluginEstree from \"prettier/plugins/estree\";\nimport { transform } from \"@babel/standalone\";\nimport {\n ExtractState,\n extractRoutes,\n extractTemplates,\n} from \"./utils/extract.js\";\nimport {\n SourceFileOrFolder,\n buildFileStructure,\n} from \"./utils/buildFileStructure.js\";\nimport { generate } from \"./utils/generators/generate.js\";\nimport srcResourcesIndexJs from \"./raws/src/resources/index.js.txt\";\nimport srcIndexJs from \"./raws/src/index.js.txt\";\nimport editorConfig from \"./raws/.editorconfig.txt\";\nimport gitIgnore from \"./raws/.gitignore.txt\";\nimport declarationsDTs from \"./raws/declarations.d.ts.txt\";\nimport devConfigMjs from \"./raws/dev.config.mjs.txt\";\nimport jsconfigJson from \"./raws/jsconfig.json.txt\";\nimport nextJsxConfigJs from \"./raws/next-jsx.config.js.txt\";\nimport packageJson from \"./raws/package.json.txt\";\nimport readmeMd from \"./raws/README.md.txt\";\nimport { JS_RESERVED_WORDS } from \"./utils/constants.js\";\nimport TransformStoryboardFunction from \"./utils/plugins/storyboard-function.js\";\nimport SmartImports from \"./utils/plugins/smart-imports.js\";\n\nexport interface StoryboardAssemblyResult {\n storyboard: Storyboard;\n\n projectDetail: {\n appId: string;\n name: string;\n appSetting: Pick<\n MicroApp,\n \"homepage\" | \"theme\" | \"locales\" | \"noAuthGuard\"\n > & {\n layoutType?: string;\n defaultConfig?: string;\n icon?: string;\n };\n brickNextVersion?: number;\n };\n}\n\nexport async function exportAsSourceFiles({\n projectDetail,\n storyboard,\n}: StoryboardAssemblyResult): Promise<void> {\n const zip = new JSZip();\n const project = zip.folder(\"project\")!;\n const src = project.folder(\"src\")!;\n\n const extractState: ExtractState = {\n extracts: [],\n namePool: new Map(),\n };\n const extractedRoutes = extractRoutes(storyboard.routes, [], extractState);\n\n const app: MicroApp & { layoutType?: string } = {\n id: projectDetail.appId,\n name: projectDetail.name,\n homepage: projectDetail.appSetting.homepage,\n layoutType: projectDetail.appSetting.layoutType,\n theme: projectDetail.appSetting.theme,\n noAuthGuard: projectDetail.appSetting.noAuthGuard,\n locales: projectDetail.appSetting.locales,\n defaultConfig: JSON.parse(projectDetail.appSetting.defaultConfig || \"{}\"),\n menuIcon: JSON.parse(projectDetail.appSetting.icon || \"null\"),\n standaloneMode: true,\n };\n src.file(\n \"app.js\",\n await formatJs(`export default ${JSON.stringify(app, null, 2)};`)\n );\n\n const meta = (storyboard.meta ?? {}) as StoryboardMeta & {\n workflows?: unknown;\n userGroups?: unknown;\n };\n const customTemplates = meta.customTemplates ?? [];\n const functions = meta.functions ?? [];\n const menus = meta.menus ?? [];\n const contracts = meta.contracts ?? [];\n const i18n = meta.i18n ?? {};\n delete meta.customTemplates;\n delete meta.functions;\n delete meta.menus;\n delete meta.contracts;\n delete meta.i18n;\n delete meta.workflows;\n delete meta.mocks;\n delete meta.userGroups;\n\n const extractedTemplates = extractTemplates(\n customTemplates,\n [\"components\"],\n extractState\n );\n extractState.extracts.push({\n name: \"index\",\n path: [\"components\"],\n node: extractedTemplates,\n nodeType: \"others\",\n });\n\n const fileStructure = buildFileStructure(extractState.extracts);\n\n src.file(\"index.js\", srcIndexJs);\n\n src.file(\n \"routes.jsx\",\n await formatJs(generate(extractedRoutes, \"routes\", [\"routes.jsx\"]))\n );\n\n const resources = src.folder(\"resources\")!;\n\n // Functions\n const fnDir = resources.folder(\"functions\")!;\n const fnNames: string[] = [];\n const fnImports: string[] = [];\n for (const fn of functions) {\n if (fn.name === \"index\") {\n throw new Error('Unexpected function name: \"index\"');\n }\n\n // Prepend with `export default` for functions\n const inferredImports = new Set<string>();\n let { code } = transform(fn.source, {\n filename: `expr.${fn.typescript ? \"ts\" : \"js\"}`,\n plugins: [\n ...(fn.typescript ? [\"syntax-typescript\"] : []),\n TransformStoryboardFunction,\n [\n SmartImports,\n {\n imports: inferredImports,\n },\n ],\n ],\n }) as { code: string };\n const hasFN = inferredImports.has(\"FN\");\n if (hasFN) {\n inferredImports.delete(\"FN\");\n }\n const importStrings: string[] = [];\n if (inferredImports.size > 0) {\n importStrings.push(\n `import { ${[...inferredImports].join(\", \")} } from \"next-jsx/runtime\";`\n );\n }\n if (hasFN) {\n importStrings.push(`import FN from \"./index.js\";`);\n }\n if (importStrings.length > 0) {\n code = `${importStrings.join(\"\\n\")}\\n\\n${code}`;\n }\n\n fnDir.file(`${fn.name}.${fn.typescript ? \"ts\" : \"js\"}`, code);\n fnImports.push(`import ${fn.name} from \"./${fn.name}.js\";`);\n fnNames.push(fn.name);\n }\n fnDir.file(\n \"index.js\",\n await formatJs(\n `${fnImports.join(\"\\n\")}\\n\\nconst FN = { ${fnNames.join(\n \",\"\n )} };\\n\\nexport default FN;`\n )\n );\n\n // Menus\n const menusDir = resources.folder(\"menus\")!;\n const menuNames: string[] = [];\n const menuImports: string[] = [];\n for (const menu of menus) {\n cleanMenu(menu);\n if (menu.menuId === \"index\") {\n throw new Error('Unexpected menu id: \"index\"');\n }\n const filename = `${menu.menuId}.js`;\n menusDir.file(\n filename,\n await formatJs(generate(menu, \"menu\", [\"resources\", \"menus\", filename]))\n );\n let name = menu.menuId.replace(/^\\d+|[^\\w]+/g, \"_\");\n if (JS_RESERVED_WORDS.has(name)) {\n name = `${name}__2`;\n }\n menuImports.push(`import ${name} from \"./${filename}\";`);\n menuNames.push(name);\n }\n menusDir.file(\n \"index.js\",\n await formatJs(\n `${menuImports.join(\"\\n\")}\\n\\nexport default [${menuNames.join(\",\")}]`\n )\n );\n\n // Contracts\n const contractsDir = resources.folder(\"contracts\")!;\n const contractImports: string[] = [];\n const contractNames = new Set<string>();\n for (const contract of contracts) {\n const baseName = contract.name.replace(/^\\d+|[^\\w]+/g, \"_\");\n let counter = 2;\n let varName = baseName;\n while (\n contractNames.has(varName) ||\n JS_RESERVED_WORDS.has(varName) ||\n varName === \"index\"\n ) {\n varName = `${baseName}_${counter++}`;\n }\n contractNames.add(varName);\n\n contractsDir.file(\n `${varName}.js`,\n await formatJs(`export default ${JSON.stringify(contract)};`)\n );\n contractImports.push(`import ${varName} from \"./${varName}.js\";`);\n }\n contractsDir.file(\n \"index.js\",\n await formatJs(\n `${contractImports.join(\"\\n\")}\\n\\nexport default [${[\n ...contractNames,\n ].join(\",\")}]`\n )\n );\n\n resources\n .folder(\"i18n\")!\n .file(\n \"index.js\",\n await formatJs(`export default ${JSON.stringify(i18n)};`)\n );\n resources.file(\n \"meta.js\",\n await formatJs(`export default ${JSON.stringify(meta, null, 2)};`)\n );\n resources.file(\"index.js\", srcResourcesIndexJs);\n\n await generateByFileStructure(fileStructure, src, []);\n\n const appDir = project\n .folder(\"mock-micro-apps\")!\n .folder(projectDetail.appId)!;\n appDir.file(\".gitignore\", \"*\\n!.gitignore\");\n\n project.file(\".editorconfig\", editorConfig);\n project.file(\".gitignore\", gitIgnore);\n project.file(\"dev.config.mjs\", devConfigMjs);\n project.file(\"declarations.d.ts\", declarationsDTs);\n project.file(\"jsconfig.json\", jsconfigJson);\n project.file(\n \"next-jsx.config.js\",\n nextJsxConfigJs.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"package.json\",\n packageJson.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"README.md\",\n readmeMd\n .replaceAll(\"__PROJECT_NAME__\", projectDetail.name)\n .replaceAll(\"__PROJECT_HOMEPAGE__\", projectDetail.appSetting.homepage)\n );\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, \"project.zip\");\n}\n\ninterface FormatJsOptions {\n typescript?: boolean;\n semi?: boolean;\n printWidth?: number;\n}\n\nasync function formatJs(\n source: string,\n { typescript, semi = true, printWidth }: FormatJsOptions = {}\n): Promise<string> {\n return await format(source, {\n parser: typescript ? \"babel-ts\" : \"babel\",\n plugins: [prettierPluginBabel, prettierPluginEstree as any],\n semi,\n printWidth,\n trailingComma: \"es5\",\n });\n}\n\nasync function generateByFileStructure(\n items: SourceFileOrFolder[],\n folder: JSZip,\n path: string[]\n) {\n for (const item of items) {\n const childPath = [...path, item.name];\n if (item.type === \"folder\") {\n const childFolder = folder.folder(item.name)!;\n await generateByFileStructure(item.items, childFolder, childPath);\n } else {\n folder.file(\n `${item.name}.js${\n item.nodeType === \"routes\" ||\n item.nodeType === \"bricks\" ||\n item.nodeType === \"template\"\n ? \"x\"\n : \"\"\n }`,\n await formatJs(generate(item.node, item.nodeType, childPath))\n );\n }\n }\n}\n\nfunction cleanMenu(menu: Record<string, any>) {\n for (const [key, value] of Object.entries(menu)) {\n switch (key) {\n case \"items\":\n if (Array.isArray(value)) {\n for (const item of value) {\n cleanMenuItem(item);\n }\n }\n break;\n case \"type\":\n if (value === \"main\") {\n delete menu[key];\n }\n break;\n case \"if\":\n break;\n case \"i18n\":\n if (Object.keys(value).length === 0) {\n delete menu[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menu[key];\n }\n }\n }\n}\n\nfunction cleanMenuItem(menuItem: Record<string, any>) {\n for (const [key, value] of Object.entries(menuItem)) {\n switch (key) {\n case \"children\":\n if (Array.isArray(value) && value.length > 0) {\n cleanMenuItem(value);\n }\n break;\n case \"if\":\n break;\n case \"activeExcludes\":\n case \"activeIncludes\":\n if (Array.isArray(value) && value.length === 0) {\n delete menuItem[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menuItem[key];\n }\n }\n }\n}\n\ncustomElements.define(\n \"vb-experiment.export-as-source-files\",\n createProviderClass(exportAsSourceFiles)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\ninterface ExportWidgetsParams {\n name: string;\n files: FileInfo[];\n}\n\ninterface FileInfo {\n path: string;\n content: string;\n}\n\nexport async function exportWidgets({\n name,\n files,\n}: ExportWidgetsParams): Promise<void> {\n const fs = new Map<string, JSZip>();\n const zip = new JSZip();\n const widgets = zip.folder(\"widgets\")!;\n const project = widgets.folder(name)!;\n\n for (const { path, content } of files) {\n const segments = path.split(\"/\");\n const filename = segments.pop()!;\n let handle = project;\n let i = 1;\n for (const segment of segments) {\n const current = segments.slice(0, i).join(\"/\");\n const found = fs.get(current);\n if (found) {\n handle = found;\n } else {\n handle = handle.folder(segment)!;\n fs.set(current, handle);\n }\n i++;\n }\n handle.file(filename, content);\n }\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, `${name}.zip`);\n}\n\ncustomElements.define(\n \"vb-experiment.export-widgets\",\n createProviderClass(exportWidgets)\n);\n"],"names":["async","formatJs","source","typescript","semi","printWidth","arguments","length","undefined","format","parser","plugins","prettierPluginBabel","prettierPluginEstree","trailingComma","generateByFileStructure","items","folder","path","item","childPath","name","type","childFolder","file","nodeType","generate","node","cleanMenu","menu","key","value","Object","entries","Array","isArray","cleanMenuItem","keys","menuItem","customElements","define","createProviderClass","_ref","_storyboard$meta","_meta$customTemplates","_meta$functions","_meta$menus","_meta$contracts","_meta$i18n","projectDetail","storyboard","zip","JSZip","project","src","extractState","extracts","namePool","Map","extractedRoutes","extractRoutes","routes","app","id","appId","homepage","appSetting","layoutType","theme","noAuthGuard","locales","defaultConfig","JSON","parse","menuIcon","icon","standaloneMode","stringify","meta","customTemplates","functions","menus","contracts","i18n","workflows","mocks","userGroups","extractedTemplates","extractTemplates","push","fileStructure","buildFileStructure","srcIndexJs","resources","fnDir","fnNames","fnImports","fn","Error","inferredImports","Set","code","transform","filename","TransformStoryboardFunction","SmartImports","imports","hasFN","has","delete","importStrings","size","join","menusDir","menuNames","menuImports","menuId","replace","JS_RESERVED_WORDS","contractsDir","contractImports","contractNames","contract","baseName","counter","varName","add","srcResourcesIndexJs","editorConfig","gitIgnore","devConfigMjs","declarationsDTs","jsconfigJson","nextJsxConfigJs","replaceAll","packageJson","readmeMd","blob","generateAsync","saveAs","files","fs","content","segments","split","pop","handle","i","segment","current","slice","found","get","set"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/345.d22b0b06.js","mappings":"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","sources":["webpack:///./src/data-providers/export-as-source-files.ts","webpack:///./src/data-providers/export-widgets.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Storyboard, MicroApp, StoryboardMeta } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\nimport { format } from \"prettier/standalone\";\nimport * as prettierPluginBabel from \"prettier/plugins/babel\";\nimport * as prettierPluginEstree from \"prettier/plugins/estree\";\nimport { transform } from \"@babel/standalone\";\nimport {\n ExtractState,\n extractRoutes,\n extractTemplates,\n} from \"./utils/extract.js\";\nimport {\n SourceFileOrFolder,\n buildFileStructure,\n} from \"./utils/buildFileStructure.js\";\nimport { generate } from \"./utils/generators/generate.js\";\nimport srcResourcesIndexJs from \"./raws/src/resources/index.js.txt\";\nimport srcIndexJs from \"./raws/src/index.js.txt\";\nimport editorConfig from \"./raws/.editorconfig.txt\";\nimport gitIgnore from \"./raws/.gitignore.txt\";\nimport declarationsDTs from \"./raws/declarations.d.ts.txt\";\nimport devConfigMjs from \"./raws/dev.config.mjs.txt\";\nimport jsconfigJson from \"./raws/jsconfig.json.txt\";\nimport nextJsxConfigJs from \"./raws/next-jsx.config.js.txt\";\nimport packageJson from \"./raws/package.json.txt\";\nimport readmeMd from \"./raws/README.md.txt\";\nimport { JS_RESERVED_WORDS } from \"./utils/constants.js\";\nimport TransformStoryboardFunction from \"./utils/plugins/storyboard-function.js\";\nimport SmartImports from \"./utils/plugins/smart-imports.js\";\n\nexport interface StoryboardAssemblyResult {\n storyboard: Storyboard;\n\n projectDetail: {\n appId: string;\n name: string;\n appSetting: Pick<\n MicroApp,\n \"homepage\" | \"theme\" | \"locales\" | \"noAuthGuard\"\n > & {\n layoutType?: string;\n defaultConfig?: string;\n icon?: string;\n };\n brickNextVersion?: number;\n };\n}\n\nexport async function exportAsSourceFiles({\n projectDetail,\n storyboard,\n}: StoryboardAssemblyResult): Promise<void> {\n const zip = new JSZip();\n const project = zip.folder(\"project\")!;\n const src = project.folder(\"src\")!;\n\n const extractState: ExtractState = {\n extracts: [],\n namePool: new Map(),\n };\n const extractedRoutes = extractRoutes(storyboard.routes, [], extractState);\n\n const app: MicroApp & { layoutType?: string } = {\n id: projectDetail.appId,\n name: projectDetail.name,\n homepage: projectDetail.appSetting.homepage,\n layoutType: projectDetail.appSetting.layoutType,\n theme: projectDetail.appSetting.theme,\n noAuthGuard: projectDetail.appSetting.noAuthGuard,\n locales: projectDetail.appSetting.locales,\n defaultConfig: JSON.parse(projectDetail.appSetting.defaultConfig || \"{}\"),\n menuIcon: JSON.parse(projectDetail.appSetting.icon || \"null\"),\n standaloneMode: true,\n };\n src.file(\n \"app.js\",\n await formatJs(`export default ${JSON.stringify(app, null, 2)};`)\n );\n\n const meta = (storyboard.meta ?? {}) as StoryboardMeta & {\n workflows?: unknown;\n userGroups?: unknown;\n };\n const customTemplates = meta.customTemplates ?? [];\n const functions = meta.functions ?? [];\n const menus = meta.menus ?? [];\n const contracts = meta.contracts ?? [];\n const i18n = meta.i18n ?? {};\n delete meta.customTemplates;\n delete meta.functions;\n delete meta.menus;\n delete meta.contracts;\n delete meta.i18n;\n delete meta.workflows;\n delete meta.mocks;\n delete meta.userGroups;\n\n const extractedTemplates = extractTemplates(\n customTemplates,\n [\"components\"],\n extractState\n );\n extractState.extracts.push({\n name: \"index\",\n path: [\"components\"],\n node: extractedTemplates,\n nodeType: \"others\",\n });\n\n const fileStructure = buildFileStructure(extractState.extracts);\n\n src.file(\"index.js\", srcIndexJs);\n\n src.file(\n \"routes.jsx\",\n await formatJs(generate(extractedRoutes, \"routes\", [\"routes.jsx\"]))\n );\n\n const resources = src.folder(\"resources\")!;\n\n // Functions\n const fnDir = resources.folder(\"functions\")!;\n const fnNames: string[] = [];\n const fnImports: string[] = [];\n for (const fn of functions) {\n if (fn.name === \"index\") {\n throw new Error('Unexpected function name: \"index\"');\n }\n\n // Prepend with `export default` for functions\n const inferredImports = new Set<string>();\n let { code } = transform(fn.source, {\n filename: `expr.${fn.typescript ? \"ts\" : \"js\"}`,\n plugins: [\n ...(fn.typescript ? [\"syntax-typescript\"] : []),\n TransformStoryboardFunction,\n [\n SmartImports,\n {\n imports: inferredImports,\n },\n ],\n ],\n }) as { code: string };\n const hasFN = inferredImports.has(\"FN\");\n if (hasFN) {\n inferredImports.delete(\"FN\");\n }\n const importStrings: string[] = [];\n if (inferredImports.size > 0) {\n importStrings.push(\n `import { ${[...inferredImports].join(\", \")} } from \"next-jsx/runtime\";`\n );\n }\n if (hasFN) {\n importStrings.push(`import FN from \"./index.js\";`);\n }\n if (importStrings.length > 0) {\n code = `${importStrings.join(\"\\n\")}\\n\\n${code}`;\n }\n\n fnDir.file(`${fn.name}.${fn.typescript ? \"ts\" : \"js\"}`, code);\n fnImports.push(`import ${fn.name} from \"./${fn.name}.js\";`);\n fnNames.push(fn.name);\n }\n fnDir.file(\n \"index.js\",\n await formatJs(\n `${fnImports.join(\"\\n\")}\\n\\nconst FN = { ${fnNames.join(\n \",\"\n )} };\\n\\nexport default FN;`\n )\n );\n\n // Menus\n const menusDir = resources.folder(\"menus\")!;\n const menuNames: string[] = [];\n const menuImports: string[] = [];\n for (const menu of menus) {\n cleanMenu(menu);\n if (menu.menuId === \"index\") {\n throw new Error('Unexpected menu id: \"index\"');\n }\n const filename = `${menu.menuId}.js`;\n menusDir.file(\n filename,\n await formatJs(generate(menu, \"menu\", [\"resources\", \"menus\", filename]))\n );\n let name = menu.menuId.replace(/^\\d+|[^\\w]+/g, \"_\");\n if (JS_RESERVED_WORDS.has(name)) {\n name = `${name}__2`;\n }\n menuImports.push(`import ${name} from \"./${filename}\";`);\n menuNames.push(name);\n }\n menusDir.file(\n \"index.js\",\n await formatJs(\n `${menuImports.join(\"\\n\")}\\n\\nexport default [${menuNames.join(\",\")}]`\n )\n );\n\n // Contracts\n const contractsDir = resources.folder(\"contracts\")!;\n const contractImports: string[] = [];\n const contractNames = new Set<string>();\n for (const contract of contracts) {\n const baseName = contract.name.replace(/^\\d+|[^\\w]+/g, \"_\");\n let counter = 2;\n let varName = baseName;\n while (\n contractNames.has(varName) ||\n JS_RESERVED_WORDS.has(varName) ||\n varName === \"index\"\n ) {\n varName = `${baseName}_${counter++}`;\n }\n contractNames.add(varName);\n\n contractsDir.file(\n `${varName}.js`,\n await formatJs(`export default ${JSON.stringify(contract)};`)\n );\n contractImports.push(`import ${varName} from \"./${varName}.js\";`);\n }\n contractsDir.file(\n \"index.js\",\n await formatJs(\n `${contractImports.join(\"\\n\")}\\n\\nexport default [${[\n ...contractNames,\n ].join(\",\")}]`\n )\n );\n\n resources\n .folder(\"i18n\")!\n .file(\n \"index.js\",\n await formatJs(`export default ${JSON.stringify(i18n)};`)\n );\n resources.file(\n \"meta.js\",\n await formatJs(`export default ${JSON.stringify(meta, null, 2)};`)\n );\n resources.file(\"index.js\", srcResourcesIndexJs);\n\n await generateByFileStructure(fileStructure, src, []);\n\n const appDir = project\n .folder(\"mock-micro-apps\")!\n .folder(projectDetail.appId)!;\n appDir.file(\".gitignore\", \"*\\n!.gitignore\");\n\n project.file(\".editorconfig\", editorConfig);\n project.file(\".gitignore\", gitIgnore);\n project.file(\"dev.config.mjs\", devConfigMjs);\n project.file(\"declarations.d.ts\", declarationsDTs);\n project.file(\"jsconfig.json\", jsconfigJson);\n project.file(\n \"next-jsx.config.js\",\n nextJsxConfigJs.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"package.json\",\n packageJson.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"README.md\",\n readmeMd\n .replaceAll(\"__PROJECT_NAME__\", projectDetail.name)\n .replaceAll(\"__PROJECT_HOMEPAGE__\", projectDetail.appSetting.homepage)\n );\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, \"project.zip\");\n}\n\ninterface FormatJsOptions {\n typescript?: boolean;\n semi?: boolean;\n printWidth?: number;\n}\n\nasync function formatJs(\n source: string,\n { typescript, semi = true, printWidth }: FormatJsOptions = {}\n): Promise<string> {\n return await format(source, {\n parser: typescript ? \"babel-ts\" : \"babel\",\n plugins: [prettierPluginBabel, prettierPluginEstree as any],\n semi,\n printWidth,\n trailingComma: \"es5\",\n });\n}\n\nasync function generateByFileStructure(\n items: SourceFileOrFolder[],\n folder: JSZip,\n path: string[]\n) {\n for (const item of items) {\n const childPath = [...path, item.name];\n if (item.type === \"folder\") {\n const childFolder = folder.folder(item.name)!;\n await generateByFileStructure(item.items, childFolder, childPath);\n } else {\n folder.file(\n `${item.name}.js${\n item.nodeType === \"routes\" ||\n item.nodeType === \"bricks\" ||\n item.nodeType === \"template\"\n ? \"x\"\n : \"\"\n }`,\n await formatJs(generate(item.node, item.nodeType, childPath))\n );\n }\n }\n}\n\nfunction cleanMenu(menu: Record<string, any>) {\n for (const [key, value] of Object.entries(menu)) {\n switch (key) {\n case \"items\":\n if (Array.isArray(value)) {\n for (const item of value) {\n cleanMenuItem(item);\n }\n }\n break;\n case \"type\":\n if (value === \"main\") {\n delete menu[key];\n }\n break;\n case \"if\":\n break;\n case \"i18n\":\n if (Object.keys(value).length === 0) {\n delete menu[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menu[key];\n }\n }\n }\n}\n\nfunction cleanMenuItem(menuItem: Record<string, any>) {\n for (const [key, value] of Object.entries(menuItem)) {\n switch (key) {\n case \"children\":\n if (Array.isArray(value) && value.length > 0) {\n cleanMenuItem(value);\n }\n break;\n case \"if\":\n break;\n case \"activeExcludes\":\n case \"activeIncludes\":\n if (Array.isArray(value) && value.length === 0) {\n delete menuItem[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menuItem[key];\n }\n }\n }\n}\n\ncustomElements.define(\n \"vb-experiment.export-as-source-files\",\n createProviderClass(exportAsSourceFiles)\n);\n","import { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\ninterface ExportWidgetsParams {\n name: string;\n files: FileInfo[];\n}\n\ninterface FileInfo {\n path: string;\n content: string;\n}\n\nexport async function exportWidgets({\n name,\n files,\n}: ExportWidgetsParams): Promise<void> {\n const fs = new Map<string, JSZip>();\n const zip = new JSZip();\n const widgets = zip.folder(\"widgets\")!;\n const project = widgets.folder(name)!;\n\n for (const { path, content } of files) {\n const segments = path.split(\"/\");\n const filename = segments.pop()!;\n let handle = project;\n let i = 1;\n for (const segment of segments) {\n const current = segments.slice(0, i).join(\"/\");\n const found = fs.get(current);\n if (found) {\n handle = found;\n } else {\n handle = handle.folder(segment)!;\n fs.set(current, handle);\n }\n i++;\n }\n handle.file(filename, content);\n }\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, `${name}.zip`);\n}\n\ncustomElements.define(\n \"vb-experiment.export-widgets\",\n createProviderClass(exportWidgets)\n);\n"],"names":["async","formatJs","source","typescript","semi","printWidth","arguments","length","undefined","format","parser","plugins","prettierPluginBabel","prettierPluginEstree","trailingComma","generateByFileStructure","items","folder","path","item","childPath","name","type","childFolder","file","nodeType","generate","node","cleanMenu","menu","key","value","Object","entries","Array","isArray","cleanMenuItem","keys","menuItem","customElements","define","createProviderClass","_ref","_storyboard$meta","_meta$customTemplates","_meta$functions","_meta$menus","_meta$contracts","_meta$i18n","projectDetail","storyboard","zip","JSZip","project","src","extractState","extracts","namePool","Map","extractedRoutes","extractRoutes","routes","app","id","appId","homepage","appSetting","layoutType","theme","noAuthGuard","locales","defaultConfig","JSON","parse","menuIcon","icon","standaloneMode","stringify","meta","customTemplates","functions","menus","contracts","i18n","workflows","mocks","userGroups","extractedTemplates","extractTemplates","push","fileStructure","buildFileStructure","srcIndexJs","resources","fnDir","fnNames","fnImports","fn","Error","inferredImports","Set","code","transform","filename","TransformStoryboardFunction","SmartImports","imports","hasFN","has","delete","importStrings","size","join","menusDir","menuNames","menuImports","menuId","replace","JS_RESERVED_WORDS","contractsDir","contractImports","contractNames","contract","baseName","counter","varName","add","srcResourcesIndexJs","editorConfig","gitIgnore","devConfigMjs","declarationsDTs","jsconfigJson","nextJsxConfigJs","replaceAll","packageJson","readmeMd","blob","generateAsync","saveAs","files","fs","content","segments","split","pop","handle","i","segment","current","slice","found","get","set"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[871],{871:(e,t,r)=>{r.r(t),r.d(t,{JsonStorage:()=>w,createProviderClass:()=>o,createSSEStream:()=>d,deepFreeze:()=>f,hasOwnProperty:()=>v,isObject:()=>p,unwrapProvider:()=>g});var n=r(5060);function o(e){return class extends HTMLElement{get $$typeof(){return"provider"}resolve(){return e(...arguments)}async saveAs(t){for(var r=arguments.length,o=new Array(r>1?r-1:0),a=1;a<r;a++)o[a-1]=arguments[a];const s=await e(...o);n.saveAs(s,t)}}}var a=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};const s="text/event-stream",i=1e3,c="last-event-id";function l(e,t){var{signal:r,headers:n,onopen:o,onmessage:l,onclose:d,onerror:h,openWhenHidden:f,fetch:v}=t,p=a(t,["signal","headers","onopen","onmessage","onclose","onerror","openWhenHidden","fetch"]);return new Promise(((t,a)=>{const w=Object.assign({},n);let y;function g(){y.abort(),document.hidden||k()}w.accept||(w.accept=s),f||document.addEventListener("visibilitychange",g);let b=i,m=0;function O(){document.removeEventListener("visibilitychange",g),window.clearTimeout(m),y.abort()}null==r||r.addEventListener("abort",(()=>{O(),t()}));const x=null!=v?v:window.fetch,E=null!=o?o:u;async function k(){var r;y=new AbortController;try{const r=await x(e,Object.assign(Object.assign({},p),{headers:w,signal:y.signal}));await E(r),await async function(e,t){const r=e.getReader();let n;for(;!(n=await r.read()).done;)t(n.value)}(r.body,function(e){let t,r,n,o=!1;return function(a){void 0===t?(t=a,r=0,n=-1):t=function(e,t){const r=new Uint8Array(e.length+t.length);return r.set(e),r.set(t,e.length),r}(t,a);const s=t.length;let i=0;for(;r<s;){o&&(10===t[r]&&(i=++r),o=!1);let a=-1;for(;r<s&&-1===a;++r)switch(t[r]){case 58:-1===n&&(n=r-i);break;case 13:o=!0;case 10:a=r}if(-1===a)break;e(t.subarray(i,a),n),i=r,n=-1}i===s?t=void 0:0!==i&&(t=t.subarray(i),r-=i)}}(function(e,t,r){let n={data:"",event:"",id:"",retry:void 0};const o=new TextDecoder;return function(e,t){if(0===e.length)null==r||r(n),n={data:"",event:"",id:"",retry:void 0};else if(t>0){const r=o.decode(e.subarray(0,t)),s=t+(32===e[t+1]?2:1),i=o.decode(e.subarray(s));switch(r){case"data":n.data=n.data?n.data+"\n"+i:i;break;case"event":n.event=i;break;case"id":(a=n.id=i)?w[c]=a:delete w[c];break;case"retry":const e=parseInt(i,10);isNaN(e)||(e=>{b=e})(n.retry=e)}}var a}}(0,0,l))),null==d||d(),O(),t()}catch(e){if(!y.signal.aborted)try{const t=null!==(r=null==h?void 0:h(e))&&void 0!==r?r:b;window.clearTimeout(m),m=window.setTimeout(k,t)}catch(e){O(),a(e)}}}k()}))}function u(e){const t=e.headers.get("content-type");if(!(null==t?void 0:t.startsWith(s)))throw new Error(`Expected content-type to be ${s}, Actual: ${t}`)}async function d(e,t){const r=[],n=[];let o=!1,a=!1;const{converter:s,...i}=null!=t?t:{};function c(){n.forEach((e=>{let[t]=e;return t({value:void 0,done:!0})}))}function u(){o=!0,n.length=0,r.length=0}return await new Promise(((t,o)=>{l(e,{...i,openWhenHidden:!0,async onopen(e){if(!e.ok){var r;let t,n;console.error("open error",e.statusText);try{t=await e.text()}catch{throw new Error(e.statusText)}try{n=JSON.parse(t)}catch{}if("string"==typeof(null===(r=n)||void 0===r?void 0:r.error))throw new Error(n.error);throw new Error(t)}t(null)},onmessage(e){let t,o,a=!0;try{t=(null!=s?s:h)(e.data,e.event)}catch(e){a=!1,o=e}if(n.length>0){const[e,r]=n.shift();a?e(t):r(o)}else r.push(a?{ok:!0,data:t}:{ok:!1,reason:o})},onclose(){a=!0,c()},onerror(e){throw e}}).catch((e=>{o(e),function(e){n.forEach((t=>{let[r,n]=t;return n(e)})),u()}(e)}))})),{next(){return o?this.return():new Promise(((e,t)=>{if(r.length>0){const n=r.shift();n.ok?e(n.data):t(n.reason)}else a?(u(),e({value:void 0,done:!0})):n.push([e,t])}))},return:()=>(c(),u(),Promise.resolve({value:void 0,done:!0})),throw:e=>(c(),u(),Promise.reject(e)),[Symbol.asyncIterator](){return this}}}function h(e,t){if("error"===t){var r;let t;console.error("Received error event:",e);try{t=JSON.parse(e)}catch{}throw new Error("string"==typeof(null===(r=t)||void 0===r?void 0:r.error)?t.error:e)}if("[DONE]"===e)return{value:void 0,done:!0};if(e.startsWith("[ERROR]"))throw console.error("Received error message:",e),new Error(e);try{return{value:JSON.parse(e),done:!1}}catch(t){throw console.error("Failed to parse message:",e),t}}function f(e){const t=Object.getOwnPropertyNames(e);for(const r of t){const t=e[r];t&&"object"==typeof t&&f(t)}return Object.freeze(e)}function v(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function p(e){const t=typeof e;return null!=e&&("object"==t||"function"==t)}class w{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){var t;return JSON.parse(null!==(t=this.storage.getItem(this.prefix+e))&&void 0!==t?t:"null")}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}const y=new Map;function g(e){return function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];const o=function(e){let t=y.get(e);return t||(t=document.createElement(e),y.set(e,t),t)}(e);return o.resolve(...r)}}}}]);
2
+ //# sourceMappingURL=871.ccb701c0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/871.ccb701c0.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/general/createProviderClass.js","webpack:///../../node_modules/@microsoft/fetch-event-source/lib/esm/fetch.js","webpack:///../../node_modules/@microsoft/fetch-event-source/lib/esm/parse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/createSSEStream.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/deepFreeze.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/hasOwnProperty.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/isObject.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/JsonStorage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/general/unwrapProvider.js"],"sourcesContent":["import fileSaver from \"file-saver\";\nexport function createProviderClass(api) {\n return class extends HTMLElement {\n get $$typeof() {\n return \"provider\";\n }\n resolve() {\n return api(...arguments);\n }\n async saveAs(filename) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n const blob = await api(...args);\n fileSaver.saveAs(blob, filename);\n }\n };\n}\n//# sourceMappingURL=createProviderClass.js.map","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { getBytes, getLines, getMessages } from './parse';\r\nexport const EventStreamContentType = 'text/event-stream';\r\nconst DefaultRetryInterval = 1000;\r\nconst LastEventId = 'last-event-id';\r\nexport function fetchEventSource(input, _a) {\r\n var { signal: inputSignal, headers: inputHeaders, onopen: inputOnOpen, onmessage, onclose, onerror, openWhenHidden, fetch: inputFetch } = _a, rest = __rest(_a, [\"signal\", \"headers\", \"onopen\", \"onmessage\", \"onclose\", \"onerror\", \"openWhenHidden\", \"fetch\"]);\r\n return new Promise((resolve, reject) => {\r\n const headers = Object.assign({}, inputHeaders);\r\n if (!headers.accept) {\r\n headers.accept = EventStreamContentType;\r\n }\r\n let curRequestController;\r\n function onVisibilityChange() {\r\n curRequestController.abort();\r\n if (!document.hidden) {\r\n create();\r\n }\r\n }\r\n if (!openWhenHidden) {\r\n document.addEventListener('visibilitychange', onVisibilityChange);\r\n }\r\n let retryInterval = DefaultRetryInterval;\r\n let retryTimer = 0;\r\n function dispose() {\r\n document.removeEventListener('visibilitychange', onVisibilityChange);\r\n window.clearTimeout(retryTimer);\r\n curRequestController.abort();\r\n }\r\n inputSignal === null || inputSignal === void 0 ? void 0 : inputSignal.addEventListener('abort', () => {\r\n dispose();\r\n resolve();\r\n });\r\n const fetch = inputFetch !== null && inputFetch !== void 0 ? inputFetch : window.fetch;\r\n const onopen = inputOnOpen !== null && inputOnOpen !== void 0 ? inputOnOpen : defaultOnOpen;\r\n async function create() {\r\n var _a;\r\n curRequestController = new AbortController();\r\n try {\r\n const response = await fetch(input, Object.assign(Object.assign({}, rest), { headers, signal: curRequestController.signal }));\r\n await onopen(response);\r\n await getBytes(response.body, getLines(getMessages(id => {\r\n if (id) {\r\n headers[LastEventId] = id;\r\n }\r\n else {\r\n delete headers[LastEventId];\r\n }\r\n }, retry => {\r\n retryInterval = retry;\r\n }, onmessage)));\r\n onclose === null || onclose === void 0 ? void 0 : onclose();\r\n dispose();\r\n resolve();\r\n }\r\n catch (err) {\r\n if (!curRequestController.signal.aborted) {\r\n try {\r\n const interval = (_a = onerror === null || onerror === void 0 ? void 0 : onerror(err)) !== null && _a !== void 0 ? _a : retryInterval;\r\n window.clearTimeout(retryTimer);\r\n retryTimer = window.setTimeout(create, interval);\r\n }\r\n catch (innerErr) {\r\n dispose();\r\n reject(innerErr);\r\n }\r\n }\r\n }\r\n }\r\n create();\r\n });\r\n}\r\nfunction defaultOnOpen(response) {\r\n const contentType = response.headers.get('content-type');\r\n if (!(contentType === null || contentType === void 0 ? void 0 : contentType.startsWith(EventStreamContentType))) {\r\n throw new Error(`Expected content-type to be ${EventStreamContentType}, Actual: ${contentType}`);\r\n }\r\n}\r\n//# sourceMappingURL=fetch.js.map","export async function getBytes(stream, onChunk) {\r\n const reader = stream.getReader();\r\n let result;\r\n while (!(result = await reader.read()).done) {\r\n onChunk(result.value);\r\n }\r\n}\r\nexport function getLines(onLine) {\r\n let buffer;\r\n let position;\r\n let fieldLength;\r\n let discardTrailingNewline = false;\r\n return function onChunk(arr) {\r\n if (buffer === undefined) {\r\n buffer = arr;\r\n position = 0;\r\n fieldLength = -1;\r\n }\r\n else {\r\n buffer = concat(buffer, arr);\r\n }\r\n const bufLength = buffer.length;\r\n let lineStart = 0;\r\n while (position < bufLength) {\r\n if (discardTrailingNewline) {\r\n if (buffer[position] === 10) {\r\n lineStart = ++position;\r\n }\r\n discardTrailingNewline = false;\r\n }\r\n let lineEnd = -1;\r\n for (; position < bufLength && lineEnd === -1; ++position) {\r\n switch (buffer[position]) {\r\n case 58:\r\n if (fieldLength === -1) {\r\n fieldLength = position - lineStart;\r\n }\r\n break;\r\n case 13:\r\n discardTrailingNewline = true;\r\n case 10:\r\n lineEnd = position;\r\n break;\r\n }\r\n }\r\n if (lineEnd === -1) {\r\n break;\r\n }\r\n onLine(buffer.subarray(lineStart, lineEnd), fieldLength);\r\n lineStart = position;\r\n fieldLength = -1;\r\n }\r\n if (lineStart === bufLength) {\r\n buffer = undefined;\r\n }\r\n else if (lineStart !== 0) {\r\n buffer = buffer.subarray(lineStart);\r\n position -= lineStart;\r\n }\r\n };\r\n}\r\nexport function getMessages(onId, onRetry, onMessage) {\r\n let message = newMessage();\r\n const decoder = new TextDecoder();\r\n return function onLine(line, fieldLength) {\r\n if (line.length === 0) {\r\n onMessage === null || onMessage === void 0 ? void 0 : onMessage(message);\r\n message = newMessage();\r\n }\r\n else if (fieldLength > 0) {\r\n const field = decoder.decode(line.subarray(0, fieldLength));\r\n const valueOffset = fieldLength + (line[fieldLength + 1] === 32 ? 2 : 1);\r\n const value = decoder.decode(line.subarray(valueOffset));\r\n switch (field) {\r\n case 'data':\r\n message.data = message.data\r\n ? message.data + '\\n' + value\r\n : value;\r\n break;\r\n case 'event':\r\n message.event = value;\r\n break;\r\n case 'id':\r\n onId(message.id = value);\r\n break;\r\n case 'retry':\r\n const retry = parseInt(value, 10);\r\n if (!isNaN(retry)) {\r\n onRetry(message.retry = retry);\r\n }\r\n break;\r\n }\r\n }\r\n };\r\n}\r\nfunction concat(a, b) {\r\n const res = new Uint8Array(a.length + b.length);\r\n res.set(a);\r\n res.set(b, a.length);\r\n return res;\r\n}\r\nfunction newMessage() {\r\n return {\r\n data: '',\r\n event: '',\r\n id: '',\r\n retry: undefined,\r\n };\r\n}\r\n//# sourceMappingURL=parse.js.map","import { fetchEventSource } from \"@microsoft/fetch-event-source\";\n/**\n * 将 SSE 事件流转换为异步迭代器。\n */\nexport async function createSSEStream(url, options) {\n // Reference https://github.com/withspectrum/callback-to-async-iterator/blob/master/src/index.js\n const pushQueue = [];\n const pullQueue = [];\n let disposed = false;\n let closed = false;\n const {\n converter,\n ...fetchOptions\n } = options !== null && options !== void 0 ? options : {};\n await new Promise((resolve, reject) => {\n fetchEventSource(url, {\n ...fetchOptions,\n openWhenHidden: true,\n async onopen(response) {\n if (response.ok) {\n resolve(null);\n } else {\n var _json;\n // eslint-disable-next-line no-console\n console.error(\"open error\", response.statusText);\n let text;\n try {\n text = await response.text();\n } catch {\n throw new Error(response.statusText);\n }\n let json;\n try {\n json = JSON.parse(text);\n } catch {\n // Do nothing\n }\n if (typeof ((_json = json) === null || _json === void 0 ? void 0 : _json.error) === \"string\") {\n throw new Error(json.error);\n }\n throw new Error(text);\n }\n },\n onmessage(msg) {\n // istanbul ignore next\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line no-console\n console.debug(\"[EventSource]\", msg);\n }\n let data;\n let reason;\n let ok = true;\n try {\n data = (converter !== null && converter !== void 0 ? converter : defaultConverter)(msg.data, msg.event);\n } catch (e) {\n ok = false;\n reason = e;\n }\n if (pullQueue.length > 0) {\n const [resolve, reject] = pullQueue.shift();\n ok ? resolve(data) : reject(reason);\n } else {\n pushQueue.push(ok ? {\n ok: true,\n data: data\n } : {\n ok: false,\n reason\n });\n }\n },\n onclose() {\n closed = true;\n earlyDone();\n },\n onerror(err) {\n throw err;\n }\n }).catch(reason => {\n reject(reason);\n bailout(reason);\n });\n });\n function bailout(reason) {\n pullQueue.forEach(_ref => {\n let [_resolve, reject] = _ref;\n return reject(reason);\n });\n dispose();\n }\n function earlyDone() {\n pullQueue.forEach(_ref2 => {\n let [resolve] = _ref2;\n return resolve({\n value: undefined,\n done: true\n });\n });\n }\n function dispose() {\n disposed = true;\n pullQueue.length = 0;\n pushQueue.length = 0;\n }\n return {\n next() {\n return disposed ? this.return() : new Promise((resolve, reject) => {\n if (pushQueue.length > 0) {\n const result = pushQueue.shift();\n if (result.ok) {\n resolve(result.data);\n } else {\n reject(result.reason);\n }\n } else if (closed) {\n dispose();\n resolve({\n value: undefined,\n done: true\n });\n } else {\n pullQueue.push([resolve, reject]);\n }\n });\n },\n return() {\n earlyDone();\n dispose();\n return Promise.resolve({\n value: undefined,\n done: true\n });\n },\n throw(error) {\n earlyDone();\n dispose();\n return Promise.reject(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n }\n };\n}\nfunction defaultConverter(data, event) {\n if (event === \"error\") {\n var _value;\n // eslint-disable-next-line no-console\n console.error(\"Received error event:\", data);\n let value;\n try {\n value = JSON.parse(data);\n } catch {\n // Ignore\n }\n throw new Error(typeof ((_value = value) === null || _value === void 0 ? void 0 : _value.error) === \"string\" ? value.error : data);\n }\n\n // By default, `data: [DONE]` indicates the end of the stream\n if (data === \"[DONE]\") {\n return {\n value: undefined,\n done: true\n };\n }\n if (data.startsWith(\"[ERROR]\")) {\n // eslint-disable-next-line no-console\n console.error(\"Received error message:\", data);\n throw new Error(data);\n }\n try {\n const value = JSON.parse(data);\n return {\n value,\n done: false\n };\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Failed to parse message:\", data);\n throw e;\n }\n}\n//# sourceMappingURL=createSSEStream.js.map","// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n\n/** @internal */\nexport function deepFreeze(object) {\n // Retrieve the property names defined on object\n const propNames = Object.getOwnPropertyNames(object);\n\n // Freeze properties before freezing self\n\n for (const name of propNames) {\n const value = object[name];\n if (value && typeof value === \"object\") {\n deepFreeze(value);\n }\n }\n return Object.freeze(object);\n}\n//# sourceMappingURL=deepFreeze.js.map","export function hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n//# sourceMappingURL=hasOwnProperty.js.map","// Ref https://github.com/lodash/lodash/blob/4.17.11/lodash.js#L11744\nexport function isObject(value) {\n const type = typeof value;\n return value != null && (type == \"object\" || type == \"function\");\n}\n//# sourceMappingURL=isObject.js.map","// This is copied from\n// [@next-libs/storage](https://github.com/easyops-cn/next-libs/tree/master/libs/storage),\n// and the types is refined.\n// The usage of JsonStorage from @next-libs/storage should be deprecated,\n// and migrated to from @next-core/brick-utils.\nexport class JsonStorage {\n constructor(storage) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"brick-next-\";\n this.storage = storage;\n this.prefix = prefix;\n }\n setItem(name, value) {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n getItem(name) {\n var _this$storage$getItem;\n return JSON.parse((_this$storage$getItem = this.storage.getItem(this.prefix + name)) !== null && _this$storage$getItem !== void 0 ? _this$storage$getItem : \"null\");\n }\n removeItem(name) {\n return this.storage.removeItem(this.prefix + name);\n }\n clear() {\n return this.storage.clear();\n }\n}\n//# sourceMappingURL=JsonStorage.js.map","const pool = new Map();\nfunction getProviderBrick(provider) {\n let brick = pool.get(provider);\n if (brick) {\n return brick;\n }\n brick = document.createElement(provider);\n pool.set(provider, brick);\n return brick;\n}\nexport function unwrapProvider(provider) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n const brick = getProviderBrick(provider);\n return brick.resolve(...args);\n };\n}\n//# sourceMappingURL=unwrapProvider.js.map"],"names":["createProviderClass","api","HTMLElement","$$typeof","resolve","arguments","saveAs","filename","_len","length","args","Array","_key","blob","__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","propertyIsEnumerable","EventStreamContentType","DefaultRetryInterval","LastEventId","fetchEventSource","input","_a","signal","inputSignal","headers","inputHeaders","onopen","inputOnOpen","onmessage","onclose","onerror","openWhenHidden","fetch","inputFetch","rest","Promise","reject","assign","curRequestController","onVisibilityChange","abort","document","hidden","create","accept","addEventListener","retryInterval","retryTimer","dispose","removeEventListener","window","clearTimeout","defaultOnOpen","async","AbortController","response","stream","onChunk","reader","getReader","result","read","done","value","getBytes","body","onLine","buffer","position","fieldLength","discardTrailingNewline","arr","undefined","a","b","res","Uint8Array","set","concat","bufLength","lineStart","lineEnd","subarray","getLines","onId","onRetry","onMessage","message","data","event","id","retry","decoder","TextDecoder","line","field","decode","valueOffset","parseInt","isNaN","getMessages","err","aborted","interval","setTimeout","innerErr","contentType","get","startsWith","Error","createSSEStream","url","options","pushQueue","pullQueue","disposed","closed","converter","fetchOptions","earlyDone","forEach","_ref2","ok","_json","text","json","console","error","statusText","JSON","parse","msg","reason","defaultConverter","shift","push","catch","_ref","_resolve","bailout","next","this","return","throw","Symbol","asyncIterator","_value","deepFreeze","object","propNames","getOwnPropertyNames","name","freeze","property","isObject","type","JsonStorage","constructor","storage","prefix","setItem","stringify","getItem","_this$storage$getItem","removeItem","clear","pool","Map","unwrapProvider","provider","brick","createElement","getProviderBrick"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[494],{6341:(e,t,n)=>{n.r(t),n.d(t,{exportAsSourceFiles:()=>S});var o=n(7732),s=n(2461),i=n.n(s),a=n(5060),r=n(2408),l=n(1914),c=n(3242),p=n(77),d=n(8403),f=n(8587),u=n(6315),m=n(743),x=n(7577),g=n(2582),j=n(535),h=n(4215),y=n(1330),_=n(3812),w=n(1259),b=n(1895),$=n(6414),A=n(4071),k=n(9055),v=n(8263);async function S(e){var t,n,o,s,r,l;let{projectDetail:c,storyboard:S}=e;const E=new(i()),I=E.folder("project"),P=I.folder("src"),C={extracts:[],namePool:new Map},J=(0,d.WM)(S.routes,[],C),F={id:c.appId,name:c.name,homepage:c.appSetting.homepage,layoutType:c.appSetting.layoutType,theme:c.appSetting.theme,noAuthGuard:c.appSetting.noAuthGuard,locales:c.appSetting.locales,defaultConfig:JSON.parse(c.appSetting.defaultConfig||"{}"),menuIcon:JSON.parse(c.appSetting.icon||"null"),standaloneMode:!0};P.file("app.js",await T(`export default ${JSON.stringify(F,null,2)};`));const M=null!==(t=S.meta)&&void 0!==t?t:{},G=null!==(n=M.customTemplates)&&void 0!==n?n:[],D=null!==(o=M.functions)&&void 0!==o?o:[],R=null!==(s=M.menus)&&void 0!==s?s:[],W=null!==(r=M.contracts)&&void 0!==r?r:[],z=null!==(l=M.i18n)&&void 0!==l?l:{};delete M.customTemplates,delete M.functions,delete M.menus,delete M.contracts,delete M.i18n,delete M.workflows,delete M.mocks,delete M.userGroups;const B=(0,d.pA)(G,["components"],C);C.extracts.push({name:"index",path:["components"],node:B,nodeType:"others"});const U=(0,f._)(C.extracts);P.file("index.js",x),P.file("routes.jsx",await T((0,u.c)(J,"routes",["routes.jsx"])));const H=P.folder("resources"),q=H.folder("functions"),K=[],L=[];for(const e of D){if("index"===e.name)throw new Error('Unexpected function name: "index"');const t=new Set;let{code:n}=(0,p.transform)(e.source,{filename:"expr."+(e.typescript?"ts":"js"),plugins:[...e.typescript?["syntax-typescript"]:[],k.A,[v.A,{imports:t}]]});const o=t.has("FN");o&&t.delete("FN");const s=[];t.size>0&&s.push(`import { ${[...t].join(", ")} } from "next-jsx/runtime";`),o&&s.push('import FN from "./index.js";'),s.length>0&&(n=`${s.join("\n")}\n\n${n}`),q.file(`${e.name}.${e.typescript?"ts":"js"}`,n),L.push(`import ${e.name} from "./${e.name}.js";`),K.push(e.name)}q.file("index.js",await T(`${L.join("\n")}\n\nconst FN = { ${K.join(",")} };\n\nexport default FN;`));const Q=H.folder("menus"),V=[],X=[];for(const e of R){if(O(e),"index"===e.menuId)throw new Error('Unexpected menu id: "index"');const t=`${e.menuId}.js`;Q.file(t,await T((0,u.c)(e,"menu",["resources","menus",t])));let n=e.menuId.replace(/^\d+|[^\w]+/g,"_");A.bB.has(n)&&(n=`${n}__2`),X.push(`import ${n} from "./${t}";`),V.push(n)}Q.file("index.js",await T(`${X.join("\n")}\n\nexport default [${V.join(",")}]`));const Y=H.folder("contracts"),Z=[],ee=new Set;for(const e of W){const t=e.name.replace(/^\d+|[^\w]+/g,"_");let n=2,o=t;for(;ee.has(o)||A.bB.has(o)||"index"===o;)o=`${t}_${n++}`;ee.add(o),Y.file(`${o}.js`,await T(`export default ${JSON.stringify(e)};`)),Z.push(`import ${o} from "./${o}.js";`)}Y.file("index.js",await T(`${Z.join("\n")}\n\nexport default [${[...ee].join(",")}]`)),H.folder("i18n").file("index.js",await T(`export default ${JSON.stringify(z)};`)),H.file("meta.js",await T(`export default ${JSON.stringify(M,null,2)};`)),H.file("index.js",m),await N(U,P,[]),I.folder("mock-micro-apps").folder(c.appId).file(".gitignore","*\n!.gitignore"),I.file(".editorconfig",g),I.file(".gitignore",j),I.file("dev.config.mjs",y),I.file("declarations.d.ts",h),I.file("jsconfig.json",_),I.file("next-jsx.config.js",w.replaceAll("__APP_ID__",c.appId)),I.file("package.json",b.replaceAll("__APP_ID__",c.appId)),I.file("README.md",$.replaceAll("__PROJECT_NAME__",c.name).replaceAll("__PROJECT_HOMEPAGE__",c.appSetting.homepage));const te=await E.generateAsync({type:"blob"});(0,a.saveAs)(te,"project.zip")}async function T(e){let{typescript:t,semi:n=!0,printWidth:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await(0,r.GP)(e,{parser:t?"babel-ts":"babel",plugins:[l,c],semi:n,printWidth:o,trailingComma:"es5"})}async function N(e,t,n){for(const o of e){const e=[...n,o.name];if("folder"===o.type){const n=t.folder(o.name);await N(o.items,n,e)}else t.file(`${o.name}.js${"routes"===o.nodeType||"bricks"===o.nodeType||"template"===o.nodeType?"x":""}`,await T((0,u.c)(o.node,o.nodeType,e)))}}function O(e){for(const[t,n]of Object.entries(e))switch(t){case"items":if(Array.isArray(n))for(const e of n)E(e);break;case"type":"main"===n&&delete e[t];break;case"if":break;case"i18n":0===Object.keys(n).length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}function E(e){for(const[t,n]of Object.entries(e))switch(t){case"children":Array.isArray(n)&&n.length>0&&E(n);break;case"if":break;case"activeExcludes":case"activeIncludes":Array.isArray(n)&&0===n.length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}customElements.define("vb-experiment.export-as-source-files",(0,o.createProviderClass)(S))}}]);
2
- //# sourceMappingURL=export-as-source-files.ddb0cd26.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[494],{6341:(e,t,n)=>{n.r(t),n.d(t,{exportAsSourceFiles:()=>S});var o=n(4558),s=n(2461),i=n.n(s),a=n(5060),r=n(2408),l=n(1914),c=n(3242),p=n(77),d=n(8403),f=n(8587),u=n(6315),m=n(743),x=n(7577),g=n(2582),j=n(535),h=n(4215),y=n(1330),_=n(3812),w=n(1259),b=n(1895),$=n(6414),A=n(4071),k=n(9055),v=n(8263);async function S(e){var t,n,o,s,r,l;let{projectDetail:c,storyboard:S}=e;const E=new(i()),I=E.folder("project"),P=I.folder("src"),C={extracts:[],namePool:new Map},J=(0,d.WM)(S.routes,[],C),F={id:c.appId,name:c.name,homepage:c.appSetting.homepage,layoutType:c.appSetting.layoutType,theme:c.appSetting.theme,noAuthGuard:c.appSetting.noAuthGuard,locales:c.appSetting.locales,defaultConfig:JSON.parse(c.appSetting.defaultConfig||"{}"),menuIcon:JSON.parse(c.appSetting.icon||"null"),standaloneMode:!0};P.file("app.js",await T(`export default ${JSON.stringify(F,null,2)};`));const M=null!==(t=S.meta)&&void 0!==t?t:{},G=null!==(n=M.customTemplates)&&void 0!==n?n:[],D=null!==(o=M.functions)&&void 0!==o?o:[],R=null!==(s=M.menus)&&void 0!==s?s:[],W=null!==(r=M.contracts)&&void 0!==r?r:[],z=null!==(l=M.i18n)&&void 0!==l?l:{};delete M.customTemplates,delete M.functions,delete M.menus,delete M.contracts,delete M.i18n,delete M.workflows,delete M.mocks,delete M.userGroups;const B=(0,d.pA)(G,["components"],C);C.extracts.push({name:"index",path:["components"],node:B,nodeType:"others"});const U=(0,f._)(C.extracts);P.file("index.js",x),P.file("routes.jsx",await T((0,u.c)(J,"routes",["routes.jsx"])));const H=P.folder("resources"),q=H.folder("functions"),K=[],L=[];for(const e of D){if("index"===e.name)throw new Error('Unexpected function name: "index"');const t=new Set;let{code:n}=(0,p.transform)(e.source,{filename:"expr."+(e.typescript?"ts":"js"),plugins:[...e.typescript?["syntax-typescript"]:[],k.A,[v.A,{imports:t}]]});const o=t.has("FN");o&&t.delete("FN");const s=[];t.size>0&&s.push(`import { ${[...t].join(", ")} } from "next-jsx/runtime";`),o&&s.push('import FN from "./index.js";'),s.length>0&&(n=`${s.join("\n")}\n\n${n}`),q.file(`${e.name}.${e.typescript?"ts":"js"}`,n),L.push(`import ${e.name} from "./${e.name}.js";`),K.push(e.name)}q.file("index.js",await T(`${L.join("\n")}\n\nconst FN = { ${K.join(",")} };\n\nexport default FN;`));const Q=H.folder("menus"),V=[],X=[];for(const e of R){if(O(e),"index"===e.menuId)throw new Error('Unexpected menu id: "index"');const t=`${e.menuId}.js`;Q.file(t,await T((0,u.c)(e,"menu",["resources","menus",t])));let n=e.menuId.replace(/^\d+|[^\w]+/g,"_");A.bB.has(n)&&(n=`${n}__2`),X.push(`import ${n} from "./${t}";`),V.push(n)}Q.file("index.js",await T(`${X.join("\n")}\n\nexport default [${V.join(",")}]`));const Y=H.folder("contracts"),Z=[],ee=new Set;for(const e of W){const t=e.name.replace(/^\d+|[^\w]+/g,"_");let n=2,o=t;for(;ee.has(o)||A.bB.has(o)||"index"===o;)o=`${t}_${n++}`;ee.add(o),Y.file(`${o}.js`,await T(`export default ${JSON.stringify(e)};`)),Z.push(`import ${o} from "./${o}.js";`)}Y.file("index.js",await T(`${Z.join("\n")}\n\nexport default [${[...ee].join(",")}]`)),H.folder("i18n").file("index.js",await T(`export default ${JSON.stringify(z)};`)),H.file("meta.js",await T(`export default ${JSON.stringify(M,null,2)};`)),H.file("index.js",m),await N(U,P,[]),I.folder("mock-micro-apps").folder(c.appId).file(".gitignore","*\n!.gitignore"),I.file(".editorconfig",g),I.file(".gitignore",j),I.file("dev.config.mjs",y),I.file("declarations.d.ts",h),I.file("jsconfig.json",_),I.file("next-jsx.config.js",w.replaceAll("__APP_ID__",c.appId)),I.file("package.json",b.replaceAll("__APP_ID__",c.appId)),I.file("README.md",$.replaceAll("__PROJECT_NAME__",c.name).replaceAll("__PROJECT_HOMEPAGE__",c.appSetting.homepage));const te=await E.generateAsync({type:"blob"});(0,a.saveAs)(te,"project.zip")}async function T(e){let{typescript:t,semi:n=!0,printWidth:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return await(0,r.GP)(e,{parser:t?"babel-ts":"babel",plugins:[l,c],semi:n,printWidth:o,trailingComma:"es5"})}async function N(e,t,n){for(const o of e){const e=[...n,o.name];if("folder"===o.type){const n=t.folder(o.name);await N(o.items,n,e)}else t.file(`${o.name}.js${"routes"===o.nodeType||"bricks"===o.nodeType||"template"===o.nodeType?"x":""}`,await T((0,u.c)(o.node,o.nodeType,e)))}}function O(e){for(const[t,n]of Object.entries(e))switch(t){case"items":if(Array.isArray(n))for(const e of n)E(e);break;case"type":"main"===n&&delete e[t];break;case"if":break;case"i18n":0===Object.keys(n).length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}function E(e){for(const[t,n]of Object.entries(e))switch(t){case"children":Array.isArray(n)&&n.length>0&&E(n);break;case"if":break;case"activeExcludes":case"activeIncludes":Array.isArray(n)&&0===n.length&&delete e[t];break;default:null!==n&&!1!==n||delete e[t]}}customElements.define("vb-experiment.export-as-source-files",(0,o.createProviderClass)(S))}}]);
2
+ //# sourceMappingURL=export-as-source-files.9826c68b.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/export-as-source-files.ddb0cd26.js","mappings":"4aAmDOA,eAAeC,EAAmBC,GAGG,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAHF,cACxCC,EAAa,WACbC,GACyBR,EACzB,MAAMS,EAAM,IAAIC,KACVC,EAAUF,EAAIG,OAAO,WACrBC,EAAMF,EAAQC,OAAO,OAErBE,EAA6B,CACjCC,SAAU,GACVC,SAAU,IAAIC,KAEVC,GAAkBC,EAAAA,EAAAA,IAAcX,EAAWY,OAAQ,GAAIN,GAEvDO,EAA0C,CAC9CC,GAAIf,EAAcgB,MAClBC,KAAMjB,EAAciB,KACpBC,SAAUlB,EAAcmB,WAAWD,SACnCE,WAAYpB,EAAcmB,WAAWC,WACrCC,MAAOrB,EAAcmB,WAAWE,MAChCC,YAAatB,EAAcmB,WAAWG,YACtCC,QAASvB,EAAcmB,WAAWI,QAClCC,cAAeC,KAAKC,MAAM1B,EAAcmB,WAAWK,eAAiB,MACpEG,SAAUF,KAAKC,MAAM1B,EAAcmB,WAAWS,MAAQ,QACtDC,gBAAgB,GAElBvB,EAAIwB,KACF,eACMC,EAAS,kBAAkBN,KAAKO,UAAUlB,EAAK,KAAM,QAG7D,MAAMmB,EAAuB,QAAnBvC,EAAIO,EAAWgC,YAAI,IAAAvC,EAAAA,EAAI,CAAC,EAI5BwC,EAAsC,QAAvBvC,EAAGsC,EAAKC,uBAAe,IAAAvC,EAAAA,EAAI,GAC1CwC,EAA0B,QAAjBvC,EAAGqC,EAAKE,iBAAS,IAAAvC,EAAAA,EAAI,GAC9BwC,EAAkB,QAAbvC,EAAGoC,EAAKG,aAAK,IAAAvC,EAAAA,EAAI,GACtBwC,EAA0B,QAAjBvC,EAAGmC,EAAKI,iBAAS,IAAAvC,EAAAA,EAAI,GAC9BwC,EAAgB,QAAZvC,EAAGkC,EAAKK,YAAI,IAAAvC,EAAAA,EAAI,CAAC,SACpBkC,EAAKC,uBACLD,EAAKE,iBACLF,EAAKG,aACLH,EAAKI,iBACLJ,EAAKK,YACLL,EAAKM,iBACLN,EAAKO,aACLP,EAAKQ,WAEZ,MAAMC,GAAqBC,EAAAA,EAAAA,IACzBT,EACA,CAAC,cACD3B,GAEFA,EAAaC,SAASoC,KAAK,CACzB3B,KAAM,QACN4B,KAAM,CAAC,cACPC,KAAMJ,EACNK,SAAU,WAGZ,MAAMC,GAAgBC,EAAAA,EAAAA,GAAmB1C,EAAaC,UAEtDF,EAAIwB,KAAK,WAAYoB,GAErB5C,EAAIwB,KACF,mBACMC,GAASoB,EAAAA,EAAAA,GAASxC,EAAiB,SAAU,CAAC,iBAGtD,MAAMyC,EAAY9C,EAAID,OAAO,aAGvBgD,EAAQD,EAAU/C,OAAO,aACzBiD,EAAoB,GACpBC,EAAsB,GAC5B,IAAK,MAAMC,KAAMrB,EAAW,CAC1B,GAAgB,UAAZqB,EAAGvC,KACL,MAAM,IAAIwC,MAAM,qCAIlB,MAAMC,EAAkB,IAAIC,IAC5B,IAAI,KAAEC,IAASC,EAAAA,EAAAA,WAAUL,EAAGM,OAAQ,CAClCC,SAAU,SAAQP,EAAGQ,WAAa,KAAO,MACzCC,QAAS,IACHT,EAAGQ,WAAa,CAAC,qBAAuB,GAC5CE,EAAAA,EACA,CACEC,EAAAA,EACA,CACEC,QAASV,OAKjB,MAAMW,EAAQX,EAAgBY,IAAI,MAC9BD,GACFX,EAAgBa,OAAO,MAEzB,MAAMC,EAA0B,GAC5Bd,EAAgBe,KAAO,GACzBD,EAAc5B,KACZ,YAAY,IAAIc,GAAiBgB,KAAK,oCAGtCL,GACFG,EAAc5B,KAAK,gCAEjB4B,EAAcG,OAAS,IACzBf,EAAO,GAAGY,EAAcE,KAAK,YAAYd,KAG3CP,EAAMvB,KAAK,GAAG0B,EAAGvC,QAAQuC,EAAGQ,WAAa,KAAO,OAAQJ,GACxDL,EAAUX,KAAK,UAAUY,EAAGvC,gBAAgBuC,EAAGvC,aAC/CqC,EAAQV,KAAKY,EAAGvC,KAClB,CACAoC,EAAMvB,KACJ,iBACMC,EACJ,GAAGwB,EAAUmB,KAAK,yBAAyBpB,EAAQoB,KACjD,kCAMN,MAAME,EAAWxB,EAAU/C,OAAO,SAC5BwE,EAAsB,GACtBC,EAAwB,GAC9B,IAAK,MAAMC,KAAQ3C,EAAO,CAExB,GADA4C,EAAUD,GACU,UAAhBA,EAAKE,OACP,MAAM,IAAIxB,MAAM,+BAElB,MAAMM,EAAW,GAAGgB,EAAKE,YACzBL,EAAS9C,KACPiC,QACMhC,GAASoB,EAAAA,EAAAA,GAAS4B,EAAM,OAAQ,CAAC,YAAa,QAAShB,MAE/D,IAAI9C,EAAO8D,EAAKE,OAAOC,QAAQ,eAAgB,KAC3CC,EAAAA,GAAkBb,IAAIrD,KACxBA,EAAO,GAAGA,QAEZ6D,EAAYlC,KAAK,UAAU3B,aAAgB8C,OAC3Cc,EAAUjC,KAAK3B,EACjB,CACA2D,EAAS9C,KACP,iBACMC,EACJ,GAAG+C,EAAYJ,KAAK,4BAA4BG,EAAUH,KAAK,UAKnE,MAAMU,EAAehC,EAAU/C,OAAO,aAChCgF,EAA4B,GAC5BC,GAAgB,IAAI3B,IAC1B,IAAK,MAAM4B,KAAYlD,EAAW,CAChC,MAAMmD,EAAWD,EAAStE,KAAKiE,QAAQ,eAAgB,KACvD,IAAIO,EAAU,EACVC,EAAUF,EACd,KACEF,GAAchB,IAAIoB,IAClBP,EAAAA,GAAkBb,IAAIoB,IACV,UAAZA,GAEAA,EAAU,GAAGF,KAAYC,MAE3BH,GAAcK,IAAID,GAElBN,EAAatD,KACX,GAAG4D,aACG3D,EAAS,kBAAkBN,KAAKO,UAAUuD,QAElDF,EAAgBzC,KAAK,UAAU8C,aAAmBA,SACpD,CACAN,EAAatD,KACX,iBACMC,EACJ,GAAGsD,EAAgBX,KAAK,4BAA4B,IAC/CY,IACHZ,KAAK,UAIXtB,EACG/C,OAAO,QACPyB,KACC,iBACMC,EAAS,kBAAkBN,KAAKO,UAAUM,QAEpDc,EAAUtB,KACR,gBACMC,EAAS,kBAAkBN,KAAKO,UAAUC,EAAM,KAAM,QAE9DmB,EAAUtB,KAAK,WAAY8D,SAErBC,EAAwB7C,EAAe1C,EAAK,IAEnCF,EACZC,OAAO,mBACPA,OAAOL,EAAcgB,OACjBc,KAAK,aAAc,kBAE1B1B,EAAQ0B,KAAK,gBAAiBgE,GAC9B1F,EAAQ0B,KAAK,aAAciE,GAC3B3F,EAAQ0B,KAAK,iBAAkBkE,GAC/B5F,EAAQ0B,KAAK,oBAAqBmE,GAClC7F,EAAQ0B,KAAK,gBAAiBoE,GAC9B9F,EAAQ0B,KACN,qBACAqE,EAAgBC,WAAW,aAAcpG,EAAcgB,QAEzDZ,EAAQ0B,KACN,eACAuE,EAAYD,WAAW,aAAcpG,EAAcgB,QAErDZ,EAAQ0B,KACN,YACAwE,EACGF,WAAW,mBAAoBpG,EAAciB,MAC7CmF,WAAW,uBAAwBpG,EAAcmB,WAAWD,WAGjE,MAAMqF,SAAarG,EAAIsG,cAAc,CAAEC,KAAM,UAC7CC,EAAAA,EAAAA,QAAOH,GAAM,cACf,CAQAhH,eAAewC,EACb+B,GAEiB,IADjB,WAAEE,EAAU,KAAE2C,GAAO,EAAI,WAAEC,GAA6BC,UAAAlC,OAAA,QAAAmC,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE5D,aAAaE,EAAAA,EAAAA,IAAOjD,EAAQ,CAC1BkD,OAAQhD,EAAa,WAAa,QAClCC,QAAS,CAACgD,EAAqBC,GAC/BP,OACAC,aACAO,cAAe,OAEnB,CAEA5H,eAAesG,EACbuB,EACA/G,EACAwC,GAEA,IAAK,MAAMwE,KAAQD,EAAO,CACxB,MAAME,EAAY,IAAIzE,EAAMwE,EAAKpG,MACjC,GAAkB,WAAdoG,EAAKZ,KAAmB,CAC1B,MAAMc,EAAclH,EAAOA,OAAOgH,EAAKpG,YACjC4E,EAAwBwB,EAAKD,MAAOG,EAAaD,EACzD,MACEjH,EAAOyB,KACL,GAAGuF,EAAKpG,UACY,WAAlBoG,EAAKtE,UACa,WAAlBsE,EAAKtE,UACa,aAAlBsE,EAAKtE,SACD,IACA,WAEAhB,GAASoB,EAAAA,EAAAA,GAASkE,EAAKvE,KAAMuE,EAAKtE,SAAUuE,IAGxD,CACF,CAEA,SAAStC,EAAUD,GACjB,IAAK,MAAOyC,EAAKC,KAAUC,OAAOC,QAAQ5C,GACxC,OAAQyC,GACN,IAAK,QACH,GAAII,MAAMC,QAAQJ,GAChB,IAAK,MAAMJ,KAAQI,EACjBK,EAAcT,GAGlB,MACF,IAAK,OACW,SAAVI,UACK1C,EAAKyC,GAEd,MACF,IAAK,KACH,MACF,IAAK,OAC+B,IAA9BE,OAAOK,KAAKN,GAAO9C,eACdI,EAAKyC,GAEd,MACF,QACgB,OAAVC,IAA4B,IAAVA,UACb1C,EAAKyC,GAItB,CAEA,SAASM,EAAcE,GACrB,IAAK,MAAOR,EAAKC,KAAUC,OAAOC,QAAQK,GACxC,OAAQR,GACN,IAAK,WACCI,MAAMC,QAAQJ,IAAUA,EAAM9C,OAAS,GACzCmD,EAAcL,GAEhB,MACF,IAAK,KACH,MACF,IAAK,iBACL,IAAK,iBACCG,MAAMC,QAAQJ,IAA2B,IAAjBA,EAAM9C,eACzBqD,EAASR,GAElB,MACF,QACgB,OAAVC,IAA4B,IAAVA,UACbO,EAASR,GAI1B,CAEAS,eAAeC,OACb,wCACAC,EAAAA,EAAAA,qBAAoB3I,G","sources":["webpack:///./src/data-providers/export-as-source-files.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Storyboard, MicroApp, StoryboardMeta } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\nimport { format } from \"prettier/standalone\";\nimport * as prettierPluginBabel from \"prettier/plugins/babel\";\nimport * as prettierPluginEstree from \"prettier/plugins/estree\";\nimport { transform } from \"@babel/standalone\";\nimport {\n ExtractState,\n extractRoutes,\n extractTemplates,\n} from \"./utils/extract.js\";\nimport {\n SourceFileOrFolder,\n buildFileStructure,\n} from \"./utils/buildFileStructure.js\";\nimport { generate } from \"./utils/generators/generate.js\";\nimport srcResourcesIndexJs from \"./raws/src/resources/index.js.txt\";\nimport srcIndexJs from \"./raws/src/index.js.txt\";\nimport editorConfig from \"./raws/.editorconfig.txt\";\nimport gitIgnore from \"./raws/.gitignore.txt\";\nimport declarationsDTs from \"./raws/declarations.d.ts.txt\";\nimport devConfigMjs from \"./raws/dev.config.mjs.txt\";\nimport jsconfigJson from \"./raws/jsconfig.json.txt\";\nimport nextJsxConfigJs from \"./raws/next-jsx.config.js.txt\";\nimport packageJson from \"./raws/package.json.txt\";\nimport readmeMd from \"./raws/README.md.txt\";\nimport { JS_RESERVED_WORDS } from \"./utils/constants.js\";\nimport TransformStoryboardFunction from \"./utils/plugins/storyboard-function.js\";\nimport SmartImports from \"./utils/plugins/smart-imports.js\";\n\nexport interface StoryboardAssemblyResult {\n storyboard: Storyboard;\n\n projectDetail: {\n appId: string;\n name: string;\n appSetting: Pick<\n MicroApp,\n \"homepage\" | \"theme\" | \"locales\" | \"noAuthGuard\"\n > & {\n layoutType?: string;\n defaultConfig?: string;\n icon?: string;\n };\n brickNextVersion?: number;\n };\n}\n\nexport async function exportAsSourceFiles({\n projectDetail,\n storyboard,\n}: StoryboardAssemblyResult): Promise<void> {\n const zip = new JSZip();\n const project = zip.folder(\"project\")!;\n const src = project.folder(\"src\")!;\n\n const extractState: ExtractState = {\n extracts: [],\n namePool: new Map(),\n };\n const extractedRoutes = extractRoutes(storyboard.routes, [], extractState);\n\n const app: MicroApp & { layoutType?: string } = {\n id: projectDetail.appId,\n name: projectDetail.name,\n homepage: projectDetail.appSetting.homepage,\n layoutType: projectDetail.appSetting.layoutType,\n theme: projectDetail.appSetting.theme,\n noAuthGuard: projectDetail.appSetting.noAuthGuard,\n locales: projectDetail.appSetting.locales,\n defaultConfig: JSON.parse(projectDetail.appSetting.defaultConfig || \"{}\"),\n menuIcon: JSON.parse(projectDetail.appSetting.icon || \"null\"),\n standaloneMode: true,\n };\n src.file(\n \"app.js\",\n await formatJs(`export default ${JSON.stringify(app, null, 2)};`)\n );\n\n const meta = (storyboard.meta ?? {}) as StoryboardMeta & {\n workflows?: unknown;\n userGroups?: unknown;\n };\n const customTemplates = meta.customTemplates ?? [];\n const functions = meta.functions ?? [];\n const menus = meta.menus ?? [];\n const contracts = meta.contracts ?? [];\n const i18n = meta.i18n ?? {};\n delete meta.customTemplates;\n delete meta.functions;\n delete meta.menus;\n delete meta.contracts;\n delete meta.i18n;\n delete meta.workflows;\n delete meta.mocks;\n delete meta.userGroups;\n\n const extractedTemplates = extractTemplates(\n customTemplates,\n [\"components\"],\n extractState\n );\n extractState.extracts.push({\n name: \"index\",\n path: [\"components\"],\n node: extractedTemplates,\n nodeType: \"others\",\n });\n\n const fileStructure = buildFileStructure(extractState.extracts);\n\n src.file(\"index.js\", srcIndexJs);\n\n src.file(\n \"routes.jsx\",\n await formatJs(generate(extractedRoutes, \"routes\", [\"routes.jsx\"]))\n );\n\n const resources = src.folder(\"resources\")!;\n\n // Functions\n const fnDir = resources.folder(\"functions\")!;\n const fnNames: string[] = [];\n const fnImports: string[] = [];\n for (const fn of functions) {\n if (fn.name === \"index\") {\n throw new Error('Unexpected function name: \"index\"');\n }\n\n // Prepend with `export default` for functions\n const inferredImports = new Set<string>();\n let { code } = transform(fn.source, {\n filename: `expr.${fn.typescript ? \"ts\" : \"js\"}`,\n plugins: [\n ...(fn.typescript ? [\"syntax-typescript\"] : []),\n TransformStoryboardFunction,\n [\n SmartImports,\n {\n imports: inferredImports,\n },\n ],\n ],\n }) as { code: string };\n const hasFN = inferredImports.has(\"FN\");\n if (hasFN) {\n inferredImports.delete(\"FN\");\n }\n const importStrings: string[] = [];\n if (inferredImports.size > 0) {\n importStrings.push(\n `import { ${[...inferredImports].join(\", \")} } from \"next-jsx/runtime\";`\n );\n }\n if (hasFN) {\n importStrings.push(`import FN from \"./index.js\";`);\n }\n if (importStrings.length > 0) {\n code = `${importStrings.join(\"\\n\")}\\n\\n${code}`;\n }\n\n fnDir.file(`${fn.name}.${fn.typescript ? \"ts\" : \"js\"}`, code);\n fnImports.push(`import ${fn.name} from \"./${fn.name}.js\";`);\n fnNames.push(fn.name);\n }\n fnDir.file(\n \"index.js\",\n await formatJs(\n `${fnImports.join(\"\\n\")}\\n\\nconst FN = { ${fnNames.join(\n \",\"\n )} };\\n\\nexport default FN;`\n )\n );\n\n // Menus\n const menusDir = resources.folder(\"menus\")!;\n const menuNames: string[] = [];\n const menuImports: string[] = [];\n for (const menu of menus) {\n cleanMenu(menu);\n if (menu.menuId === \"index\") {\n throw new Error('Unexpected menu id: \"index\"');\n }\n const filename = `${menu.menuId}.js`;\n menusDir.file(\n filename,\n await formatJs(generate(menu, \"menu\", [\"resources\", \"menus\", filename]))\n );\n let name = menu.menuId.replace(/^\\d+|[^\\w]+/g, \"_\");\n if (JS_RESERVED_WORDS.has(name)) {\n name = `${name}__2`;\n }\n menuImports.push(`import ${name} from \"./${filename}\";`);\n menuNames.push(name);\n }\n menusDir.file(\n \"index.js\",\n await formatJs(\n `${menuImports.join(\"\\n\")}\\n\\nexport default [${menuNames.join(\",\")}]`\n )\n );\n\n // Contracts\n const contractsDir = resources.folder(\"contracts\")!;\n const contractImports: string[] = [];\n const contractNames = new Set<string>();\n for (const contract of contracts) {\n const baseName = contract.name.replace(/^\\d+|[^\\w]+/g, \"_\");\n let counter = 2;\n let varName = baseName;\n while (\n contractNames.has(varName) ||\n JS_RESERVED_WORDS.has(varName) ||\n varName === \"index\"\n ) {\n varName = `${baseName}_${counter++}`;\n }\n contractNames.add(varName);\n\n contractsDir.file(\n `${varName}.js`,\n await formatJs(`export default ${JSON.stringify(contract)};`)\n );\n contractImports.push(`import ${varName} from \"./${varName}.js\";`);\n }\n contractsDir.file(\n \"index.js\",\n await formatJs(\n `${contractImports.join(\"\\n\")}\\n\\nexport default [${[\n ...contractNames,\n ].join(\",\")}]`\n )\n );\n\n resources\n .folder(\"i18n\")!\n .file(\n \"index.js\",\n await formatJs(`export default ${JSON.stringify(i18n)};`)\n );\n resources.file(\n \"meta.js\",\n await formatJs(`export default ${JSON.stringify(meta, null, 2)};`)\n );\n resources.file(\"index.js\", srcResourcesIndexJs);\n\n await generateByFileStructure(fileStructure, src, []);\n\n const appDir = project\n .folder(\"mock-micro-apps\")!\n .folder(projectDetail.appId)!;\n appDir.file(\".gitignore\", \"*\\n!.gitignore\");\n\n project.file(\".editorconfig\", editorConfig);\n project.file(\".gitignore\", gitIgnore);\n project.file(\"dev.config.mjs\", devConfigMjs);\n project.file(\"declarations.d.ts\", declarationsDTs);\n project.file(\"jsconfig.json\", jsconfigJson);\n project.file(\n \"next-jsx.config.js\",\n nextJsxConfigJs.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"package.json\",\n packageJson.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"README.md\",\n readmeMd\n .replaceAll(\"__PROJECT_NAME__\", projectDetail.name)\n .replaceAll(\"__PROJECT_HOMEPAGE__\", projectDetail.appSetting.homepage)\n );\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, \"project.zip\");\n}\n\ninterface FormatJsOptions {\n typescript?: boolean;\n semi?: boolean;\n printWidth?: number;\n}\n\nasync function formatJs(\n source: string,\n { typescript, semi = true, printWidth }: FormatJsOptions = {}\n): Promise<string> {\n return await format(source, {\n parser: typescript ? \"babel-ts\" : \"babel\",\n plugins: [prettierPluginBabel, prettierPluginEstree as any],\n semi,\n printWidth,\n trailingComma: \"es5\",\n });\n}\n\nasync function generateByFileStructure(\n items: SourceFileOrFolder[],\n folder: JSZip,\n path: string[]\n) {\n for (const item of items) {\n const childPath = [...path, item.name];\n if (item.type === \"folder\") {\n const childFolder = folder.folder(item.name)!;\n await generateByFileStructure(item.items, childFolder, childPath);\n } else {\n folder.file(\n `${item.name}.js${\n item.nodeType === \"routes\" ||\n item.nodeType === \"bricks\" ||\n item.nodeType === \"template\"\n ? \"x\"\n : \"\"\n }`,\n await formatJs(generate(item.node, item.nodeType, childPath))\n );\n }\n }\n}\n\nfunction cleanMenu(menu: Record<string, any>) {\n for (const [key, value] of Object.entries(menu)) {\n switch (key) {\n case \"items\":\n if (Array.isArray(value)) {\n for (const item of value) {\n cleanMenuItem(item);\n }\n }\n break;\n case \"type\":\n if (value === \"main\") {\n delete menu[key];\n }\n break;\n case \"if\":\n break;\n case \"i18n\":\n if (Object.keys(value).length === 0) {\n delete menu[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menu[key];\n }\n }\n }\n}\n\nfunction cleanMenuItem(menuItem: Record<string, any>) {\n for (const [key, value] of Object.entries(menuItem)) {\n switch (key) {\n case \"children\":\n if (Array.isArray(value) && value.length > 0) {\n cleanMenuItem(value);\n }\n break;\n case \"if\":\n break;\n case \"activeExcludes\":\n case \"activeIncludes\":\n if (Array.isArray(value) && value.length === 0) {\n delete menuItem[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menuItem[key];\n }\n }\n }\n}\n\ncustomElements.define(\n \"vb-experiment.export-as-source-files\",\n createProviderClass(exportAsSourceFiles)\n);\n"],"names":["async","exportAsSourceFiles","_ref","_storyboard$meta","_meta$customTemplates","_meta$functions","_meta$menus","_meta$contracts","_meta$i18n","projectDetail","storyboard","zip","JSZip","project","folder","src","extractState","extracts","namePool","Map","extractedRoutes","extractRoutes","routes","app","id","appId","name","homepage","appSetting","layoutType","theme","noAuthGuard","locales","defaultConfig","JSON","parse","menuIcon","icon","standaloneMode","file","formatJs","stringify","meta","customTemplates","functions","menus","contracts","i18n","workflows","mocks","userGroups","extractedTemplates","extractTemplates","push","path","node","nodeType","fileStructure","buildFileStructure","srcIndexJs","generate","resources","fnDir","fnNames","fnImports","fn","Error","inferredImports","Set","code","transform","source","filename","typescript","plugins","TransformStoryboardFunction","SmartImports","imports","hasFN","has","delete","importStrings","size","join","length","menusDir","menuNames","menuImports","menu","cleanMenu","menuId","replace","JS_RESERVED_WORDS","contractsDir","contractImports","contractNames","contract","baseName","counter","varName","add","srcResourcesIndexJs","generateByFileStructure","editorConfig","gitIgnore","devConfigMjs","declarationsDTs","jsconfigJson","nextJsxConfigJs","replaceAll","packageJson","readmeMd","blob","generateAsync","type","saveAs","semi","printWidth","arguments","undefined","format","parser","prettierPluginBabel","prettierPluginEstree","trailingComma","items","item","childPath","childFolder","key","value","Object","entries","Array","isArray","cleanMenuItem","keys","menuItem","customElements","define","createProviderClass"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/export-as-source-files.9826c68b.js","mappings":"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","sources":["webpack:///./src/data-providers/export-as-source-files.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { Storyboard, MicroApp, StoryboardMeta } from \"@next-core/types\";\nimport { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\nimport { format } from \"prettier/standalone\";\nimport * as prettierPluginBabel from \"prettier/plugins/babel\";\nimport * as prettierPluginEstree from \"prettier/plugins/estree\";\nimport { transform } from \"@babel/standalone\";\nimport {\n ExtractState,\n extractRoutes,\n extractTemplates,\n} from \"./utils/extract.js\";\nimport {\n SourceFileOrFolder,\n buildFileStructure,\n} from \"./utils/buildFileStructure.js\";\nimport { generate } from \"./utils/generators/generate.js\";\nimport srcResourcesIndexJs from \"./raws/src/resources/index.js.txt\";\nimport srcIndexJs from \"./raws/src/index.js.txt\";\nimport editorConfig from \"./raws/.editorconfig.txt\";\nimport gitIgnore from \"./raws/.gitignore.txt\";\nimport declarationsDTs from \"./raws/declarations.d.ts.txt\";\nimport devConfigMjs from \"./raws/dev.config.mjs.txt\";\nimport jsconfigJson from \"./raws/jsconfig.json.txt\";\nimport nextJsxConfigJs from \"./raws/next-jsx.config.js.txt\";\nimport packageJson from \"./raws/package.json.txt\";\nimport readmeMd from \"./raws/README.md.txt\";\nimport { JS_RESERVED_WORDS } from \"./utils/constants.js\";\nimport TransformStoryboardFunction from \"./utils/plugins/storyboard-function.js\";\nimport SmartImports from \"./utils/plugins/smart-imports.js\";\n\nexport interface StoryboardAssemblyResult {\n storyboard: Storyboard;\n\n projectDetail: {\n appId: string;\n name: string;\n appSetting: Pick<\n MicroApp,\n \"homepage\" | \"theme\" | \"locales\" | \"noAuthGuard\"\n > & {\n layoutType?: string;\n defaultConfig?: string;\n icon?: string;\n };\n brickNextVersion?: number;\n };\n}\n\nexport async function exportAsSourceFiles({\n projectDetail,\n storyboard,\n}: StoryboardAssemblyResult): Promise<void> {\n const zip = new JSZip();\n const project = zip.folder(\"project\")!;\n const src = project.folder(\"src\")!;\n\n const extractState: ExtractState = {\n extracts: [],\n namePool: new Map(),\n };\n const extractedRoutes = extractRoutes(storyboard.routes, [], extractState);\n\n const app: MicroApp & { layoutType?: string } = {\n id: projectDetail.appId,\n name: projectDetail.name,\n homepage: projectDetail.appSetting.homepage,\n layoutType: projectDetail.appSetting.layoutType,\n theme: projectDetail.appSetting.theme,\n noAuthGuard: projectDetail.appSetting.noAuthGuard,\n locales: projectDetail.appSetting.locales,\n defaultConfig: JSON.parse(projectDetail.appSetting.defaultConfig || \"{}\"),\n menuIcon: JSON.parse(projectDetail.appSetting.icon || \"null\"),\n standaloneMode: true,\n };\n src.file(\n \"app.js\",\n await formatJs(`export default ${JSON.stringify(app, null, 2)};`)\n );\n\n const meta = (storyboard.meta ?? {}) as StoryboardMeta & {\n workflows?: unknown;\n userGroups?: unknown;\n };\n const customTemplates = meta.customTemplates ?? [];\n const functions = meta.functions ?? [];\n const menus = meta.menus ?? [];\n const contracts = meta.contracts ?? [];\n const i18n = meta.i18n ?? {};\n delete meta.customTemplates;\n delete meta.functions;\n delete meta.menus;\n delete meta.contracts;\n delete meta.i18n;\n delete meta.workflows;\n delete meta.mocks;\n delete meta.userGroups;\n\n const extractedTemplates = extractTemplates(\n customTemplates,\n [\"components\"],\n extractState\n );\n extractState.extracts.push({\n name: \"index\",\n path: [\"components\"],\n node: extractedTemplates,\n nodeType: \"others\",\n });\n\n const fileStructure = buildFileStructure(extractState.extracts);\n\n src.file(\"index.js\", srcIndexJs);\n\n src.file(\n \"routes.jsx\",\n await formatJs(generate(extractedRoutes, \"routes\", [\"routes.jsx\"]))\n );\n\n const resources = src.folder(\"resources\")!;\n\n // Functions\n const fnDir = resources.folder(\"functions\")!;\n const fnNames: string[] = [];\n const fnImports: string[] = [];\n for (const fn of functions) {\n if (fn.name === \"index\") {\n throw new Error('Unexpected function name: \"index\"');\n }\n\n // Prepend with `export default` for functions\n const inferredImports = new Set<string>();\n let { code } = transform(fn.source, {\n filename: `expr.${fn.typescript ? \"ts\" : \"js\"}`,\n plugins: [\n ...(fn.typescript ? [\"syntax-typescript\"] : []),\n TransformStoryboardFunction,\n [\n SmartImports,\n {\n imports: inferredImports,\n },\n ],\n ],\n }) as { code: string };\n const hasFN = inferredImports.has(\"FN\");\n if (hasFN) {\n inferredImports.delete(\"FN\");\n }\n const importStrings: string[] = [];\n if (inferredImports.size > 0) {\n importStrings.push(\n `import { ${[...inferredImports].join(\", \")} } from \"next-jsx/runtime\";`\n );\n }\n if (hasFN) {\n importStrings.push(`import FN from \"./index.js\";`);\n }\n if (importStrings.length > 0) {\n code = `${importStrings.join(\"\\n\")}\\n\\n${code}`;\n }\n\n fnDir.file(`${fn.name}.${fn.typescript ? \"ts\" : \"js\"}`, code);\n fnImports.push(`import ${fn.name} from \"./${fn.name}.js\";`);\n fnNames.push(fn.name);\n }\n fnDir.file(\n \"index.js\",\n await formatJs(\n `${fnImports.join(\"\\n\")}\\n\\nconst FN = { ${fnNames.join(\n \",\"\n )} };\\n\\nexport default FN;`\n )\n );\n\n // Menus\n const menusDir = resources.folder(\"menus\")!;\n const menuNames: string[] = [];\n const menuImports: string[] = [];\n for (const menu of menus) {\n cleanMenu(menu);\n if (menu.menuId === \"index\") {\n throw new Error('Unexpected menu id: \"index\"');\n }\n const filename = `${menu.menuId}.js`;\n menusDir.file(\n filename,\n await formatJs(generate(menu, \"menu\", [\"resources\", \"menus\", filename]))\n );\n let name = menu.menuId.replace(/^\\d+|[^\\w]+/g, \"_\");\n if (JS_RESERVED_WORDS.has(name)) {\n name = `${name}__2`;\n }\n menuImports.push(`import ${name} from \"./${filename}\";`);\n menuNames.push(name);\n }\n menusDir.file(\n \"index.js\",\n await formatJs(\n `${menuImports.join(\"\\n\")}\\n\\nexport default [${menuNames.join(\",\")}]`\n )\n );\n\n // Contracts\n const contractsDir = resources.folder(\"contracts\")!;\n const contractImports: string[] = [];\n const contractNames = new Set<string>();\n for (const contract of contracts) {\n const baseName = contract.name.replace(/^\\d+|[^\\w]+/g, \"_\");\n let counter = 2;\n let varName = baseName;\n while (\n contractNames.has(varName) ||\n JS_RESERVED_WORDS.has(varName) ||\n varName === \"index\"\n ) {\n varName = `${baseName}_${counter++}`;\n }\n contractNames.add(varName);\n\n contractsDir.file(\n `${varName}.js`,\n await formatJs(`export default ${JSON.stringify(contract)};`)\n );\n contractImports.push(`import ${varName} from \"./${varName}.js\";`);\n }\n contractsDir.file(\n \"index.js\",\n await formatJs(\n `${contractImports.join(\"\\n\")}\\n\\nexport default [${[\n ...contractNames,\n ].join(\",\")}]`\n )\n );\n\n resources\n .folder(\"i18n\")!\n .file(\n \"index.js\",\n await formatJs(`export default ${JSON.stringify(i18n)};`)\n );\n resources.file(\n \"meta.js\",\n await formatJs(`export default ${JSON.stringify(meta, null, 2)};`)\n );\n resources.file(\"index.js\", srcResourcesIndexJs);\n\n await generateByFileStructure(fileStructure, src, []);\n\n const appDir = project\n .folder(\"mock-micro-apps\")!\n .folder(projectDetail.appId)!;\n appDir.file(\".gitignore\", \"*\\n!.gitignore\");\n\n project.file(\".editorconfig\", editorConfig);\n project.file(\".gitignore\", gitIgnore);\n project.file(\"dev.config.mjs\", devConfigMjs);\n project.file(\"declarations.d.ts\", declarationsDTs);\n project.file(\"jsconfig.json\", jsconfigJson);\n project.file(\n \"next-jsx.config.js\",\n nextJsxConfigJs.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"package.json\",\n packageJson.replaceAll(\"__APP_ID__\", projectDetail.appId)\n );\n project.file(\n \"README.md\",\n readmeMd\n .replaceAll(\"__PROJECT_NAME__\", projectDetail.name)\n .replaceAll(\"__PROJECT_HOMEPAGE__\", projectDetail.appSetting.homepage)\n );\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, \"project.zip\");\n}\n\ninterface FormatJsOptions {\n typescript?: boolean;\n semi?: boolean;\n printWidth?: number;\n}\n\nasync function formatJs(\n source: string,\n { typescript, semi = true, printWidth }: FormatJsOptions = {}\n): Promise<string> {\n return await format(source, {\n parser: typescript ? \"babel-ts\" : \"babel\",\n plugins: [prettierPluginBabel, prettierPluginEstree as any],\n semi,\n printWidth,\n trailingComma: \"es5\",\n });\n}\n\nasync function generateByFileStructure(\n items: SourceFileOrFolder[],\n folder: JSZip,\n path: string[]\n) {\n for (const item of items) {\n const childPath = [...path, item.name];\n if (item.type === \"folder\") {\n const childFolder = folder.folder(item.name)!;\n await generateByFileStructure(item.items, childFolder, childPath);\n } else {\n folder.file(\n `${item.name}.js${\n item.nodeType === \"routes\" ||\n item.nodeType === \"bricks\" ||\n item.nodeType === \"template\"\n ? \"x\"\n : \"\"\n }`,\n await formatJs(generate(item.node, item.nodeType, childPath))\n );\n }\n }\n}\n\nfunction cleanMenu(menu: Record<string, any>) {\n for (const [key, value] of Object.entries(menu)) {\n switch (key) {\n case \"items\":\n if (Array.isArray(value)) {\n for (const item of value) {\n cleanMenuItem(item);\n }\n }\n break;\n case \"type\":\n if (value === \"main\") {\n delete menu[key];\n }\n break;\n case \"if\":\n break;\n case \"i18n\":\n if (Object.keys(value).length === 0) {\n delete menu[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menu[key];\n }\n }\n }\n}\n\nfunction cleanMenuItem(menuItem: Record<string, any>) {\n for (const [key, value] of Object.entries(menuItem)) {\n switch (key) {\n case \"children\":\n if (Array.isArray(value) && value.length > 0) {\n cleanMenuItem(value);\n }\n break;\n case \"if\":\n break;\n case \"activeExcludes\":\n case \"activeIncludes\":\n if (Array.isArray(value) && value.length === 0) {\n delete menuItem[key];\n }\n break;\n default:\n if (value === null || value === false) {\n delete menuItem[key];\n }\n }\n }\n}\n\ncustomElements.define(\n \"vb-experiment.export-as-source-files\",\n createProviderClass(exportAsSourceFiles)\n);\n"],"names":["async","exportAsSourceFiles","_ref","_storyboard$meta","_meta$customTemplates","_meta$functions","_meta$menus","_meta$contracts","_meta$i18n","projectDetail","storyboard","zip","JSZip","project","folder","src","extractState","extracts","namePool","Map","extractedRoutes","extractRoutes","routes","app","id","appId","name","homepage","appSetting","layoutType","theme","noAuthGuard","locales","defaultConfig","JSON","parse","menuIcon","icon","standaloneMode","file","formatJs","stringify","meta","customTemplates","functions","menus","contracts","i18n","workflows","mocks","userGroups","extractedTemplates","extractTemplates","push","path","node","nodeType","fileStructure","buildFileStructure","srcIndexJs","generate","resources","fnDir","fnNames","fnImports","fn","Error","inferredImports","Set","code","transform","source","filename","typescript","plugins","TransformStoryboardFunction","SmartImports","imports","hasFN","has","delete","importStrings","size","join","length","menusDir","menuNames","menuImports","menu","cleanMenu","menuId","replace","JS_RESERVED_WORDS","contractsDir","contractImports","contractNames","contract","baseName","counter","varName","add","srcResourcesIndexJs","generateByFileStructure","editorConfig","gitIgnore","devConfigMjs","declarationsDTs","jsconfigJson","nextJsxConfigJs","replaceAll","packageJson","readmeMd","blob","generateAsync","type","saveAs","semi","printWidth","arguments","undefined","format","parser","prettierPluginBabel","prettierPluginEstree","trailingComma","items","item","childPath","childFolder","key","value","Object","entries","Array","isArray","cleanMenuItem","keys","menuItem","customElements","define","createProviderClass"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[269],{6984:(e,t,s)=>{s.r(t),s.d(t,{exportWidgets:()=>c});var n=s(7732),o=s(2461),i=s.n(o),r=s(5060);async function c(e){let{name:t,files:s}=e;const n=new Map,o=new(i()),c=o.folder("widgets").folder(t);for(const{path:e,content:t}of s){const s=e.split("/"),o=s.pop();let i=c,r=1;for(const e of s){const t=s.slice(0,r).join("/"),o=n.get(t);o?i=o:(i=i.folder(e),n.set(t,i)),r++}i.file(o,t)}const l=await o.generateAsync({type:"blob"});(0,r.saveAs)(l,`${t}.zip`)}customElements.define("vb-experiment.export-widgets",(0,n.createProviderClass)(c))}}]);
2
- //# sourceMappingURL=export-widgets.4aaa1319.js.map
1
+ "use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[269],{6984:(e,t,s)=>{s.r(t),s.d(t,{exportWidgets:()=>c});var n=s(4558),o=s(2461),i=s.n(o),r=s(5060);async function c(e){let{name:t,files:s}=e;const n=new Map,o=new(i()),c=o.folder("widgets").folder(t);for(const{path:e,content:t}of s){const s=e.split("/"),o=s.pop();let i=c,r=1;for(const e of s){const t=s.slice(0,r).join("/"),o=n.get(t);o?i=o:(i=i.folder(e),n.set(t,i)),r++}i.file(o,t)}const l=await o.generateAsync({type:"blob"});(0,r.saveAs)(l,`${t}.zip`)}customElements.define("vb-experiment.export-widgets",(0,n.createProviderClass)(c))}}]);
2
+ //# sourceMappingURL=export-widgets.f4bb7333.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/export-widgets.4aaa1319.js","mappings":"kOAcOA,eAAeC,EAAaC,GAGI,IAHH,KAClCC,EAAI,MACJC,GACoBF,EACpB,MAAMG,EAAK,IAAIC,IACTC,EAAM,IAAIC,KAEVC,EADUF,EAAIG,OAAO,WACHA,OAAOP,GAE/B,IAAK,MAAM,KAAEQ,EAAI,QAAEC,KAAaR,EAAO,CACrC,MAAMS,EAAWF,EAAKG,MAAM,KACtBC,EAAWF,EAASG,MAC1B,IAAIC,EAASR,EACTS,EAAI,EACR,IAAK,MAAMC,KAAWN,EAAU,CAC9B,MAAMO,EAAUP,EAASQ,MAAM,EAAGH,GAAGI,KAAK,KACpCC,EAAQlB,EAAGmB,IAAIJ,GACjBG,EACFN,EAASM,GAETN,EAASA,EAAOP,OAAOS,GACvBd,EAAGoB,IAAIL,EAASH,IAElBC,GACF,CACAD,EAAOS,KAAKX,EAAUH,EACxB,CAEA,MAAMe,QAAapB,EAAIqB,cAAc,CAAEC,KAAM,UAC7CC,EAAAA,EAAAA,QAAOH,EAAM,GAAGxB,QAClB,CAEA4B,eAAeC,OACb,gCACAC,EAAAA,EAAAA,qBAAoBhC,G","sources":["webpack:///./src/data-providers/export-widgets.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\ninterface ExportWidgetsParams {\n name: string;\n files: FileInfo[];\n}\n\ninterface FileInfo {\n path: string;\n content: string;\n}\n\nexport async function exportWidgets({\n name,\n files,\n}: ExportWidgetsParams): Promise<void> {\n const fs = new Map<string, JSZip>();\n const zip = new JSZip();\n const widgets = zip.folder(\"widgets\")!;\n const project = widgets.folder(name)!;\n\n for (const { path, content } of files) {\n const segments = path.split(\"/\");\n const filename = segments.pop()!;\n let handle = project;\n let i = 1;\n for (const segment of segments) {\n const current = segments.slice(0, i).join(\"/\");\n const found = fs.get(current);\n if (found) {\n handle = found;\n } else {\n handle = handle.folder(segment)!;\n fs.set(current, handle);\n }\n i++;\n }\n handle.file(filename, content);\n }\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, `${name}.zip`);\n}\n\ncustomElements.define(\n \"vb-experiment.export-widgets\",\n createProviderClass(exportWidgets)\n);\n"],"names":["async","exportWidgets","_ref","name","files","fs","Map","zip","JSZip","project","folder","path","content","segments","split","filename","pop","handle","i","segment","current","slice","join","found","get","set","file","blob","generateAsync","type","saveAs","customElements","define","createProviderClass"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/export-widgets.f4bb7333.js","mappings":"kOAcOA,eAAeC,EAAaC,GAGI,IAHH,KAClCC,EAAI,MACJC,GACoBF,EACpB,MAAMG,EAAK,IAAIC,IACTC,EAAM,IAAIC,KAEVC,EADUF,EAAIG,OAAO,WACHA,OAAOP,GAE/B,IAAK,MAAM,KAAEQ,EAAI,QAAEC,KAAaR,EAAO,CACrC,MAAMS,EAAWF,EAAKG,MAAM,KACtBC,EAAWF,EAASG,MAC1B,IAAIC,EAASR,EACTS,EAAI,EACR,IAAK,MAAMC,KAAWN,EAAU,CAC9B,MAAMO,EAAUP,EAASQ,MAAM,EAAGH,GAAGI,KAAK,KACpCC,EAAQlB,EAAGmB,IAAIJ,GACjBG,EACFN,EAASM,GAETN,EAASA,EAAOP,OAAOS,GACvBd,EAAGoB,IAAIL,EAASH,IAElBC,GACF,CACAD,EAAOS,KAAKX,EAAUH,EACxB,CAEA,MAAMe,QAAapB,EAAIqB,cAAc,CAAEC,KAAM,UAC7CC,EAAAA,EAAAA,QAAOH,EAAM,GAAGxB,QAClB,CAEA4B,eAAeC,OACb,gCACAC,EAAAA,EAAAA,qBAAoBhC,G","sources":["webpack:///./src/data-providers/export-widgets.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport JSZip from \"jszip\";\nimport { saveAs } from \"file-saver\";\n\ninterface ExportWidgetsParams {\n name: string;\n files: FileInfo[];\n}\n\ninterface FileInfo {\n path: string;\n content: string;\n}\n\nexport async function exportWidgets({\n name,\n files,\n}: ExportWidgetsParams): Promise<void> {\n const fs = new Map<string, JSZip>();\n const zip = new JSZip();\n const widgets = zip.folder(\"widgets\")!;\n const project = widgets.folder(name)!;\n\n for (const { path, content } of files) {\n const segments = path.split(\"/\");\n const filename = segments.pop()!;\n let handle = project;\n let i = 1;\n for (const segment of segments) {\n const current = segments.slice(0, i).join(\"/\");\n const found = fs.get(current);\n if (found) {\n handle = found;\n } else {\n handle = handle.folder(segment)!;\n fs.set(current, handle);\n }\n i++;\n }\n handle.file(filename, content);\n }\n\n const blob = await zip.generateAsync({ type: \"blob\" });\n saveAs(blob, `${name}.zip`);\n}\n\ncustomElements.define(\n \"vb-experiment.export-widgets\",\n createProviderClass(exportWidgets)\n);\n"],"names":["async","exportWidgets","_ref","name","files","fs","Map","zip","JSZip","project","folder","path","content","segments","split","filename","pop","handle","i","segment","current","slice","join","found","get","set","file","blob","generateAsync","type","saveAs","customElements","define","createProviderClass"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (()=>{var e,r,t,n,o,a,i,u,l,s,f,c,p,d,h,v,b,g,m,y={7934:(e,r,t)=>{Promise.all([t.e(894),t.e(606),t.e(732),t.e(143),t.e(345)]).then(t.bind(t,5345))}},w={};function x(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={exports:{}};return y[e].call(t.exports,t,t.exports,x),t.exports}x.m=y,x.c=w,x.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>"chunks/"+e+"."+{143:"6ba7f68f",252:"5d9ba3c8",345:"6e99522e",606:"dabaac81",871:"e73ecf14",894:"577ff5e4"}[e]+".js",x.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),x.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@next-bricks/vb-experiment:",x.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+o){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",r+o),i.src=t),e[t]=[n];var c=(r,n)=>{i.onerror=i.onload=null,clearTimeout(p);var o=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),u&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var e={},r={};x.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];x.o(x.S,t)||(x.S[t]={});var a=x.S[t],i="@next-bricks/vb-experiment",u=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},u=o[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(o[r]={get:()=>x.e(252).then((()=>()=>x(871))),from:i,eager:!1})})("@next-core/utils/general","1.8.2"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e+"../"})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],u=(typeof i)[0];if(a!=u)return"o"==a&&"n"==u||"s"==u||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}},o=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,t+="u"==(typeof(u=e[a]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(a=1;a<e.length;a++){var u=e[a];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():o(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,u=1,l=!0;;u++,i++){var s,f,c=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==c?u>n&&!o:""==c!=o);if("u"==f){if(!l||"u"!=c)return!1}else if(l)if(c==f)if(u<=n){if(s!=e[u])return!1}else{if(o?s>e[u]:s<e[u])return!1;s!=e[u]&&(l=!1)}else if("s"!=c&&"n"!=c){if(o||u<=n)return!1;l=!1,u--}else{if(u<=n||f<c!=o)return!1;l=!1}else"s"!=c&&"n"!=c&&(l=!1,u--)}}var p=[],d=p.pop.bind(p);for(i=1;i<e.length;i++){var h=e[i];p.push(1==h?d()|d():2==h?d()&d():h?a(h,r):!d())}return!!d()},i=(e,r)=>e&&x.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t)=>{var o=t?l(e[r]):e[r];return Object.keys(o).reduce(((e,r)=>!e||!o[e].loaded&&n(e,r)?r:e),0)},f=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",c=e=>{throw new Error(e)},p=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,o,a){var i=x.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,x.S[r],t,!1,o,a)):e(r,x.S[r],t,n,o,a)})(((e,r,t,n,o,l)=>{if(!i(r,t))return d(e,t,l);var c=s(r,t,n);return a(o,c)||p(f(r,t,c,o)),u(r[t][c])})),v={},b={7732:()=>h("default","@next-core/utils/general",!1,[1,1,8,2],(()=>x.e(871).then((()=>()=>x(871)))))},g={732:[7732]},m={},x.f.consumes=(e,r)=>{x.o(g,e)&&g[e].forEach((e=>{if(x.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()}};m[e]=!0;var n=r=>{delete v[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var o=b[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={792:0};x.f.j=(r,t)=>{var n=x.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(732!=r){var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=x.p+x.u(r),i=new Error;x.l(a,(t=>{if(x.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}else e[r]=0};var r=(r,t)=>{var n,o,[a,i,u]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in i)x.o(i,n)&&(x.m[n]=i[n]);u&&u(x)}for(r&&r(t);l<a.length;l++)o=a[l],x.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x(7934)})();
2
- //# sourceMappingURL=main.0dfd5438.js.map
1
+ (()=>{var e,r,t,n,o,a,i,u,l,s,f,p,c,d,h,v,b,g,m,y={7934:(e,r,t)=>{Promise.all([t.e(894),t.e(606),t.e(558),t.e(143),t.e(345)]).then(t.bind(t,5345))}},w={};function x(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={exports:{}};return y[e].call(t.exports,t,t.exports,x),t.exports}x.m=y,x.c=w,x.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return x.d(r,{a:r}),r},x.d=(e,r)=>{for(var t in r)x.o(r,t)&&!x.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},x.f={},x.e=e=>Promise.all(Object.keys(x.f).reduce(((r,t)=>(x.f[t](e,r),r)),[])),x.u=e=>"chunks/"+e+"."+{143:"0e2af399",252:"de8a973a",345:"d22b0b06",606:"dabaac81",871:"ccb701c0",894:"577ff5e4"}[e]+".js",x.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),x.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@next-bricks/vb-experiment:",x.l=(t,n,o,a)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+o){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",i.timeout=120,x.nc&&i.setAttribute("nonce",x.nc),i.setAttribute("data-webpack",r+o),i.src=t),e[t]=[n];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var o=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),o&&o.forEach((e=>e(n))),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}},x.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{x.S={};var e={},r={};x.I=(t,n)=>{n||(n=[]);var o=r[t];if(o||(o=r[t]={}),!(n.indexOf(o)>=0)){if(n.push(o),e[t])return e[t];x.o(x.S,t)||(x.S[t]={});var a=x.S[t],i="@next-bricks/vb-experiment",u=[];return"default"===t&&((e,r,t,n)=>{var o=a[e]=a[e]||{},u=o[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(o[r]={get:()=>x.e(252).then((()=>()=>x(871))),from:i,eager:!1})})("@next-core/utils/general","1.8.4"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;x.g.importScripts&&(e=x.g.location+"");var r=x.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),x.p=e+"../"})(),t=e=>{var r=e=>e.split(".").map((e=>+e==e?+e:e)),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var o=e[n],a=(typeof o)[0];if(n>=r.length)return"u"==a;var i=r[n],u=(typeof i)[0];if(a!=u)return"o"==a&&"n"==u||"s"==u||"u"==a;if("o"!=a&&"u"!=a&&o!=i)return o<i;n++}},o=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,t+="u"==(typeof(u=e[a]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(a=1;a<e.length;a++){var u=e[a];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():o(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},a=(e,r)=>{if(0 in e){r=t(r);var n=e[0],o=n<0;o&&(n=-n-1);for(var i=0,u=1,l=!0;;u++,i++){var s,f,p=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==p?u>n&&!o:""==p!=o);if("u"==f){if(!l||"u"!=p)return!1}else if(l)if(p==f)if(u<=n){if(s!=e[u])return!1}else{if(o?s>e[u]:s<e[u])return!1;s!=e[u]&&(l=!1)}else if("s"!=p&&"n"!=p){if(o||u<=n)return!1;l=!1,u--}else{if(u<=n||f<p!=o)return!1;l=!1}else"s"!=p&&"n"!=p&&(l=!1,u--)}}var c=[],d=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?d()|d():2==h?d()&d():h?a(h,r):!d())}return!!d()},i=(e,r)=>e&&x.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce(((r,t)=>(e[t].eager&&(r[t]=e[t]),r)),{}),s=(e,r,t)=>{var o=t?l(e[r]):e[r];return Object.keys(o).reduce(((e,r)=>!e||!o[e].loaded&&n(e,r)?r:e),0)},f=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+o(n)+")",p=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,o,a){var i=x.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,x.S[r],t,!1,o,a)):e(r,x.S[r],t,n,o,a)})(((e,r,t,n,o,l)=>{if(!i(r,t))return d(e,t,l);var p=s(r,t,n);return a(o,p)||c(f(r,t,p,o)),u(r[t][p])})),v={},b={4558:()=>h("default","@next-core/utils/general",!1,[1,1,8,4],(()=>x.e(871).then((()=>()=>x(871)))))},g={558:[4558]},m={},x.f.consumes=(e,r)=>{x.o(g,e)&&g[e].forEach((e=>{if(x.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,x.m[e]=t=>{delete x.c[e],t.exports=r()}};m[e]=!0;var n=r=>{delete v[e],x.m[e]=t=>{throw delete x.c[e],r}};try{var o=b[e]();o.then?r.push(v[e]=o.then(t).catch(n)):t(o)}catch(e){n(e)}}}))},(()=>{var e={792:0};x.f.j=(r,t)=>{var n=x.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(558!=r){var o=new Promise(((t,o)=>n=e[r]=[t,o]));t.push(n[2]=o);var a=x.p+x.u(r),i=new Error;x.l(a,(t=>{if(x.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var o=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+o+": "+a+")",i.name="ChunkLoadError",i.type=o,i.request=a,n[1](i)}}),"chunk-"+r,r)}else e[r]=0};var r=(r,t)=>{var n,o,[a,i,u]=t,l=0;if(a.some((r=>0!==e[r]))){for(n in i)x.o(i,n)&&(x.m[n]=i[n]);u&&u(x)}for(r&&r(t);l<a.length;l++)o=a[l],x.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),x(7934)})();
2
+ //# sourceMappingURL=main.bfb55347.js.map