create-lesa-app 0.0.1
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/CHANGELOG.md +30 -0
- package/LICENSE +21 -0
- package/README.ko.md +115 -0
- package/README.md +120 -0
- package/bin/create-lesa-app.mjs +9 -0
- package/package.json +46 -0
- package/src/apply.ts +93 -0
- package/src/assets/intro.json +1 -0
- package/src/copy.ts +81 -0
- package/src/create.ts +132 -0
- package/src/derive.ts +66 -0
- package/src/fetch-template.ts +79 -0
- package/src/flow.test.mjs +98 -0
- package/src/flow.ts +131 -0
- package/src/index.tsx +212 -0
- package/src/intro.tsx +45 -0
- package/src/ui.tsx +326 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"frames":[{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["██","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["██████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#ffffff"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#ffffff"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["████","#FFFFFF"],["███","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["███","#FB7185"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["█████","#FFFFFF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["╔══","#2DD4BF"],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["█","#FFFFFF"],["█","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██","#FFFFFF"],["█████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#ffffff"],["█","#FFFFFF"],["█","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#ffffff"],["█","#FFFFFF"],["████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["████","#FFE4E6"],["███","#FFFFFF"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["█","#FB7185"],["█████","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["████","#FFFFFF"],["██","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["█","#FFE4E6"],["█","#FFFFFF"],["║","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██","#FB7185"],["████","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█","#FDA4AF"],["████","#FFFFFF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["█","#FDA4AF"],["█","#FFFFFF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#ffffff"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFFFFF"],["███","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["███","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["█","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█","#FFFFFF"],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["██████","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],["██","#FFFFFF"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█","#FFFFFF"],["██████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFE4E6"],["███","#FFFFFF"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["███","#FB7185"],["███","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██","#FDA4AF"],["████","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["██","#FB7185"],["████","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█","#FDA4AF"],["███","#FFFFFF"],["███","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███","#FFFFFF"],["████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FFFFFF"],["█","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["████","#FFFFFF"],["█","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["██████","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["██","#FFFFFF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["████","#FFE4E6"],["███","#FFFFFF"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["█","#FB7185"],["█","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FB7185"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ",null],["█","#FFFFFF"],["█","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["████","#FDA4AF"],["█","#FFFFFF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█","#FB7185"],["███","#FFFFFF"],["█","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["█","#FB7185"],["█","#FFFFFF"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["█","#FDA4AF"],["███","#FFFFFF"],["███","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FFFFFF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["█████","#FFFFFF"],["███","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["█","#FFFFFF"],["█","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FFFFFF"],["█","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":133,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FFFFFF"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["█████","#FDA4AF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFFFFF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["██████","#FB7185"],["██","#FFFFFF"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["█","#FDA4AF"],["█","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFFFFF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]},{"ms":2000,"rows":[[],[["╔═════════════════════════════════════════════════╗","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["███████","#FB7185"],["╗","#2DD4BF"],["███████","#FB7185"],["╗","#2DD4BF"],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#a654f7"],[" ","#4effd1"],[" ","#a654f7"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔════╝","#2DD4BF"],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],["█████","#FDA4AF"],["╗","#2DD4BF"],[" ","#b26bf9"],["███████","#FDA4AF"],["╗","#2DD4BF"],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#b26bf9"],[" ","#4effd1"],[" ","#b26bf9"],["██","#FDA4AF"],["╔══╝","#2DD4BF"],[" ","#4effd1"],[" ","#b26bf9"],["╚════","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["╗","#2DD4BF"],["███████","#FFE4E6"],["║","#2DD4BF"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚══════╝╚══════╝╚══════╝╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],[" ","#a654f7"],["█████","#FB7185"],["╗","#2DD4BF"],[" ","#4effd1"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██████","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╗","#2DD4BF"],["████████","#FB7185"],["╗","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["╔══","#2DD4BF"],["██","#FB7185"],["╗","#2DD4BF"],[" ",null],["██","#FB7185"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FB7185"],["╔╝","#2DD4BF"],[" ",null],["██","#FB7185"],["║╚══","#2DD4BF"],["██","#FB7185"],["╔══╝","#2DD4BF"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["███████","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["██████","#FDA4AF"],["╔╝","#2DD4BF"],[" ",null],["█████","#FDA4AF"],["╔╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FDA4AF"],["╔══","#2DD4BF"],["██","#FDA4AF"],["║","#2DD4BF"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═══╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["╔═","#2DD4BF"],["██","#FDA4AF"],["╗","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FDA4AF"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ","#4effd1"],["██","#FFE4E6"],["║","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["╗","#2DD4BF"],[" ",null],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["██","#FFE4E6"],["║","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["╚═╝","#2DD4BF"],[" ","#4effd1"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ",null],["╚═╝","#2DD4BF"],[" ","#be82fa"],["╚═╝","#2DD4BF"],[" ","#be82fa"],["║","#b1b1b1"]],[["║","#b1b1b1"],[" ",null],["║","#b1b1b1"]],[["╚═════════════════════════════════════════════════╝","#b1b1b1"]],[],[]]}],"height":20,"width":51}
|
package/src/copy.ts
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 로컬 템플릿 폴더 → 대상 디렉터리 복사.
|
|
3
|
+
*
|
|
4
|
+
* 템플릿 레포가 private 이라 tarball 을 쓸 수 없다(사유: 템플릿 `docs/cli.md`).
|
|
5
|
+
* 배포 방식이 정해지면 이 파일만 교체한다 — 다른 모듈은 `copyTemplate` 시그니처만 안다.
|
|
6
|
+
*
|
|
7
|
+
* **복사 대상 = git 이 추적하는 파일.** 제외 목록을 손으로 들고 있으면 템플릿에 새 gitignore
|
|
8
|
+
* 항목이 생길 때마다 놓친다(실제로 `.pnpm-store`·`expo-env.d.ts`·`npmlogin.log` 를 놓쳤다).
|
|
9
|
+
* `git ls-files` 는 산출물·로컬 상태를 정의상 제외한다.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { execFile } from 'node:child_process';
|
|
13
|
+
import { access, cp, mkdir, readdir } from 'node:fs/promises';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { promisify } from 'node:util';
|
|
16
|
+
|
|
17
|
+
const run = promisify(execFile);
|
|
18
|
+
|
|
19
|
+
export class CopyError extends Error {}
|
|
20
|
+
|
|
21
|
+
/** 템플릿으로 쓸 수 있는 폴더인지 — 잘못된 경로를 조용히 복사하는 것을 막는다. */
|
|
22
|
+
export async function assertTemplate(templateDir: string): Promise<void> {
|
|
23
|
+
for (const marker of ['env-candidates.ts', 'app.config.ts', 'package.json']) {
|
|
24
|
+
try {
|
|
25
|
+
await access(path.join(templateDir, marker));
|
|
26
|
+
} catch {
|
|
27
|
+
throw new CopyError(`Not a template directory (no ${marker}): ${templateDir}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** 대상이 비어 있어야 한다. 기존 파일을 덮어쓰지 않는다. */
|
|
33
|
+
export async function assertEmptyTarget(targetDir: string): Promise<void> {
|
|
34
|
+
let entries: string[];
|
|
35
|
+
try {
|
|
36
|
+
entries = await readdir(targetDir);
|
|
37
|
+
} catch {
|
|
38
|
+
return; // 없으면 아래에서 만든다
|
|
39
|
+
}
|
|
40
|
+
if (entries.filter(name => name !== '.DS_Store').length > 0) {
|
|
41
|
+
throw new CopyError(`Target directory is not empty: ${targetDir}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** git 이 추적하는 파일 목록. `-z` 로 공백·유니코드 파일명을 안전하게 받는다. */
|
|
46
|
+
async function trackedFiles(templateDir: string): Promise<string[]> {
|
|
47
|
+
try {
|
|
48
|
+
const { stdout } = await run('git', ['-C', templateDir, 'ls-files', '-z'], {
|
|
49
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
50
|
+
});
|
|
51
|
+
const files = stdout.split('\0').filter(Boolean);
|
|
52
|
+
if (files.length === 0) throw new Error('empty');
|
|
53
|
+
return files;
|
|
54
|
+
} catch {
|
|
55
|
+
throw new CopyError(
|
|
56
|
+
`Could not list git-tracked files in the template: ${templateDir}\n` +
|
|
57
|
+
` It must be a git repo — git decides what gets copied.`
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function copyTemplate(
|
|
63
|
+
templateDir: string,
|
|
64
|
+
targetDir: string,
|
|
65
|
+
/** 진행률 — 216개쯤 되므로 진행 표시가 의미가 있다. */
|
|
66
|
+
onFile?: (copied: number, total: number) => void
|
|
67
|
+
): Promise<void> {
|
|
68
|
+
await assertTemplate(templateDir);
|
|
69
|
+
await assertEmptyTarget(targetDir);
|
|
70
|
+
|
|
71
|
+
const files = await trackedFiles(templateDir);
|
|
72
|
+
await mkdir(targetDir, { recursive: true });
|
|
73
|
+
|
|
74
|
+
let copied = 0;
|
|
75
|
+
for (const rel of files) {
|
|
76
|
+
const to = path.join(targetDir, rel);
|
|
77
|
+
await mkdir(path.dirname(to), { recursive: true });
|
|
78
|
+
await cp(path.join(templateDir, rel), to);
|
|
79
|
+
onFile?.(++copied, files.length);
|
|
80
|
+
}
|
|
81
|
+
}
|
package/src/create.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 생성 오케스트레이션 — 복사 → 치환 → git init → 안내.
|
|
3
|
+
* 프롬프트(ink)와 분리해서 UI 없이도 테스트할 수 있게 둔다.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { execFile } from 'node:child_process';
|
|
7
|
+
import { rm } from 'node:fs/promises';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { promisify } from 'node:util';
|
|
10
|
+
|
|
11
|
+
import { applyEnvCandidates, applyEnvFile } from './apply.ts';
|
|
12
|
+
import { assertEmptyTarget, copyTemplate } from './copy.ts';
|
|
13
|
+
import { derive } from './derive.ts';
|
|
14
|
+
import { fetchTemplate } from './fetch-template.ts';
|
|
15
|
+
|
|
16
|
+
import type { AppInput } from './derive.ts';
|
|
17
|
+
|
|
18
|
+
const run = promisify(execFile);
|
|
19
|
+
|
|
20
|
+
/** 진행 표시용 단계 이름 — UI 가 이 순서대로 목록을 그린다. */
|
|
21
|
+
export const CREATE_STEPS = [
|
|
22
|
+
'Get template files',
|
|
23
|
+
'Apply env-candidates.ts',
|
|
24
|
+
'Write .env',
|
|
25
|
+
'Git init',
|
|
26
|
+
] as const;
|
|
27
|
+
|
|
28
|
+
export type CreateProgress = {
|
|
29
|
+
/** `CREATE_STEPS` 안의 위치. */
|
|
30
|
+
index: number;
|
|
31
|
+
/** 그 단계의 세부 진행(원격 다운로드 등). */
|
|
32
|
+
note?: string;
|
|
33
|
+
/** 이 단계가 건너뛰어졌는지(예: Team ID 를 안 받으면 `.env` 를 안 만든다). */
|
|
34
|
+
skipped?: boolean;
|
|
35
|
+
/** 파일 복사처럼 셀 수 있는 단계의 진행률. */
|
|
36
|
+
done?: number;
|
|
37
|
+
total?: number;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export type CreateOptions = AppInput & {
|
|
41
|
+
/** 비어 있으면 GitHub 에서 tarball 을 받는다. */
|
|
42
|
+
templateDir: string;
|
|
43
|
+
targetDir: string;
|
|
44
|
+
/** 진행 상황. ink 쪽에서는 상태 업데이트로 바꿔 넘긴다. */
|
|
45
|
+
onStep?: (progress: CreateProgress) => void;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export type CreateResult = {
|
|
49
|
+
targetDir: string;
|
|
50
|
+
fields: ReturnType<typeof derive>;
|
|
51
|
+
nextSteps: string[];
|
|
52
|
+
/** 끝난 뒤 무엇이 됐는지 보여주는 영수증 — 생성이 300ms 라 진행 표시는 스쳐 지나간다. */
|
|
53
|
+
receipt: { fileCount: number; wroteEnvFile: boolean; source: 'local' | 'github' };
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
async function gitInit(dir: string): Promise<void> {
|
|
57
|
+
await run('git', ['-C', dir, 'init', '-q']);
|
|
58
|
+
await run('git', ['-C', dir, 'add', '-A']);
|
|
59
|
+
// 커밋 서명·author 가 없는 환경에서도 실패하지 않게 -c 로 넘긴다.
|
|
60
|
+
await run('git', [
|
|
61
|
+
'-C',
|
|
62
|
+
dir,
|
|
63
|
+
'-c',
|
|
64
|
+
'user.name=create-lesa-app',
|
|
65
|
+
'-c',
|
|
66
|
+
'user.email=noreply@localhost',
|
|
67
|
+
'commit',
|
|
68
|
+
'-q',
|
|
69
|
+
'-m',
|
|
70
|
+
'chore: initial commit from create-lesa-app',
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* 실패하면 만든 디렉터리를 지운다 — 반쯤 만들어진 상태를 남기지 않는다.
|
|
76
|
+
* 단 `targetDir` 이 원래 있었으면(비어 있었을 뿐) 지우지 않고 내용만 비운다.
|
|
77
|
+
*/
|
|
78
|
+
export async function createApp(options: CreateOptions): Promise<CreateResult> {
|
|
79
|
+
const { appleTeamId, displayName, onStep, slug, targetDir, templateDir } = options;
|
|
80
|
+
const step = onStep ?? (() => undefined);
|
|
81
|
+
const fields = derive({ displayName, slug });
|
|
82
|
+
|
|
83
|
+
let copied = false;
|
|
84
|
+
let fileCount = 0;
|
|
85
|
+
try {
|
|
86
|
+
step({ index: 0 });
|
|
87
|
+
if (templateDir) {
|
|
88
|
+
await copyTemplate(templateDir, targetDir, (done, total) => {
|
|
89
|
+
fileCount = total;
|
|
90
|
+
step({ done, index: 0, total });
|
|
91
|
+
});
|
|
92
|
+
} else {
|
|
93
|
+
// 원격은 진행률을 알 수 없다 — 단계 메시지만 바꾼다.
|
|
94
|
+
await assertEmptyTarget(targetDir);
|
|
95
|
+
await fetchTemplate(targetDir, message => step({ index: 0, note: message }));
|
|
96
|
+
}
|
|
97
|
+
copied = true;
|
|
98
|
+
|
|
99
|
+
step({ index: 1 });
|
|
100
|
+
await applyEnvCandidates(targetDir, fields);
|
|
101
|
+
|
|
102
|
+
step({ index: 2, skipped: !appleTeamId });
|
|
103
|
+
if (appleTeamId) await applyEnvFile(targetDir, appleTeamId);
|
|
104
|
+
|
|
105
|
+
step({ index: 3 });
|
|
106
|
+
await gitInit(targetDir);
|
|
107
|
+
step({ index: CREATE_STEPS.length });
|
|
108
|
+
} catch (error) {
|
|
109
|
+
if (copied) {
|
|
110
|
+
await rm(targetDir, { force: true, recursive: true }).catch(() => undefined);
|
|
111
|
+
}
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const name = path.basename(targetDir);
|
|
116
|
+
return {
|
|
117
|
+
fields,
|
|
118
|
+
receipt: {
|
|
119
|
+
fileCount,
|
|
120
|
+
source: templateDir ? 'local' : 'github',
|
|
121
|
+
wroteEnvFile: Boolean(appleTeamId),
|
|
122
|
+
},
|
|
123
|
+
nextSteps: [
|
|
124
|
+
`cd ${name} && pnpm install`,
|
|
125
|
+
'pnpm ios:development (or pnpm android:development)',
|
|
126
|
+
'Replace the icon and splash in assets/ — README "Make it yours" §3',
|
|
127
|
+
'Drop your config files into firebase/ to turn push on — docs/push.md',
|
|
128
|
+
'grep -rn "TODO(앱)" src — the spots your project fills in',
|
|
129
|
+
],
|
|
130
|
+
targetDir,
|
|
131
|
+
};
|
|
132
|
+
}
|
package/src/derive.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* slug 하나에서 env-candidates.ts 의 전 필드를 파생한다. 순수 함수 — 여기가 유일한 논리다.
|
|
3
|
+
* 파생 규칙의 근거는 템플릿 `docs/cli.md` "파생 규칙".
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export type AppInput = {
|
|
7
|
+
/** 영문 소문자 식별자. Xcode 프로젝트명·스킴·PRODUCT_NAME 이 여기서 나온다. */
|
|
8
|
+
slug: string;
|
|
9
|
+
/** 홈 화면에 보일 이름. 한글이면 채우고, 영문이면 빈 문자열(템플릿이 name 을 그대로 쓴다). */
|
|
10
|
+
displayName: string;
|
|
11
|
+
/** .env 의 APP_BUILD_ONLY_APPLE_TEAM_ID. 비우면 Xcode 자동 서명. */
|
|
12
|
+
appleTeamId: string;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export type PerEnv = { development: string; preview: string; production: string };
|
|
16
|
+
|
|
17
|
+
export type DerivedFields = {
|
|
18
|
+
name: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
slug: string;
|
|
21
|
+
scheme: PerEnv;
|
|
22
|
+
bundleId: PerEnv;
|
|
23
|
+
package: PerEnv;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
|
|
27
|
+
|
|
28
|
+
/** 입력 검증 — 통과하지 못하면 이유를 돌려준다(호출부가 다시 묻는다). */
|
|
29
|
+
export function validateSlug(slug: string): string | null {
|
|
30
|
+
if (!slug) return 'Enter a slug.';
|
|
31
|
+
if (!SLUG_PATTERN.test(slug)) {
|
|
32
|
+
return 'Start with a lowercase letter; use only lowercase letters, digits and hyphens.';
|
|
33
|
+
}
|
|
34
|
+
// reverse-domain 세그먼트로 들어가므로 하이픈으로 끝나면 `com.lesa-app-.development` 가 된다.
|
|
35
|
+
if (slug.endsWith('-')) return 'Cannot end with a hyphen.';
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* production 은 접미사가 없다 — 템플릿 자리표시(`write.your.bundlename`)와 같은 컨벤션.
|
|
41
|
+
* bundleId 충돌 검증은 하지 않는다(생성 후 env-candidates.ts 에서 바꾼다).
|
|
42
|
+
*/
|
|
43
|
+
export function derive({ slug, displayName }: Omit<AppInput, 'appleTeamId'>): DerivedFields {
|
|
44
|
+
// Android package 는 하이픈을 못 쓴다(문자·숫자·밑줄만, 점으로 구분) — SDK 57 app config 문서.
|
|
45
|
+
// iOS bundleId 는 허용하지만 둘을 같게 두려고 같은 값을 쓴다. scheme 은 하이픈이 허용된다.
|
|
46
|
+
const reverseDomain = `com.${slug.replaceAll('-', '')}`;
|
|
47
|
+
const identifiers: PerEnv = {
|
|
48
|
+
development: `${reverseDomain}.development`,
|
|
49
|
+
preview: `${reverseDomain}.preview`,
|
|
50
|
+
production: reverseDomain,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
name: slug,
|
|
55
|
+
displayName,
|
|
56
|
+
slug,
|
|
57
|
+
scheme: {
|
|
58
|
+
development: `${slug}-dev`,
|
|
59
|
+
preview: `${slug}-preview`,
|
|
60
|
+
production: slug,
|
|
61
|
+
},
|
|
62
|
+
bundleId: identifiers,
|
|
63
|
+
// Android package 는 iOS bundleId 와 같다 (참조 앱 KR/JP 동일).
|
|
64
|
+
package: identifiers,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 템플릿 tarball 다운로드 → 추출. 로컬 템플릿 폴더가 없을 때 쓴다.
|
|
3
|
+
*
|
|
4
|
+
* GitHub 의 `/archive/` 는 **그 ref 에서 git 이 추적하는 파일**을 담는다 — 로컬 경로의
|
|
5
|
+
* `git ls-files` 와 같은 집합이다. 그래서 두 경로의 결과가 같다.
|
|
6
|
+
*
|
|
7
|
+
* 태그에 고정한다. `master` 로 받으면 어제 만든 프로젝트와 오늘 만든 프로젝트가 달라진다.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { execFile } from 'node:child_process';
|
|
11
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
12
|
+
import { tmpdir } from 'node:os';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import { promisify } from 'node:util';
|
|
15
|
+
|
|
16
|
+
const run = promisify(execFile);
|
|
17
|
+
|
|
18
|
+
export const TEMPLATE_REPO = 'LESANF/react-native-template-lesa';
|
|
19
|
+
/** 템플릿을 릴리즈하면 이 값을 올린다. */
|
|
20
|
+
export const TEMPLATE_REF = 'v0.0.1';
|
|
21
|
+
|
|
22
|
+
export class FetchError extends Error {}
|
|
23
|
+
|
|
24
|
+
function archiveUrl(repo: string, ref: string): string {
|
|
25
|
+
const kind = /^v?\d+\.\d+\.\d+/.test(ref) ? 'tags' : 'heads';
|
|
26
|
+
return `https://codeload.github.com/${repo}/tar.gz/refs/${kind}/${ref}`;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* tarball 을 받아 `targetDir` 에 푼다. 최상위 디렉터리(`repo-ref/`)는 벗긴다.
|
|
31
|
+
* `tar` 는 macOS·Linux 기본이고 Windows 10+ 에도 bsdtar 로 있다.
|
|
32
|
+
*/
|
|
33
|
+
export async function fetchTemplate(
|
|
34
|
+
targetDir: string,
|
|
35
|
+
onStep?: (message: string) => void,
|
|
36
|
+
repo = TEMPLATE_REPO,
|
|
37
|
+
ref = TEMPLATE_REF
|
|
38
|
+
): Promise<void> {
|
|
39
|
+
const url = archiveUrl(repo, ref);
|
|
40
|
+
onStep?.(`downloading ${repo}@${ref}`);
|
|
41
|
+
|
|
42
|
+
let body: ArrayBuffer;
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetch(url, { redirect: 'follow' });
|
|
45
|
+
if (!response.ok) {
|
|
46
|
+
throw new FetchError(
|
|
47
|
+
response.status === 404
|
|
48
|
+
? `Template not found: ${repo}@${ref}\n The repository may be private, or the ref does not exist.`
|
|
49
|
+
: `Download failed (HTTP ${response.status}): ${url}`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
body = await response.arrayBuffer();
|
|
53
|
+
} catch (error) {
|
|
54
|
+
if (error instanceof FetchError) throw error;
|
|
55
|
+
throw new FetchError(
|
|
56
|
+
`Could not reach GitHub. Check your connection, or pass --template <path> to use a local copy.\n ${
|
|
57
|
+
error instanceof Error ? error.message : String(error)
|
|
58
|
+
}`
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const work = await mkdtemp(path.join(tmpdir(), 'create-lesa-app-'));
|
|
63
|
+
const archive = path.join(work, 'template.tar.gz');
|
|
64
|
+
try {
|
|
65
|
+
await writeFile(archive, Buffer.from(body));
|
|
66
|
+
await mkdir(targetDir, { recursive: true });
|
|
67
|
+
onStep?.('extracting');
|
|
68
|
+
// --strip-components=1 이 `<repo>-<ref>/` 최상위를 벗긴다.
|
|
69
|
+
await run('tar', ['-xzf', archive, '-C', targetDir, '--strip-components=1']);
|
|
70
|
+
} catch (error) {
|
|
71
|
+
throw new FetchError(
|
|
72
|
+
`Could not extract the template archive. Is \`tar\` available?\n ${
|
|
73
|
+
error instanceof Error ? error.message : String(error)
|
|
74
|
+
}`
|
|
75
|
+
);
|
|
76
|
+
} finally {
|
|
77
|
+
await rm(work, { force: true, recursive: true }).catch(() => undefined);
|
|
78
|
+
}
|
|
79
|
+
}
|