@next-bricks/vb-experiment 1.0.29 → 1.0.31
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.
- package/dist/bricks.json +1 -1
- package/dist/chunks/{143.416d9d56.js → 143.5d931218.js} +2 -2
- package/dist/chunks/{143.416d9d56.js.map → 143.5d931218.js.map} +1 -1
- package/dist/chunks/345.872f00f3.js +2 -0
- package/dist/chunks/{345.88cb7e92.js.map → 345.872f00f3.js.map} +1 -1
- package/dist/chunks/985.b3753ed5.js +2 -0
- package/dist/chunks/{985.2775995c.js.map → 985.b3753ed5.js.map} +1 -1
- package/dist/chunks/{export-as-source-files.ae10094b.js → export-as-source-files.5365ca3c.js} +2 -2
- package/dist/chunks/{export-as-source-files.ae10094b.js.map → export-as-source-files.5365ca3c.js.map} +1 -1
- package/dist/chunks/{export-widgets.3cf31c5f.js → export-widgets.36ee3544.js} +2 -2
- package/dist/chunks/{export-widgets.3cf31c5f.js.map → export-widgets.36ee3544.js.map} +1 -1
- package/dist/chunks/main.c304440c.js +2 -0
- package/dist/chunks/main.c304440c.js.map +1 -0
- package/dist/index.11dbe6ab.js +2 -0
- package/dist/index.11dbe6ab.js.map +1 -0
- package/package.json +3 -3
- package/dist/chunks/345.88cb7e92.js +0 -2
- package/dist/chunks/985.2775995c.js +0 -2
- package/dist/chunks/main.18a49537.js +0 -2
- package/dist/chunks/main.18a49537.js.map +0 -1
- package/dist/index.871ddd72.js +0 -2
- package/dist/index.871ddd72.js.map +0 -1
package/dist/bricks.json
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[143],{1897:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=1897,e.exports=n},8587:(e,n,t)=>{"use strict";function r(e){const n=[];for(const t of e)s(t,n);return n}function s(e,n){let{name:t,path:r,node:s,nodeType:o}=e,i=n;for(const e of r){const n=i.find((n=>n.name===e&&"folder"===n.type));if(n){i=n.items;continue}const t={type:"folder",name:e,items:[]};i.push(t),i=t.items}const a={type:"file",name:t,node:s,nodeType:o};i.push(a)}t.d(n,{_:()=>r})},4071:(e,n,t)=>{"use strict";t.d(n,{O7:()=>r,bB:()=>o,jC:()=>s});const r=["context","exact","path","slot"],s="default:",o=new Set(["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","static","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"])},8403:(e,n,t)=>{"use strict";t.d(n,{WM:()=>c,dC:()=>i,j4:()=>o,pA:()=>l});var r=t(1351);const s={properties:["ref","refProperty","extraOneWayRefs","refTransform","mergeType","mergeMethod","mergeArgs","mergeProperty","asVariable"],slots:["ref","refSlot","refPosition"],events:["ref","refEvent"],methods:["ref","refMethod"]},o=`--${Math.floor(1e16*Math.random()).toString(36)}--:`,i=new RegExp(`"${o}((?:[-\\w]+/)*[-\\w]+)"`,"g");function a(e,n){return`${o}${e}${e?"/":""}${n}`}function c(e,n,t){return e.map((e=>function(e,n,t){const r=[...n,"views"],s=u("route",e.alias,r,t.namePool);let o;f(t.namePool,[...r,s],s),function(e){delete e.alias,delete e.iid,delete e.deviceOwner,delete e.analyticsData,""===e.menu&&delete e.menu,j(e,["redirect","exact"]),"bricks"===e.type&&delete e.type}(e);const i=[...r,s];if("redirect"===e.type)o=e;else if("routes"===e.type){const{routes:r,...s}=e;o={...s,children:c(r,n,t)}}else{const{bricks:n,...r}=e,c=m(n,i,t);t.extracts.push({name:s,path:i,node:c,nodeType:"bricks"}),o={...r,view:a(`views/${s}`,s)}}const l=p("context",e.context,s,i,t);return{...o,context:l}}(e,n,t)))}function l(e,n,t){return e.map((e=>function(e,n,t){if(!e.name.startsWith("tpl-"))throw new Error(`Invalid template name: "${e.name}"`);const o=e.name.substring(4),i=[...n,o],c=m(e.bricks,i,t),l=p("state",e.state,o,i,t),f=function(e,n,t){if((0,r.isObject)(e)&&Object.keys(e).length>0){const o=u("proxy","proxy",n,t.namePool);return function(e){for(const[n,t]of Object.entries(e))switch(n){case"properties":case"events":case"slots":case"methods":if((0,r.isObject)(t))for(const[e,o]of Object.entries(t))if((0,r.isObject)(o)){const r=Object.keys(o);for(const e of r)s[n].includes(e)||delete o[e];0===r.length&&delete t[e]}break;default:delete e[n]}}(e),t.extracts.push({name:o,path:n,node:e,nodeType:"plain"}),a("",o)}return e}(e.proxy,i,t);return t.extracts.push({name:o,path:i,node:{...e,bricks:c,state:l,proxy:f},nodeType:"template"}),a(o,o)}(e,n,t)))}function p(e,n,t,r,s){if(Array.isArray(n)&&n.length>0){for(const e of n)h(e);const o=u(e,e,r,s.namePool);return s.extracts.push({name:o,path:r,node:n,nodeType:"context"}),a("context"===e?`views/${t}`:"",o)}}function u(e,n,t,r){let s=null==n?void 0:n.toLowerCase();"index"==s&&(s=`${s}_2`);const o=d(r,t),i="route"!==e||"string"==typeof s&&/^[-\w]+$/.test(s)&&"index"!==s;if(!i||o.has(s)){const n=i?s:e;let t,r=2;for(;o.has(t=`${n}_${r}`);)r++;s=t}return o.add(s),s}function f(e,n,t){d(e,n).add(t)}function d(e,n){const t=n.join("/");let r=e.get(t);return r||e.set(t,r=new Set),r}function m(e,n,t){return Array.isArray(e)?e.map((e=>x(e,n,t))):e}function x(e,n,t){let s;"string"==typeof e.alias&&/^<[-\w]+>$/.test(e.alias)&&"<index>"!==e.alias&&(s=e.alias.slice(1,-1)),function(e){if("string"==typeof e.properties){const n=`The \`properties\` of brick cannot be a string, received: "${e.properties}"`;throw console.error(`${n}. Check your brick:`,e),new Error(n)}delete e.alias,delete e.iid,delete e.deviceOwner,delete e.uuid,e.events&&0===Object.keys(e.events).length&&delete e.events,e.lifeCycle&&0===Object.keys(e.lifeCycle).length&&delete e.lifeCycle,j(e,["bg","portal"])}(e),s&&(s=u("brick",s,n,t.namePool),f(t.namePool,[...n,s],s));const{slots:o,...i}=e,l=[],p=[...n,...s?[s]:[]];if((0,r.isObject)(o))for(const[e,r]of Object.entries(o))if("routes"===r.type){const s=c((r.routes??[]).map((n=>({...n,_isRoute:!0,slot:e}))),n,t);l.push(...s)}else{const n=m((r.bricks??[]).map((n=>({...n,slot:e}))),p,t);l.push(...n)}return(0,r.isObject)(i.properties)&&!Array.isArray(i.properties)&&(i.properties=g(i.properties,p,t)),i.children=l,s?(t.extracts.push({name:s,node:i,path:[...n,s],nodeType:"bricks"}),a(s,s)):i}function g(e,n,t){return Object.fromEntries(Object.entries(e).map((e=>{let[r,s]=e;return[r,y(s,r,n,t)]})))}function y(e,n,t,s){return"useBrick"===n?Array.isArray(e)?m(e,t,s):(0,r.isObject)(e)?x(e,t,s):e:Array.isArray(e)?e.map(((e,n)=>y(e,n,t,s))):(0,r.isObject)(e)?g(e,t,s):e}function h(e){delete e.path,delete e.relatedId,delete e.doc}function j(e,n){for(const t of n)e[t]||delete e[t]}},6315:(e,n,t)=>{"use strict";t.d(n,{c:()=>A});var r=t(8135),s=t(4071);function o(e,n,t){let r=e.get(n);r||(r=new Set,e.set(n,r)),r.add(t)}function i(e){return[...e].sort(((e,n)=>Number(e[0].startsWith("."))-Number(n[0].startsWith(".")))).map((e=>{let[n,t]=e;const r=[...t];return 1===r.length&&r[0].startsWith(s.jC)?`import ${r[0].substring(s.jC.length)} from "${n}";`:`import { ${r.join(", ")} } from "${n}";`}))}var a=t(1351),c=t(8403),l=t(77);const p="transform-pipeline-operator-minimal";(0,l.registerPlugin)(p,(()=>({name:p,inherits:l.availablePlugins["syntax-pipeline-operator"],visitor:{BinaryExpression(e){const{node:n}=e,{operator:t,left:s,right:o}=n;if("|>"!==t)return;const i=r.callExpression(o,[s]);e.replaceWith(i)}}})));const u=p;var f=t(8263);function d(e,n,t){if(/^\s*<%[~=]?\s/.test(e)&&/\s%>\s*$/.test(e))try{let s="";const i=e.replace(/^\s*<%([~=])?\s|\s%>\s*$/g,((e,n)=>(n&&(s=n),"")));let a="="===s;const c="~"===s,p=new Set;let d,m=(0,l.transform)(`(${i})`,{ast:!0,code:!1,plugins:[[u,{proposal:"minimal"}],[f.A,{imports:p}]]}).ast.program.body[0].expression;"SequenceExpression"!==m.type||(d=m.expressions[0],"StringLiteral"!==d.type)||"track context"!==d.value&&"track state"!==d.value||a||(a=!0,m=m.expressions.length>2?r.sequenceExpression(m.expressions.slice(1)):m.expressions[1]),!a||p.has("STATE")||p.has("CTX")||(a=!1);for(const e of p)if("FN"===e){const e=["resources","functions","index.js"];let r=0;for(let n=0;n<e.length&&n<t.length&&(r=n,t[n]===e[n]);n++);o(n,`${1===t.length?".":new Array(t.length-1-r).fill("..").join("/")}/${e.slice(r).join("/")}`,"default:FN")}else o(n,"next-jsx/runtime",e);return c&&(o(n,"next-jsx/runtime","recursive"),m=r.callExpression(r.identifier("recursive"),[m])),a&&(o(n,"next-jsx/runtime","bind"),m=r.callExpression(r.identifier("bind"),[m])),m}catch(n){console.warn("Parse expression failed:",e,n)}return null}function m(e,n,t,s,o){return x(e,n,t,s,o)??r.nullLiteral()}function x(e,n,t,s,o){if(s&&"useBrick"===o){if(Array.isArray(e))return b(e,n,t);if((0,a.isObject)(e))return _(e,n,t)}return Array.isArray(e)?r.arrayExpression(e.map((e=>x(e,n,t,s)))):"function"==typeof e?null:(0,a.isObject)(e)?r.objectExpression(Object.entries(e).map((e=>{let[o,i]=e;const a=x(i,n,t,s,o);return null!==a?r.objectProperty(r.stringLiteral(o),a):null})).filter(Boolean)):"string"==typeof e?d(e,n,t)??r.stringLiteral(e):"number"==typeof e?r.numericLiteral(e):"boolean"==typeof e?r.booleanLiteral(e):null===e?r.nullLiteral():null}function g(e,n,t,s,o,i){const l=[],p=[];for(const[s,i]of Object.entries(e))void 0!==i&&(/^[_$a-zA-Z][$\w]*$/.test(s)?l.push([s,i]):p.push(r.objectProperty(r.stringLiteral(o?`${o}:${s}`:s),m(i,n,t))));const u=(s?l.sort((f=s,function(e,n){return f.indexOf(n[0])-f.indexOf(e[0])})):l).map((e=>{let[s,l]=e;const p=function(e,n,t,s,o){if("string"==typeof e){const s=d(e,n,t);if(s)return r.jsxExpressionContainer(s);const o=r.stringLiteral(e);return e.includes(c.j4)||JSON.stringify(e).includes("\\")?r.jsxExpressionContainer(o):o}if(!0===e)return null;if(o&&"useBrick"===s){if(Array.isArray(e))return y(b(e,n,t));if((0,a.isObject)(e))return y(_(e,n,t))}const i=m(e,n,t,o);return r.jsxExpressionContainer(i)}(l,n,t,s,i);return r.jsxAttribute(o?r.jsxNamespacedName(r.jsxIdentifier(o),r.jsxIdentifier(s)):r.jsxIdentifier(s),p)}));var f;return p.length>0&&u.push(r.jsxSpreadAttribute(r.objectExpression(p))),u}function y(e){return"StringLiteral"!==e.type?r.jsxExpressionContainer(e):e}function h(e,n,t){o(n,"next-jsx","Route");const{children:i,slot:a,_isRoute:c,...l}=e,p=i??[],u=""===a?void 0:a,f=0===p.length;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Route"),g({...l,slot:u},n,t,s.O7),f),f?null:r.jsxClosingElement(r.jsxIdentifier("Route")),p.map((e=>h(e,n,t))),f)}function j(e){return"StringLiteral"===e.type?r.jsxExpressionContainer(e):e}function b(e,n,t){const s=e.map((e=>_(e,n,t)));return 1===s.length?s[0]:r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),s.map(j))}function _(e,n,t){if("string"==typeof e)return r.stringLiteral(e);if(e.template)return function(e,n,t){o(n,"next-jsx","LegacyTemplate");const{children:s,...i}=e;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("LegacyTemplate"),g(i,n,t),!0),null,[],!0)}(e,n,t);const{brick:s,children:i,properties:a,events:c,lifeCycle:l,if:p,portal:u,ref:f,slot:d,...m}=e;if("string"==typeof s){let x,y,b=!0;switch(s){case":forEach":case":if":case":switch":x=`${s[1].toUpperCase()}${s.substring(2)}`,o(n,"next-jsx",x);break;default:b=!1,x=s.replaceAll(".","_")}b&&(y=m.dataSource,delete m.dataSource);const E=""===d?void 0:d,k=a??{},{textContent:A,children:w,events:O,lifeCycle:$,if:P,ref:S,id:C,slot:T,...I}=k,R="string"==typeof A,F=0===i.length&&!R;i.length>0&&R&&console.warn("Invalid brick: mix slotted children and textContent:",e);const L=r.jsxOpeningElement(r.jsxIdentifier(x),[...g({if:!0===p?void 0:p,slot:E,ref:f,id:C,...b?{value:y}:null},n,t),...g(I,n,t,void 0,void 0,!0),...g({events:c,lifeCycle:l,portal:u},n,t),...g({children:w,events:O,lifeCycle:$,if:P,ref:S},n,t,void 0,"prop"),...g(m,n,t,void 0,"conf")],F),N=F?null:r.jsxClosingElement(r.jsxIdentifier(x));let M;return M=F?[]:i.length>0?i.map((e=>"string"!=typeof e&&e._isRoute?h(e,n,t):j(_(e,n,t)))):[v(A,n,t)],r.jsxElement(L,N,M,F)}throw new Error(`Unexpected brick node: ${JSON.stringify(e)}`)}function v(e,n,t){const s=d(e,n,t);return s?r.jsxExpressionContainer(s):/[{}<>]|&(?:[a-zA-Z0-9]+|#\d+|#x[\da-fA-F]+);/.test(e)?r.jsxExpressionContainer(r.stringLiteral(e)):r.jsxText(e)}function E(e,n){const t=r.exportDefaultDeclaration(e),{code:o}=(0,l.transformFromAst)(r.program([t],void 0,"module"),void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}),a=function(e){const n=new Set;for(const t of e.values())for(const e of t)n.add(e.startsWith(s.jC)?e.substring(s.jC.length):/\s+as\s+/.test(e)?e.split(/\s+as\s+/)[1]:e);return n}(n),p=i(n),u=o.replace(c.dC,((e,n)=>{const t=n.split("/"),r=t[t.length-1],o=("context"===r&&3===t.length&&"views"===t[0]?`${t[t.length-2]}_${r}`:r).replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,c=o;for(;a.has(c)||s.bB.has(c);)c=`${o}_${i++}`;return a.add(c),p.push(`import ${c} from "./${n}.js";`),c}));return p.length>0?`${p.join("\n")}\n\n${u}`:o}function k(e){return`export default ${JSON.stringify(e)};`}function A(e,n,t){switch(n){case"routes":return function(e,n){const t=new Map;return E(r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),e.map((e=>h(e,t,n)))),t)}(e,t);case"bricks":return function(e,n){const t=new Map;return E(Array.isArray(e)?b(e,t,n):_(e,t,n),t)}(e,t);case"template":return function(e,n){const t=new Map;o(t,"next-jsx","Component");const{bricks:s,name:i,state:a,proxy:c}=e;return E(r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Component"),g({name:i,state:a,proxy:c},t,n)),r.jsxClosingElement(r.jsxIdentifier("Component")),(s??[]).map((e=>j(_(e,t,n))))),t)}(e,t);case"context":case"menu":return function(e,n){const t=new Map,s=r.exportDefaultDeclaration(m(e,t,n)),o=r.program([s],void 0,"module"),a=i(t),c=(0,l.transformFromAst)(o,void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}).code;return a.length>0?`${a.join("\n")}\n\n${c}`:c}(e,t);case"plain":return k(e);case"others":return function(e){let n=k(e);const t=new Set,r=[];return n=n.replace(c.dC,((e,n)=>{const s=n.split("/"),o=s[s.length-1].replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,a=o;for(;t.has(a);)a=`${o}_${i++}`;return t.add(a),r.push(`import ${a} from "./${n}.js";`),a})),r.length>0&&(n=`${r.join("\n")}\n\n${n}`),n}(e);default:throw new Error(`Unknown node type: ${n}`)}}},8263:(e,n,t)=>{"use strict";t.d(n,{A:()=>i}),t(8135);var r=t(77);t(1351);const s=new Set(["_","location","moment","ANCHOR","APP","BASE_URL","CTX","DATA","EVENT","FLAGS","FN","HASH","I18N_TEXT","I18N","IMG","INSTALLED_APPS","ITEM","INDEX","SIZE","LOCAL_STORAGE","MEDIA","MISC","PARAMS","PATH_NAME","PATH","PERMISSIONS","PIPES","PROCESSORS","QUERY_ARRAY","QUERY","SESSION_STORAGE","STATE","SYS","THEME","TAG_URL","SAFE_TAG_URL"]),o="smart-imports";(0,r.registerPlugin)(o,((e,n)=>({name:o,visitor:{Identifier(e){const{node:t,scope:r,key:o,parent:i}=e,{name:a}=t;!r.hasGlobal(a)||"undefined"===a||"key"===o&&"ObjectProperty"===i.type&&!i.computed||"property"===o&&"MemberExpression"===i.type&&!i.computed||s.has(a)&&(null==n||n.imports.add(a))}}})));const i=o},9055:(e,n,t)=>{"use strict";t.d(n,{A:()=>i});var r=t(8135),s=t(77);const o="transform-storyboard-function";(0,s.registerPlugin)(o,(()=>({name:o,visitor:{FunctionDeclaration(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))},TSDeclareFunction(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))}}})));const i=o},2582:e=>{"use strict";e.exports="root = true\n\n[*]\nindent_style = space\nindent_size = 2\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n"},535:e=>{"use strict";e.exports="node_modules\n/dist\n/temp\n"},6414:e=>{"use strict";e.exports="# __PROJECT_NAME__\n\n## 准备\n\n```bash\nyarn\n```\n\n## 开发\n\n打开两个终端,分别运行 `yarn start` 和 `yarn serve`。\n\n然后浏览器打开 http://localhost:8081__PROJECT_HOMEPAGE__\n\n提示:\n- 运行 `yarn serve` 时按需使用 `--subdir` 和 `--server` 等参数。\n- 也可以选择只使用一个终端运行 `yarn dev`,此时需要把 `yarn serve` 相关的参数定义在 `package.json` 文件中。\n\n## 离线开发\n\n修改 `dev.config.mjs`,取消注释 `mock` 一节的代码,参考对 `GET /api/auth/login` 接口,对其他远端接口进行 mock。\n"},4215:e=>{"use strict";e.exports='declare namespace JSX {\n interface IntrinsicElements {\n "basic-bricks_general-button": BrickProps & {\n buttonName?: string;\n buttonType?: string;\n };\n\n "basic-bricks_micro-view": BrickProps & {\n pageTitle?: string;\n };\n\n "forms_general-input": FormItemProps;\n "forms_general-select": FormItemProps;\n "forms_general-textarea": FormItemProps;\n "forms_general-checkbox": FormItemProps;\n "forms_general-radio": FormItemProps;\n "forms_general-switch": FormItemProps;\n }\n\n interface BrickProps {\n // HTML properties:\n id?: string;\n slot?: string;\n title?: string;\n className?: string;\n style?: import("csstype").Properties;\n\n // Brick configurations:\n ref?: string;\n if?: unknown;\n portal?: unknown;\n events?: import("@next-core/types").BrickEventsMap;\n lifeCycle?: import("@next-core/types").BrickLifeCycle;\n\n // JSX\n children?: any;\n }\n\n interface FormItemProps extends BrickProps {\n name?: string;\n label?: string;\n placeholder?: string;\n value?: unknown\n }\n}\n'},1330:e=>{"use strict";e.exports='// @ts-check\n/** @typedef {import("express").RequestHandler} Mock */\n/** @typedef {{ featureFlags?: Record<string, boolean>; misc?: Record<string, unknown>; [k: string]: unknown; }} Settings */\n/** @type {{ brickFolders?: string[]; mocks?: Mock[]; settings?: Settings }} */\nexport default {\n brickFolders: [\n "./bricks",\n ],\n // NOTE: Uncomment these lines below to enable local mocks:\n // mocks: [\n // (req, res, next) => {\n // switch (`${req.method} ${req.path}`) {\n // case "GET /api/auth/login":\n // res.send({\n // code: 0,\n // data: {\n // loggedIn: true,\n // username: "mock_user",\n // },\n // });\n // return;\n // }\n //\n // next();\n // }\n // ],\n}\n'},3812:e=>{"use strict";e.exports='{\n "compilerOptions": {\n "moduleResolution": "Node16",\n "module": "Node16"\n },\n "include": ["./src", "./declarations.d.ts"]\n}\n'},1259:e=>{"use strict";e.exports='export default {\n appId: "__APP_ID__"\n};\n'},1895:e=>{"use strict";e.exports='{\n "name": "__APP_ID__",\n "private": true,\n "type": "module",\n "scripts": {\n "dev": "run-p start serve",\n "start": "next-jsx-start",\n "serve": "brick-container-serve --local-micro-apps=\\"__APP_ID__\\" --live-reload"\n },\n "engines": {\n "node": ">=16"\n },\n "devDependencies": {\n "@next-core/brick-container": "^3.6.2",\n "@next-core/types": "^1.6.0",\n "next-jsx": "^0.1.5",\n "npm-run-all": "^4.1.5",\n "csstype": "^3.1.2"\n }\n}\n'},7577:e=>{"use strict";e.exports='import app from "./app.js";\nimport routes from "./routes.js";\nimport components from "./components/index.js";\nimport resources from "./resources/index.js";\n\nexport default {\n app,\n routes,\n components,\n resources,\n};\n'},743:e=>{"use strict";e.exports='import functions from "./functions/index.js";\nimport menus from "./menus/index.js";\nimport contracts from "./contracts/index.js";\nimport i18n from "./i18n/index.js";\nimport meta from "./meta.js";\n\nexport default {\n functions,\n menus,\n contracts,\n i18n,\n meta,\n};\n'}}]);
|
|
2
|
-
//# sourceMappingURL=143.
|
|
1
|
+
(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[143],{1897:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=1897,e.exports=n},8587:(e,n,t)=>{"use strict";function r(e){const n=[];for(const t of e)s(t,n);return n}function s(e,n){let{name:t,path:r,node:s,nodeType:o}=e,i=n;for(const e of r){const n=i.find((n=>n.name===e&&"folder"===n.type));if(n){i=n.items;continue}const t={type:"folder",name:e,items:[]};i.push(t),i=t.items}const a={type:"file",name:t,node:s,nodeType:o};i.push(a)}t.d(n,{_:()=>r})},4071:(e,n,t)=>{"use strict";t.d(n,{O7:()=>r,bB:()=>o,jC:()=>s});const r=["context","exact","path","slot"],s="default:",o=new Set(["break","case","catch","class","continue","const","constructor","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","get","if","import","in","instanceof","let","new","null","return","set","static","super","switch","symbol","this","throw","true","try","typeof","undefined","var","void","while","with","yield","async","await","of"])},8403:(e,n,t)=>{"use strict";t.d(n,{WM:()=>c,dC:()=>i,j4:()=>o,pA:()=>l});var r=t(5701);const s={properties:["ref","refProperty","extraOneWayRefs","refTransform","mergeType","mergeMethod","mergeArgs","mergeProperty","asVariable"],slots:["ref","refSlot","refPosition"],events:["ref","refEvent"],methods:["ref","refMethod"]},o=`--${Math.floor(1e16*Math.random()).toString(36)}--:`,i=new RegExp(`"${o}((?:[-\\w]+/)*[-\\w]+)"`,"g");function a(e,n){return`${o}${e}${e?"/":""}${n}`}function c(e,n,t){return e.map((e=>function(e,n,t){const r=[...n,"views"],s=u("route",e.alias,r,t.namePool);let o;f(t.namePool,[...r,s],s),function(e){delete e.alias,delete e.iid,delete e.deviceOwner,delete e.analyticsData,""===e.menu&&delete e.menu,j(e,["redirect","exact"]),"bricks"===e.type&&delete e.type}(e);const i=[...r,s];if("redirect"===e.type)o=e;else if("routes"===e.type){const{routes:r,...s}=e;o={...s,children:c(r,n,t)}}else{const{bricks:n,...r}=e,c=m(n,i,t);t.extracts.push({name:s,path:i,node:c,nodeType:"bricks"}),o={...r,view:a(`views/${s}`,s)}}const l=p("context",e.context,s,i,t);return{...o,context:l}}(e,n,t)))}function l(e,n,t){return e.map((e=>function(e,n,t){if(!e.name.startsWith("tpl-"))throw new Error(`Invalid template name: "${e.name}"`);const o=e.name.substring(4),i=[...n,o],c=m(e.bricks,i,t),l=p("state",e.state,o,i,t),f=function(e,n,t){if((0,r.isObject)(e)&&Object.keys(e).length>0){const o=u("proxy","proxy",n,t.namePool);return function(e){for(const[n,t]of Object.entries(e))switch(n){case"properties":case"events":case"slots":case"methods":if((0,r.isObject)(t))for(const[e,o]of Object.entries(t))if((0,r.isObject)(o)){const r=Object.keys(o);for(const e of r)s[n].includes(e)||delete o[e];0===r.length&&delete t[e]}break;default:delete e[n]}}(e),t.extracts.push({name:o,path:n,node:e,nodeType:"plain"}),a("",o)}return e}(e.proxy,i,t);return t.extracts.push({name:o,path:i,node:{...e,bricks:c,state:l,proxy:f},nodeType:"template"}),a(o,o)}(e,n,t)))}function p(e,n,t,r,s){if(Array.isArray(n)&&n.length>0){for(const e of n)h(e);const o=u(e,e,r,s.namePool);return s.extracts.push({name:o,path:r,node:n,nodeType:"context"}),a("context"===e?`views/${t}`:"",o)}}function u(e,n,t,r){let s=null==n?void 0:n.toLowerCase();"index"==s&&(s=`${s}_2`);const o=d(r,t),i="route"!==e||"string"==typeof s&&/^[-\w]+$/.test(s)&&"index"!==s;if(!i||o.has(s)){const n=i?s:e;let t,r=2;for(;o.has(t=`${n}_${r}`);)r++;s=t}return o.add(s),s}function f(e,n,t){d(e,n).add(t)}function d(e,n){const t=n.join("/");let r=e.get(t);return r||e.set(t,r=new Set),r}function m(e,n,t){return Array.isArray(e)?e.map((e=>x(e,n,t))):e}function x(e,n,t){let s;"string"==typeof e.alias&&/^<[-\w]+>$/.test(e.alias)&&"<index>"!==e.alias&&(s=e.alias.slice(1,-1)),function(e){if("string"==typeof e.properties){const n=`The \`properties\` of brick cannot be a string, received: "${e.properties}"`;throw console.error(`${n}. Check your brick:`,e),new Error(n)}delete e.alias,delete e.iid,delete e.deviceOwner,delete e.uuid,e.events&&0===Object.keys(e.events).length&&delete e.events,e.lifeCycle&&0===Object.keys(e.lifeCycle).length&&delete e.lifeCycle,j(e,["bg","portal"])}(e),s&&(s=u("brick",s,n,t.namePool),f(t.namePool,[...n,s],s));const{slots:o,...i}=e,l=[],p=[...n,...s?[s]:[]];if((0,r.isObject)(o))for(const[e,r]of Object.entries(o))if("routes"===r.type){const s=c((r.routes??[]).map((n=>({...n,_isRoute:!0,slot:e}))),n,t);l.push(...s)}else{const n=m((r.bricks??[]).map((n=>({...n,slot:e}))),p,t);l.push(...n)}return(0,r.isObject)(i.properties)&&!Array.isArray(i.properties)&&(i.properties=g(i.properties,p,t)),i.children=l,s?(t.extracts.push({name:s,node:i,path:[...n,s],nodeType:"bricks"}),a(s,s)):i}function g(e,n,t){return Object.fromEntries(Object.entries(e).map((e=>{let[r,s]=e;return[r,y(s,r,n,t)]})))}function y(e,n,t,s){return"useBrick"===n?Array.isArray(e)?m(e,t,s):(0,r.isObject)(e)?x(e,t,s):e:Array.isArray(e)?e.map(((e,n)=>y(e,n,t,s))):(0,r.isObject)(e)?g(e,t,s):e}function h(e){delete e.path,delete e.relatedId,delete e.doc}function j(e,n){for(const t of n)e[t]||delete e[t]}},6315:(e,n,t)=>{"use strict";t.d(n,{c:()=>A});var r=t(8135),s=t(4071);function o(e,n,t){let r=e.get(n);r||(r=new Set,e.set(n,r)),r.add(t)}function i(e){return[...e].sort(((e,n)=>Number(e[0].startsWith("."))-Number(n[0].startsWith(".")))).map((e=>{let[n,t]=e;const r=[...t];return 1===r.length&&r[0].startsWith(s.jC)?`import ${r[0].substring(s.jC.length)} from "${n}";`:`import { ${r.join(", ")} } from "${n}";`}))}var a=t(5701),c=t(8403),l=t(77);const p="transform-pipeline-operator-minimal";(0,l.registerPlugin)(p,(()=>({name:p,inherits:l.availablePlugins["syntax-pipeline-operator"],visitor:{BinaryExpression(e){const{node:n}=e,{operator:t,left:s,right:o}=n;if("|>"!==t)return;const i=r.callExpression(o,[s]);e.replaceWith(i)}}})));const u=p;var f=t(8263);function d(e,n,t){if(/^\s*<%[~=]?\s/.test(e)&&/\s%>\s*$/.test(e))try{let s="";const i=e.replace(/^\s*<%([~=])?\s|\s%>\s*$/g,((e,n)=>(n&&(s=n),"")));let a="="===s;const c="~"===s,p=new Set;let d,m=(0,l.transform)(`(${i})`,{ast:!0,code:!1,plugins:[[u,{proposal:"minimal"}],[f.A,{imports:p}]]}).ast.program.body[0].expression;"SequenceExpression"!==m.type||(d=m.expressions[0],"StringLiteral"!==d.type)||"track context"!==d.value&&"track state"!==d.value||a||(a=!0,m=m.expressions.length>2?r.sequenceExpression(m.expressions.slice(1)):m.expressions[1]),!a||p.has("STATE")||p.has("CTX")||(a=!1);for(const e of p)if("FN"===e){const e=["resources","functions","index.js"];let r=0;for(let n=0;n<e.length&&n<t.length&&(r=n,t[n]===e[n]);n++);o(n,`${1===t.length?".":new Array(t.length-1-r).fill("..").join("/")}/${e.slice(r).join("/")}`,"default:FN")}else o(n,"next-jsx/runtime",e);return c&&(o(n,"next-jsx/runtime","recursive"),m=r.callExpression(r.identifier("recursive"),[m])),a&&(o(n,"next-jsx/runtime","bind"),m=r.callExpression(r.identifier("bind"),[m])),m}catch(n){console.warn("Parse expression failed:",e,n)}return null}function m(e,n,t,s,o){return x(e,n,t,s,o)??r.nullLiteral()}function x(e,n,t,s,o){if(s&&"useBrick"===o){if(Array.isArray(e))return b(e,n,t);if((0,a.isObject)(e))return _(e,n,t)}return Array.isArray(e)?r.arrayExpression(e.map((e=>x(e,n,t,s)))):"function"==typeof e?null:(0,a.isObject)(e)?r.objectExpression(Object.entries(e).map((e=>{let[o,i]=e;const a=x(i,n,t,s,o);return null!==a?r.objectProperty(r.stringLiteral(o),a):null})).filter(Boolean)):"string"==typeof e?d(e,n,t)??r.stringLiteral(e):"number"==typeof e?r.numericLiteral(e):"boolean"==typeof e?r.booleanLiteral(e):null===e?r.nullLiteral():null}function g(e,n,t,s,o,i){const l=[],p=[];for(const[s,i]of Object.entries(e))void 0!==i&&(/^[_$a-zA-Z][$\w]*$/.test(s)?l.push([s,i]):p.push(r.objectProperty(r.stringLiteral(o?`${o}:${s}`:s),m(i,n,t))));const u=(s?l.sort((f=s,function(e,n){return f.indexOf(n[0])-f.indexOf(e[0])})):l).map((e=>{let[s,l]=e;const p=function(e,n,t,s,o){if("string"==typeof e){const s=d(e,n,t);if(s)return r.jsxExpressionContainer(s);const o=r.stringLiteral(e);return e.includes(c.j4)||JSON.stringify(e).includes("\\")?r.jsxExpressionContainer(o):o}if(!0===e)return null;if(o&&"useBrick"===s){if(Array.isArray(e))return y(b(e,n,t));if((0,a.isObject)(e))return y(_(e,n,t))}const i=m(e,n,t,o);return r.jsxExpressionContainer(i)}(l,n,t,s,i);return r.jsxAttribute(o?r.jsxNamespacedName(r.jsxIdentifier(o),r.jsxIdentifier(s)):r.jsxIdentifier(s),p)}));var f;return p.length>0&&u.push(r.jsxSpreadAttribute(r.objectExpression(p))),u}function y(e){return"StringLiteral"!==e.type?r.jsxExpressionContainer(e):e}function h(e,n,t){o(n,"next-jsx","Route");const{children:i,slot:a,_isRoute:c,...l}=e,p=i??[],u=""===a?void 0:a,f=0===p.length;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Route"),g({...l,slot:u},n,t,s.O7),f),f?null:r.jsxClosingElement(r.jsxIdentifier("Route")),p.map((e=>h(e,n,t))),f)}function j(e){return"StringLiteral"===e.type?r.jsxExpressionContainer(e):e}function b(e,n,t){const s=e.map((e=>_(e,n,t)));return 1===s.length?s[0]:r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),s.map(j))}function _(e,n,t){if("string"==typeof e)return r.stringLiteral(e);if(e.template)return function(e,n,t){o(n,"next-jsx","LegacyTemplate");const{children:s,...i}=e;return r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("LegacyTemplate"),g(i,n,t),!0),null,[],!0)}(e,n,t);const{brick:s,children:i,properties:a,events:c,lifeCycle:l,if:p,portal:u,ref:f,slot:d,...m}=e;if("string"==typeof s){let x,y,b=!0;switch(s){case":forEach":case":if":case":switch":x=`${s[1].toUpperCase()}${s.substring(2)}`,o(n,"next-jsx",x);break;default:b=!1,x=s.replaceAll(".","_")}b&&(y=m.dataSource,delete m.dataSource);const E=""===d?void 0:d,k=a??{},{textContent:A,children:w,events:O,lifeCycle:$,if:P,ref:S,id:C,slot:T,...I}=k,R="string"==typeof A,F=0===i.length&&!R;i.length>0&&R&&console.warn("Invalid brick: mix slotted children and textContent:",e);const L=r.jsxOpeningElement(r.jsxIdentifier(x),[...g({if:!0===p?void 0:p,slot:E,ref:f,id:C,...b?{value:y}:null},n,t),...g(I,n,t,void 0,void 0,!0),...g({events:c,lifeCycle:l,portal:u},n,t),...g({children:w,events:O,lifeCycle:$,if:P,ref:S},n,t,void 0,"prop"),...g(m,n,t,void 0,"conf")],F),N=F?null:r.jsxClosingElement(r.jsxIdentifier(x));let M;return M=F?[]:i.length>0?i.map((e=>"string"!=typeof e&&e._isRoute?h(e,n,t):j(_(e,n,t)))):[v(A,n,t)],r.jsxElement(L,N,M,F)}throw new Error(`Unexpected brick node: ${JSON.stringify(e)}`)}function v(e,n,t){const s=d(e,n,t);return s?r.jsxExpressionContainer(s):/[{}<>]|&(?:[a-zA-Z0-9]+|#\d+|#x[\da-fA-F]+);/.test(e)?r.jsxExpressionContainer(r.stringLiteral(e)):r.jsxText(e)}function E(e,n){const t=r.exportDefaultDeclaration(e),{code:o}=(0,l.transformFromAst)(r.program([t],void 0,"module"),void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}),a=function(e){const n=new Set;for(const t of e.values())for(const e of t)n.add(e.startsWith(s.jC)?e.substring(s.jC.length):/\s+as\s+/.test(e)?e.split(/\s+as\s+/)[1]:e);return n}(n),p=i(n),u=o.replace(c.dC,((e,n)=>{const t=n.split("/"),r=t[t.length-1],o=("context"===r&&3===t.length&&"views"===t[0]?`${t[t.length-2]}_${r}`:r).replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,c=o;for(;a.has(c)||s.bB.has(c);)c=`${o}_${i++}`;return a.add(c),p.push(`import ${c} from "./${n}.js";`),c}));return p.length>0?`${p.join("\n")}\n\n${u}`:o}function k(e){return`export default ${JSON.stringify(e)};`}function A(e,n,t){switch(n){case"routes":return function(e,n){const t=new Map;return E(r.jsxFragment(r.jsxOpeningFragment(),r.jsxClosingFragment(),e.map((e=>h(e,t,n)))),t)}(e,t);case"bricks":return function(e,n){const t=new Map;return E(Array.isArray(e)?b(e,t,n):_(e,t,n),t)}(e,t);case"template":return function(e,n){const t=new Map;o(t,"next-jsx","Component");const{bricks:s,name:i,state:a,proxy:c}=e;return E(r.jsxElement(r.jsxOpeningElement(r.jsxIdentifier("Component"),g({name:i,state:a,proxy:c},t,n)),r.jsxClosingElement(r.jsxIdentifier("Component")),(s??[]).map((e=>j(_(e,t,n))))),t)}(e,t);case"context":case"menu":return function(e,n){const t=new Map,s=r.exportDefaultDeclaration(m(e,t,n)),o=r.program([s],void 0,"module"),a=i(t),c=(0,l.transformFromAst)(o,void 0,{generatorOpts:{jsescOption:{minimal:!0}},cloneInputAst:!1}).code;return a.length>0?`${a.join("\n")}\n\n${c}`:c}(e,t);case"plain":return k(e);case"others":return function(e){let n=k(e);const t=new Set,r=[];return n=n.replace(c.dC,((e,n)=>{const s=n.split("/"),o=s[s.length-1].replaceAll("-","_").replace(/^(\d)/,"_$1");let i=2,a=o;for(;t.has(a);)a=`${o}_${i++}`;return t.add(a),r.push(`import ${a} from "./${n}.js";`),a})),r.length>0&&(n=`${r.join("\n")}\n\n${n}`),n}(e);default:throw new Error(`Unknown node type: ${n}`)}}},8263:(e,n,t)=>{"use strict";t.d(n,{A:()=>i}),t(8135);var r=t(77);t(5701);const s=new Set(["_","location","moment","ANCHOR","APP","BASE_URL","CTX","DATA","EVENT","FLAGS","FN","HASH","I18N_TEXT","I18N","IMG","INSTALLED_APPS","ITEM","INDEX","SIZE","LOCAL_STORAGE","MEDIA","MISC","PARAMS","PATH_NAME","PATH","PERMISSIONS","PIPES","PROCESSORS","QUERY_ARRAY","QUERY","SESSION_STORAGE","STATE","SYS","THEME","TAG_URL","SAFE_TAG_URL"]),o="smart-imports";(0,r.registerPlugin)(o,((e,n)=>({name:o,visitor:{Identifier(e){const{node:t,scope:r,key:o,parent:i}=e,{name:a}=t;!r.hasGlobal(a)||"undefined"===a||"key"===o&&"ObjectProperty"===i.type&&!i.computed||"property"===o&&"MemberExpression"===i.type&&!i.computed||s.has(a)&&(null==n||n.imports.add(a))}}})));const i=o},9055:(e,n,t)=>{"use strict";t.d(n,{A:()=>i});var r=t(8135),s=t(77);const o="transform-storyboard-function";(0,s.registerPlugin)(o,(()=>({name:o,visitor:{FunctionDeclaration(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))},TSDeclareFunction(e){"Program"===e.parent.type&&e.replaceWith(r.exportDefaultDeclaration(e.node))}}})));const i=o},2582:e=>{"use strict";e.exports="root = true\n\n[*]\nindent_style = space\nindent_size = 2\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n"},535:e=>{"use strict";e.exports="node_modules\n/dist\n/temp\n"},6414:e=>{"use strict";e.exports="# __PROJECT_NAME__\n\n## 准备\n\n```bash\nyarn\n```\n\n## 开发\n\n打开两个终端,分别运行 `yarn start` 和 `yarn serve`。\n\n然后浏览器打开 http://localhost:8081__PROJECT_HOMEPAGE__\n\n提示:\n- 运行 `yarn serve` 时按需使用 `--subdir` 和 `--server` 等参数。\n- 也可以选择只使用一个终端运行 `yarn dev`,此时需要把 `yarn serve` 相关的参数定义在 `package.json` 文件中。\n\n## 离线开发\n\n修改 `dev.config.mjs`,取消注释 `mock` 一节的代码,参考对 `GET /api/auth/login` 接口,对其他远端接口进行 mock。\n"},4215:e=>{"use strict";e.exports='declare namespace JSX {\n interface IntrinsicElements {\n "basic-bricks_general-button": BrickProps & {\n buttonName?: string;\n buttonType?: string;\n };\n\n "basic-bricks_micro-view": BrickProps & {\n pageTitle?: string;\n };\n\n "forms_general-input": FormItemProps;\n "forms_general-select": FormItemProps;\n "forms_general-textarea": FormItemProps;\n "forms_general-checkbox": FormItemProps;\n "forms_general-radio": FormItemProps;\n "forms_general-switch": FormItemProps;\n }\n\n interface BrickProps {\n // HTML properties:\n id?: string;\n slot?: string;\n title?: string;\n className?: string;\n style?: import("csstype").Properties;\n\n // Brick configurations:\n ref?: string;\n if?: unknown;\n portal?: unknown;\n events?: import("@next-core/types").BrickEventsMap;\n lifeCycle?: import("@next-core/types").BrickLifeCycle;\n\n // JSX\n children?: any;\n }\n\n interface FormItemProps extends BrickProps {\n name?: string;\n label?: string;\n placeholder?: string;\n value?: unknown\n }\n}\n'},1330:e=>{"use strict";e.exports='// @ts-check\n/** @typedef {import("express").RequestHandler} Mock */\n/** @typedef {{ featureFlags?: Record<string, boolean>; misc?: Record<string, unknown>; [k: string]: unknown; }} Settings */\n/** @type {{ brickFolders?: string[]; mocks?: Mock[]; settings?: Settings }} */\nexport default {\n brickFolders: [\n "./bricks",\n ],\n // NOTE: Uncomment these lines below to enable local mocks:\n // mocks: [\n // (req, res, next) => {\n // switch (`${req.method} ${req.path}`) {\n // case "GET /api/auth/login":\n // res.send({\n // code: 0,\n // data: {\n // loggedIn: true,\n // username: "mock_user",\n // },\n // });\n // return;\n // }\n //\n // next();\n // }\n // ],\n}\n'},3812:e=>{"use strict";e.exports='{\n "compilerOptions": {\n "moduleResolution": "Node16",\n "module": "Node16"\n },\n "include": ["./src", "./declarations.d.ts"]\n}\n'},1259:e=>{"use strict";e.exports='export default {\n appId: "__APP_ID__"\n};\n'},1895:e=>{"use strict";e.exports='{\n "name": "__APP_ID__",\n "private": true,\n "type": "module",\n "scripts": {\n "dev": "run-p start serve",\n "start": "next-jsx-start",\n "serve": "brick-container-serve --local-micro-apps=\\"__APP_ID__\\" --live-reload"\n },\n "engines": {\n "node": ">=16"\n },\n "devDependencies": {\n "@next-core/brick-container": "^3.6.2",\n "@next-core/types": "^1.6.0",\n "next-jsx": "^0.1.5",\n "npm-run-all": "^4.1.5",\n "csstype": "^3.1.2"\n }\n}\n'},7577:e=>{"use strict";e.exports='import app from "./app.js";\nimport routes from "./routes.js";\nimport components from "./components/index.js";\nimport resources from "./resources/index.js";\n\nexport default {\n app,\n routes,\n components,\n resources,\n};\n'},743:e=>{"use strict";e.exports='import functions from "./functions/index.js";\nimport menus from "./menus/index.js";\nimport contracts from "./contracts/index.js";\nimport i18n from "./i18n/index.js";\nimport meta from "./meta.js";\n\nexport default {\n functions,\n menus,\n contracts,\n i18n,\n meta,\n};\n'}}]);
|
|
2
|
+
//# sourceMappingURL=143.5d931218.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/143.416d9d56.js","mappings":"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","sources":["webpack:///../../node_modules/@babel/standalone/ sync","webpack:///./src/data-providers/utils/buildFileStructure.ts","webpack:///./src/data-providers/utils/constants.ts","webpack:///./src/data-providers/utils/extract.ts","webpack:///./src/data-providers/utils/handleImports.ts","webpack:///./src/data-providers/utils/plugins/pipeline-operator-minimal.ts","webpack:///./src/data-providers/utils/transformers/transformExpressionString.ts","webpack:///./src/data-providers/utils/transformers/transformJsonWithExpressions.ts","webpack:///./src/data-providers/utils/transformers/transformJsxAttributes.ts","webpack:///./src/data-providers/utils/transformers/transformRoute.ts","webpack:///./src/data-providers/utils/transformers/transformJsxChild.ts","webpack:///./src/data-providers/utils/transformers/transformBricks.ts","webpack:///./src/data-providers/utils/generators/generateJsx.ts","webpack:///./src/data-providers/utils/generators/generateOthers.ts","webpack:///./src/data-providers/utils/generators/generate.ts","webpack:///./src/data-providers/utils/generators/generateRoutes.ts","webpack:///./src/data-providers/utils/generators/generateBricks.ts","webpack:///./src/data-providers/utils/generators/generateTemplate.ts","webpack:///./src/data-providers/utils/generators/generateJsWithExpressions.ts","webpack:///./src/data-providers/utils/plugins/smart-imports.ts","webpack:///./src/data-providers/utils/plugins/storyboard-function.ts"],"sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 1897;\nmodule.exports = webpackEmptyContext;","import type { ExtractedItem, NodeType } from \"./extract.js\";\n\nexport interface SourceFile {\n type: \"file\";\n name: string;\n node: unknown;\n nodeType: NodeType;\n}\n\nexport interface SourceFolder {\n type: \"folder\";\n name: string;\n items: SourceFileOrFolder[];\n}\n\nexport type SourceFileOrFolder = SourceFile | SourceFolder;\n\nexport function buildFileStructure(extracts: ExtractedItem[]) {\n const rootItems: SourceFileOrFolder[] = [];\n for (const item of extracts) {\n makeFileWithFolders(item, rootItems);\n }\n return rootItems;\n}\n\nfunction makeFileWithFolders(\n { name, path, node, nodeType }: ExtractedItem,\n rootItems: SourceFileOrFolder[]\n) {\n let items = rootItems;\n for (const dir of path) {\n const found = items.find(\n (item) => item.name === dir && item.type === \"folder\"\n ) as SourceFolder | undefined;\n if (found) {\n items = found.items;\n continue;\n }\n\n const folder: SourceFolder = {\n type: \"folder\",\n name: dir,\n items: [],\n };\n items.push(folder);\n items = folder.items;\n }\n\n const file: SourceFile = {\n type: \"file\",\n name,\n node,\n nodeType,\n };\n items.push(file);\n}\n","export const REVERSED_ROUTE_KEYS: string[] = [\n \"context\",\n \"exact\",\n \"path\",\n \"slot\",\n];\n// export const REVERSED_BRICK_KEYS: string[] = [\"id\", \"ref\", \"slot\"];\n// export const REVERSED_TEMPLATE_KEYS: string[] = [\"proxy\", \"state\", \"name\"];\n\nexport const IMPORT_DEFAULT_PREFIX = \"default:\";\n\nexport const JS_RESERVED_WORDS = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"continue\",\n \"const\",\n \"constructor\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"from\",\n \"function\",\n \"get\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"let\",\n \"new\",\n \"null\",\n \"return\",\n \"set\",\n \"static\",\n \"super\",\n \"switch\",\n \"symbol\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"undefined\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n \"async\",\n \"await\",\n \"of\",\n]);\n","import type {\n ContextConf,\n CustomTemplate,\n CustomTemplateProxy,\n RouteConf,\n} from \"@next-core/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type {\n BrickNode,\n BrickNormalNode,\n BrickSourceNode,\n RouteNode,\n RouteNodeInBrick,\n} from \"./interfaces.js\";\n\nexport interface ExtractedItem {\n name: string;\n path: WalkPath;\n node: unknown;\n nodeType: NodeType;\n}\n\nexport type NodeType =\n | \"routes\"\n | \"template\"\n | \"bricks\"\n | \"context\"\n | \"menu\"\n | \"plain\"\n | \"others\";\n\nexport interface ExtractState {\n extracts: ExtractedItem[];\n namePool: Map<string, Set<string>>;\n}\n\ntype WalkPath = Readonly<Array<string>>;\n\nconst PROXY_KEYS = {\n properties: [\n \"ref\",\n \"refProperty\",\n \"extraOneWayRefs\",\n \"refTransform\",\n \"mergeType\",\n \"mergeMethod\",\n \"mergeArgs\",\n \"mergeProperty\",\n \"asVariable\",\n ],\n slots: [\"ref\", \"refSlot\", \"refPosition\"],\n events: [\"ref\", \"refEvent\"],\n methods: [\"ref\", \"refMethod\"],\n};\n\nexport const PLACEHOLDER_PREFIX = `--${Math.floor(\n Math.random() * 1e16\n).toString(36)}--:`;\n\nexport const PLACEHOLDER_PREFIX_REGEXP = new RegExp(\n `\"${PLACEHOLDER_PREFIX}((?:[-\\\\w]+/)*[-\\\\w]+)\"`,\n \"g\"\n);\n\nfunction getPlaceholder(folder: string, name: string): string {\n return `${PLACEHOLDER_PREFIX}${folder}${folder ? \"/\" : \"\"}${name}`;\n}\n\nexport function extractRoutes(\n routes: RouteConf[],\n path: WalkPath,\n state: ExtractState\n): RouteNode[] | undefined {\n return routes.map((route) => extractRoute(route, path, state));\n}\n\nexport function extractTemplates(\n templates: CustomTemplate[],\n path: WalkPath,\n state: ExtractState\n) {\n return templates.map((tpl) => extractTemplate(tpl, path, state));\n}\n\nfunction extractRoute(\n route: RouteConf,\n path: WalkPath,\n state: ExtractState\n): RouteNode {\n const viewsPath = [...path, \"views\"];\n const name = getAvailableName(\n \"route\",\n route.alias,\n viewsPath,\n state.namePool\n );\n addName(state.namePool, [...viewsPath, name], name);\n cleanRoute(route);\n\n let node: RouteNode;\n\n const childrenPath = [...viewsPath, name];\n\n if (route.type === \"redirect\") {\n node = route as RouteNode;\n } else if (route.type === \"routes\") {\n const { routes, ...restRoute } = route;\n node = {\n ...restRoute,\n children: extractRoutes(routes, path, state),\n } as RouteNode;\n } else {\n const { bricks, ...restRoute } = route;\n const view = extractBricks(bricks, childrenPath, state);\n\n state.extracts.push({\n name,\n path: childrenPath,\n node: view,\n nodeType: \"bricks\",\n });\n\n node = {\n ...restRoute,\n view: getPlaceholder(`views/${name}`, name),\n } as RouteNode;\n }\n\n const context = extractContext(\n \"context\",\n route.context,\n name,\n childrenPath,\n state\n );\n\n return {\n ...node,\n context,\n };\n}\n\nfunction extractContext(\n type: \"context\" | \"state\",\n context: ContextConf[] | undefined,\n routeName: string,\n path: WalkPath,\n state: ExtractState\n): string | undefined {\n if (Array.isArray(context) && context.length > 0) {\n for (const item of context) {\n cleanContext(item);\n }\n const name = getAvailableName(type, type, path, state.namePool);\n state.extracts.push({\n name,\n path,\n node: context,\n nodeType: \"context\",\n });\n\n return getPlaceholder(type === \"context\" ? `views/${routeName}` : \"\", name);\n }\n}\n\nfunction extractProxy(\n proxy: CustomTemplateProxy | undefined,\n path: WalkPath,\n state: ExtractState\n) {\n if (isObject(proxy) && Object.keys(proxy).length > 0) {\n const name = getAvailableName(\"proxy\", \"proxy\", path, state.namePool);\n cleanProxy(proxy);\n state.extracts.push({\n name,\n path,\n node: proxy,\n nodeType: \"plain\",\n });\n\n return getPlaceholder(\"\", name);\n }\n\n return proxy;\n}\n\nfunction getAvailableName(\n type: \"route\" | \"brick\" | \"context\" | \"state\" | \"proxy\",\n name: string | undefined,\n path: WalkPath,\n namePool: Map<string, Set<string>>\n): string {\n let lowerName = name?.toLowerCase();\n if (lowerName == \"index\") {\n lowerName = `${lowerName}_2`;\n }\n const names = getNames(namePool, path);\n\n const aliasIsOk =\n type !== \"route\" ||\n (typeof lowerName === \"string\" &&\n /^[-\\w]+$/.test(lowerName) &&\n lowerName !== \"index\");\n\n if (!aliasIsOk || names.has(lowerName as string)) {\n const prefix = aliasIsOk ? lowerName : type;\n let candidate: string;\n let count = 2;\n while (names.has((candidate = `${prefix}_${count}`))) {\n count++;\n }\n lowerName = candidate;\n }\n\n names.add(lowerName as string);\n return lowerName as string;\n}\n\nfunction addName(\n namePool: Map<string, Set<string>>,\n path: WalkPath,\n name: string\n) {\n const names = getNames(namePool, path);\n names.add(name);\n}\n\nfunction getNames(\n namePool: Map<string, Set<string>>,\n path: WalkPath\n): Set<string> {\n const pathString = path.join(\"/\");\n let names = namePool.get(pathString);\n if (!names) {\n namePool.set(pathString, (names = new Set()));\n }\n return names;\n}\n\nfunction extractBricks(\n bricks: BrickSourceNode[] | undefined,\n path: WalkPath,\n state: ExtractState\n) {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => extractBrick(brick, path, state));\n }\n return bricks;\n}\n\nfunction extractBrick(\n brick: BrickSourceNode,\n path: WalkPath,\n state: ExtractState\n): BrickNode {\n let name: string | undefined;\n if (\n typeof brick.alias === \"string\" &&\n /^<[-\\w]+>$/.test(brick.alias) &&\n brick.alias !== \"<index>\"\n ) {\n name = brick.alias.slice(1, -1);\n }\n cleanBrick(brick);\n\n if (name) {\n name = getAvailableName(\"brick\", name, path, state.namePool);\n addName(state.namePool, [...path, name], name);\n }\n\n const { slots, ...newBrick } = brick as BrickNormalNode &\n Pick<BrickSourceNode, \"slots\">;\n const children: (BrickNode | RouteNodeInBrick)[] = [];\n const childrenPath: WalkPath = [...path, ...(name ? [name] : [])];\n\n if (isObject(slots)) {\n for (const [slot, conf] of Object.entries(slots)) {\n if (conf.type === \"routes\") {\n const routes = extractRoutes(\n (conf.routes ?? []).map((route) => ({\n ...route,\n _isRoute: true,\n slot,\n })),\n path,\n state\n ) as RouteNodeInBrick[];\n children.push(...routes);\n } else {\n const bricks = extractBricks(\n (conf.bricks ?? []).map((brick) => ({\n ...brick,\n slot,\n })),\n childrenPath,\n state\n ) as BrickNode[];\n children.push(...bricks);\n }\n }\n }\n\n if (isObject(newBrick.properties) && !Array.isArray(newBrick.properties)) {\n newBrick.properties = extractProperties(\n newBrick.properties,\n childrenPath,\n state\n );\n }\n\n newBrick.children = children;\n\n if (name) {\n state.extracts.push({\n name,\n node: newBrick,\n path: [...path, name],\n nodeType: \"bricks\",\n });\n\n return getPlaceholder(name, name);\n }\n\n return newBrick;\n}\n\nfunction extractProperties(\n props: Record<string, unknown>,\n path: WalkPath,\n state: ExtractState\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(props).map(([k, v]) => [\n k,\n extractPropertyValue(v, k, path, state),\n ])\n );\n}\n\nfunction extractPropertyValue(\n value: unknown,\n key: string | number,\n path: WalkPath,\n state: ExtractState\n): unknown {\n if (key === \"useBrick\") {\n if (Array.isArray(value)) {\n return extractBricks(value as BrickSourceNode[], path, state);\n }\n if (isObject(value)) {\n return extractBrick(value as unknown as BrickSourceNode, path, state);\n }\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((v, i) => extractPropertyValue(v, i, path, state));\n }\n\n if (isObject(value)) {\n return extractProperties(value, path, state);\n }\n\n return value;\n}\n\nfunction extractTemplate(\n tpl: CustomTemplate,\n path: WalkPath,\n state: ExtractState\n) {\n if (!tpl.name.startsWith(\"tpl-\")) {\n throw new Error(`Invalid template name: \"${tpl.name}\"`);\n }\n const name = tpl.name.substring(4);\n\n const childrenPath = [...path, name];\n\n const extractedBricks = extractBricks(tpl.bricks, childrenPath, state);\n const extractedState = extractContext(\n \"state\",\n tpl.state,\n name,\n childrenPath,\n state\n );\n const extractedProxy = extractProxy(tpl.proxy, childrenPath, state);\n\n state.extracts.push({\n name,\n path: childrenPath,\n node: {\n ...tpl,\n bricks: extractedBricks,\n state: extractedState,\n proxy: extractedProxy,\n },\n nodeType: \"template\",\n });\n\n return getPlaceholder(name, name);\n}\n\nfunction cleanRoute(\n route: RouteConf & {\n deviceOwner?: unknown;\n analyticsData?: unknown;\n menu?: RouteConf[\"menu\"] | string;\n }\n): void {\n delete route.alias;\n delete route.iid;\n delete route.deviceOwner;\n delete route.analyticsData;\n if (route.menu === \"\") {\n delete route.menu;\n }\n removeFalsyFields(route as unknown as Record<string, unknown>, [\n \"redirect\",\n \"exact\",\n ]);\n if (route.type === \"bricks\") {\n delete route.type;\n }\n}\n\nfunction cleanBrick(brick: BrickSourceNode): void {\n if (typeof brick.properties === \"string\") {\n const message = `The \\`properties\\` of brick cannot be a string, received: \"${brick.properties}\"`;\n // eslint-disable-next-line no-console\n console.error(`${message}. Check your brick:`, brick);\n throw new Error(message);\n }\n\n delete brick.alias;\n delete brick.iid;\n delete brick.deviceOwner;\n delete brick.uuid;\n if (brick.events && Object.keys(brick.events).length === 0) {\n delete brick.events;\n }\n if (brick.lifeCycle && Object.keys(brick.lifeCycle).length === 0) {\n delete brick.lifeCycle;\n }\n removeFalsyFields(brick as unknown as Record<string, unknown>, [\n \"bg\",\n \"portal\",\n ]);\n}\n\nfunction cleanContext(\n context: ContextConf & { path?: unknown; relatedId?: unknown; doc?: unknown }\n): void {\n delete context.path;\n delete context.relatedId;\n delete context.doc;\n}\n\nfunction cleanProxy(proxy: CustomTemplateProxy & { invalid?: unknown }) {\n for (const [key, value] of Object.entries(proxy)) {\n switch (key) {\n case \"properties\":\n case \"events\":\n case \"slots\":\n case \"methods\":\n if (isObject(value)) {\n for (const [j, v] of Object.entries(value)) {\n if (isObject(v)) {\n const keys = Object.keys(v);\n for (const k of keys) {\n if (!PROXY_KEYS[key].includes(k)) {\n delete v[k];\n }\n }\n if (keys.length === 0) {\n delete value[j];\n }\n }\n }\n }\n break;\n default:\n delete proxy[key as \"invalid\"];\n }\n }\n}\n\nfunction removeFalsyFields(\n node: Record<string, unknown>,\n fields: string[]\n): void {\n for (const field of fields) {\n if (!node[field]) {\n delete node[field];\n }\n }\n}\n","import { IMPORT_DEFAULT_PREFIX } from \"./constants.js\";\nimport { ImportInfo } from \"./interfaces.js\";\n\nexport function addImport(\n imports: ImportInfo,\n from: string,\n name: string\n): void {\n let imp = imports.get(from);\n if (!imp) {\n imp = new Set();\n imports.set(from, imp);\n }\n imp.add(name);\n}\n\nexport function generateImports(imports: ImportInfo): string[] {\n return [...imports]\n .sort((a, b) => Number(a[0].startsWith(\".\")) - Number(b[0].startsWith(\".\")))\n .map(([from, names]) => {\n const importNames = [...names];\n if (\n importNames.length === 1 &&\n importNames[0].startsWith(IMPORT_DEFAULT_PREFIX)\n ) {\n return `import ${importNames[0].substring(\n IMPORT_DEFAULT_PREFIX.length\n )} from \"${from}\";`;\n }\n return `import { ${importNames.join(\", \")} } from \"${from}\";`;\n });\n}\n\nexport function getVarNamesByImports(imports: ImportInfo): Set<string> {\n const names = new Set<string>();\n for (const importNames of imports.values()) {\n for (const name of importNames) {\n names.add(\n name.startsWith(IMPORT_DEFAULT_PREFIX)\n ? name.substring(IMPORT_DEFAULT_PREFIX.length)\n : /\\s+as\\s+/.test(name)\n ? name.split(/\\s+as\\s+/)[1]\n : name\n );\n }\n }\n return names;\n}\n","import * as t from \"@babel/types\";\nimport { registerPlugin, availablePlugins } from \"@babel/standalone\";\n\nconst TransformPipelineOperatorMinimal = \"transform-pipeline-operator-minimal\";\nregisterPlugin(TransformPipelineOperatorMinimal, () => ({\n name: TransformPipelineOperatorMinimal,\n inherits: availablePlugins[\"syntax-pipeline-operator\"],\n visitor: {\n BinaryExpression(path) {\n const { node } = path;\n const { operator, left, right } = node;\n if (operator !== \"|>\") return;\n const call = t.callExpression(right, [left as t.Expression]);\n path.replaceWith(call);\n },\n },\n}));\n\nexport default TransformPipelineOperatorMinimal;\n","import * as t from \"@babel/types\";\nimport { transform } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport TransformPipelineOperatorMinimal from \"../plugins/pipeline-operator-minimal.js\";\nimport SmartImports from \"../plugins/smart-imports.js\";\n\nexport function transformExpressionString(\n value: string,\n imports: ImportInfo,\n path: string[]\n) {\n if (/^\\s*<%[~=]?\\s/.test(value) && /\\s%>\\s*$/.test(value)) {\n try {\n // Turn `\"<% CTX.abc %>\"` into `CTX.abc`\n let flag = \"\";\n const source = value.replace(\n /^\\s*<%([~=])?\\s|\\s%>\\s*$/g,\n (m, p1: string) => {\n if (p1) {\n flag = p1;\n }\n return \"\";\n }\n );\n\n let bind = flag === \"=\";\n const recursive = flag === \"~\";\n\n const inferredImports = new Set<string>();\n const file = transform(`(${source})`, {\n ast: true,\n code: false,\n plugins: [\n [TransformPipelineOperatorMinimal, { proposal: \"minimal\" }],\n [SmartImports, { imports: inferredImports }],\n ],\n }).ast as t.File;\n let ast = (file.program.body[0] as t.ExpressionStatement).expression;\n\n let firstExpr: t.Expression;\n if (\n ast.type === \"SequenceExpression\" &&\n ((firstExpr = ast.expressions[0]),\n firstExpr.type === \"StringLiteral\") &&\n (firstExpr.value === \"track context\" ||\n firstExpr.value === \"track state\")\n ) {\n if (!bind) {\n bind = true;\n ast =\n ast.expressions.length > 2\n ? t.sequenceExpression(ast.expressions.slice(1))\n : ast.expressions[1];\n }\n }\n\n if (\n bind &&\n !inferredImports.has(\"STATE\") &&\n !inferredImports.has(\"CTX\")\n ) {\n bind = false;\n }\n\n for (const name of inferredImports) {\n if (name === \"FN\") {\n const targetPath = [\"resources\", \"functions\", \"index.js\"];\n let relative = 0;\n for (let i = 0; i < targetPath.length && i < path.length; i++) {\n relative = i;\n if (path[i] !== targetPath[i]) {\n break;\n }\n }\n addImport(\n imports,\n `${\n path.length === 1\n ? \".\"\n : new Array(path.length - 1 - relative).fill(\"..\").join(\"/\")\n }/${targetPath.slice(relative).join(\"/\")}`,\n \"default:FN\"\n );\n } else {\n addImport(imports, \"next-jsx/runtime\", name);\n }\n }\n\n if (recursive) {\n addImport(imports, \"next-jsx/runtime\", \"recursive\");\n ast = t.callExpression(t.identifier(\"recursive\"), [ast]);\n }\n\n if (bind) {\n addImport(imports, \"next-jsx/runtime\", \"bind\");\n ast = t.callExpression(t.identifier(\"bind\"), [ast]);\n }\n\n return ast;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(\"Parse expression failed:\", value, e);\n }\n }\n return null;\n}\n","import * as t from \"@babel/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport { transformBrick, transformBricks } from \"./transformBricks.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\n\nexport function transformJsonWithExpressions(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n transformUseBrick?: boolean,\n key?: string\n) {\n return (\n lowLevelTransformJsonWithExpressions(\n value,\n imports,\n path,\n transformUseBrick,\n key\n ) ?? t.nullLiteral()\n );\n}\n\nexport function lowLevelTransformJsonWithExpressions(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n transformUseBrick?: boolean,\n key?: string\n): t.Expression | null {\n if (transformUseBrick && key === \"useBrick\") {\n if (Array.isArray(value)) {\n return transformBricks(value, imports, path);\n } else if (isObject(value)) {\n return transformBrick(value as unknown as BrickNode, imports, path);\n }\n }\n\n if (Array.isArray(value)) {\n return t.arrayExpression(\n value.map((v: unknown) =>\n lowLevelTransformJsonWithExpressions(\n v,\n imports,\n path,\n transformUseBrick\n )\n )\n );\n }\n\n if (typeof value === \"function\") {\n return null;\n }\n\n if (isObject(value)) {\n return t.objectExpression(\n Object.entries(value)\n .map(([k, v]) => {\n const vNode = lowLevelTransformJsonWithExpressions(\n v,\n imports,\n path,\n transformUseBrick,\n k\n );\n if (vNode !== null) {\n return t.objectProperty(t.stringLiteral(k), vNode);\n }\n return null;\n })\n .filter(Boolean) as t.ObjectProperty[]\n );\n }\n\n if (typeof value === \"string\") {\n const node = transformExpressionString(value, imports, path);\n return node ?? t.stringLiteral(value);\n }\n\n if (typeof value === \"number\") {\n return t.numericLiteral(value);\n }\n\n if (typeof value === \"boolean\") {\n return t.booleanLiteral(value);\n }\n\n if (value === null) {\n return t.nullLiteral();\n }\n\n return null;\n}\n","import * as t from \"@babel/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport { PLACEHOLDER_PREFIX } from \"../extract.js\";\nimport { transformJsonWithExpressions } from \"./transformJsonWithExpressions.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\nimport { transformBrick, transformBricks } from \"./transformBricks.js\";\n\nexport function transformJsxAttributes(\n object: object,\n imports: ImportInfo,\n path: string[],\n sortKeys?: string[],\n namespace?: string,\n transformUseBrick?: boolean\n) {\n const normalEntries: [string, unknown][] = [];\n const restProperties: t.ObjectProperty[] = [];\n for (const [k, v] of Object.entries(object)) {\n if (v !== undefined) {\n if (/^[_$a-zA-Z][$\\w]*$/.test(k)) {\n normalEntries.push([k, v]);\n } else {\n restProperties.push(\n t.objectProperty(\n t.stringLiteral(namespace ? `${namespace}:${k}` : k),\n transformJsonWithExpressions(v, imports, path)\n )\n );\n }\n }\n }\n const attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = (\n sortKeys ? normalEntries.sort(getSorterByKeys(sortKeys)) : normalEntries\n ).map(([k, v]) => {\n const value = transformJsxAttributeValue(\n v,\n imports,\n path,\n k,\n transformUseBrick\n );\n\n return t.jsxAttribute(\n namespace\n ? t.jsxNamespacedName(t.jsxIdentifier(namespace), t.jsxIdentifier(k))\n : t.jsxIdentifier(k),\n value\n );\n });\n if (restProperties.length > 0) {\n attrs.push(t.jsxSpreadAttribute(t.objectExpression(restProperties)));\n }\n return attrs;\n}\n\nfunction transformJsxAttributeValue(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n key: string | undefined,\n transformUseBrick?: boolean\n) {\n if (typeof value === \"string\") {\n const expr = transformExpressionString(value, imports, path);\n if (expr) {\n return t.jsxExpressionContainer(expr);\n }\n\n const stringLiteral = t.stringLiteral(value);\n return value.includes(PLACEHOLDER_PREFIX) ||\n JSON.stringify(value).includes(\"\\\\\")\n ? t.jsxExpressionContainer(stringLiteral)\n : stringLiteral;\n }\n if (value === true) {\n return null;\n }\n if (transformUseBrick && key === \"useBrick\") {\n if (Array.isArray(value)) {\n return transformJsxValue(\n transformBricks(value as BrickNode[], imports, path)\n );\n } else if (isObject(value)) {\n return transformJsxValue(\n transformBrick(value as unknown as BrickNode, imports, path)\n );\n }\n }\n const expr = transformJsonWithExpressions(\n value,\n imports,\n path,\n transformUseBrick\n );\n return t.jsxExpressionContainer(expr);\n}\n\nfunction transformJsxValue(\n value: t.JSXElement | t.JSXFragment | t.StringLiteral\n) {\n if (value.type !== \"StringLiteral\") {\n return t.jsxExpressionContainer(value);\n }\n return value;\n}\n\nfunction getSorterByKeys(keys: string[]) {\n return function sorter(a: [string, unknown], b: [string, unknown]) {\n return keys.indexOf(b[0]) - keys.indexOf(a[0]);\n };\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo, RouteNode } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"./transformJsxAttributes.js\";\nimport { REVERSED_ROUTE_KEYS } from \"../constants.js\";\n\nexport function transformRoute(\n node: RouteNode,\n imports: ImportInfo,\n path: string[]\n): t.JSXElement {\n addImport(imports, \"next-jsx\", \"Route\");\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children: _children, slot: _slot, _isRoute, ...restNode } = node;\n const children = _children ?? [];\n const slot = _slot === \"\" ? undefined : _slot;\n const selfClosing = children.length === 0;\n return t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"Route\"),\n transformJsxAttributes(\n { ...restNode, slot },\n imports,\n path,\n REVERSED_ROUTE_KEYS\n ),\n selfClosing\n ),\n selfClosing ? null : t.jsxClosingElement(t.jsxIdentifier(\"Route\")),\n children.map((child) => transformRoute(child, imports, path)),\n selfClosing\n );\n}\n","import * as t from \"@babel/types\";\n\nexport function transformJsxChild(child: t.JSXElement | t.StringLiteral) {\n if (child.type === \"StringLiteral\") {\n return t.jsxExpressionContainer(child);\n }\n return child;\n}\n","import * as t from \"@babel/types\";\nimport type { BrickNode, BrickNormalNode, ImportInfo } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"./transformJsxAttributes.js\";\nimport { transformRoute } from \"./transformRoute.js\";\nimport { transformJsxChild } from \"./transformJsxChild.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\n\nexport function transformBricks(\n node: BrickNode[],\n imports: ImportInfo,\n path: string[]\n): t.StringLiteral | t.JSXElement | t.JSXFragment {\n const bricks = node.map((n) => transformBrick(n, imports, path));\n return bricks.length === 1\n ? bricks[0]\n : t.jsxFragment(\n t.jsxOpeningFragment(),\n t.jsxClosingFragment(),\n bricks.map(transformJsxChild)\n );\n}\n\nexport function transformBrick(\n node: BrickNode,\n imports: ImportInfo,\n path: string[]\n): t.StringLiteral | t.JSXElement {\n if (typeof node === \"string\") {\n return t.stringLiteral(node);\n }\n if (node.template) {\n return transformLegacyTemplate(node, imports, path);\n }\n const {\n brick,\n children,\n properties,\n events,\n lifeCycle,\n if: _if,\n portal,\n ref,\n slot: _slot,\n ...restNode\n } = node;\n if (typeof brick === \"string\") {\n let tagName: string;\n let isControlNode = true;\n switch (brick) {\n case \":forEach\":\n case \":if\":\n case \":switch\":\n tagName = `${brick[1].toUpperCase()}${brick.substring(2)}`;\n addImport(imports, \"next-jsx\", tagName);\n break;\n default:\n isControlNode = false;\n tagName = brick.replaceAll(\".\", \"_\");\n }\n let controlDataSource: unknown;\n if (isControlNode) {\n controlDataSource = restNode.dataSource;\n delete restNode.dataSource;\n }\n const slot = _slot === \"\" ? undefined : _slot;\n const props = properties ?? {};\n const {\n textContent,\n children: prop_children,\n events: prop_events,\n lifeCycle: prop_lifeCycle,\n if: prop_if,\n ref: prop_ref,\n id: prop_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n slot: prop_slot,\n ...restProps\n } = props;\n const hasTextContent = typeof textContent === \"string\";\n\n const selfClosing = children.length === 0 && !hasTextContent;\n\n if (children.length > 0 && hasTextContent) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Invalid brick: mix slotted children and textContent:\",\n node\n );\n }\n\n const opening = t.jsxOpeningElement(\n t.jsxIdentifier(tagName),\n [\n ...transformJsxAttributes(\n {\n if: _if === true ? undefined : _if,\n slot,\n ref,\n id: prop_id,\n ...(isControlNode\n ? {\n value: controlDataSource,\n }\n : null),\n },\n imports,\n path\n ),\n ...transformJsxAttributes(\n restProps,\n imports,\n path,\n undefined,\n undefined,\n true\n ),\n ...transformJsxAttributes(\n {\n events,\n lifeCycle,\n portal,\n },\n imports,\n path\n ),\n ...transformJsxAttributes(\n {\n children: prop_children,\n events: prop_events,\n lifeCycle: prop_lifeCycle,\n if: prop_if,\n ref: prop_ref,\n },\n imports,\n path,\n undefined,\n \"prop\"\n ),\n ...transformJsxAttributes(restNode, imports, path, undefined, \"conf\"),\n ],\n selfClosing\n );\n\n const closing = selfClosing\n ? null\n : t.jsxClosingElement(t.jsxIdentifier(tagName));\n\n let childElements: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[];\n if (selfClosing) {\n childElements = [];\n } else if (children.length > 0) {\n childElements = children.map((child) =>\n typeof child !== \"string\" && child._isRoute\n ? transformRoute(child, imports, path)\n : transformJsxChild(transformBrick(child, imports, path))\n );\n } else {\n childElements = [transformJsxText(textContent as string, imports, path)];\n }\n\n return t.jsxElement(opening, closing, childElements, selfClosing);\n }\n\n throw new Error(`Unexpected brick node: ${JSON.stringify(node)}`);\n}\n\nfunction transformLegacyTemplate(\n node: BrickNormalNode,\n imports: ImportInfo,\n path: string[]\n) {\n addImport(imports, \"next-jsx\", \"LegacyTemplate\");\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, ...restNode } = node;\n\n return t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"LegacyTemplate\"),\n transformJsxAttributes(restNode, imports, path),\n true\n ),\n null,\n [],\n true\n );\n}\n\nfunction transformJsxText(text: string, imports: ImportInfo, path: string[]) {\n const expr = transformExpressionString(text, imports, path);\n if (expr) {\n return t.jsxExpressionContainer(expr);\n }\n if (/[{}<>]|&(?:[a-zA-Z0-9]+|#\\d+|#x[\\da-fA-F]+);/.test(text)) {\n return t.jsxExpressionContainer(t.stringLiteral(text));\n }\n return t.jsxText(text);\n}\n","import * as t from \"@babel/types\";\nimport { transformFromAst } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { PLACEHOLDER_PREFIX_REGEXP } from \"../extract.js\";\nimport { generateImports, getVarNamesByImports } from \"../handleImports.js\";\nimport { JS_RESERVED_WORDS } from \"../constants.js\";\n\nexport function generateJsx(\n expression: t.Expression,\n imports: ImportInfo\n): string {\n const exportDefault = t.exportDefaultDeclaration(expression);\n\n const { code } = transformFromAst(\n t.program([exportDefault], undefined, \"module\"),\n undefined,\n {\n generatorOpts: {\n jsescOption: {\n minimal: true,\n },\n },\n cloneInputAst: false,\n }\n ) as { code: string };\n\n const usedVarNames = getVarNamesByImports(imports);\n const allImports = generateImports(imports);\n\n const newCode = code!.replace(PLACEHOLDER_PREFIX_REGEXP, (m, p1: string) => {\n const path = p1.split(\"/\");\n const name = path[path.length - 1];\n const baseName = (\n name === \"context\" && path.length === 3 && path[0] === \"views\"\n ? `${path[path.length - 2]}_${name}`\n : name\n )\n .replaceAll(\"-\", \"_\")\n .replace(/^(\\d)/, \"_$1\");\n\n let counter = 2;\n let varName = baseName;\n while (usedVarNames.has(varName) || JS_RESERVED_WORDS.has(varName)) {\n varName = `${baseName}_${counter++}`;\n }\n usedVarNames.add(varName);\n\n allImports.push(`import ${varName} from \"./${p1}.js\";`);\n return varName;\n });\n\n return allImports.length > 0\n ? `${allImports.join(\"\\n\")}\\n\\n${newCode}`\n : code;\n}\n","import { PLACEHOLDER_PREFIX_REGEXP } from \"../extract.js\";\n\nexport function generateOthers(node: unknown) {\n let content = generatePlain(node);\n\n const usedVarNames = new Set<string>();\n const imports: string[] = [];\n\n content = content.replace(PLACEHOLDER_PREFIX_REGEXP, (m, p1: string) => {\n const path = p1.split(\"/\");\n const name = path[path.length - 1];\n const baseName = name.replaceAll(\"-\", \"_\").replace(/^(\\d)/, \"_$1\");\n\n let counter = 2;\n let varName = baseName;\n while (usedVarNames.has(varName)) {\n varName = `${baseName}_${counter++}`;\n }\n usedVarNames.add(varName);\n\n imports.push(`import ${varName} from \"./${p1}.js\";`);\n return varName;\n });\n\n if (imports.length > 0) {\n content = `${imports.join(\"\\n\")}\\n\\n${content}`;\n }\n\n return content;\n}\n\nexport function generatePlain(node: unknown) {\n return `export default ${JSON.stringify(node)};`;\n}\n","import { NodeType } from \"../extract.js\";\nimport { generateBricks } from \"./generateBricks.js\";\nimport { generateJsWithExpressions } from \"./generateJsWithExpressions.js\";\nimport { generateOthers, generatePlain } from \"./generateOthers.js\";\nimport { generateRoutes } from \"./generateRoutes.js\";\nimport { generateTemplate } from \"./generateTemplate.js\";\n\nexport function generate(\n node: any,\n nodeType: NodeType,\n path: string[]\n): string {\n switch (nodeType) {\n case \"routes\":\n return generateRoutes(node, path);\n case \"bricks\":\n return generateBricks(node, path);\n case \"template\":\n return generateTemplate(node, path);\n case \"context\":\n case \"menu\":\n return generateJsWithExpressions(node, path);\n case \"plain\": // Template proxy\n return generatePlain(node);\n case \"others\": // Templates index\n return generateOthers(node);\n default:\n throw new Error(`Unknown node type: ${nodeType}`);\n }\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { transformRoute } from \"../transformers/transformRoute.js\";\nimport { generateJsx } from \"./generateJsx.js\";\n\nexport function generateRoutes(node: any[], path: string[]) {\n const imports: ImportInfo = new Map();\n const fragment = t.jsxFragment(\n t.jsxOpeningFragment(),\n t.jsxClosingFragment(),\n node.map((n) => transformRoute(n, imports, path))\n );\n\n return generateJsx(fragment, imports);\n}\n","import type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport {\n transformBrick,\n transformBricks,\n} from \"../transformers/transformBricks.js\";\nimport { generateJsx } from \"./generateJsx.js\";\n\nexport function generateBricks(node: BrickNode | BrickNode[], path: string[]) {\n const imports: ImportInfo = new Map();\n const expression = Array.isArray(node)\n ? transformBricks(node, imports, path)\n : transformBrick(node, imports, path);\n return generateJsx(expression, imports);\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { generateJsx } from \"./generateJsx.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"../transformers/transformJsxAttributes.js\";\nimport { transformBrick } from \"../transformers/transformBricks.js\";\nimport { transformJsxChild } from \"../transformers/transformJsxChild.js\";\n\nexport function generateTemplate(node: any, path: string[]) {\n const imports: ImportInfo = new Map();\n addImport(imports, \"next-jsx\", \"Component\");\n\n const { bricks, name, state, proxy } = node;\n\n const tpl = t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"Component\"),\n transformJsxAttributes({ name, state, proxy }, imports, path)\n ),\n t.jsxClosingElement(t.jsxIdentifier(\"Component\")),\n (bricks ?? []).map((brick: any) =>\n transformJsxChild(transformBrick(brick, imports, path))\n )\n );\n\n return generateJsx(tpl, imports);\n}\n","import * as t from \"@babel/types\";\nimport { transformFromAst } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { generateImports } from \"../handleImports.js\";\nimport { transformJsonWithExpressions } from \"../transformers/transformJsonWithExpressions.js\";\n\nexport function generateJsWithExpressions(\n node: unknown,\n path: string[]\n): string {\n const imports: ImportInfo = new Map();\n const exportDefault = t.exportDefaultDeclaration(\n transformJsonWithExpressions(node, imports, path)\n );\n const ast = t.program([exportDefault], undefined, \"module\");\n const allImports = generateImports(imports);\n const content = transformFromAst(ast, undefined, {\n generatorOpts: {\n jsescOption: {\n minimal: true,\n },\n },\n cloneInputAst: false,\n }).code as string;\n if (allImports.length > 0) {\n return `${allImports.join(\"\\n\")}\\n\\n${content}`;\n }\n return content;\n}\n","import * as t from \"@babel/types\";\nimport { registerPlugin } from \"@babel/standalone\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\n\nconst EXPRESSION_GLOBALS = new Set([\n \"_\",\n \"location\",\n \"moment\",\n \"ANCHOR\",\n \"APP\",\n \"BASE_URL\",\n \"CTX\",\n \"DATA\",\n \"EVENT\",\n \"FLAGS\",\n \"FN\",\n \"HASH\",\n \"I18N_TEXT\",\n \"I18N\",\n \"IMG\",\n \"INSTALLED_APPS\",\n \"ITEM\",\n \"INDEX\",\n \"SIZE\",\n \"LOCAL_STORAGE\",\n \"MEDIA\",\n \"MISC\",\n \"PARAMS\",\n \"PATH_NAME\",\n \"PATH\",\n \"PERMISSIONS\",\n \"PIPES\",\n \"PROCESSORS\",\n \"QUERY_ARRAY\",\n \"QUERY\",\n \"SESSION_STORAGE\",\n \"STATE\",\n \"SYS\",\n \"THEME\",\n \"TAG_URL\",\n \"SAFE_TAG_URL\",\n]);\n\nconst SmartImports = \"smart-imports\";\nregisterPlugin(\n SmartImports,\n (_api: unknown, opts?: { imports: Set<string> }) => ({\n name: SmartImports,\n visitor: {\n Identifier(path) {\n const { node, scope, key, parent } = path;\n const { name } = node;\n if (\n scope.hasGlobal(name) &&\n name !== \"undefined\" &&\n !(\n key === \"key\" &&\n parent.type === \"ObjectProperty\" &&\n !parent.computed\n ) &&\n !(\n key === \"property\" &&\n parent.type === \"MemberExpression\" &&\n !parent.computed\n )\n ) {\n if (EXPRESSION_GLOBALS.has(name)) {\n opts?.imports.add(name);\n } else if (\n process.env.NODE_ENV === \"development\" &&\n !hasOwnProperty(window, name) &&\n !scope.hasBinding(name) &&\n !t.isTypeScript(parent)\n ) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unhandled global variable in expression:\",\n name,\n path\n );\n }\n }\n },\n },\n })\n);\n\nexport default SmartImports;\n","import * as t from \"@babel/types\";\nimport { registerPlugin } from \"@babel/standalone\";\n\nconst TransformStoryboardFunction = \"transform-storyboard-function\";\nregisterPlugin(TransformStoryboardFunction, () => ({\n name: TransformStoryboardFunction,\n visitor: {\n FunctionDeclaration(path) {\n if (path.parent.type === \"Program\") {\n path.replaceWith(t.exportDefaultDeclaration(path.node));\n }\n },\n TSDeclareFunction(path) {\n if (path.parent.type === \"Program\") {\n path.replaceWith(t.exportDefaultDeclaration(path.node));\n }\n },\n },\n}));\n\nexport default TransformStoryboardFunction;\n"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","buildFileStructure","extracts","rootItems","item","makeFileWithFolders","_ref","name","path","node","nodeType","items","dir","found","find","type","folder","push","file","REVERSED_ROUTE_KEYS","IMPORT_DEFAULT_PREFIX","JS_RESERVED_WORDS","Set","PROXY_KEYS","properties","slots","events","methods","PLACEHOLDER_PREFIX","Math","floor","random","toString","PLACEHOLDER_PREFIX_REGEXP","RegExp","getPlaceholder","extractRoutes","routes","state","map","route","viewsPath","getAvailableName","alias","namePool","addName","iid","deviceOwner","analyticsData","menu","removeFalsyFields","cleanRoute","childrenPath","restRoute","children","bricks","view","extractBricks","context","extractContext","extractRoute","extractTemplates","templates","tpl","startsWith","substring","extractedBricks","extractedState","extractedProxy","proxy","isObject","Object","length","key","value","entries","j","v","k","includes","cleanProxy","extractProxy","extractTemplate","routeName","Array","isArray","cleanContext","lowerName","toLowerCase","names","getNames","aliasIsOk","test","has","prefix","candidate","count","add","pathString","join","get","set","brick","extractBrick","slice","message","console","error","uuid","lifeCycle","cleanBrick","newBrick","slot","conf","_isRoute","extractProperties","props","fromEntries","extractPropertyValue","i","relatedId","doc","fields","field","addImport","imports","from","imp","generateImports","sort","a","b","Number","importNames","TransformPipelineOperatorMinimal","registerPlugin","inherits","availablePlugins","visitor","BinaryExpression","operator","left","right","call","t","replaceWith","transformExpressionString","flag","source","replace","m","p1","bind","recursive","inferredImports","firstExpr","ast","transform","plugins","proposal","SmartImports","program","body","expression","expressions","targetPath","relative","fill","warn","transformJsonWithExpressions","transformUseBrick","lowLevelTransformJsonWithExpressions","transformBricks","transformBrick","vNode","filter","Boolean","transformJsxAttributes","object","sortKeys","namespace","normalEntries","restProperties","undefined","attrs","indexOf","expr","stringLiteral","JSON","stringify","transformJsxValue","transformJsxAttributeValue","transformRoute","_children","_slot","restNode","selfClosing","child","transformJsxChild","n","template","transformLegacyTemplate","if","_if","portal","ref","tagName","controlDataSource","isControlNode","toUpperCase","replaceAll","dataSource","textContent","prop_children","prop_events","prop_lifeCycle","prop_if","prop_ref","prop_id","prop_slot","restProps","hasTextContent","opening","closing","childElements","transformJsxText","text","generateJsx","exportDefault","transformFromAst","generatorOpts","jsescOption","minimal","cloneInputAst","usedVarNames","values","split","getVarNamesByImports","allImports","newCode","baseName","counter","varName","generatePlain","generate","Map","generateRoutes","generateBricks","generateTemplate","content","generateJsWithExpressions","generateOthers","EXPRESSION_GLOBALS","_api","opts","Identifier","scope","parent","hasGlobal","computed","TransformStoryboardFunction","FunctionDeclaration","TSDeclareFunction"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/143.5d931218.js","mappings":"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","sources":["webpack:///../../node_modules/@babel/standalone/ sync","webpack:///./src/data-providers/utils/buildFileStructure.ts","webpack:///./src/data-providers/utils/constants.ts","webpack:///./src/data-providers/utils/extract.ts","webpack:///./src/data-providers/utils/handleImports.ts","webpack:///./src/data-providers/utils/plugins/pipeline-operator-minimal.ts","webpack:///./src/data-providers/utils/transformers/transformExpressionString.ts","webpack:///./src/data-providers/utils/transformers/transformJsonWithExpressions.ts","webpack:///./src/data-providers/utils/transformers/transformJsxAttributes.ts","webpack:///./src/data-providers/utils/transformers/transformRoute.ts","webpack:///./src/data-providers/utils/transformers/transformJsxChild.ts","webpack:///./src/data-providers/utils/transformers/transformBricks.ts","webpack:///./src/data-providers/utils/generators/generateJsx.ts","webpack:///./src/data-providers/utils/generators/generateOthers.ts","webpack:///./src/data-providers/utils/generators/generate.ts","webpack:///./src/data-providers/utils/generators/generateRoutes.ts","webpack:///./src/data-providers/utils/generators/generateBricks.ts","webpack:///./src/data-providers/utils/generators/generateTemplate.ts","webpack:///./src/data-providers/utils/generators/generateJsWithExpressions.ts","webpack:///./src/data-providers/utils/plugins/smart-imports.ts","webpack:///./src/data-providers/utils/plugins/storyboard-function.ts"],"sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 1897;\nmodule.exports = webpackEmptyContext;","import type { ExtractedItem, NodeType } from \"./extract.js\";\n\nexport interface SourceFile {\n type: \"file\";\n name: string;\n node: unknown;\n nodeType: NodeType;\n}\n\nexport interface SourceFolder {\n type: \"folder\";\n name: string;\n items: SourceFileOrFolder[];\n}\n\nexport type SourceFileOrFolder = SourceFile | SourceFolder;\n\nexport function buildFileStructure(extracts: ExtractedItem[]) {\n const rootItems: SourceFileOrFolder[] = [];\n for (const item of extracts) {\n makeFileWithFolders(item, rootItems);\n }\n return rootItems;\n}\n\nfunction makeFileWithFolders(\n { name, path, node, nodeType }: ExtractedItem,\n rootItems: SourceFileOrFolder[]\n) {\n let items = rootItems;\n for (const dir of path) {\n const found = items.find(\n (item) => item.name === dir && item.type === \"folder\"\n ) as SourceFolder | undefined;\n if (found) {\n items = found.items;\n continue;\n }\n\n const folder: SourceFolder = {\n type: \"folder\",\n name: dir,\n items: [],\n };\n items.push(folder);\n items = folder.items;\n }\n\n const file: SourceFile = {\n type: \"file\",\n name,\n node,\n nodeType,\n };\n items.push(file);\n}\n","export const REVERSED_ROUTE_KEYS: string[] = [\n \"context\",\n \"exact\",\n \"path\",\n \"slot\",\n];\n// export const REVERSED_BRICK_KEYS: string[] = [\"id\", \"ref\", \"slot\"];\n// export const REVERSED_TEMPLATE_KEYS: string[] = [\"proxy\", \"state\", \"name\"];\n\nexport const IMPORT_DEFAULT_PREFIX = \"default:\";\n\nexport const JS_RESERVED_WORDS = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"class\",\n \"continue\",\n \"const\",\n \"constructor\",\n \"debugger\",\n \"default\",\n \"delete\",\n \"do\",\n \"else\",\n \"export\",\n \"extends\",\n \"false\",\n \"finally\",\n \"for\",\n \"from\",\n \"function\",\n \"get\",\n \"if\",\n \"import\",\n \"in\",\n \"instanceof\",\n \"let\",\n \"new\",\n \"null\",\n \"return\",\n \"set\",\n \"static\",\n \"super\",\n \"switch\",\n \"symbol\",\n \"this\",\n \"throw\",\n \"true\",\n \"try\",\n \"typeof\",\n \"undefined\",\n \"var\",\n \"void\",\n \"while\",\n \"with\",\n \"yield\",\n \"async\",\n \"await\",\n \"of\",\n]);\n","import type {\n ContextConf,\n CustomTemplate,\n CustomTemplateProxy,\n RouteConf,\n} from \"@next-core/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type {\n BrickNode,\n BrickNormalNode,\n BrickSourceNode,\n RouteNode,\n RouteNodeInBrick,\n} from \"./interfaces.js\";\n\nexport interface ExtractedItem {\n name: string;\n path: WalkPath;\n node: unknown;\n nodeType: NodeType;\n}\n\nexport type NodeType =\n | \"routes\"\n | \"template\"\n | \"bricks\"\n | \"context\"\n | \"menu\"\n | \"plain\"\n | \"others\";\n\nexport interface ExtractState {\n extracts: ExtractedItem[];\n namePool: Map<string, Set<string>>;\n}\n\ntype WalkPath = Readonly<Array<string>>;\n\nconst PROXY_KEYS = {\n properties: [\n \"ref\",\n \"refProperty\",\n \"extraOneWayRefs\",\n \"refTransform\",\n \"mergeType\",\n \"mergeMethod\",\n \"mergeArgs\",\n \"mergeProperty\",\n \"asVariable\",\n ],\n slots: [\"ref\", \"refSlot\", \"refPosition\"],\n events: [\"ref\", \"refEvent\"],\n methods: [\"ref\", \"refMethod\"],\n};\n\nexport const PLACEHOLDER_PREFIX = `--${Math.floor(\n Math.random() * 1e16\n).toString(36)}--:`;\n\nexport const PLACEHOLDER_PREFIX_REGEXP = new RegExp(\n `\"${PLACEHOLDER_PREFIX}((?:[-\\\\w]+/)*[-\\\\w]+)\"`,\n \"g\"\n);\n\nfunction getPlaceholder(folder: string, name: string): string {\n return `${PLACEHOLDER_PREFIX}${folder}${folder ? \"/\" : \"\"}${name}`;\n}\n\nexport function extractRoutes(\n routes: RouteConf[],\n path: WalkPath,\n state: ExtractState\n): RouteNode[] | undefined {\n return routes.map((route) => extractRoute(route, path, state));\n}\n\nexport function extractTemplates(\n templates: CustomTemplate[],\n path: WalkPath,\n state: ExtractState\n) {\n return templates.map((tpl) => extractTemplate(tpl, path, state));\n}\n\nfunction extractRoute(\n route: RouteConf,\n path: WalkPath,\n state: ExtractState\n): RouteNode {\n const viewsPath = [...path, \"views\"];\n const name = getAvailableName(\n \"route\",\n route.alias,\n viewsPath,\n state.namePool\n );\n addName(state.namePool, [...viewsPath, name], name);\n cleanRoute(route);\n\n let node: RouteNode;\n\n const childrenPath = [...viewsPath, name];\n\n if (route.type === \"redirect\") {\n node = route as RouteNode;\n } else if (route.type === \"routes\") {\n const { routes, ...restRoute } = route;\n node = {\n ...restRoute,\n children: extractRoutes(routes, path, state),\n } as RouteNode;\n } else {\n const { bricks, ...restRoute } = route;\n const view = extractBricks(bricks, childrenPath, state);\n\n state.extracts.push({\n name,\n path: childrenPath,\n node: view,\n nodeType: \"bricks\",\n });\n\n node = {\n ...restRoute,\n view: getPlaceholder(`views/${name}`, name),\n } as RouteNode;\n }\n\n const context = extractContext(\n \"context\",\n route.context,\n name,\n childrenPath,\n state\n );\n\n return {\n ...node,\n context,\n };\n}\n\nfunction extractContext(\n type: \"context\" | \"state\",\n context: ContextConf[] | undefined,\n routeName: string,\n path: WalkPath,\n state: ExtractState\n): string | undefined {\n if (Array.isArray(context) && context.length > 0) {\n for (const item of context) {\n cleanContext(item);\n }\n const name = getAvailableName(type, type, path, state.namePool);\n state.extracts.push({\n name,\n path,\n node: context,\n nodeType: \"context\",\n });\n\n return getPlaceholder(type === \"context\" ? `views/${routeName}` : \"\", name);\n }\n}\n\nfunction extractProxy(\n proxy: CustomTemplateProxy | undefined,\n path: WalkPath,\n state: ExtractState\n) {\n if (isObject(proxy) && Object.keys(proxy).length > 0) {\n const name = getAvailableName(\"proxy\", \"proxy\", path, state.namePool);\n cleanProxy(proxy);\n state.extracts.push({\n name,\n path,\n node: proxy,\n nodeType: \"plain\",\n });\n\n return getPlaceholder(\"\", name);\n }\n\n return proxy;\n}\n\nfunction getAvailableName(\n type: \"route\" | \"brick\" | \"context\" | \"state\" | \"proxy\",\n name: string | undefined,\n path: WalkPath,\n namePool: Map<string, Set<string>>\n): string {\n let lowerName = name?.toLowerCase();\n if (lowerName == \"index\") {\n lowerName = `${lowerName}_2`;\n }\n const names = getNames(namePool, path);\n\n const aliasIsOk =\n type !== \"route\" ||\n (typeof lowerName === \"string\" &&\n /^[-\\w]+$/.test(lowerName) &&\n lowerName !== \"index\");\n\n if (!aliasIsOk || names.has(lowerName as string)) {\n const prefix = aliasIsOk ? lowerName : type;\n let candidate: string;\n let count = 2;\n while (names.has((candidate = `${prefix}_${count}`))) {\n count++;\n }\n lowerName = candidate;\n }\n\n names.add(lowerName as string);\n return lowerName as string;\n}\n\nfunction addName(\n namePool: Map<string, Set<string>>,\n path: WalkPath,\n name: string\n) {\n const names = getNames(namePool, path);\n names.add(name);\n}\n\nfunction getNames(\n namePool: Map<string, Set<string>>,\n path: WalkPath\n): Set<string> {\n const pathString = path.join(\"/\");\n let names = namePool.get(pathString);\n if (!names) {\n namePool.set(pathString, (names = new Set()));\n }\n return names;\n}\n\nfunction extractBricks(\n bricks: BrickSourceNode[] | undefined,\n path: WalkPath,\n state: ExtractState\n) {\n if (Array.isArray(bricks)) {\n return bricks.map((brick) => extractBrick(brick, path, state));\n }\n return bricks;\n}\n\nfunction extractBrick(\n brick: BrickSourceNode,\n path: WalkPath,\n state: ExtractState\n): BrickNode {\n let name: string | undefined;\n if (\n typeof brick.alias === \"string\" &&\n /^<[-\\w]+>$/.test(brick.alias) &&\n brick.alias !== \"<index>\"\n ) {\n name = brick.alias.slice(1, -1);\n }\n cleanBrick(brick);\n\n if (name) {\n name = getAvailableName(\"brick\", name, path, state.namePool);\n addName(state.namePool, [...path, name], name);\n }\n\n const { slots, ...newBrick } = brick as BrickNormalNode &\n Pick<BrickSourceNode, \"slots\">;\n const children: (BrickNode | RouteNodeInBrick)[] = [];\n const childrenPath: WalkPath = [...path, ...(name ? [name] : [])];\n\n if (isObject(slots)) {\n for (const [slot, conf] of Object.entries(slots)) {\n if (conf.type === \"routes\") {\n const routes = extractRoutes(\n (conf.routes ?? []).map((route) => ({\n ...route,\n _isRoute: true,\n slot,\n })),\n path,\n state\n ) as RouteNodeInBrick[];\n children.push(...routes);\n } else {\n const bricks = extractBricks(\n (conf.bricks ?? []).map((brick) => ({\n ...brick,\n slot,\n })),\n childrenPath,\n state\n ) as BrickNode[];\n children.push(...bricks);\n }\n }\n }\n\n if (isObject(newBrick.properties) && !Array.isArray(newBrick.properties)) {\n newBrick.properties = extractProperties(\n newBrick.properties,\n childrenPath,\n state\n );\n }\n\n newBrick.children = children;\n\n if (name) {\n state.extracts.push({\n name,\n node: newBrick,\n path: [...path, name],\n nodeType: \"bricks\",\n });\n\n return getPlaceholder(name, name);\n }\n\n return newBrick;\n}\n\nfunction extractProperties(\n props: Record<string, unknown>,\n path: WalkPath,\n state: ExtractState\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(props).map(([k, v]) => [\n k,\n extractPropertyValue(v, k, path, state),\n ])\n );\n}\n\nfunction extractPropertyValue(\n value: unknown,\n key: string | number,\n path: WalkPath,\n state: ExtractState\n): unknown {\n if (key === \"useBrick\") {\n if (Array.isArray(value)) {\n return extractBricks(value as BrickSourceNode[], path, state);\n }\n if (isObject(value)) {\n return extractBrick(value as unknown as BrickSourceNode, path, state);\n }\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((v, i) => extractPropertyValue(v, i, path, state));\n }\n\n if (isObject(value)) {\n return extractProperties(value, path, state);\n }\n\n return value;\n}\n\nfunction extractTemplate(\n tpl: CustomTemplate,\n path: WalkPath,\n state: ExtractState\n) {\n if (!tpl.name.startsWith(\"tpl-\")) {\n throw new Error(`Invalid template name: \"${tpl.name}\"`);\n }\n const name = tpl.name.substring(4);\n\n const childrenPath = [...path, name];\n\n const extractedBricks = extractBricks(tpl.bricks, childrenPath, state);\n const extractedState = extractContext(\n \"state\",\n tpl.state,\n name,\n childrenPath,\n state\n );\n const extractedProxy = extractProxy(tpl.proxy, childrenPath, state);\n\n state.extracts.push({\n name,\n path: childrenPath,\n node: {\n ...tpl,\n bricks: extractedBricks,\n state: extractedState,\n proxy: extractedProxy,\n },\n nodeType: \"template\",\n });\n\n return getPlaceholder(name, name);\n}\n\nfunction cleanRoute(\n route: RouteConf & {\n deviceOwner?: unknown;\n analyticsData?: unknown;\n menu?: RouteConf[\"menu\"] | string;\n }\n): void {\n delete route.alias;\n delete route.iid;\n delete route.deviceOwner;\n delete route.analyticsData;\n if (route.menu === \"\") {\n delete route.menu;\n }\n removeFalsyFields(route as unknown as Record<string, unknown>, [\n \"redirect\",\n \"exact\",\n ]);\n if (route.type === \"bricks\") {\n delete route.type;\n }\n}\n\nfunction cleanBrick(brick: BrickSourceNode): void {\n if (typeof brick.properties === \"string\") {\n const message = `The \\`properties\\` of brick cannot be a string, received: \"${brick.properties}\"`;\n // eslint-disable-next-line no-console\n console.error(`${message}. Check your brick:`, brick);\n throw new Error(message);\n }\n\n delete brick.alias;\n delete brick.iid;\n delete brick.deviceOwner;\n delete brick.uuid;\n if (brick.events && Object.keys(brick.events).length === 0) {\n delete brick.events;\n }\n if (brick.lifeCycle && Object.keys(brick.lifeCycle).length === 0) {\n delete brick.lifeCycle;\n }\n removeFalsyFields(brick as unknown as Record<string, unknown>, [\n \"bg\",\n \"portal\",\n ]);\n}\n\nfunction cleanContext(\n context: ContextConf & { path?: unknown; relatedId?: unknown; doc?: unknown }\n): void {\n delete context.path;\n delete context.relatedId;\n delete context.doc;\n}\n\nfunction cleanProxy(proxy: CustomTemplateProxy & { invalid?: unknown }) {\n for (const [key, value] of Object.entries(proxy)) {\n switch (key) {\n case \"properties\":\n case \"events\":\n case \"slots\":\n case \"methods\":\n if (isObject(value)) {\n for (const [j, v] of Object.entries(value)) {\n if (isObject(v)) {\n const keys = Object.keys(v);\n for (const k of keys) {\n if (!PROXY_KEYS[key].includes(k)) {\n delete v[k];\n }\n }\n if (keys.length === 0) {\n delete value[j];\n }\n }\n }\n }\n break;\n default:\n delete proxy[key as \"invalid\"];\n }\n }\n}\n\nfunction removeFalsyFields(\n node: Record<string, unknown>,\n fields: string[]\n): void {\n for (const field of fields) {\n if (!node[field]) {\n delete node[field];\n }\n }\n}\n","import { IMPORT_DEFAULT_PREFIX } from \"./constants.js\";\nimport { ImportInfo } from \"./interfaces.js\";\n\nexport function addImport(\n imports: ImportInfo,\n from: string,\n name: string\n): void {\n let imp = imports.get(from);\n if (!imp) {\n imp = new Set();\n imports.set(from, imp);\n }\n imp.add(name);\n}\n\nexport function generateImports(imports: ImportInfo): string[] {\n return [...imports]\n .sort((a, b) => Number(a[0].startsWith(\".\")) - Number(b[0].startsWith(\".\")))\n .map(([from, names]) => {\n const importNames = [...names];\n if (\n importNames.length === 1 &&\n importNames[0].startsWith(IMPORT_DEFAULT_PREFIX)\n ) {\n return `import ${importNames[0].substring(\n IMPORT_DEFAULT_PREFIX.length\n )} from \"${from}\";`;\n }\n return `import { ${importNames.join(\", \")} } from \"${from}\";`;\n });\n}\n\nexport function getVarNamesByImports(imports: ImportInfo): Set<string> {\n const names = new Set<string>();\n for (const importNames of imports.values()) {\n for (const name of importNames) {\n names.add(\n name.startsWith(IMPORT_DEFAULT_PREFIX)\n ? name.substring(IMPORT_DEFAULT_PREFIX.length)\n : /\\s+as\\s+/.test(name)\n ? name.split(/\\s+as\\s+/)[1]\n : name\n );\n }\n }\n return names;\n}\n","import * as t from \"@babel/types\";\nimport { registerPlugin, availablePlugins } from \"@babel/standalone\";\n\nconst TransformPipelineOperatorMinimal = \"transform-pipeline-operator-minimal\";\nregisterPlugin(TransformPipelineOperatorMinimal, () => ({\n name: TransformPipelineOperatorMinimal,\n inherits: availablePlugins[\"syntax-pipeline-operator\"],\n visitor: {\n BinaryExpression(path) {\n const { node } = path;\n const { operator, left, right } = node;\n if (operator !== \"|>\") return;\n const call = t.callExpression(right, [left as t.Expression]);\n path.replaceWith(call);\n },\n },\n}));\n\nexport default TransformPipelineOperatorMinimal;\n","import * as t from \"@babel/types\";\nimport { transform } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport TransformPipelineOperatorMinimal from \"../plugins/pipeline-operator-minimal.js\";\nimport SmartImports from \"../plugins/smart-imports.js\";\n\nexport function transformExpressionString(\n value: string,\n imports: ImportInfo,\n path: string[]\n) {\n if (/^\\s*<%[~=]?\\s/.test(value) && /\\s%>\\s*$/.test(value)) {\n try {\n // Turn `\"<% CTX.abc %>\"` into `CTX.abc`\n let flag = \"\";\n const source = value.replace(\n /^\\s*<%([~=])?\\s|\\s%>\\s*$/g,\n (m, p1: string) => {\n if (p1) {\n flag = p1;\n }\n return \"\";\n }\n );\n\n let bind = flag === \"=\";\n const recursive = flag === \"~\";\n\n const inferredImports = new Set<string>();\n const file = transform(`(${source})`, {\n ast: true,\n code: false,\n plugins: [\n [TransformPipelineOperatorMinimal, { proposal: \"minimal\" }],\n [SmartImports, { imports: inferredImports }],\n ],\n }).ast as t.File;\n let ast = (file.program.body[0] as t.ExpressionStatement).expression;\n\n let firstExpr: t.Expression;\n if (\n ast.type === \"SequenceExpression\" &&\n ((firstExpr = ast.expressions[0]),\n firstExpr.type === \"StringLiteral\") &&\n (firstExpr.value === \"track context\" ||\n firstExpr.value === \"track state\")\n ) {\n if (!bind) {\n bind = true;\n ast =\n ast.expressions.length > 2\n ? t.sequenceExpression(ast.expressions.slice(1))\n : ast.expressions[1];\n }\n }\n\n if (\n bind &&\n !inferredImports.has(\"STATE\") &&\n !inferredImports.has(\"CTX\")\n ) {\n bind = false;\n }\n\n for (const name of inferredImports) {\n if (name === \"FN\") {\n const targetPath = [\"resources\", \"functions\", \"index.js\"];\n let relative = 0;\n for (let i = 0; i < targetPath.length && i < path.length; i++) {\n relative = i;\n if (path[i] !== targetPath[i]) {\n break;\n }\n }\n addImport(\n imports,\n `${\n path.length === 1\n ? \".\"\n : new Array(path.length - 1 - relative).fill(\"..\").join(\"/\")\n }/${targetPath.slice(relative).join(\"/\")}`,\n \"default:FN\"\n );\n } else {\n addImport(imports, \"next-jsx/runtime\", name);\n }\n }\n\n if (recursive) {\n addImport(imports, \"next-jsx/runtime\", \"recursive\");\n ast = t.callExpression(t.identifier(\"recursive\"), [ast]);\n }\n\n if (bind) {\n addImport(imports, \"next-jsx/runtime\", \"bind\");\n ast = t.callExpression(t.identifier(\"bind\"), [ast]);\n }\n\n return ast;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.warn(\"Parse expression failed:\", value, e);\n }\n }\n return null;\n}\n","import * as t from \"@babel/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport { transformBrick, transformBricks } from \"./transformBricks.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\n\nexport function transformJsonWithExpressions(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n transformUseBrick?: boolean,\n key?: string\n) {\n return (\n lowLevelTransformJsonWithExpressions(\n value,\n imports,\n path,\n transformUseBrick,\n key\n ) ?? t.nullLiteral()\n );\n}\n\nexport function lowLevelTransformJsonWithExpressions(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n transformUseBrick?: boolean,\n key?: string\n): t.Expression | null {\n if (transformUseBrick && key === \"useBrick\") {\n if (Array.isArray(value)) {\n return transformBricks(value, imports, path);\n } else if (isObject(value)) {\n return transformBrick(value as unknown as BrickNode, imports, path);\n }\n }\n\n if (Array.isArray(value)) {\n return t.arrayExpression(\n value.map((v: unknown) =>\n lowLevelTransformJsonWithExpressions(\n v,\n imports,\n path,\n transformUseBrick\n )\n )\n );\n }\n\n if (typeof value === \"function\") {\n return null;\n }\n\n if (isObject(value)) {\n return t.objectExpression(\n Object.entries(value)\n .map(([k, v]) => {\n const vNode = lowLevelTransformJsonWithExpressions(\n v,\n imports,\n path,\n transformUseBrick,\n k\n );\n if (vNode !== null) {\n return t.objectProperty(t.stringLiteral(k), vNode);\n }\n return null;\n })\n .filter(Boolean) as t.ObjectProperty[]\n );\n }\n\n if (typeof value === \"string\") {\n const node = transformExpressionString(value, imports, path);\n return node ?? t.stringLiteral(value);\n }\n\n if (typeof value === \"number\") {\n return t.numericLiteral(value);\n }\n\n if (typeof value === \"boolean\") {\n return t.booleanLiteral(value);\n }\n\n if (value === null) {\n return t.nullLiteral();\n }\n\n return null;\n}\n","import * as t from \"@babel/types\";\nimport { isObject } from \"@next-core/utils/general\";\nimport type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport { PLACEHOLDER_PREFIX } from \"../extract.js\";\nimport { transformJsonWithExpressions } from \"./transformJsonWithExpressions.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\nimport { transformBrick, transformBricks } from \"./transformBricks.js\";\n\nexport function transformJsxAttributes(\n object: object,\n imports: ImportInfo,\n path: string[],\n sortKeys?: string[],\n namespace?: string,\n transformUseBrick?: boolean\n) {\n const normalEntries: [string, unknown][] = [];\n const restProperties: t.ObjectProperty[] = [];\n for (const [k, v] of Object.entries(object)) {\n if (v !== undefined) {\n if (/^[_$a-zA-Z][$\\w]*$/.test(k)) {\n normalEntries.push([k, v]);\n } else {\n restProperties.push(\n t.objectProperty(\n t.stringLiteral(namespace ? `${namespace}:${k}` : k),\n transformJsonWithExpressions(v, imports, path)\n )\n );\n }\n }\n }\n const attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[] = (\n sortKeys ? normalEntries.sort(getSorterByKeys(sortKeys)) : normalEntries\n ).map(([k, v]) => {\n const value = transformJsxAttributeValue(\n v,\n imports,\n path,\n k,\n transformUseBrick\n );\n\n return t.jsxAttribute(\n namespace\n ? t.jsxNamespacedName(t.jsxIdentifier(namespace), t.jsxIdentifier(k))\n : t.jsxIdentifier(k),\n value\n );\n });\n if (restProperties.length > 0) {\n attrs.push(t.jsxSpreadAttribute(t.objectExpression(restProperties)));\n }\n return attrs;\n}\n\nfunction transformJsxAttributeValue(\n value: unknown,\n imports: ImportInfo,\n path: string[],\n key: string | undefined,\n transformUseBrick?: boolean\n) {\n if (typeof value === \"string\") {\n const expr = transformExpressionString(value, imports, path);\n if (expr) {\n return t.jsxExpressionContainer(expr);\n }\n\n const stringLiteral = t.stringLiteral(value);\n return value.includes(PLACEHOLDER_PREFIX) ||\n JSON.stringify(value).includes(\"\\\\\")\n ? t.jsxExpressionContainer(stringLiteral)\n : stringLiteral;\n }\n if (value === true) {\n return null;\n }\n if (transformUseBrick && key === \"useBrick\") {\n if (Array.isArray(value)) {\n return transformJsxValue(\n transformBricks(value as BrickNode[], imports, path)\n );\n } else if (isObject(value)) {\n return transformJsxValue(\n transformBrick(value as unknown as BrickNode, imports, path)\n );\n }\n }\n const expr = transformJsonWithExpressions(\n value,\n imports,\n path,\n transformUseBrick\n );\n return t.jsxExpressionContainer(expr);\n}\n\nfunction transformJsxValue(\n value: t.JSXElement | t.JSXFragment | t.StringLiteral\n) {\n if (value.type !== \"StringLiteral\") {\n return t.jsxExpressionContainer(value);\n }\n return value;\n}\n\nfunction getSorterByKeys(keys: string[]) {\n return function sorter(a: [string, unknown], b: [string, unknown]) {\n return keys.indexOf(b[0]) - keys.indexOf(a[0]);\n };\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo, RouteNode } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"./transformJsxAttributes.js\";\nimport { REVERSED_ROUTE_KEYS } from \"../constants.js\";\n\nexport function transformRoute(\n node: RouteNode,\n imports: ImportInfo,\n path: string[]\n): t.JSXElement {\n addImport(imports, \"next-jsx\", \"Route\");\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children: _children, slot: _slot, _isRoute, ...restNode } = node;\n const children = _children ?? [];\n const slot = _slot === \"\" ? undefined : _slot;\n const selfClosing = children.length === 0;\n return t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"Route\"),\n transformJsxAttributes(\n { ...restNode, slot },\n imports,\n path,\n REVERSED_ROUTE_KEYS\n ),\n selfClosing\n ),\n selfClosing ? null : t.jsxClosingElement(t.jsxIdentifier(\"Route\")),\n children.map((child) => transformRoute(child, imports, path)),\n selfClosing\n );\n}\n","import * as t from \"@babel/types\";\n\nexport function transformJsxChild(child: t.JSXElement | t.StringLiteral) {\n if (child.type === \"StringLiteral\") {\n return t.jsxExpressionContainer(child);\n }\n return child;\n}\n","import * as t from \"@babel/types\";\nimport type { BrickNode, BrickNormalNode, ImportInfo } from \"../interfaces.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"./transformJsxAttributes.js\";\nimport { transformRoute } from \"./transformRoute.js\";\nimport { transformJsxChild } from \"./transformJsxChild.js\";\nimport { transformExpressionString } from \"./transformExpressionString.js\";\n\nexport function transformBricks(\n node: BrickNode[],\n imports: ImportInfo,\n path: string[]\n): t.StringLiteral | t.JSXElement | t.JSXFragment {\n const bricks = node.map((n) => transformBrick(n, imports, path));\n return bricks.length === 1\n ? bricks[0]\n : t.jsxFragment(\n t.jsxOpeningFragment(),\n t.jsxClosingFragment(),\n bricks.map(transformJsxChild)\n );\n}\n\nexport function transformBrick(\n node: BrickNode,\n imports: ImportInfo,\n path: string[]\n): t.StringLiteral | t.JSXElement {\n if (typeof node === \"string\") {\n return t.stringLiteral(node);\n }\n if (node.template) {\n return transformLegacyTemplate(node, imports, path);\n }\n const {\n brick,\n children,\n properties,\n events,\n lifeCycle,\n if: _if,\n portal,\n ref,\n slot: _slot,\n ...restNode\n } = node;\n if (typeof brick === \"string\") {\n let tagName: string;\n let isControlNode = true;\n switch (brick) {\n case \":forEach\":\n case \":if\":\n case \":switch\":\n tagName = `${brick[1].toUpperCase()}${brick.substring(2)}`;\n addImport(imports, \"next-jsx\", tagName);\n break;\n default:\n isControlNode = false;\n tagName = brick.replaceAll(\".\", \"_\");\n }\n let controlDataSource: unknown;\n if (isControlNode) {\n controlDataSource = restNode.dataSource;\n delete restNode.dataSource;\n }\n const slot = _slot === \"\" ? undefined : _slot;\n const props = properties ?? {};\n const {\n textContent,\n children: prop_children,\n events: prop_events,\n lifeCycle: prop_lifeCycle,\n if: prop_if,\n ref: prop_ref,\n id: prop_id,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n slot: prop_slot,\n ...restProps\n } = props;\n const hasTextContent = typeof textContent === \"string\";\n\n const selfClosing = children.length === 0 && !hasTextContent;\n\n if (children.length > 0 && hasTextContent) {\n // eslint-disable-next-line no-console\n console.warn(\n \"Invalid brick: mix slotted children and textContent:\",\n node\n );\n }\n\n const opening = t.jsxOpeningElement(\n t.jsxIdentifier(tagName),\n [\n ...transformJsxAttributes(\n {\n if: _if === true ? undefined : _if,\n slot,\n ref,\n id: prop_id,\n ...(isControlNode\n ? {\n value: controlDataSource,\n }\n : null),\n },\n imports,\n path\n ),\n ...transformJsxAttributes(\n restProps,\n imports,\n path,\n undefined,\n undefined,\n true\n ),\n ...transformJsxAttributes(\n {\n events,\n lifeCycle,\n portal,\n },\n imports,\n path\n ),\n ...transformJsxAttributes(\n {\n children: prop_children,\n events: prop_events,\n lifeCycle: prop_lifeCycle,\n if: prop_if,\n ref: prop_ref,\n },\n imports,\n path,\n undefined,\n \"prop\"\n ),\n ...transformJsxAttributes(restNode, imports, path, undefined, \"conf\"),\n ],\n selfClosing\n );\n\n const closing = selfClosing\n ? null\n : t.jsxClosingElement(t.jsxIdentifier(tagName));\n\n let childElements: (\n | t.JSXText\n | t.JSXExpressionContainer\n | t.JSXSpreadChild\n | t.JSXElement\n | t.JSXFragment\n )[];\n if (selfClosing) {\n childElements = [];\n } else if (children.length > 0) {\n childElements = children.map((child) =>\n typeof child !== \"string\" && child._isRoute\n ? transformRoute(child, imports, path)\n : transformJsxChild(transformBrick(child, imports, path))\n );\n } else {\n childElements = [transformJsxText(textContent as string, imports, path)];\n }\n\n return t.jsxElement(opening, closing, childElements, selfClosing);\n }\n\n throw new Error(`Unexpected brick node: ${JSON.stringify(node)}`);\n}\n\nfunction transformLegacyTemplate(\n node: BrickNormalNode,\n imports: ImportInfo,\n path: string[]\n) {\n addImport(imports, \"next-jsx\", \"LegacyTemplate\");\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { children, ...restNode } = node;\n\n return t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"LegacyTemplate\"),\n transformJsxAttributes(restNode, imports, path),\n true\n ),\n null,\n [],\n true\n );\n}\n\nfunction transformJsxText(text: string, imports: ImportInfo, path: string[]) {\n const expr = transformExpressionString(text, imports, path);\n if (expr) {\n return t.jsxExpressionContainer(expr);\n }\n if (/[{}<>]|&(?:[a-zA-Z0-9]+|#\\d+|#x[\\da-fA-F]+);/.test(text)) {\n return t.jsxExpressionContainer(t.stringLiteral(text));\n }\n return t.jsxText(text);\n}\n","import * as t from \"@babel/types\";\nimport { transformFromAst } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { PLACEHOLDER_PREFIX_REGEXP } from \"../extract.js\";\nimport { generateImports, getVarNamesByImports } from \"../handleImports.js\";\nimport { JS_RESERVED_WORDS } from \"../constants.js\";\n\nexport function generateJsx(\n expression: t.Expression,\n imports: ImportInfo\n): string {\n const exportDefault = t.exportDefaultDeclaration(expression);\n\n const { code } = transformFromAst(\n t.program([exportDefault], undefined, \"module\"),\n undefined,\n {\n generatorOpts: {\n jsescOption: {\n minimal: true,\n },\n },\n cloneInputAst: false,\n }\n ) as { code: string };\n\n const usedVarNames = getVarNamesByImports(imports);\n const allImports = generateImports(imports);\n\n const newCode = code!.replace(PLACEHOLDER_PREFIX_REGEXP, (m, p1: string) => {\n const path = p1.split(\"/\");\n const name = path[path.length - 1];\n const baseName = (\n name === \"context\" && path.length === 3 && path[0] === \"views\"\n ? `${path[path.length - 2]}_${name}`\n : name\n )\n .replaceAll(\"-\", \"_\")\n .replace(/^(\\d)/, \"_$1\");\n\n let counter = 2;\n let varName = baseName;\n while (usedVarNames.has(varName) || JS_RESERVED_WORDS.has(varName)) {\n varName = `${baseName}_${counter++}`;\n }\n usedVarNames.add(varName);\n\n allImports.push(`import ${varName} from \"./${p1}.js\";`);\n return varName;\n });\n\n return allImports.length > 0\n ? `${allImports.join(\"\\n\")}\\n\\n${newCode}`\n : code;\n}\n","import { PLACEHOLDER_PREFIX_REGEXP } from \"../extract.js\";\n\nexport function generateOthers(node: unknown) {\n let content = generatePlain(node);\n\n const usedVarNames = new Set<string>();\n const imports: string[] = [];\n\n content = content.replace(PLACEHOLDER_PREFIX_REGEXP, (m, p1: string) => {\n const path = p1.split(\"/\");\n const name = path[path.length - 1];\n const baseName = name.replaceAll(\"-\", \"_\").replace(/^(\\d)/, \"_$1\");\n\n let counter = 2;\n let varName = baseName;\n while (usedVarNames.has(varName)) {\n varName = `${baseName}_${counter++}`;\n }\n usedVarNames.add(varName);\n\n imports.push(`import ${varName} from \"./${p1}.js\";`);\n return varName;\n });\n\n if (imports.length > 0) {\n content = `${imports.join(\"\\n\")}\\n\\n${content}`;\n }\n\n return content;\n}\n\nexport function generatePlain(node: unknown) {\n return `export default ${JSON.stringify(node)};`;\n}\n","import { NodeType } from \"../extract.js\";\nimport { generateBricks } from \"./generateBricks.js\";\nimport { generateJsWithExpressions } from \"./generateJsWithExpressions.js\";\nimport { generateOthers, generatePlain } from \"./generateOthers.js\";\nimport { generateRoutes } from \"./generateRoutes.js\";\nimport { generateTemplate } from \"./generateTemplate.js\";\n\nexport function generate(\n node: any,\n nodeType: NodeType,\n path: string[]\n): string {\n switch (nodeType) {\n case \"routes\":\n return generateRoutes(node, path);\n case \"bricks\":\n return generateBricks(node, path);\n case \"template\":\n return generateTemplate(node, path);\n case \"context\":\n case \"menu\":\n return generateJsWithExpressions(node, path);\n case \"plain\": // Template proxy\n return generatePlain(node);\n case \"others\": // Templates index\n return generateOthers(node);\n default:\n throw new Error(`Unknown node type: ${nodeType}`);\n }\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { transformRoute } from \"../transformers/transformRoute.js\";\nimport { generateJsx } from \"./generateJsx.js\";\n\nexport function generateRoutes(node: any[], path: string[]) {\n const imports: ImportInfo = new Map();\n const fragment = t.jsxFragment(\n t.jsxOpeningFragment(),\n t.jsxClosingFragment(),\n node.map((n) => transformRoute(n, imports, path))\n );\n\n return generateJsx(fragment, imports);\n}\n","import type { BrickNode, ImportInfo } from \"../interfaces.js\";\nimport {\n transformBrick,\n transformBricks,\n} from \"../transformers/transformBricks.js\";\nimport { generateJsx } from \"./generateJsx.js\";\n\nexport function generateBricks(node: BrickNode | BrickNode[], path: string[]) {\n const imports: ImportInfo = new Map();\n const expression = Array.isArray(node)\n ? transformBricks(node, imports, path)\n : transformBrick(node, imports, path);\n return generateJsx(expression, imports);\n}\n","import * as t from \"@babel/types\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { generateJsx } from \"./generateJsx.js\";\nimport { addImport } from \"../handleImports.js\";\nimport { transformJsxAttributes } from \"../transformers/transformJsxAttributes.js\";\nimport { transformBrick } from \"../transformers/transformBricks.js\";\nimport { transformJsxChild } from \"../transformers/transformJsxChild.js\";\n\nexport function generateTemplate(node: any, path: string[]) {\n const imports: ImportInfo = new Map();\n addImport(imports, \"next-jsx\", \"Component\");\n\n const { bricks, name, state, proxy } = node;\n\n const tpl = t.jsxElement(\n t.jsxOpeningElement(\n t.jsxIdentifier(\"Component\"),\n transformJsxAttributes({ name, state, proxy }, imports, path)\n ),\n t.jsxClosingElement(t.jsxIdentifier(\"Component\")),\n (bricks ?? []).map((brick: any) =>\n transformJsxChild(transformBrick(brick, imports, path))\n )\n );\n\n return generateJsx(tpl, imports);\n}\n","import * as t from \"@babel/types\";\nimport { transformFromAst } from \"@babel/standalone\";\nimport type { ImportInfo } from \"../interfaces.js\";\nimport { generateImports } from \"../handleImports.js\";\nimport { transformJsonWithExpressions } from \"../transformers/transformJsonWithExpressions.js\";\n\nexport function generateJsWithExpressions(\n node: unknown,\n path: string[]\n): string {\n const imports: ImportInfo = new Map();\n const exportDefault = t.exportDefaultDeclaration(\n transformJsonWithExpressions(node, imports, path)\n );\n const ast = t.program([exportDefault], undefined, \"module\");\n const allImports = generateImports(imports);\n const content = transformFromAst(ast, undefined, {\n generatorOpts: {\n jsescOption: {\n minimal: true,\n },\n },\n cloneInputAst: false,\n }).code as string;\n if (allImports.length > 0) {\n return `${allImports.join(\"\\n\")}\\n\\n${content}`;\n }\n return content;\n}\n","import * as t from \"@babel/types\";\nimport { registerPlugin } from \"@babel/standalone\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\n\nconst EXPRESSION_GLOBALS = new Set([\n \"_\",\n \"location\",\n \"moment\",\n \"ANCHOR\",\n \"APP\",\n \"BASE_URL\",\n \"CTX\",\n \"DATA\",\n \"EVENT\",\n \"FLAGS\",\n \"FN\",\n \"HASH\",\n \"I18N_TEXT\",\n \"I18N\",\n \"IMG\",\n \"INSTALLED_APPS\",\n \"ITEM\",\n \"INDEX\",\n \"SIZE\",\n \"LOCAL_STORAGE\",\n \"MEDIA\",\n \"MISC\",\n \"PARAMS\",\n \"PATH_NAME\",\n \"PATH\",\n \"PERMISSIONS\",\n \"PIPES\",\n \"PROCESSORS\",\n \"QUERY_ARRAY\",\n \"QUERY\",\n \"SESSION_STORAGE\",\n \"STATE\",\n \"SYS\",\n \"THEME\",\n \"TAG_URL\",\n \"SAFE_TAG_URL\",\n]);\n\nconst SmartImports = \"smart-imports\";\nregisterPlugin(\n SmartImports,\n (_api: unknown, opts?: { imports: Set<string> }) => ({\n name: SmartImports,\n visitor: {\n Identifier(path) {\n const { node, scope, key, parent } = path;\n const { name } = node;\n if (\n scope.hasGlobal(name) &&\n name !== \"undefined\" &&\n !(\n key === \"key\" &&\n parent.type === \"ObjectProperty\" &&\n !parent.computed\n ) &&\n !(\n key === \"property\" &&\n parent.type === \"MemberExpression\" &&\n !parent.computed\n )\n ) {\n if (EXPRESSION_GLOBALS.has(name)) {\n opts?.imports.add(name);\n } else if (\n process.env.NODE_ENV === \"development\" &&\n !hasOwnProperty(window, name) &&\n !scope.hasBinding(name) &&\n !t.isTypeScript(parent)\n ) {\n // eslint-disable-next-line no-console\n console.error(\n \"Unhandled global variable in expression:\",\n name,\n path\n );\n }\n }\n },\n },\n })\n);\n\nexport default SmartImports;\n","import * as t from \"@babel/types\";\nimport { registerPlugin } from \"@babel/standalone\";\n\nconst TransformStoryboardFunction = \"transform-storyboard-function\";\nregisterPlugin(TransformStoryboardFunction, () => ({\n name: TransformStoryboardFunction,\n visitor: {\n FunctionDeclaration(path) {\n if (path.parent.type === \"Program\") {\n path.replaceWith(t.exportDefaultDeclaration(path.node));\n }\n },\n TSDeclareFunction(path) {\n if (path.parent.type === \"Program\") {\n path.replaceWith(t.exportDefaultDeclaration(path.node));\n }\n },\n },\n}));\n\nexport default TransformStoryboardFunction;\n"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","buildFileStructure","extracts","rootItems","item","makeFileWithFolders","_ref","name","path","node","nodeType","items","dir","found","find","type","folder","push","file","REVERSED_ROUTE_KEYS","IMPORT_DEFAULT_PREFIX","JS_RESERVED_WORDS","Set","PROXY_KEYS","properties","slots","events","methods","PLACEHOLDER_PREFIX","Math","floor","random","toString","PLACEHOLDER_PREFIX_REGEXP","RegExp","getPlaceholder","extractRoutes","routes","state","map","route","viewsPath","getAvailableName","alias","namePool","addName","iid","deviceOwner","analyticsData","menu","removeFalsyFields","cleanRoute","childrenPath","restRoute","children","bricks","view","extractBricks","context","extractContext","extractRoute","extractTemplates","templates","tpl","startsWith","substring","extractedBricks","extractedState","extractedProxy","proxy","isObject","Object","length","key","value","entries","j","v","k","includes","cleanProxy","extractProxy","extractTemplate","routeName","Array","isArray","cleanContext","lowerName","toLowerCase","names","getNames","aliasIsOk","test","has","prefix","candidate","count","add","pathString","join","get","set","brick","extractBrick","slice","message","console","error","uuid","lifeCycle","cleanBrick","newBrick","slot","conf","_isRoute","extractProperties","props","fromEntries","extractPropertyValue","i","relatedId","doc","fields","field","addImport","imports","from","imp","generateImports","sort","a","b","Number","importNames","TransformPipelineOperatorMinimal","registerPlugin","inherits","availablePlugins","visitor","BinaryExpression","operator","left","right","call","t","replaceWith","transformExpressionString","flag","source","replace","m","p1","bind","recursive","inferredImports","firstExpr","ast","transform","plugins","proposal","SmartImports","program","body","expression","expressions","targetPath","relative","fill","warn","transformJsonWithExpressions","transformUseBrick","lowLevelTransformJsonWithExpressions","transformBricks","transformBrick","vNode","filter","Boolean","transformJsxAttributes","object","sortKeys","namespace","normalEntries","restProperties","undefined","attrs","indexOf","expr","stringLiteral","JSON","stringify","transformJsxValue","transformJsxAttributeValue","transformRoute","_children","_slot","restNode","selfClosing","child","transformJsxChild","n","template","transformLegacyTemplate","if","_if","portal","ref","tagName","controlDataSource","isControlNode","toUpperCase","replaceAll","dataSource","textContent","prop_children","prop_events","prop_lifeCycle","prop_if","prop_ref","prop_id","prop_slot","restProps","hasTextContent","opening","closing","childElements","transformJsxText","text","generateJsx","exportDefault","transformFromAst","generatorOpts","jsescOption","minimal","cloneInputAst","usedVarNames","values","split","getVarNamesByImports","allImports","newCode","baseName","counter","varName","generatePlain","generate","Map","generateRoutes","generateBricks","generateTemplate","content","generateJsWithExpressions","generateOthers","EXPRESSION_GLOBALS","_api","opts","Identifier","scope","parent","hasGlobal","computed","TransformStoryboardFunction","FunctionDeclaration","TSDeclareFunction"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(globalThis.webpackChunk_next_bricks_vb_experiment=globalThis.webpackChunk_next_bricks_vb_experiment||[]).push([[345],{5345:(e,t,n)=>{var s=n(5701),o=n(2461),i=n.n(o),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),k=n(9055),S=n(8263);async function v(e){let{typescript:t,semi:n=!0,printWidth:s}=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:s,trailingComma:"es5"})}async function T(e,t,n){for(const s of e){const e=[...n,s.name];if("folder"===s.type){const n=t.folder(s.name);await T(s.items,n,e)}else t.file(`${s.name}.js${"routes"===s.nodeType||"bricks"===s.nodeType||"template"===s.nodeType?"x":""}`,await v((0,u.c)(s.node,s.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,s.createProviderClass)((async function(e){let{projectDetail:t,storyboard:n}=e;const s=new(i()),o=s.folder("project"),r=o.folder("src"),l={extracts:[],namePool:new Map},c=(0,f.WM)(n.routes,[],l),N={id:t.appId,name:t.name,homepage:t.appSetting.homepage,layoutType:t.appSetting.layoutType,theme:t.appSetting.theme,noAuthGuard:t.appSetting.noAuthGuard,locales:t.appSetting.locales,defaultConfig:JSON.parse(t.appSetting.defaultConfig||"{}"),menuIcon:JSON.parse(t.appSetting.icon||"null"),standaloneMode:!0};r.file("app.js",await v(`export default ${JSON.stringify(N,null,2)};`));const O=n.meta??{},I=O.customTemplates??[],P=O.functions??[],C=O.menus??[],J=O.contracts??[],M=O.i18n??{};delete O.customTemplates,delete O.functions,delete O.menus,delete O.contracts,delete O.i18n,delete O.workflows,delete O.mocks,delete O.userGroups;const F=(0,f.pA)(I,["components"],l);l.extracts.push({name:"index",path:["components"],node:F,nodeType:"others"});const G=(0,d._)(l.extracts);r.file("index.js",g),r.file("routes.jsx",await v((0,u.c)(c,"routes",["routes.jsx"])));const D=r.folder("resources"),z=D.folder("functions"),R=[],W=[];for(const e of P){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,[S.A,{imports:t}]]});const s=t.has("FN");s&&t.delete("FN");const o=[];t.size>0&&o.push(`import { ${[...t].join(", ")} } from "next-jsx/runtime";`),s&&o.push('import FN from "./index.js";'),o.length>0&&(n=`${o.join("\n")}\n\n${n}`),z.file(`${e.name}.${e.typescript?"ts":"js"}`,n),W.push(`import ${e.name} from "./${e.name}.js";`),R.push(e.name)}z.file("index.js",await v(`${W.join("\n")}\n\nconst FN = { ${R.join(",")} };\n\nexport default FN;`));const B=D.folder("menus"),U=[],H=[];for(const e of C){if(E(e),"index"===e.menuId)throw new Error('Unexpected menu id: "index"');const t=`${e.menuId}.js`;B.file(t,await v((0,u.c)(e,"menu",["resources","menus",t])));let n=e.menuId.replace(/^\d+|[^\w]+/g,"_");A.bB.has(n)&&(n=`${n}__2`),H.push(`import ${n} from "./${t}";`),U.push(n)}B.file("index.js",await v(`${H.join("\n")}\n\nexport default [${U.join(",")}]`));const q=D.folder("contracts"),K=[],L=new Set;for(const e of J){const t=e.name.replace(/^\d+|[^\w]+/g,"_");let n=2,s=t;for(;L.has(s)||A.bB.has(s)||"index"===s;)s=`${t}_${n++}`;L.add(s),q.file(`${s}.js`,await v(`export default ${JSON.stringify(e)};`)),K.push(`import ${s} from "./${s}.js";`)}q.file("index.js",await v(`${K.join("\n")}\n\nexport default [${[...L].join(",")}]`)),D.folder("i18n").file("index.js",await v(`export default ${JSON.stringify(M)};`)),D.file("meta.js",await v(`export default ${JSON.stringify(O,null,2)};`)),D.file("index.js",m),await T(G,r,[]),o.folder("mock-micro-apps").folder(t.appId).file(".gitignore","*\n!.gitignore"),o.file(".editorconfig",x),o.file(".gitignore",j),o.file("dev.config.mjs",y),o.file("declarations.d.ts",h),o.file("jsconfig.json",w),o.file("next-jsx.config.js",_.replaceAll("__APP_ID__",t.appId)),o.file("package.json",b.replaceAll("__APP_ID__",t.appId)),o.file("README.md",$.replaceAll("__PROJECT_NAME__",t.name).replaceAll("__PROJECT_HOMEPAGE__",t.appSetting.homepage));const Q=await s.generateAsync({type:"blob"});(0,a.saveAs)(Q,"project.zip")}))),customElements.define("vb-experiment.export-widgets",(0,s.createProviderClass)((async function(e){let{name:t,files:n}=e;const s=new Map,o=new(i()),r=o.folder("widgets").folder(t);for(const{path:e,content:t}of n){const n=e.split("/"),o=n.pop();let i=r,a=1;for(const e of n){const t=n.slice(0,a).join("/"),o=s.get(t);o?i=o:(i=i.folder(e),s.set(t,i)),a++}i.file(o,t)}const l=await o.generateAsync({type:"blob"});(0,a.saveAs)(l,`${t}.zip`)})))}}]);
|
|
2
|
+
//# sourceMappingURL=345.872f00f3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/345.88cb7e92.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","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.872f00f3.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","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":""}
|