drizzle-kit 0.9.8 → 0.9.12
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/drizzle.js +1 -1
- package/drizzle.js.map +1 -1
- package/package.json +7 -19
package/drizzle.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
(()=>{"use strict";var __webpack_modules__={194:(e,t,a)=>{a.r(t),a.d(t,{diffForRenamed:()=>l,differ:()=>r});const n=require("json-diff");function l(e){return e.map((e=>{const t=e.from||e.old,a=e.to||e.new;return[{...t,name:a.name},a]})).map((e=>{const t=(0,n.diff)(e[0],e[1]);return t.name=e[0].name,o(t)}))}function r(e,t){const a=(0,n.diff)(e,t);a.tables=a.tables?a.tables:{},a.enums=a.enums?a.enums:{};const l=Object.entries(a.tables),r=l.filter((e=>e[0].includes("__added"))).map((e=>e[1])).map((e=>({...e,indexes:Object.entries(e.indexes).map((e=>{const t=e[1],a=t.name,n=Object.values(t.columns).map((e=>e.name));return{name:a,columns:n}}))}))),d=l.filter((e=>e[0].includes("__deleted"))).map((e=>e[1])),s=Object.entries(a.enums),u=s.filter((e=>e[0].includes("__added"))).map((e=>e[1])).map((e=>{const t=Object.entries(e.values).map((e=>e[1]));return{name:e.name,values:t}})),i=s.filter((e=>e[0].includes("__deleted"))).map((e=>e[1])).map((e=>{const t=Object.entries(e.values).map((e=>e[1]));return{name:e.name,values:t}})),c=s.filter((e=>!(e[0].includes("__added")||e[0].includes("__deleted")))).map((e=>{const t=e[1].values,a=Object.entries(t).filter((e=>e[0].includes("__added"))).map((e=>e[1])),n=Object.entries(t).filter((e=>e[0].includes("__deleted"))).map((e=>e[1]));return{name:e[0],addedValues:a,deletedValues:n}}));return{addedTables:r,deletedTables:d,alteredTablesWithColumns:Object.keys(a.tables).filter((e=>!(e.includes("__added")||e.includes("__deleted")))).map((e=>({name:e,...a.tables[e]}))).map((e=>o(e))),addedEnums:u,deletedEnums:i,alteredEnums:c}}const o=e=>{const t=e.columns,a=Object.keys(t).filter((e=>e.includes("__added"))).map((e=>({...t[e]}))),n=Object.keys(t).filter((e=>e.includes("__deleted"))).map((e=>({...t[e]}))),l=Object.keys(t).filter((e=>!(e.includes("__deleted")||e.includes("__added")))).map((e=>({name:e,...t[e]}))),r=Object.values(e.indexes__deleted||{}).map((e=>({name:e.name,columns:Object.values(e.columns).map((e=>e.name))}))).concat(Object.keys(e.indexes||{}).filter((e=>e.includes("__deleted"))).map((t=>{const a=e.indexes[t],n=a.name,l=Object.values(a.columns).map((e=>e.name));return{name:n,columns:l}}))),o=Object.values(e.indexes__added||{}).map((e=>({name:e.name,columns:Object.values(e.columns).map((e=>e.name))}))).concat(Object.keys(e.indexes||{}).filter((e=>e.includes("__added"))).map((t=>{const a=e.indexes[t],n=a.name,l=Object.values(a.columns).map((e=>e.name));return{name:n,columns:l}})));return{name:e.name,deleted:n,added:a,altered:l,addedIndexes:o,deletedIndexes:r}}},845:(e,t,a)=>{a.r(t),a.d(t,{Types:()=>n,prepareCreateTableJson:()=>l,prepareDropTableJson:()=>r,prepareRenameTableJson:()=>o,prepareCreateEnumJson:()=>d,prepareAddValuesToEnumJson:()=>s,prepareAlterTableColumnsJson:()=>u,prepareCreateIndexesJson:()=>f,prepareDropIndexesJson:()=>p});class n{static createTable="create_table";static dropTable="drop_table";static renameTable="rename_table";static alterTableDropColumn="alter_table_drop_column";static alterTableAddColumn="alter_table_add_column";static alterTableAlterColumnSetType="alter_table_alter_column_set_type";static alterTableAlterColumnSetDefault="alter_table_alter_column_set_default";static alterTableAlterColumnDropDefault="alter_table_alter_column_drop_default";static alterTableAlterColumnSetNotNull="alter_table_alter_column_set_notnull";static alterTableAlterColumnDropNotNull="alter_table_alter_column_drop_notnull";static createIndex="create_index";static dropIndex="drop_index";static createTypeEnum="create_type_enum";static alterTypeAddValue="alter_type_add_value"}const l=e=>{const{name:t,columns:a}=e,l=Object.keys(a).map((e=>({...a[e]})));return{type:n.createTable,tableName:t,columns:l}},r=e=>({type:n.dropTable,tableName:e.name}),o=(e,t)=>({type:n.renameTable,from:e.name,to:t.name}),d=(e,t)=>({type:n.createTypeEnum,enumName:e,values:t}),s=(e,t)=>t.map((t=>({type:n.alterTypeAddValue,enumName:e,enumValue:t}))),u=e=>{const t=e.name,a=[],n=i(t,e.deleted),l=c(t,e.created),r=m(t,e.altered);return a.push(...n),a.push(...l),a.push(...r),a},i=(e,t)=>t.map((t=>({type:n.alterTableDropColumn,tableName:e,columnName:t.name}))),c=(e,t)=>t.map((t=>({type:n.alterTableAddColumn,tableName:e,column:t}))),m=(e,t)=>{let a=[];for(const l of t){const t=l.name;if(l.type){const{__new:r}=l.type;a.push({type:n.alterTableAlterColumnSetType,tableName:e,columnName:t,newDataType:r})}if(l.defaultValue||l.defaultValue__added){const r=l.defaultValue.__new|l.defaultValue__added;a.push({type:n.alterTableAlterColumnSetDefault,tableName:e,columnName:t,newDefault:r})}l.defaultValue__deleted&&a.push({type:n.alterTableAlterColumnDropDefault,tableName:e,columnName:t}),(l.notNull__added||l.notNull&&l.notNull.__new)&&a.push({type:n.alterTableAlterColumnSetNotNull,tableName:e,columnName:t}),(l.notNull__deleted||l.notNull&&!l.notNull.__new)&&a.push({type:n.alterTableAlterColumnDropNotNull,tableName:e,columnName:t})}return a},f=(e,t)=>t.map((t=>({type:n.createIndex,tableName:e,indexName:t.name,indexValue:t.columns.join(", ")}))),p=(e,t)=>t.map((t=>({type:n.dropIndex,tableName:e,indexName:t.name})))},373:(e,t,a)=>{a.r(t),a.d(t,{fromJson:()=>o,prepareDeleteColumns:()=>d,prepareCreateColumns:()=>s,prepareAlterColumns:()=>u,prepareCreateTable:()=>i,prepareCreateIndex:()=>c,prepareDropIndex:()=>m,prepareRenameTable:()=>f,prepareDropTable:()=>p,prepareCreateEnum:()=>_,prepareAddValuesToEnum:()=>b});var n=a(845);class l{constructor(e){this.type=e}can(e){return this.type===e}convert(e){throw Error("override the convert mothod")}}const r=[];r.push(new class extends l{constructor(){super(n.Types.createTable)}convert(e){const{tableName:t,columns:a}=e,n=Object.keys(a).map((e=>({...a[e]})));let l="";l+=`CREATE TABLE ${t} (\n`;for(const e of n){const t=e.primaryKey?"PRIMARY KEY":"",a=e.notNull?"NOT NULL":"",n=e.defaultValue?`DEFAULT '${e.defaultValue}'`:"";l+="\t"+`${e.name} ${e.type} ${t} ${n} ${a}`.replace(/ +/g," ").trim()+",\n"}return l+=");",l}}),r.push(new class extends l{constructor(){super(n.Types.createTypeEnum)}convert(e){const{enumName:t,values:a}=e;let n="(";return n+=a.map((e=>`'${e}'`)).join(", "),n+=")",`CREATE TYPE ${t} AS ENUM${n};`}}),r.push(new class extends l{constructor(){super(n.Types.dropTable)}convert(e){const{tableName:t}=e;return`DROP TABLE ${t}`}}),r.push(new class extends l{constructor(){super(n.Types.renameTable)}convert(e){const{from:t,to:a}=e;return`ALTER TABLE ${t} RENAME TO ${a}`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableDropColumn)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} DROP COLUMN IF EXISTS ${a};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAddColumn)}convert(e){const{tableName:t,column:a}=e,{name:n,type:l,defaultValue:r,notNull:o}=a;return`ALTER TABLE ${t} ADD COLUMN ${n} ${l}${r?` DEFAULT ${r}`:""}${o?" NOT NULL":""}`.trim()+";"}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnSetType)}convert(e){const{tableName:t,columnName:a,newDataType:n}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} SET DATA TYPE ${n};`}}),r.push(new class extends l{constructor(){super(n.Types.createIndex)}convert(e){const{tableName:t,indexName:a,indexValue:n}=e;return`CREATE INDEX ${a} ON ${t} (${n});`}}),r.push(new class extends l{constructor(){super(n.Types.dropIndex)}convert(e){const{indexName:t}=e;return`DROP INDEX IF EXISTS ${t};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTypeAddValue)}convert(e){const{enumName:t,enumValue:a}=e;return`ALTER TYPE ${t} ADD VALUE ${a};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnSetNotNull)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} SET NOT NULL;`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnDropNotNull)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} DROP NOT NULL;`}});const o=e=>e.map((e=>{const t=r.filter((t=>t.can(e.type))),a=1===t.length?t[0]:void 0;return a?a.convert(e):(console.log("no convertor:",e.type),"dry run")})),d=(e,t)=>{let a="";for(const n of t)a+=`ALTER TABLE ${e} DROP COLUMN IF EXISTS ${n.name};`,a+="\n";return a.trim()},s=(e,t)=>{let a="";for(const n of t){const{name:t,type:l,defaultValue:r,notNull:o}=n;a+=`ALTER TABLE ${e} ADD COLUMN ${t} ${l} ${r?`DEFAULT ${r}`:""} ${o?"NOT NULL":""}`.trim()+";",a+="\n"}return a.trim()},u=(e,t)=>{let a="";for(const n of t){const{name:t}=n;if(n.type){const{__new:l}=n.type;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DATA TYPE ${l};`,a+="\n"}if(n.defaultValue){const{__new:l}=n.defaultValue;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DEFAULT ${l};`,a+="\n"}if(n.defaultValue__added&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DEFAULT ${n.defaultValue__added};`,a+="\n"),n.defaultValue__deleted&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} DROP DEFAULT;`,a+="\n"),n.notNull){const{__new:l}=n.notNull;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} ${l?"SET NOT NULL":"DROP NOT NULL"};`,a+="\n"}n.notNull__added&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET NOT NULL;`,a+="\n"),n.notNull__deleted&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} DROP NOT NULL;`,a+="\n")}return a.trim()},i=e=>{const{name:t,columns:a}=e,n=Object.keys(a).map((e=>({...a[e]})));let l="";l+=`CREATE TABLE ${t} (\n`;for(const e of n){const t=e.primaryKey?"PRIMARY KEY":"",a=e.notNull?"NOT NULL":"",n=e.defaultValue?`DEFAULT '${e.defaultValue}'`:"";l+="\t"+`${e.name} ${e.type} ${t} ${n} ${a}`.replace(/ +/g," ").trim()+",\n"}return l+=");",l},c=(e,t)=>{let a="";for(const n of t){const{name:t,columns:l}=n;a+=`CREATE INDEX ${t} ON ${e} (${l.join(", ")});`,a+="\n"}return a.trim()},m=(e,t)=>{let a="";for(const e of t){const{name:t}=e;a+=`DROP INDEX IF EXISTS ${t};`,a+="\n"}return a.trim()},f=(e,t)=>`ALTER TABLE ${e.name} RENAME TO ${t.name}`,p=e=>{const{name:t}=e;return`DROP TABLE ${t}`},_=(e,t)=>{let a="(";return a+=Object.values(t).map((e=>`'${e}'`)).join(", "),a+=")",`CREATE TYPE ${e} AS ENUM${a};`},b=(e,t)=>{let a="";for(const n in t)a+=`ALTER TYPE ${e} ADD VALUE ${t[n]};`,a+="\n";return a.trim()}},512:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=a(304),r=n(a(492));l.program.command("migrate").alias("mg").description("Migration").action(r.default).command("start").description("Start migration").action(r.default)},492:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=a(282),s=o(a(147)),u=o(a(793)),i=r(a(194)),c=o(a(572)),m=a(845),f=a(373);t.default=async()=>{const e=u.default.load(s.default.readFileSync("drizzle.config.yml",{encoding:"utf-8"})),t=e.migrationRootFolder||"drizzle",a=e.dataFolder,{prev:n,cur:l}=await(0,d.task)("preparing data schema json snapshot",(async({setTitle:e})=>(0,c.default)(t,a))),r=await(0,d.task)("preparing schemas diff",(async({setTitle:e})=>i.differ(n,l))),{created:o,renamed:p,deleted:_}=await(0,d.promptTablesConflicts)({newTables:r.addedTables,missingTables:r.deletedTables}),b=[],E=o.map((e=>(0,m.prepareCreateTableJson)(e))),T=o.map((e=>(0,m.prepareCreateIndexesJson)(e.name,e.indexes))).flat(),v=_.map((e=>(0,m.prepareDropTableJson)(e))),y=p.map((e=>(0,m.prepareRenameTableJson)(e.old,e.new))),h=i.diffForRenamed(p),C=r.alteredTablesWithColumns.concat(h),I=[];for(const e of C){const t=await(0,d.promptColumnsConflicts)(e),{deleted:a,added:n,...l}=e;I.push({...l,...t})}const N=I.map((e=>(0,m.prepareAlterTableColumnsJson)(e))).flat(),g=I.map((e=>(0,m.prepareCreateIndexesJson)(e.name,e.addedIndexes||{}))).flat(),x=I.map((e=>(0,m.prepareDropIndexesJson)(e.name,e.deletedIndexes||{}))).flat(),A=r.addedEnums.map((e=>(0,m.prepareCreateEnumJson)(e.name,e.values))),O=r.alteredEnums.map((e=>(0,m.prepareAddValuesToEnumJson)(e.name,e.addedValues))).flat();b.push(...A),b.push(...O),b.push(...E),b.push(...T),b.push(...v),b.push(...y),b.push(...N),b.push(...g),b.push(...x);const D=(0,f.fromJson)(b);console.log(D.join("\n"));const L=(new Date).toISOString(),S=`./${t}/${L}`;s.default.mkdirSync(S),s.default.writeFileSync(`${S}/snapshot.json`,JSON.stringify(l,null,2)),s.default.writeFileSync(`${S}/migration.sql`,D.join("\n"))}},560:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(689)),r=a(259);t.default=({componentsList:e})=>((0,r.useSnapshot)(e),l.default.createElement(l.default.Fragment,null,e.map(((e,t)=>({...e,key:t})))))},613:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=a(82),r=n(a(689)),o=n(a(560));t.default=e=>{const t=(0,l.render)(r.default.createElement(o.default,{componentsList:e}));return{remove(){t.rerender(null),t.unmount(),t.clear(),t.cleanup()}}}},243:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=o(a(689)),s=a(82),u=o(a(138)),i=r(a(164)),c=a(456),m=o(a(454)),f=a(313),p=o(a(234));t.default=({onDone:e,tableWithColumns:t})=>{const[a,n]=(0,c.useMachine)((0,p.default)({tableWithColumns:t})),{tableName:l,addedColumns:r,deletedColumns:o,missingItemIndex:_,created:b,renamed:E,deleted:T}=a.context,v=e=>{n({type:"CHOICE_ITEM",itemIndex:e.value})},y=e=>{n({type:"CHOICE_NEW_ITEM",itemIndex:e.value})},h=e=>{n({type:e.value})},C=e=>{n({type:e.value})},I=()=>{if(a.matches("table"))return d.default.createElement(d.default.Fragment,null,d.default.createElement(s.Box,{display:"flex",flexDirection:"column"},d.default.createElement(s.Box,{display:"flex"},d.default.createElement(s.Box,{flexDirection:"column"},d.default.createElement(i.Header,null,`Table "${l}" missing columns:`),d.default.createElement(u.default,{items:o.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:v})),!!r?.length&&d.default.createElement(s.Box,{flexDirection:"column",paddingLeft:5},d.default.createElement(i.Header,null,"New tables:"),d.default.createElement(s.Box,{display:"flex",flexDirection:"column"},r.map((({name:e},t)=>d.default.createElement(s.Text,{key:e+t},e))))))));if(a.matches("action.actionChoice")){const e=r.length?f.actions:f.actions.filter((({value:e})=>e!==f.Action.RENAME));return d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${o[_]?.name} is:`),d.default.createElement(u.default,{items:e,onSelect:h}))}return a.matches("confirmationDelete")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"!!! Data in table will be lost !!!"),d.default.createElement(s.Text,null,"Are you sure?"),d.default.createElement(u.default,{items:f.confirmations,onSelect:C})):a.matches("confirmationRename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"Are you sure?"),d.default.createElement(u.default,{items:f.confirmations,onSelect:C})):a.matches("action.rename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${o[_]?.name} was renamed to:`),d.default.createElement(u.default,{items:r.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:y})):(a.matches("done")&&e({created:b,renamed:E,deleted:T}),d.default.createElement(d.default.Fragment,null))};return T.length||E.length||b.length?d.default.createElement(s.Box,{flexDirection:"column",margin:1},d.default.createElement(s.Box,{flexDirection:"column",marginBottom:0},d.default.createElement(i.Header,null,`${l} columns:`),d.default.createElement(i.default,{data:(0,m.default)([{title:"Deleted",values:T},{title:"Renamed",values:E},{title:"Created",values:b}])})),I()):I()}},60:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=o(a(689)),s=a(82),u=o(a(138)),i=r(a(164)),c=a(456),m=o(a(761)),f=o(a(454)),p=a(313);t.default=({onDone:e,newTables:t,missingTables:a})=>{const[n,l]=(0,c.useMachine)((0,m.default)({missingTables:a,newTables:t})),{missingItemIndex:r,newTables:o,missingTables:_,createdTables:b,renamedTables:E,deletedTables:T}=n.context,v=e=>{l({type:"CHOICE_ITEM",itemIndex:e.value})},y=e=>{l({type:"CHOICE_NEW_ITEM",itemIndex:e.value})},h=e=>{l({type:e.value})},C=e=>{l({type:e.value})},I=()=>{if(n.matches("table"))return d.default.createElement(d.default.Fragment,null,d.default.createElement(s.Box,{display:"flex",flexDirection:"column"},d.default.createElement(s.Box,{display:"flex"},d.default.createElement(s.Box,{flexDirection:"column"},d.default.createElement(i.Header,null,"Missing tables:"),d.default.createElement(u.default,{items:_.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:v})),!!o?.length&&d.default.createElement(s.Box,{flexDirection:"column",paddingLeft:5},d.default.createElement(i.Header,null,"New tables:"),d.default.createElement(s.Box,{display:"flex",flexDirection:"column"},o.map((({name:e},t)=>d.default.createElement(s.Text,{key:e+t},e))))))));if(n.matches("action.actionChoice")){const e=o.length?p.actions:p.actions.filter((({value:e})=>e!==p.Action.RENAME));return d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${_[r]?.name} is:`),d.default.createElement(u.default,{items:e,onSelect:h}))}return n.matches("confirmationDelete")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"!!! Data in table will be lost !!!"),d.default.createElement(s.Text,null,"Are you sure?"),d.default.createElement(u.default,{items:p.confirmations,onSelect:C})):n.matches("confirmationRename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"Are you sure?"),d.default.createElement(u.default,{items:p.confirmations,onSelect:C})):n.matches("action.rename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${_[r]?.name} was renamed to:`),d.default.createElement(u.default,{items:o.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:y})):(n.matches("done")&&e({created:b,renamed:E,deleted:T}),d.default.createElement(d.default.Fragment,null))};return T.length||E.length||b.length?d.default.createElement(s.Box,{flexDirection:"column",margin:1},d.default.createElement(s.Box,{flexDirection:"column",marginBottom:0},d.default.createElement(i.Header,null,"Tables: "),d.default.createElement(i.default,{data:(0,f.default)([{title:"Deleted",values:T},{title:"Renamed",values:E},{title:"Created",values:b}])})),I()):I()}},808:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=r(a(689)),s=a(82),u=o(a(618));var i;!function(e){e[e.IN_PROGRESS=0]="IN_PROGRESS",e[e.SUCCESS=1]="SUCCESS",e[e.FAIL=2]="FAIL"}(i||(i={})),t.default=e=>{const{func:t,onDone:a,titleStr:n}=e,[l,r]=(0,d.useState)(n),[o,c]=(0,d.useState)(i.IN_PROGRESS),[m,f]=(0,d.useState)(null);return(0,d.useEffect)((()=>{(async()=>{try{const e=await t({setTitle:r,setError:f});c(i.SUCCESS),a(e)}catch(e){f(e),c(i.FAIL)}})()}),[]),d.default.createElement(s.Box,{flexDirection:"row"},d.default.createElement(s.Box,{marginRight:1},o===i.IN_PROGRESS?d.default.createElement(s.Text,null,"[",d.default.createElement(u.default,{type:"dots"}),"]"):o===i.SUCCESS?d.default.createElement(s.Text,null,"[",d.default.createElement(s.Text,{color:"green"},"✓"),"]"):d.default.createElement(s.Text,null,"[",d.default.createElement(s.Text,{color:"red"},"×"),"]"),o===i.FAIL?d.default.createElement(s.Text,null,l,d.default.createElement(s.Newline,null),d.default.createElement(s.Text,{color:"red"},m.message)):d.default.createElement(d.default.Fragment,null,d.default.createElement(s.Text,null,l))))}},282:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.promptColumnsConflicts=t.promptTablesConflicts=t.task=void 0;const l=n(a(689)),r=a(259),o=n(a(808)),d=n(a(613)),s=n(a(60)),u=n(a(243)),i=(0,r.proxy)([]);let c;const m=()=>{c||(c=(0,d.default)(i),i.length=0)};t.task=(e,t)=>new Promise((a=>{m(),i.push(l.default.createElement(o.default,{titleStr:e,func:t,onDone:e=>a(e)}))})),t.promptTablesConflicts=({missingTables:e,newTables:t})=>new Promise((a=>{m(),i.push(l.default.createElement(s.default,{onDone:e=>a(e),missingTables:e,newTables:t}))})),t.promptColumnsConflicts=e=>new Promise((t=>{m(),i.push(l.default.createElement(u.default,{onDone:e=>t(e),tableWithColumns:e}))}))},234:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=a(522);t.default=e=>(0,n.createMachine)({id:"resolveColumns",initial:"table",context:{tableName:e.tableWithColumns.name,addedColumns:e.tableWithColumns.added,deletedColumns:e.tableWithColumns.deleted,missingItemIndex:0,newItemIndex:0,created:[],renamed:[],deleted:[]},states:{table:{entry:(0,n.send)({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingColumnsResolved",actions:["resolveRemaining"]},{target:"done",cond:"isNewColumnsResolved",actions:["resolveMissing"]}],CHOICE_ITEM:{target:"action",actions:["choseItem"]}}},action:{initial:"actionChoice",states:{actionChoice:{on:{DELETE:"#resolveColumns.confirmationDelete",RENAME:"rename"}},rename:{on:{CHOICE_NEW_ITEM:{target:"#resolveColumns.confirmationRename",actions:["choseNewItem"]}}}}},confirmationDelete:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["delete"]}]}},confirmationRename:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["rename"]}]}},final:{entry:(0,n.send)({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingColumnsResolved",actions:["resolveRemaining"]},{target:"table"}]}},done:{}}},{guards:{isMissingColumnsResolved:({deletedColumns:e})=>!e.length,isNewColumnsResolved:({addedColumns:e})=>!e.length},actions:{choseItem:(0,n.assign)({missingItemIndex:(e,t)=>"CHOICE_ITEM"===t.type?t.itemIndex:0}),choseNewItem:(0,n.assign)({newItemIndex:(e,t)=>"CHOICE_NEW_ITEM"===t.type?t.itemIndex:0}),delete:(0,n.assign)({deleted:({missingItemIndex:e,deleted:t,deletedColumns:a})=>[...t,a[e]],deletedColumns:({missingItemIndex:e,deletedColumns:t})=>t.filter(((t,a)=>a!==e))}),rename:(0,n.assign)({renamed:({missingItemIndex:e,newItemIndex:t,renamed:a,addedColumns:n,deletedColumns:l})=>[...a,{old:l[e],new:n[t]}],deletedColumns:({missingItemIndex:e,deletedColumns:t})=>t.filter(((t,a)=>a!==e)),addedColumns:({newItemIndex:e,addedColumns:t})=>t.filter(((t,a)=>a!==e))}),resolveRemaining:(0,n.assign)({created:({addedColumns:e,created:t})=>[...t,...e],addedColumns:e=>[]}),resolveMissing:(0,n.assign)({deleted:({deletedColumns:e,deleted:t})=>[...t,...e],deletedColumns:e=>[]})}})},761:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=a(522);t.default=e=>(0,n.createMachine)({id:"resolveTables",initial:"table",context:{...e,missingItemIndex:0,newItemIndex:0,createdTables:[],renamedTables:[],deletedTables:[]},states:{table:{entry:(0,n.send)({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingTablesResolved",actions:["resolveRemaining"]},{target:"done",cond:"isNewTablesResolved",actions:["resolveMissing"]}],CHOICE_ITEM:{target:"action",actions:["choseItem"]}}},action:{initial:"actionChoice",states:{actionChoice:{on:{DELETE:"#resolveTables.confirmationDelete",RENAME:"rename"}},rename:{on:{CHOICE_NEW_ITEM:{target:"#resolveTables.confirmationRename",actions:["choseNewItem"]}}}}},confirmationDelete:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["delete"]}]}},confirmationRename:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["rename"]}]}},final:{entry:(0,n.send)({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingTablesResolved",actions:["resolveRemaining"]},{target:"table"}]}},done:{}}},{guards:{isMissingTablesResolved:({missingTables:e})=>!e.length,isNewTablesResolved:({newTables:e})=>!e.length},actions:{choseItem:(0,n.assign)({missingItemIndex:(e,t)=>"CHOICE_ITEM"===t.type?t.itemIndex:0}),choseNewItem:(0,n.assign)({newItemIndex:(e,t)=>"CHOICE_NEW_ITEM"===t.type?t.itemIndex:0}),delete:(0,n.assign)({deletedTables:({missingItemIndex:e,deletedTables:t,missingTables:a})=>[...t,a[e]],missingTables:({missingItemIndex:e,missingTables:t})=>t.filter(((t,a)=>a!==e))}),rename:(0,n.assign)({renamedTables:({missingItemIndex:e,newItemIndex:t,renamedTables:a,newTables:n,missingTables:l})=>[...a,{old:l[e],new:n[t]}],missingTables:({missingItemIndex:e,missingTables:t})=>t.filter(((t,a)=>a!==e)),newTables:({newItemIndex:e,newTables:t})=>t.filter(((t,a)=>a!==e))}),resolveRemaining:(0,n.assign)({createdTables:({newTables:e,createdTables:t})=>[...t,...e],newTables:e=>[]}),resolveMissing:(0,n.assign)({deletedTables:({missingTables:e,deletedTables:t})=>[...t,...e],missingTables:e=>[]})}})},454:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{const t=[];return t.length=e.reduce(((e,{values:t})=>e<t.length?t.length:e),0),t.fill({"":""}),t.map(((t,a)=>{const n={};return e.forEach(((t,l)=>{n[e[l].title]=t.values[a]?.old?.name?`${t.values[a]?.old?.name} -> ${t.values[a]?.new?.name}`:t.values[a]?.name||""})),n}))}},313:(e,t)=>{var a,n;Object.defineProperty(t,"__esModule",{value:!0}),t.confirmations=t.actions=t.Confirmation=t.Action=void 0,function(e){e.RENAME="RENAME",e.DELETE="DELETE"}(a=t.Action||(t.Action={})),function(e){e.CANCEL="CANCEL",e.CONFIRM="CONFIRM"}(n=t.Confirmation||(t.Confirmation={})),t.actions=[{key:a.RENAME,label:"Renamed",value:a.RENAME},{key:a.DELETE,label:"Deleted",value:a.DELETE}],t.confirmations=[{key:n.CONFIRM,label:"Yes",value:n.CONFIRM},{key:n.CANCEL,label:"No",value:n.CANCEL}]},572:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(147)),r=n(a(980)),o={version:"1",tables:{},enums:{}};t.default=(e="drizzle",t)=>{const a=e;l.default.readdirSync("./").find((e=>e===a))||l.default.mkdirSync(a);const n=l.default.readdirSync(`./${a}`);let d;if(0===n.length)d=o;else{n.sort();const e=n[n.length-1];console.log(e),d=JSON.parse(l.default.readFileSync(`./${a}/${e}/snapshot.json`).toString())}const s=`${t}/tables/`,u=`${t}/types/`;return{prev:d,cur:(0,r.default)(s,u)}}},258:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(7)),r=n(a(147)),o=l.default.createPrinter();t.default=(e,t)=>{const a=[l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamedImports([l.default.createImportSpecifier(void 0,l.default.createIdentifier("AbstractTable")),l.default.createImportSpecifier(void 0,l.default.createIdentifier("DB"))])),l.default.createStringLiteral("drizzle-orm")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(l.default.createIdentifier("Enum"),void 0),l.default.createStringLiteral("drizzle-orm/types/type")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamedImports([l.default.createImportSpecifier(void 0,l.default.createIdentifier("Pool"))])),l.default.createStringLiteral("pg")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(l.default.createIdentifier("Serializer"),void 0),l.default.createStringLiteral("./src/serializer/serializer"))],n=[],d=r.default.readdirSync(e);for(let t=0;t<d.length;t++){const a=`${e}${d[t].split(".")[0]}`;n.push(l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier(`i${t}`))),l.default.createStringLiteral(a)))}const s=r.default.readdirSync(t);for(let e=0;e<s.length;e++){const a=`${t}${s[e].split(".")[0]}`;n.push(l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier(`t${e}`))),l.default.createStringLiteral(a)))}const u=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("db"),void 0,l.default.createNew(l.default.createIdentifier("DB"),void 0,[l.default.createNew(l.default.createIdentifier("Pool"),void 0,[])]))],l.default.NodeFlags.Const)),l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("serializer"),void 0,l.default.createNew(l.default.createIdentifier("Serializer"),void 0,[]))],l.default.NodeFlags.Const))],i=[];i.push(l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("tables"),void 0,l.default.createArrayLiteral([],!1))],l.default.NodeFlags.Const)));for(let e=0;e<d.length;e++){const t=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("table"+e),void 0,l.default.createParen(l.default.createAsExpression(l.default.createAsExpression(l.default.createNew(l.default.createPropertyAccess(l.default.createIdentifier("i"+e),l.default.createIdentifier("default")),void 0,[l.default.createIdentifier("db")]),l.default.createKeywordTypeNode(l.default.SyntaxKind.UnknownKeyword)),l.default.createTypeReferenceNode(l.default.createIdentifier("AbstractTable"),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)]))))],l.default.NodeFlags.Const)),l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("tables"),l.default.createIdentifier("push")),void 0,[l.default.createIdentifier("table"+e)]))];i.push(...t)}i.push(l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("enums"),void 0,l.default.createArrayLiteral([],!1))],l.default.NodeFlags.Const))),s.length>0&&i.push(l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("Object"),l.default.createIdentifier("values")),void 0,[l.default.createIdentifier("t0")]),l.default.createIdentifier("forEach")),void 0,[l.default.createArrowFunction(void 0,void 0,[l.default.createParameter(void 0,void 0,void 0,l.default.createIdentifier("t"),void 0,void 0,void 0)],void 0,l.default.createToken(l.default.SyntaxKind.EqualsGreaterThanToken),l.default.createBlock([l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("enums"),l.default.createIdentifier("push")),void 0,[l.default.createAsExpression(l.default.createAsExpression(l.default.createIdentifier("t"),l.default.createKeywordTypeNode(l.default.SyntaxKind.UnknownKeyword)),l.default.createTypeReferenceNode(l.default.createIdentifier("Enum"),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)]))]))],!0))]))),i.push(l.default.createReturn(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("serializer"),l.default.createIdentifier("generate")),void 0,[l.default.createIdentifier("tables"),l.default.createIdentifier("enums")])));const c=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("testFun"),void 0,l.default.createArrowFunction(void 0,void 0,[],void 0,l.default.createToken(l.default.SyntaxKind.EqualsGreaterThanToken),l.default.createBlock(i,!0)))],l.default.NodeFlags.Const))],m=[l.default.createExpressionStatement(l.default.createCall(l.default.createIdentifier("testFun"),void 0,[]))],f=l.default.createSourceFile("outfile.ts","",l.default.ScriptTarget.ES2015,!0,l.default.ScriptKind.TS),p=[];p.push(...a),p.push(...n),p.push(...u),p.push(...c),p.push(...m);const _=l.default.factory.updateSourceFile(f,p);return o.printFile(_)}},980:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const fs_1=__importDefault(__webpack_require__(147)),string_decoder_1=__webpack_require__(330),factory_1=__importDefault(__webpack_require__(258)),esbuild=__webpack_require__(659),serialize=(pathToTables,pathToTypes)=>{const decoder=new string_decoder_1.StringDecoder,preparedFarbic=(0,factory_1.default)(pathToTables,pathToTypes);fs_1.default.writeFileSync("__out.ts",preparedFarbic,"utf-8");const result=esbuild.buildSync({entryPoints:["__out.ts"],bundle:!0,platform:"node",write:!1,external:["pg-native"]});return fs_1.default.rmSync("__out.ts"),eval(decoder.write(result.outputFiles[0].contents))};exports.default=serialize},456:e=>{e.exports=require("@xstate/react")},304:e=>{e.exports=require("commander")},659:e=>{e.exports=require("esbuild")},82:e=>{e.exports=require("ink")},138:e=>{e.exports=require("ink-select-input")},618:e=>{e.exports=require("ink-spinner")},164:e=>{e.exports=require("ink-table")},793:e=>{e.exports=require("js-yaml")},102:e=>{e.exports=require("pretty-error/start")},689:e=>{e.exports=require("react")},501:e=>{e.exports=require("source-map-support/register")},330:e=>{e.exports=require("string_decoder")},7:e=>{e.exports=require("typescript")},259:e=>{e.exports=require("valtio")},522:e=>{e.exports=require("xstate")},147:e=>{e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.exports}__webpack_require__.d=(e,t)=>{for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{const e=__webpack_require__(304);__webpack_require__(501),__webpack_require__(102),__webpack_require__(512),e.program.parse()})()})();
|
|
3
|
+
(()=>{"use strict";var __webpack_modules__={194:(e,t,a)=>{a.r(t),a.d(t,{diffForRenamed:()=>l,differ:()=>r});const n=require("json-diff");function l(e){return e.map((e=>{const t=e.from||e.old,a=e.to||e.new;return[{...t,name:a.name},a]})).map((e=>{const t=(0,n.diff)(e[0],e[1]);return t.name=e[0].name,o(t)}))}function r(e,t){const a=(0,n.diff)(e,t);a.tables=a.tables?a.tables:{},a.enums=a.enums?a.enums:{};const l=Object.entries(a.tables),r=l.filter((e=>e[0].includes("__added"))).map((e=>e[1])).map((e=>({...e,indexes:Object.entries(e.indexes).map((e=>{const t=e[1],a=t.name,n=Object.values(t.columns).map((e=>e.name));return{name:a,columns:n}}))}))),d=l.filter((e=>e[0].includes("__deleted"))).map((e=>e[1])),u=Object.entries(a.enums),s=u.filter((e=>e[0].includes("__added"))).map((e=>e[1])).map((e=>{const t=Object.entries(e.values).map((e=>e[1]));return{name:e.name,values:t}})),i=u.filter((e=>e[0].includes("__deleted"))).map((e=>e[1])).map((e=>{const t=Object.entries(e.values).map((e=>e[1]));return{name:e.name,values:t}})),c=u.filter((e=>!(e[0].includes("__added")||e[0].includes("__deleted")))).map((e=>{const t=e[1].values,a=Object.entries(t).filter((e=>e[0].includes("__added"))).map((e=>e[1])),n=Object.entries(t).filter((e=>e[0].includes("__deleted"))).map((e=>e[1]));return{name:e[0],addedValues:a,deletedValues:n}}));return{addedTables:r,deletedTables:d,alteredTablesWithColumns:Object.keys(a.tables).filter((e=>!(e.includes("__added")||e.includes("__deleted")))).map((e=>({name:e,...a.tables[e]}))).map((e=>o(e))),addedEnums:s,deletedEnums:i,alteredEnums:c}}const o=e=>{const t=e.columns,a=Object.keys(t).filter((e=>e.includes("__added"))).map((e=>({...t[e]}))),n=Object.keys(t).filter((e=>e.includes("__deleted"))).map((e=>({...t[e]}))),l=Object.keys(t).filter((e=>!(e.includes("__deleted")||e.includes("__added")))).map((e=>({name:e,...t[e]}))),r=Object.values(e.indexes__deleted||{}).map((e=>({name:e.name,columns:Object.values(e.columns).map((e=>e.name))}))).concat(Object.keys(e.indexes||{}).filter((e=>e.includes("__deleted"))).map((t=>{const a=e.indexes[t],n=a.name,l=Object.values(a.columns).map((e=>e.name));return{name:n,columns:l}}))),o=Object.values(e.indexes__added||{}).map((e=>({name:e.name,columns:Object.values(e.columns).map((e=>e.name))}))).concat(Object.keys(e.indexes||{}).filter((e=>e.includes("__added"))).map((t=>{const a=e.indexes[t],n=a.name,l=Object.values(a.columns).map((e=>e.name));return{name:n,columns:l}})));return{name:e.name,deleted:n,added:a,altered:l,addedIndexes:o,deletedIndexes:r}}},845:(e,t,a)=>{a.r(t),a.d(t,{Types:()=>n,prepareCreateTableJson:()=>l,prepareDropTableJson:()=>r,prepareRenameTableJson:()=>o,prepareCreateEnumJson:()=>d,prepareAddValuesToEnumJson:()=>u,prepareAlterTableColumnsJson:()=>s,prepareCreateIndexesJson:()=>f,prepareDropIndexesJson:()=>p});class n{static createTable="create_table";static dropTable="drop_table";static renameTable="rename_table";static alterTableDropColumn="alter_table_drop_column";static alterTableAddColumn="alter_table_add_column";static alterTableAlterColumnSetType="alter_table_alter_column_set_type";static alterTableAlterColumnSetDefault="alter_table_alter_column_set_default";static alterTableAlterColumnDropDefault="alter_table_alter_column_drop_default";static alterTableAlterColumnSetNotNull="alter_table_alter_column_set_notnull";static alterTableAlterColumnDropNotNull="alter_table_alter_column_drop_notnull";static createIndex="create_index";static dropIndex="drop_index";static createTypeEnum="create_type_enum";static alterTypeAddValue="alter_type_add_value"}const l=e=>{const{name:t,columns:a}=e,l=Object.keys(a).map((e=>({...a[e]})));return{type:n.createTable,tableName:t,columns:l}},r=e=>({type:n.dropTable,tableName:e.name}),o=(e,t)=>({type:n.renameTable,from:e.name,to:t.name}),d=(e,t)=>({type:n.createTypeEnum,enumName:e,values:t}),u=(e,t)=>t.map((t=>({type:n.alterTypeAddValue,enumName:e,enumValue:t}))),s=e=>{const t=e.name,a=[],n=i(t,e.deleted),l=c(t,e.created),r=m(t,e.altered);return a.push(...n),a.push(...l),a.push(...r),a},i=(e,t)=>t.map((t=>({type:n.alterTableDropColumn,tableName:e,columnName:t.name}))),c=(e,t)=>t.map((t=>({type:n.alterTableAddColumn,tableName:e,column:t}))),m=(e,t)=>{let a=[];for(const l of t){const t=l.name;if(l.type){const{__new:r}=l.type;a.push({type:n.alterTableAlterColumnSetType,tableName:e,columnName:t,newDataType:r})}if(l.defaultValue||l.defaultValue__added){const r=l.defaultValue.__new|l.defaultValue__added;a.push({type:n.alterTableAlterColumnSetDefault,tableName:e,columnName:t,newDefault:r})}l.defaultValue__deleted&&a.push({type:n.alterTableAlterColumnDropDefault,tableName:e,columnName:t}),(l.notNull__added||l.notNull&&l.notNull.__new)&&a.push({type:n.alterTableAlterColumnSetNotNull,tableName:e,columnName:t}),(l.notNull__deleted||l.notNull&&!l.notNull.__new)&&a.push({type:n.alterTableAlterColumnDropNotNull,tableName:e,columnName:t})}return a},f=(e,t)=>t.map((t=>({type:n.createIndex,tableName:e,indexName:t.name,indexValue:t.columns.join(", ")}))),p=(e,t)=>t.map((t=>({type:n.dropIndex,tableName:e,indexName:t.name})))},373:(e,t,a)=>{a.r(t),a.d(t,{fromJson:()=>o,prepareDeleteColumns:()=>d,prepareCreateColumns:()=>u,prepareAlterColumns:()=>s,prepareCreateTable:()=>i,prepareCreateIndex:()=>c,prepareDropIndex:()=>m,prepareRenameTable:()=>f,prepareDropTable:()=>p,prepareCreateEnum:()=>_,prepareAddValuesToEnum:()=>b});var n=a(845);class l{constructor(e){this.type=e}can(e){return this.type===e}convert(e){throw Error("override the convert mothod")}}const r=[];r.push(new class extends l{constructor(){super(n.Types.createTable)}convert(e){const{tableName:t,columns:a}=e,n=Object.keys(a).map((e=>({...a[e]})));let l="";l+=`CREATE TABLE ${t} (\n`;for(const e of n){const t=e.primaryKey?"PRIMARY KEY":"",a=e.notNull?"NOT NULL":"",n=e.defaultValue?`DEFAULT '${e.defaultValue}'`:"";l+="\t"+`${e.name} ${e.type} ${t} ${n} ${a}`.replace(/ +/g," ").trim()+",\n"}return l+=");",l}}),r.push(new class extends l{constructor(){super(n.Types.createTypeEnum)}convert(e){const{enumName:t,values:a}=e;let n="(";return n+=a.map((e=>`'${e}'`)).join(", "),n+=")",`CREATE TYPE ${t} AS ENUM${n};`}}),r.push(new class extends l{constructor(){super(n.Types.dropTable)}convert(e){const{tableName:t}=e;return`DROP TABLE ${t}`}}),r.push(new class extends l{constructor(){super(n.Types.renameTable)}convert(e){const{from:t,to:a}=e;return`ALTER TABLE ${t} RENAME TO ${a}`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableDropColumn)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} DROP COLUMN IF EXISTS ${a};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAddColumn)}convert(e){const{tableName:t,column:a}=e,{name:n,type:l,defaultValue:r,notNull:o}=a;return`ALTER TABLE ${t} ADD COLUMN ${n} ${l}${r?` DEFAULT ${r}`:""}${o?" NOT NULL":""}`.trim()+";"}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnSetType)}convert(e){const{tableName:t,columnName:a,newDataType:n}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} SET DATA TYPE ${n};`}}),r.push(new class extends l{constructor(){super(n.Types.createIndex)}convert(e){const{tableName:t,indexName:a,indexValue:n}=e;return`CREATE INDEX ${a} ON ${t} (${n});`}}),r.push(new class extends l{constructor(){super(n.Types.dropIndex)}convert(e){const{indexName:t}=e;return`DROP INDEX IF EXISTS ${t};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTypeAddValue)}convert(e){const{enumName:t,enumValue:a}=e;return`ALTER TYPE ${t} ADD VALUE ${a};`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnSetNotNull)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} SET NOT NULL;`}}),r.push(new class extends l{constructor(){super(n.Types.alterTableAlterColumnDropNotNull)}convert(e){const{tableName:t,columnName:a}=e;return`ALTER TABLE ${t} ALTER COLUMN ${a} DROP NOT NULL;`}});const o=e=>e.map((e=>{const t=r.filter((t=>t.can(e.type))),a=1===t.length?t[0]:void 0;return a?a.convert(e):(console.log("no convertor:",e.type),"dry run")})),d=(e,t)=>{let a="";for(const n of t)a+=`ALTER TABLE ${e} DROP COLUMN IF EXISTS ${n.name};`,a+="\n";return a.trim()},u=(e,t)=>{let a="";for(const n of t){const{name:t,type:l,defaultValue:r,notNull:o}=n;a+=`ALTER TABLE ${e} ADD COLUMN ${t} ${l} ${r?`DEFAULT ${r}`:""} ${o?"NOT NULL":""}`.trim()+";",a+="\n"}return a.trim()},s=(e,t)=>{let a="";for(const n of t){const{name:t}=n;if(n.type){const{__new:l}=n.type;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DATA TYPE ${l};`,a+="\n"}if(n.defaultValue){const{__new:l}=n.defaultValue;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DEFAULT ${l};`,a+="\n"}if(n.defaultValue__added&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET DEFAULT ${n.defaultValue__added};`,a+="\n"),n.defaultValue__deleted&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} DROP DEFAULT;`,a+="\n"),n.notNull){const{__new:l}=n.notNull;a+=`ALTER TABLE ${e} ALTER COLUMN ${t} ${l?"SET NOT NULL":"DROP NOT NULL"};`,a+="\n"}n.notNull__added&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} SET NOT NULL;`,a+="\n"),n.notNull__deleted&&(a+=`ALTER TABLE ${e} ALTER COLUMN ${t} DROP NOT NULL;`,a+="\n")}return a.trim()},i=e=>{const{name:t,columns:a}=e,n=Object.keys(a).map((e=>({...a[e]})));let l="";l+=`CREATE TABLE ${t} (\n`;for(const e of n){const t=e.primaryKey?"PRIMARY KEY":"",a=e.notNull?"NOT NULL":"",n=e.defaultValue?`DEFAULT '${e.defaultValue}'`:"";l+="\t"+`${e.name} ${e.type} ${t} ${n} ${a}`.replace(/ +/g," ").trim()+",\n"}return l+=");",l},c=(e,t)=>{let a="";for(const n of t){const{name:t,columns:l}=n;a+=`CREATE INDEX ${t} ON ${e} (${l.join(", ")});`,a+="\n"}return a.trim()},m=(e,t)=>{let a="";for(const e of t){const{name:t}=e;a+=`DROP INDEX IF EXISTS ${t};`,a+="\n"}return a.trim()},f=(e,t)=>`ALTER TABLE ${e.name} RENAME TO ${t.name}`,p=e=>{const{name:t}=e;return`DROP TABLE ${t}`},_=(e,t)=>{let a="(";return a+=Object.values(t).map((e=>`'${e}'`)).join(", "),a+=")",`CREATE TYPE ${e} AS ENUM${a};`},b=(e,t)=>{let a="";for(const n in t)a+=`ALTER TYPE ${e} ADD VALUE ${t[n]};`,a+="\n";return a.trim()}},512:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=a(304),r=n(a(492));l.program.command("migrate").alias("mg").description("Migration").action(r.default).command("start").description("Start migration").action(r.default)},492:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=a(282),u=o(a(147)),s=o(a(793)),i=r(a(194)),c=o(a(572)),m=a(845),f=a(373);t.default=async()=>{const e=s.default.load(u.default.readFileSync("drizzle.config.yml",{encoding:"utf-8"})),t=e.migrationRootFolder||"drizzle",a=e.dataFolder,{prev:n,cur:l}=await d.task("preparing data schema json snapshot",(async({setTitle:e})=>c.default(t,a))),r=await d.task("preparing schemas diff",(async({setTitle:e})=>i.differ(n,l))),{created:o,renamed:p,deleted:_}=await d.promptTablesConflicts({newTables:r.addedTables,missingTables:r.deletedTables}),b=[],E=o.map((e=>m.prepareCreateTableJson(e))),T=o.map((e=>m.prepareCreateIndexesJson(e.name,e.indexes))).flat(),y=_.map((e=>m.prepareDropTableJson(e))),v=p.map((e=>m.prepareRenameTableJson(e.old,e.new))),N=i.diffForRenamed(p),h=r.alteredTablesWithColumns.concat(N),I=[];for(const e of h){const t=await d.promptColumnsConflicts(e),{deleted:a,added:n,...l}=e;I.push({...l,...t})}const g=I.map((e=>m.prepareAlterTableColumnsJson(e))).flat(),C=I.map((e=>m.prepareCreateIndexesJson(e.name,e.addedIndexes||{}))).flat(),x=I.map((e=>m.prepareDropIndexesJson(e.name,e.deletedIndexes||{}))).flat(),A=r.addedEnums.map((e=>m.prepareCreateEnumJson(e.name,e.values))),O=r.alteredEnums.map((e=>m.prepareAddValuesToEnumJson(e.name,e.addedValues))).flat();b.push(...A),b.push(...O),b.push(...E),b.push(...T),b.push(...y),b.push(...v),b.push(...g),b.push(...C),b.push(...x);const D=f.fromJson(b);console.log(D.join("\n"));const w=(new Date).toISOString(),L=`./${t}/${w}`;u.default.mkdirSync(L),u.default.writeFileSync(`${L}/snapshot.json`,JSON.stringify(l,null,2)),u.default.writeFileSync(`${L}/migration.sql`,D.join("\n"))}},560:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(689)),r=a(259);t.default=({componentsList:e})=>(r.useSnapshot(e),l.default.createElement(l.default.Fragment,null,e.map(((e,t)=>({...e,key:t})))))},613:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=a(82),r=n(a(689)),o=n(a(560));t.default=e=>{const t=l.render(r.default.createElement(o.default,{componentsList:e}));return{remove(){t.rerender(null),t.unmount(),t.clear(),t.cleanup()}}}},243:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=o(a(689)),u=a(82),s=o(a(138)),i=r(a(164)),c=a(456),m=o(a(454)),f=a(313),p=o(a(234));t.default=({onDone:e,tableWithColumns:t})=>{const[a,n]=c.useMachine(p.default({tableWithColumns:t})),{tableName:l,addedColumns:r,deletedColumns:o,missingItemIndex:_,created:b,renamed:E,deleted:T}=a.context,y=e=>{n({type:"CHOICE_ITEM",itemIndex:e.value})},v=e=>{n({type:"CHOICE_NEW_ITEM",itemIndex:e.value})},N=e=>{n({type:e.value})},h=e=>{n({type:e.value})},I=()=>{if(a.matches("table"))return d.default.createElement(d.default.Fragment,null,d.default.createElement(u.Box,{display:"flex",flexDirection:"column"},d.default.createElement(u.Box,{display:"flex"},d.default.createElement(u.Box,{flexDirection:"column"},d.default.createElement(i.Header,null,`Table "${l}" missing columns:`),d.default.createElement(s.default,{items:o.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:y})),!!r?.length&&d.default.createElement(u.Box,{flexDirection:"column",paddingLeft:5},d.default.createElement(i.Header,null,"New tables:"),d.default.createElement(u.Box,{display:"flex",flexDirection:"column"},r.map((({name:e},t)=>d.default.createElement(u.Text,{key:e+t},e))))))));if(a.matches("action.actionChoice")){const e=r.length?f.actions:f.actions.filter((({value:e})=>e!==f.Action.RENAME));return d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${o[_]?.name} is:`),d.default.createElement(s.default,{items:e,onSelect:N}))}return a.matches("confirmationDelete")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"!!! Data in table will be lost !!!"),d.default.createElement(u.Text,null,"Are you sure?"),d.default.createElement(s.default,{items:f.confirmations,onSelect:h})):a.matches("confirmationRename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"Are you sure?"),d.default.createElement(s.default,{items:f.confirmations,onSelect:h})):a.matches("action.rename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${o[_]?.name} was renamed to:`),d.default.createElement(s.default,{items:r.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:v})):(a.matches("done")&&e({created:b,renamed:E,deleted:T}),d.default.createElement(d.default.Fragment,null))};return T.length||E.length||b.length?d.default.createElement(u.Box,{flexDirection:"column",margin:1},d.default.createElement(u.Box,{flexDirection:"column",marginBottom:0},d.default.createElement(i.Header,null,`${l} columns:`),d.default.createElement(i.default,{data:m.default([{title:"Deleted",values:T},{title:"Renamed",values:E},{title:"Created",values:b}])})),I()):I()}},60:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=o(a(689)),u=a(82),s=o(a(138)),i=r(a(164)),c=a(456),m=o(a(761)),f=o(a(454)),p=a(313);t.default=({onDone:e,newTables:t,missingTables:a})=>{const[n,l]=c.useMachine(m.default({missingTables:a,newTables:t})),{missingItemIndex:r,newTables:o,missingTables:_,createdTables:b,renamedTables:E,deletedTables:T}=n.context,y=e=>{l({type:"CHOICE_ITEM",itemIndex:e.value})},v=e=>{l({type:"CHOICE_NEW_ITEM",itemIndex:e.value})},N=e=>{l({type:e.value})},h=e=>{l({type:e.value})},I=()=>{if(n.matches("table"))return d.default.createElement(d.default.Fragment,null,d.default.createElement(u.Box,{display:"flex",flexDirection:"column"},d.default.createElement(u.Box,{display:"flex"},d.default.createElement(u.Box,{flexDirection:"column"},d.default.createElement(i.Header,null,"Missing tables:"),d.default.createElement(s.default,{items:_.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:y})),!!o?.length&&d.default.createElement(u.Box,{flexDirection:"column",paddingLeft:5},d.default.createElement(i.Header,null,"New tables:"),d.default.createElement(u.Box,{display:"flex",flexDirection:"column"},o.map((({name:e},t)=>d.default.createElement(u.Text,{key:e+t},e))))))));if(n.matches("action.actionChoice")){const e=o.length?p.actions:p.actions.filter((({value:e})=>e!==p.Action.RENAME));return d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${_[r]?.name} is:`),d.default.createElement(s.default,{items:e,onSelect:N}))}return n.matches("confirmationDelete")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"!!! Data in table will be lost !!!"),d.default.createElement(u.Text,null,"Are you sure?"),d.default.createElement(s.default,{items:p.confirmations,onSelect:h})):n.matches("confirmationRename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,"Are you sure?"),d.default.createElement(s.default,{items:p.confirmations,onSelect:h})):n.matches("action.rename")?d.default.createElement(d.default.Fragment,null,d.default.createElement(i.Header,null,`${_[r]?.name} was renamed to:`),d.default.createElement(s.default,{items:o.map(((e,t)=>({key:String(t),label:e.name,value:t}))),onSelect:v})):(n.matches("done")&&e({created:b,renamed:E,deleted:T}),d.default.createElement(d.default.Fragment,null))};return T.length||E.length||b.length?d.default.createElement(u.Box,{flexDirection:"column",margin:1},d.default.createElement(u.Box,{flexDirection:"column",marginBottom:0},d.default.createElement(i.Header,null,"Tables: "),d.default.createElement(i.default,{data:f.default([{title:"Deleted",values:T},{title:"Renamed",values:E},{title:"Created",values:b}])})),I()):I()}},808:function(e,t,a){var n=this&&this.__createBinding||(Object.create?function(e,t,a,n){void 0===n&&(n=a),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[a]}})}:function(e,t,a,n){void 0===n&&(n=a),e[n]=t[a]}),l=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&n(t,e,a);return l(t,e),t},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const d=r(a(689)),u=a(82),s=o(a(618));var i;!function(e){e[e.IN_PROGRESS=0]="IN_PROGRESS",e[e.SUCCESS=1]="SUCCESS",e[e.FAIL=2]="FAIL"}(i||(i={})),t.default=e=>{const{func:t,onDone:a,titleStr:n}=e,[l,r]=d.useState(n),[o,c]=d.useState(i.IN_PROGRESS),[m,f]=d.useState(null);return d.useEffect((()=>{(async()=>{try{const e=await t({setTitle:r,setError:f});c(i.SUCCESS),a(e)}catch(e){f(e),c(i.FAIL)}})()}),[]),d.default.createElement(u.Box,{flexDirection:"row"},d.default.createElement(u.Box,{marginRight:1},o===i.IN_PROGRESS?d.default.createElement(u.Text,null,"[",d.default.createElement(s.default,{type:"dots"}),"]"):o===i.SUCCESS?d.default.createElement(u.Text,null,"[",d.default.createElement(u.Text,{color:"green"},"✓"),"]"):d.default.createElement(u.Text,null,"[",d.default.createElement(u.Text,{color:"red"},"×"),"]"),o===i.FAIL?d.default.createElement(u.Text,null,l,d.default.createElement(u.Newline,null),d.default.createElement(u.Text,{color:"red"},m.message)):d.default.createElement(d.default.Fragment,null,d.default.createElement(u.Text,null,l))))}},282:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.promptColumnsConflicts=t.promptTablesConflicts=t.task=void 0;const l=n(a(689)),r=a(259),o=n(a(808)),d=n(a(613)),u=n(a(60)),s=n(a(243)),i=r.proxy([]);let c;const m=()=>{c||(c=d.default(i),i.length=0)};t.task=(e,t)=>new Promise((a=>{m(),i.push(l.default.createElement(o.default,{titleStr:e,func:t,onDone:e=>a(e)}))})),t.promptTablesConflicts=({missingTables:e,newTables:t})=>new Promise((a=>{m(),i.push(l.default.createElement(u.default,{onDone:e=>a(e),missingTables:e,newTables:t}))})),t.promptColumnsConflicts=e=>new Promise((t=>{m(),i.push(l.default.createElement(s.default,{onDone:e=>t(e),tableWithColumns:e}))}))},234:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=a(522);t.default=e=>n.createMachine({id:"resolveColumns",initial:"table",context:{tableName:e.tableWithColumns.name,addedColumns:e.tableWithColumns.added,deletedColumns:e.tableWithColumns.deleted,missingItemIndex:0,newItemIndex:0,created:[],renamed:[],deleted:[]},states:{table:{entry:n.send({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingColumnsResolved",actions:["resolveRemaining"]},{target:"done",cond:"isNewColumnsResolved",actions:["resolveMissing"]}],CHOICE_ITEM:{target:"action",actions:["choseItem"]}}},action:{initial:"actionChoice",states:{actionChoice:{on:{DELETE:"#resolveColumns.confirmationDelete",RENAME:"rename"}},rename:{on:{CHOICE_NEW_ITEM:{target:"#resolveColumns.confirmationRename",actions:["choseNewItem"]}}}}},confirmationDelete:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["delete"]}]}},confirmationRename:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["rename"]}]}},final:{entry:n.send({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingColumnsResolved",actions:["resolveRemaining"]},{target:"table"}]}},done:{}}},{guards:{isMissingColumnsResolved:({deletedColumns:e})=>!e.length,isNewColumnsResolved:({addedColumns:e})=>!e.length},actions:{choseItem:n.assign({missingItemIndex:(e,t)=>"CHOICE_ITEM"===t.type?t.itemIndex:0}),choseNewItem:n.assign({newItemIndex:(e,t)=>"CHOICE_NEW_ITEM"===t.type?t.itemIndex:0}),delete:n.assign({deleted:({missingItemIndex:e,deleted:t,deletedColumns:a})=>[...t,a[e]],deletedColumns:({missingItemIndex:e,deletedColumns:t})=>t.filter(((t,a)=>a!==e))}),rename:n.assign({renamed:({missingItemIndex:e,newItemIndex:t,renamed:a,addedColumns:n,deletedColumns:l})=>[...a,{old:l[e],new:n[t]}],deletedColumns:({missingItemIndex:e,deletedColumns:t})=>t.filter(((t,a)=>a!==e)),addedColumns:({newItemIndex:e,addedColumns:t})=>t.filter(((t,a)=>a!==e))}),resolveRemaining:n.assign({created:({addedColumns:e,created:t})=>[...t,...e],addedColumns:e=>[]}),resolveMissing:n.assign({deleted:({deletedColumns:e,deleted:t})=>[...t,...e],deletedColumns:e=>[]})}})},761:(e,t,a)=>{Object.defineProperty(t,"__esModule",{value:!0});const n=a(522);t.default=e=>n.createMachine({id:"resolveTables",initial:"table",context:{...e,missingItemIndex:0,newItemIndex:0,createdTables:[],renamedTables:[],deletedTables:[]},states:{table:{entry:n.send({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingTablesResolved",actions:["resolveRemaining"]},{target:"done",cond:"isNewTablesResolved",actions:["resolveMissing"]}],CHOICE_ITEM:{target:"action",actions:["choseItem"]}}},action:{initial:"actionChoice",states:{actionChoice:{on:{DELETE:"#resolveTables.confirmationDelete",RENAME:"rename"}},rename:{on:{CHOICE_NEW_ITEM:{target:"#resolveTables.confirmationRename",actions:["choseNewItem"]}}}}},confirmationDelete:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["delete"]}]}},confirmationRename:{on:{CANCEL:"action.actionChoice",CONFIRM:[{target:"final",actions:["rename"]}]}},final:{entry:n.send({type:"NEXT"}),on:{NEXT:[{target:"done",cond:"isMissingTablesResolved",actions:["resolveRemaining"]},{target:"table"}]}},done:{}}},{guards:{isMissingTablesResolved:({missingTables:e})=>!e.length,isNewTablesResolved:({newTables:e})=>!e.length},actions:{choseItem:n.assign({missingItemIndex:(e,t)=>"CHOICE_ITEM"===t.type?t.itemIndex:0}),choseNewItem:n.assign({newItemIndex:(e,t)=>"CHOICE_NEW_ITEM"===t.type?t.itemIndex:0}),delete:n.assign({deletedTables:({missingItemIndex:e,deletedTables:t,missingTables:a})=>[...t,a[e]],missingTables:({missingItemIndex:e,missingTables:t})=>t.filter(((t,a)=>a!==e))}),rename:n.assign({renamedTables:({missingItemIndex:e,newItemIndex:t,renamedTables:a,newTables:n,missingTables:l})=>[...a,{old:l[e],new:n[t]}],missingTables:({missingItemIndex:e,missingTables:t})=>t.filter(((t,a)=>a!==e)),newTables:({newItemIndex:e,newTables:t})=>t.filter(((t,a)=>a!==e))}),resolveRemaining:n.assign({createdTables:({newTables:e,createdTables:t})=>[...t,...e],newTables:e=>[]}),resolveMissing:n.assign({deletedTables:({missingTables:e,deletedTables:t})=>[...t,...e],missingTables:e=>[]})}})},454:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{const t=[];return t.length=e.reduce(((e,{values:t})=>e<t.length?t.length:e),0),t.fill({"":""}),t.map(((t,a)=>{const n={};return e.forEach(((t,l)=>{n[e[l].title]=t.values[a]?.old?.name?`${t.values[a]?.old?.name} -> ${t.values[a]?.new?.name}`:t.values[a]?.name||""})),n}))}},313:(e,t)=>{var a,n;Object.defineProperty(t,"__esModule",{value:!0}),t.confirmations=t.actions=t.Confirmation=t.Action=void 0,function(e){e.RENAME="RENAME",e.DELETE="DELETE"}(a=t.Action||(t.Action={})),function(e){e.CANCEL="CANCEL",e.CONFIRM="CONFIRM"}(n=t.Confirmation||(t.Confirmation={})),t.actions=[{key:a.RENAME,label:"Renamed",value:a.RENAME},{key:a.DELETE,label:"Deleted",value:a.DELETE}],t.confirmations=[{key:n.CONFIRM,label:"Yes",value:n.CONFIRM},{key:n.CANCEL,label:"No",value:n.CANCEL}]},572:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(147)),r=n(a(980)),o={version:"1",tables:{},enums:{}};t.default=(e="drizzle",t)=>{const a=e;l.default.readdirSync("./").find((e=>e===a))||l.default.mkdirSync(a);const n=l.default.readdirSync(`./${a}`);let d;if(0===n.length)d=o;else{n.sort();const e=n[n.length-1];console.log(e),d=JSON.parse(l.default.readFileSync(`./${a}/${e}/snapshot.json`).toString())}const u=`${t}/tables/`,s=`${t}/types/`;return{prev:d,cur:r.default(u,s)}}},258:function(e,t,a){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const l=n(a(7)),r=n(a(147)),o=l.default.createPrinter();t.default=(e,t)=>{const a=[l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier("drizzle"))),l.default.createStringLiteral("drizzle-orm")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(l.default.createIdentifier("MigrationSerializer"),void 0),l.default.createStringLiteral("drizzle-orm/serializer/serializer")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(l.default.createIdentifier("Enum"),void 0),l.default.createStringLiteral("drizzle-orm/types/type")),l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier("pg"))),l.default.createStringLiteral("pg"))],n=[],d=r.default.readdirSync(e);for(let t=0;t<d.length;t++){const a=`${e}${d[t].split(".")[0]}`;n.push(l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier(`i${t}`))),l.default.createStringLiteral(a)))}const u=r.default.readdirSync(t);for(let e=0;e<u.length;e++){const a=`${t}${u[e].split(".")[0]}`;n.push(l.default.createImportDeclaration(void 0,void 0,l.default.createImportClause(void 0,l.default.createNamespaceImport(l.default.createIdentifier(`t${e}`))),l.default.createStringLiteral(a)))}const s=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("db"),void 0,l.default.createNew(l.default.createIdentifier("drizzle.DB"),void 0,[l.default.createNew(l.default.createPropertyAccess(l.default.createIdentifier("pg"),l.default.createIdentifier("Pool")),void 0,[])]))],l.default.NodeFlags.Const)),l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("serializer"),void 0,l.default.createNew(l.default.createIdentifier("MigrationSerializer"),void 0,[]))],l.default.NodeFlags.Const))],i=[];i.push(l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("tables"),l.default.createArrayTypeNode(l.default.createTypeReferenceNode(l.default.createQualifiedName(l.default.createIdentifier("drizzle"),l.default.createIdentifier("AbstractTable")),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)])),l.default.createArrayLiteral([],!1))],l.default.NodeFlags.Const)));for(let e=0;e<d.length;e++){const t=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("table"+e),void 0,l.default.createParen(l.default.createAsExpression(l.default.createAsExpression(l.default.createNew(l.default.createPropertyAccess(l.default.createIdentifier("i"+e),l.default.createIdentifier("default")),void 0,[l.default.createIdentifier("db")]),l.default.createKeywordTypeNode(l.default.SyntaxKind.UnknownKeyword)),l.default.createTypeReferenceNode(l.default.createQualifiedName(l.default.createIdentifier("drizzle"),l.default.createIdentifier("AbstractTable")),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)]))))],l.default.NodeFlags.Const)),l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("tables"),l.default.createIdentifier("push")),void 0,[l.default.createIdentifier("table"+e)]))];i.push(...t)}i.push(l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("enums"),l.default.createArrayTypeNode(l.default.createTypeReferenceNode(l.default.createIdentifier("Enum"),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)])),l.default.createArrayLiteral([],!1))],l.default.NodeFlags.Const))),u.length>0&&i.push(l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("Object"),l.default.createIdentifier("values")),void 0,[l.default.createIdentifier("t0")]),l.default.createIdentifier("forEach")),void 0,[l.default.createArrowFunction(void 0,void 0,[l.default.createParameter(void 0,void 0,void 0,l.default.createIdentifier("t"),void 0,void 0,void 0)],void 0,l.default.createToken(l.default.SyntaxKind.EqualsGreaterThanToken),l.default.createBlock([l.default.createExpressionStatement(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("enums"),l.default.createIdentifier("push")),void 0,[l.default.createAsExpression(l.default.createAsExpression(l.default.createIdentifier("t"),l.default.createKeywordTypeNode(l.default.SyntaxKind.UnknownKeyword)),l.default.createTypeReferenceNode(l.default.createIdentifier("Enum"),[l.default.createKeywordTypeNode(l.default.SyntaxKind.AnyKeyword)]))]))],!0))]))),i.push(l.default.createReturn(l.default.createCall(l.default.createPropertyAccess(l.default.createIdentifier("serializer"),l.default.createIdentifier("generate")),void 0,[l.default.createIdentifier("tables"),l.default.createIdentifier("enums")])));const c=[l.default.createVariableStatement(void 0,l.default.createVariableDeclarationList([l.default.createVariableDeclaration(l.default.createIdentifier("testFun"),void 0,l.default.createArrowFunction(void 0,void 0,[],void 0,l.default.createToken(l.default.SyntaxKind.EqualsGreaterThanToken),l.default.createBlock(i,!0)))],l.default.NodeFlags.Const))],m=[l.default.createExpressionStatement(l.default.createCall(l.default.createIdentifier("testFun"),void 0,[]))],f=l.default.createSourceFile("outfile.ts","",l.default.ScriptTarget.ES2015,!0,l.default.ScriptKind.TS),p=[];p.push(...a),p.push(...n),p.push(...s),p.push(...c),p.push(...m);const _=l.default.factory.updateSourceFile(f,p);return o.printFile(_)}},980:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const fs_1=__importDefault(__webpack_require__(147)),string_decoder_1=__webpack_require__(330),factory_1=__importDefault(__webpack_require__(258)),esbuild=__webpack_require__(659),serialize=(pathToTables,pathToTypes)=>{const decoder=new string_decoder_1.StringDecoder,preparedFarbic=factory_1.default(pathToTables,pathToTypes);fs_1.default.writeFileSync("__out.ts",preparedFarbic,"utf-8");const result=esbuild.buildSync({entryPoints:["__out.ts"],bundle:!0,platform:"node",write:!1,external:["pg-native"]});return fs_1.default.rmSync("__out.ts"),eval(decoder.write(result.outputFiles[0].contents))};exports.default=serialize},456:e=>{e.exports=require("@xstate/react")},304:e=>{e.exports=require("commander")},659:e=>{e.exports=require("esbuild")},82:e=>{e.exports=require("ink")},138:e=>{e.exports=require("ink-select-input")},618:e=>{e.exports=require("ink-spinner")},164:e=>{e.exports=require("ink-table")},793:e=>{e.exports=require("js-yaml")},102:e=>{e.exports=require("pretty-error/start")},689:e=>{e.exports=require("react")},501:e=>{e.exports=require("source-map-support/register")},330:e=>{e.exports=require("string_decoder")},7:e=>{e.exports=require("typescript")},259:e=>{e.exports=require("valtio")},522:e=>{e.exports=require("xstate")},147:e=>{e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var a=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(a.exports,a,a.exports,__webpack_require__),a.exports}__webpack_require__.d=(e,t)=>{for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{const e=__webpack_require__(304);__webpack_require__(501),__webpack_require__(102),__webpack_require__(512),e.program.parse()})()})();
|
|
4
4
|
//# sourceMappingURL=drizzle.js.map
|
package/drizzle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drizzle.js","mappings":"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","sources":["webpack://drizzle-kit/external commonjs \"json-diff\"","webpack://drizzle-kit/./src/differ.js","webpack://drizzle-kit/./src/jsonStatements.js","webpack://drizzle-kit/./src/sqlgenerator.js","webpack://drizzle-kit/./src/cli/commands/migration/index.tsx","webpack://drizzle-kit/./src/cli/commands/migration/migrate/index.tsx","webpack://drizzle-kit/./src/cli/components-api/ComponentsList.tsx","webpack://drizzle-kit/./src/cli/components-api/CreateApp.tsx","webpack://drizzle-kit/./src/cli/components-api/components/PromptColumnsConflicts.tsx","webpack://drizzle-kit/./src/cli/components-api/components/PromptTablesConflicts.tsx","webpack://drizzle-kit/./src/cli/components-api/components/Task.tsx","webpack://drizzle-kit/./src/cli/components-api/index.tsx","webpack://drizzle-kit/./src/cli/machines/resolveColumnsMachine.ts","webpack://drizzle-kit/./src/cli/machines/resolveTablesMachine.ts","webpack://drizzle-kit/./src/cli/utils/formatDataForTable.ts","webpack://drizzle-kit/./src/cli/utils/valuesForPrompts.ts","webpack://drizzle-kit/./src/migrationPreparator.ts","webpack://drizzle-kit/./src/serializer/factory.ts","webpack://drizzle-kit/./src/serializer/index.ts","webpack://drizzle-kit/external commonjs \"@xstate/react\"","webpack://drizzle-kit/external commonjs \"commander\"","webpack://drizzle-kit/external commonjs \"esbuild\"","webpack://drizzle-kit/external commonjs \"ink\"","webpack://drizzle-kit/external commonjs \"ink-select-input\"","webpack://drizzle-kit/external commonjs \"ink-spinner\"","webpack://drizzle-kit/external commonjs \"ink-table\"","webpack://drizzle-kit/external commonjs \"js-yaml\"","webpack://drizzle-kit/external commonjs \"pretty-error/start\"","webpack://drizzle-kit/external commonjs \"react\"","webpack://drizzle-kit/external commonjs \"source-map-support/register\"","webpack://drizzle-kit/external commonjs \"string_decoder\"","webpack://drizzle-kit/external commonjs \"typescript\"","webpack://drizzle-kit/external commonjs \"valtio\"","webpack://drizzle-kit/external commonjs \"xstate\"","webpack://drizzle-kit/external node-commonjs \"fs\"","webpack://drizzle-kit/webpack/bootstrap","webpack://drizzle-kit/webpack/runtime/define property getters","webpack://drizzle-kit/webpack/runtime/hasOwnProperty shorthand","webpack://drizzle-kit/webpack/runtime/make namespace object","webpack://drizzle-kit/./src/cli/index.tsx"],"sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = require(\"json-diff\");","'use-strict';\n\nimport { diff } from 'json-diff'\n\n\nexport function diffForRenamed(pairs) {\n // raname table1 to name of table2, so we can apply diffs\n const renamed = pairs.map(it => {\n const from = it.from || it.old\n const to = it.to || it.new\n const newFrom = { ...from, name: to.name }\n return [newFrom, to]\n })\n\n // find any alternations made to a renamed table\n const altered = renamed.map(pair => {\n const diffed = diff(pair[0], pair[1]);\n diffed.name = pair[0].name\n\n return findAlternationsInTable(diffed)\n })\n\n return altered\n}\nexport function differ(json1, json2) {\n const difference = diff(json1, json2);\n\n difference.tables = difference.tables ? difference.tables : {}\n difference.enums = difference.enums ? difference.enums : {}\n\n const tableEntries = Object.entries(difference.tables)\n const addedTables = tableEntries.filter(it => it[0].includes('__added'))\n .map(it => it[1])\n .map(it => {\n // console.log(it)\n return {\n ...it, indexes: Object.entries(it.indexes).map(indexEntry => {\n const idx = indexEntry[1]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n }\n })\n const deletedTables = tableEntries.filter(it => it[0].includes('__deleted')).map(it => it[1])\n\n const enumsEntries = Object.entries(difference.enums)\n\n const addedEnums = enumsEntries.filter(it => it[0].includes('__added'))\n .map(it => it[1])\n .map(it => {\n // values: { val1: 'val1', val2: 'val2' } => values: ['val1', 'val2']\n const values = Object.entries(it.values).map(ve => ve[1])\n return { name: it.name, values: values }\n })\n const deletedEnums = enumsEntries.filter(it => it[0].includes('__deleted'))\n .map(it => it[1])\n .map(it => {\n\n // values: { val1: 'val1', val2: 'val2' } => values: ['val1', 'val2']\n const values = Object.entries(it.values).map(ve => ve[1])\n return { name: it.name, values: values }\n })\n const alteredEnums = enumsEntries.filter(it => !(it[0].includes('__added') || it[0].includes('__deleted')))\n .map(it => {\n const vals = it[1].values\n const addedValues = Object.entries(vals).filter(val => val[0].includes('__added')).map(val => val[1])\n const deletedValues = Object.entries(vals).filter(val => val[0].includes('__deleted')).map(val => val[1])\n // console.log('values: ', it[1].values)\n return { name: it[0], addedValues, deletedValues, }\n })\n\n const alteredTables = Object.keys(difference.tables)\n .filter(it => !(it.includes('__added') || it.includes('__deleted')))\n .map(it => {\n return { name: it, ...difference.tables[it] }\n })\n\n const alteredTablesWithColumns = alteredTables.map(table => findAlternationsInTable(table))\n\n return {\n addedTables,\n deletedTables,\n alteredTablesWithColumns,\n addedEnums,\n deletedEnums,\n alteredEnums,\n }\n}\n\nconst findAlternationsInTable = (table) => {\n // map each table to have altered, deleted or renamed columns\n const columns = table.columns; //in case no columns were altered, but indexes were\n\n const added = Object.keys(columns).filter(it => it.includes('__added')).map(it => {\n return { ...columns[it] }\n })\n const deleted = Object.keys(columns).filter(it => it.includes('__deleted')).map(it => {\n return { ...columns[it] }\n })\n const altered = Object.keys(columns)\n .filter(it => !(it.includes('__deleted') || it.includes('__added')))\n .map(it => {\n return { name: it, ...columns[it] }\n })\n\n const deletedIndexes = Object.values(table.indexes__deleted || {}).map(it => {\n const name = it['name']\n const columns = Object.values(it['columns']).map(it => it['name'])\n return { name, columns }\n }).concat(\n Object.keys(table.indexes || {}).filter(it => it.includes('__deleted'))\n .map(it => {\n const idx = table.indexes[it]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n );\n\n const addedIndexes = Object.values(table.indexes__added || {}).map(it => {\n const name = it['name']\n const columns = Object.values(it['columns']).map(it => it['name'])\n return { name, columns }\n }).concat(\n Object.keys(table.indexes || {}).filter(it => it.includes('__added'))\n .map(it => {\n const idx = table.indexes[it]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n );\n return { name: table.name, deleted, added, altered, addedIndexes, deletedIndexes }\n}","export class Types {\n static createTable = 'create_table'\n static dropTable = 'drop_table'\n static renameTable = 'rename_table'\n static alterTableDropColumn = 'alter_table_drop_column'\n static alterTableAddColumn = 'alter_table_add_column'\n static alterTableAlterColumnSetType = 'alter_table_alter_column_set_type'\n static alterTableAlterColumnSetDefault = 'alter_table_alter_column_set_default'\n static alterTableAlterColumnDropDefault = 'alter_table_alter_column_drop_default'\n static alterTableAlterColumnSetNotNull = 'alter_table_alter_column_set_notnull'\n static alterTableAlterColumnDropNotNull = 'alter_table_alter_column_drop_notnull'\n static createIndex = 'create_index'\n static dropIndex = 'drop_index'\n static createTypeEnum = 'create_type_enum'\n static alterTypeAddValue = 'alter_type_add_value'\n}\n\nexport const prepareCreateTableJson = (table) => {\n const { name, columns } = table\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n return {\n type: Types.createTable,\n tableName: name,\n columns: mappedColumns\n };\n}\n\nexport const prepareDropTableJson = (table) => {\n return {\n type: Types.dropTable,\n tableName: table.name\n }\n}\n\nexport const prepareRenameTableJson = (tableFrom, tableTo) => {\n return {\n type: Types.renameTable,\n from: tableFrom.name,\n to: tableTo.name\n }\n}\n\nexport const prepareCreateEnumJson = (name, values) => {\n return {\n type: Types.createTypeEnum,\n enumName: name,\n values\n }\n}\n\n// https://blog.yo1.dog/updating-enum-values-in-postgresql-the-safe-and-easy-way/\nexport const prepareAddValuesToEnumJson = (name, values) => {\n return values.map(it => {\n return {\n type: Types.alterTypeAddValue,\n enumName: name,\n enumValue: it\n }\n })\n}\n\nexport const prepareAlterTableColumnsJson = (table) => {\n const tableName = table['name'];\n const statements = []\n\n const dropColumns = _prepareDropColumns(tableName, table.deleted)\n const addColumns = _prepareAddColumns(tableName, table.created)\n const alterColumns = _prepareAlterColumns(tableName, table.altered)\n\n\n statements.push(...dropColumns)\n statements.push(...addColumns)\n statements.push(...alterColumns)\n\n return statements;\n}\n\nconst _prepareDropColumns = (taleName, columns) => {\n return columns.map(it => {\n return {\n type: Types.alterTableDropColumn,\n tableName: taleName,\n columnName: it.name\n }\n })\n}\n\nconst _prepareAddColumns = (tableName, columns) => {\n \n return columns.map(it => {\n return {\n type: Types.alterTableAddColumn,\n tableName,\n column: it\n }\n })\n}\n\nconst _prepareAlterColumns = (tableName, columns) => {\n let statements = []\n\n for (const column of columns) {\n const columnName = column.name;\n\n if (column['type']) {\n const { __new } = column.type\n\n statements.push({\n type: Types.alterTableAlterColumnSetType,\n tableName,\n columnName,\n newDataType: __new\n })\n }\n\n if (column['defaultValue'] || column['defaultValue__added']) {\n const newDefaultValue = column.defaultValue.__new | column.defaultValue__added\n statements.push({\n type: Types.alterTableAlterColumnSetDefault,\n tableName,\n columnName,\n newDefault: newDefaultValue\n })\n }\n\n if (column['defaultValue__deleted']) {\n statements.push({\n type: Types.alterTableAlterColumnDropDefault,\n tableName,\n columnName,\n })\n }\n\n if (column['notNull__added'] || (column['notNull'] && column['notNull']['__new'])) {\n statements.push({\n type: Types.alterTableAlterColumnSetNotNull,\n tableName,\n columnName\n })\n }\n\n if (column['notNull__deleted'] || (column['notNull'] && !column['notNull']['__new'])) {\n statements.push({\n type: Types.alterTableAlterColumnDropNotNull,\n tableName,\n columnName\n })\n }\n }\n\n return statements\n}\n\nexport const prepareCreateIndexesJson = (tableName, indexes) => {\n return indexes.map(index => {\n return {\n type: Types.createIndex,\n tableName,\n indexName: index.name,\n indexValue: index.columns.join(', ')\n }\n })\n}\nexport const prepareDropIndexesJson = (tableName, indexes) => {\n return indexes.map(index => {\n return {\n type: Types.dropIndex,\n tableName,\n indexName: index.name,\n }\n })\n}\n","import { Types } from \"./jsonStatements\";\n\nclass Convertor {\n constructor(type) {\n this.type = type\n }\n\n can(type) {\n return this.type === type;\n }\n\n convert(_) {\n throw Error('override the convert mothod')\n }\n}\n\nclass CreateTableConvertor extends Convertor {\n constructor() {\n super(Types.createTable)\n }\n\n convert(jsonStatement) {\n const { tableName, columns } = jsonStatement\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n let statement = ''\n\n statement += `CREATE TABLE ${tableName} (\\n`\n for (const column of mappedColumns) {\n // console.log(column);\n const primaryKeyStatement = column.primaryKey ? \"PRIMARY KEY\" : ''\n const notNullStatement = column.notNull ? \"NOT NULL\" : \"\";\n const defaultStatement = column.defaultValue ? `DEFAULT '${column.defaultValue}'` : \"\";\n statement += '\\t' + `${column.name} ${column.type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim() + ',\\n'\n }\n statement += `);`\n return statement;\n }\n}\n\nclass CreateTypeEnumConvertor extends Convertor {\n constructor() {\n super(Types.createTypeEnum)\n }\n\n convert(jsonStatement) {\n const { enumName, values } = jsonStatement\n let valuesStatement = '('\n valuesStatement += values.map(it => `'${it}'`).join(', ')\n valuesStatement += ')'\n\n return `CREATE TYPE ${enumName} AS ENUM${valuesStatement};`\n }\n}\n\nclass AlterTypeAddValueConvertor extends Convertor {\n constructor() {\n super(Types.alterTypeAddValue)\n }\n\n convert(jsonStatement) {\n const { enumName, enumValue } = jsonStatement\n return `ALTER TYPE ${enumName} ADD VALUE ${enumValue};`\n }\n}\n\nclass DropTableConvertor extends Convertor {\n constructor() {\n super(Types.dropTable)\n }\n\n convert(jsonStatement) {\n const { tableName } = jsonStatement\n return `DROP TABLE ${tableName}`\n }\n}\n\nclass RenameTableConvertor extends Convertor {\n constructor() {\n super(Types.renameTable)\n }\n\n convert(jsonStatement) {\n const { from, to } = jsonStatement\n return `ALTER TABLE ${from} RENAME TO ${to}`\n }\n}\n\nclass AlterTableDropColumnConvertor extends Convertor {\n constructor() {\n super(Types.alterTableDropColumn)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} DROP COLUMN IF EXISTS ${columnName};`\n }\n}\n\nclass AlterTableAddColumnConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAddColumn)\n }\n\n convert(jsonStatement) {\n const { tableName, column } = jsonStatement\n const { name, type, defaultValue, notNull } = column;\n\n const defaultStatement = `${defaultValue ? ` DEFAULT ${defaultValue}` : ''}`\n const notNullStatement = `${notNull ? ' NOT NULL' : ''}`\n return `ALTER TABLE ${tableName} ADD COLUMN ${name} ${type}${defaultStatement}${notNullStatement}`.trim() + ';'\n }\n}\n\nclass AlterTableAlterColumnSetTypeConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnSetType)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName, newDataType } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DATA TYPE ${newDataType};`\n }\n}\n\nclass AlterTableAlterColumnSetNotNullConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnSetNotNull)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET NOT NULL;`\n }\n}\n\nclass AlterTableAlterColumnDropNotNullConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnDropNotNull)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP NOT NULL;`\n }\n}\n\nclass CreateIndexConvertor extends Convertor {\n constructor() {\n super(Types.createIndex)\n }\n\n convert(jsonStatement) {\n const { tableName, indexName, indexValue } = jsonStatement\n return `CREATE INDEX ${indexName} ON ${tableName} (${indexValue});`\n }\n}\n\nclass DropIndexConvertor extends Convertor {\n constructor() {\n super(Types.dropIndex)\n }\n\n convert(jsonStatement) {\n const { indexName } = jsonStatement\n return `DROP INDEX IF EXISTS ${indexName};`\n }\n}\n\nconst convertors = []\nconvertors.push(new CreateTableConvertor())\nconvertors.push(new CreateTypeEnumConvertor())\nconvertors.push(new DropTableConvertor())\nconvertors.push(new RenameTableConvertor())\nconvertors.push(new AlterTableDropColumnConvertor())\nconvertors.push(new AlterTableAddColumnConvertor())\nconvertors.push(new AlterTableAlterColumnSetTypeConvertor())\nconvertors.push(new CreateIndexConvertor())\nconvertors.push(new DropIndexConvertor())\nconvertors.push(new AlterTypeAddValueConvertor())\nconvertors.push(new AlterTableAlterColumnSetNotNullConvertor())\nconvertors.push(new AlterTableAlterColumnDropNotNullConvertor())\n\nexport const fromJson = (statements) => {\n return statements.map(statement => {\n const filtered = convertors.filter(it => {\n return it.can(statement.type)\n })\n const convertor = filtered.length === 1 ? filtered[0] : undefined\n\n if (!convertor) {\n console.log('no convertor:', statement.type)\n return 'dry run'\n }\n\n return convertor.convert(statement)\n })\n}\n\nexport const prepareDeleteColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n statement += `ALTER TABLE ${tableName} DROP COLUMN IF EXISTS ${column.name};`\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareCreateColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n const { name, type, defaultValue, notNull } = column;\n\n const defaultStatement = `${defaultValue ? `DEFAULT ${defaultValue}` : ''}`\n const notNullStatement = `${notNull ? 'NOT NULL' : ''}`\n statement += `ALTER TABLE ${tableName} ADD COLUMN ${name} ${type} ${defaultStatement} ${notNullStatement}`.trim() + ';'\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareAlterColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n const { name } = column;\n\n if (column['type']) {\n const { __new } = column.type\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DATA TYPE ${__new};`\n statement += '\\n'\n }\n\n if (column['defaultValue']) {\n const { __new } = column.defaultValue\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DEFAULT ${__new};`\n statement += '\\n'\n }\n\n if (column['defaultValue__added']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DEFAULT ${column.defaultValue__added};`\n statement += '\\n'\n }\n\n if (column['defaultValue__deleted']) {\n // console.log(`default value deleted`)\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} DROP DEFAULT;`\n statement += '\\n'\n }\n\n if (column['notNull']) {\n const { __new } = column.notNull\n const dropStatement = __new ? 'SET NOT NULL' : 'DROP NOT NULL'\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} ${dropStatement};`\n statement += '\\n'\n }\n\n if (column['notNull__added']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET NOT NULL;`\n statement += '\\n'\n }\n\n if (column['notNull__deleted']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} DROP NOT NULL;`\n statement += '\\n'\n }\n }\n return statement.trim()\n}\n\nexport const prepareCreateTable = (table) => {\n const { name, columns } = table\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n let statement = ''\n\n statement += `CREATE TABLE ${name} (\\n`\n for (const column of mappedColumns) {\n // console.log(column);\n const primaryKeyStatement = column.primaryKey ? \"PRIMARY KEY\" : ''\n const notNullStatement = column.notNull ? \"NOT NULL\" : \"\";\n const defaultStatement = column.defaultValue ? `DEFAULT '${column.defaultValue}'` : \"\";\n statement += '\\t' + `${column.name} ${column.type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim() + ',\\n'\n }\n statement += `);`\n return statement;\n}\n\nexport const prepareCreateIndex = (table, indexes) => {\n let statement = ''\n for (const index of indexes) {\n const { name, columns } = index\n statement += `CREATE INDEX ${name} ON ${table} (${columns.join(', ')});`\n statement += '\\n'\n }\n\n return statement.trim()\n}\n\nexport const prepareDropIndex = (table, indexes) => {\n let statement = ''\n for (const index of indexes) {\n const { name } = index\n statement += `DROP INDEX IF EXISTS ${name};`\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareRenameTable = (tableFrom, tableTo) => {\n const namefrom = tableFrom.name\n const nameTo = tableTo.name\n const statement = `ALTER TABLE ${namefrom} RENAME TO ${nameTo}`\n return statement\n}\n\nexport const prepareDropTable = (table) => {\n const { name } = table;\n return `DROP TABLE ${name}`\n}\n\nexport const prepareCreateEnum = (name, values) => {\n // console.log(name, values)\n let valuesStatement = '('\n valuesStatement += Object.values(values).map(it => `'${it}'`).join(', ')\n valuesStatement += ')'\n\n const statement = `CREATE TYPE ${name} AS ENUM${valuesStatement};`\n return statement;\n}\n\n// https://blog.yo1.dog/updating-enum-values-in-postgresql-the-safe-and-easy-way/\nexport const prepareAddValuesToEnum = (name, values) => {\n let statement = ''\n for (const idx in values) {\n statement += `ALTER TYPE ${name} ADD VALUE ${values[idx]};`\n statement += '\\n'\n }\n return statement.trim();\n}\n\n\n\n\n// test case for enum altering\n`\ncreate table users (\n\tid int,\n name character varying(128)\n);\n\ncreate type venum as enum('one', 'two', 'three');\nalter table users add column typed venum;\n\ninsert into users(id, name, typed) values (1, 'name1', 'one');\ninsert into users(id, name, typed) values (2, 'name2', 'two');\ninsert into users(id, name, typed) values (3, 'name3', 'three');\n\nalter type venum rename to __venum;\ncreate type venum as enum ('one', 'two', 'three', 'four', 'five');\n\nALTER TABLE users ALTER COLUMN typed TYPE venum USING typed::text::venum;\n\ninsert into users(id, name, typed) values (4, 'name4', 'four');\ninsert into users(id, name, typed) values (5, 'name5', 'five');\n\ndrop type __venum;\n`","import { program } from 'commander';\n\nimport migrate from './migrate';\n\nconst cmd = program\n .command('migrate')\n .alias('mg')\n .description('Migration')\n .action(migrate);\ncmd.command('start').description('Start migration').action(migrate);\n","import { task, promptTablesConflicts, promptColumnsConflicts } from 'cli/components-api';\nimport fs from 'fs';\nimport yaml from 'js-yaml'\nimport * as differ from '../../../../differ';\nimport prepareMigration from 'migrationPreparator';\n\nimport { prepareAddValuesToEnumJson, prepareAlterTableColumnsJson, prepareCreateEnumJson, prepareCreateIndexesJson, prepareCreateTableJson, prepareDropIndexesJson, prepareDropTableJson, prepareRenameTableJson } from '../../../../jsonStatements';\nimport { fromJson } from '../../../../sqlgenerator';\n\ninterface Config {\n dataFolder: string;\n migrationRootFolder?: string;\n}\n\nexport interface TablesResultData<T> {\n created: T[],\n renamed: RenamedObject<T>[],\n deleted: T[],\n}\n\nexport interface ColumnsResultData<T extends Named> {\n created: T[],\n renamed: RenamedObject<T>[],\n deleted: T[],\n}\n\nexport interface Named {\n name: string\n}\n\nexport interface RenamedObject<T> {\n old: T,\n new: T\n}\n\nconst two = (num: number) => {\n return num.toString().padStart(2, '0')\n}\n\nconst migrate = async () => {\n const timeoutE = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)).then(() => {\n throw new Error('Checking error handling');\n });\n\n const timeout = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n const drizzleConfig: Config = yaml.load(fs.readFileSync('drizzle.config.yml', { encoding: 'utf-8' })) as Config;\n const migrationRootFolder = drizzleConfig.migrationRootFolder || 'drizzle' // or from config/params\n const dataFolder = drizzleConfig.dataFolder\n\n const { prev, cur } = await task('preparing data schema json snapshot', async ({ setTitle }) => {\n return prepareMigration(migrationRootFolder, dataFolder)\n });\n\n // const j1 = JSON.parse(fs.readFileSync('./out/v1_1634546745488.json', 'utf8'));\n // const j2 = JSON.parse(fs.readFileSync('./out/v2_1634549601361.json', 'utf8'));\n\n const diff = await task('preparing schemas diff', async ({ setTitle }) => {\n return differ.differ(prev, cur);\n });\n\n const { created, renamed, deleted } = await promptTablesConflicts({\n newTables: diff.addedTables,\n missingTables: diff.deletedTables,\n });\n\n const jsonStatements: any[] = []\n\n const jsonCreateTables = created.map(it => {\n return prepareCreateTableJson(it)\n })\n\n const jsonCreateIndexesForCreatedTables = created.map(it => {\n return prepareCreateIndexesJson(it.name, it.indexes)\n }).flat()\n\n const jsonDropTables = deleted.map(it => {\n return prepareDropTableJson(it)\n })\n\n const jsonRenameTables = renamed.map(it => {\n return prepareRenameTableJson(it.old, it.new)\n })\n\n // const createNewTables = created.map(it => {\n // return prepareCreateTable(it)\n // })\n // console.log(createNewTables.join('\\n').trim())\n\n // const deleteTables = deleted.map(it => {\n // return prepareDropTable(it)\n // })\n // console.log(deleteTables.join('\\n').trim())\n\n const renamedWithAlternations = differ.diffForRenamed(renamed)\n const allAltered = diff.alteredTablesWithColumns.concat(renamedWithAlternations)\n\n const allAlteredResolved = []\n for (const table of allAltered) {\n const result = await promptColumnsConflicts(table);\n\n const { deleted, added, ...ini } = table\n\n allAlteredResolved.push({ ...ini, ...result })\n }\n\n // console.log(JSON.stringify(allAlteredResolved, null, 2))\n\n // const renameTables = renamed.map(it => {\n // return prepareRenameTable(it.from, it.to)\n // })\n // console.log(renameTables.join('\\n').trim())\n\n const jsonAlterTables = allAlteredResolved.map(it => {\n return prepareAlterTableColumnsJson(it)\n }).flat()\n\n const jsonCreateIndexesForAllAlteredTables = allAlteredResolved.map(it => {\n return prepareCreateIndexesJson(it.name, it.addedIndexes || {})\n }).flat()\n\n const jsonDropIndexesForAllAlteredTables = allAlteredResolved.map(it => {\n return prepareDropIndexesJson(it.name, it.deletedIndexes || {})\n }).flat()\n\n // // Enums:\n // // - создание енама ✅\n // // - переименование енама (пока не делаю)⏳\n // // - добавление вэлью к енаму ✅\n // // - ренейм вейлью у енама (пока не делаю, это надо запрашивать опять же через слай)⏳\n // // - удаление енама -> чекать не используется ли где-то енам и сначала ранить миграции и в самом конце удаление енама⏳\n // // - удаление вэлью из енама -> блок ❌\n // const enums = result.addedEnums.map(it => {\n // return prepareCreateEnum(it.name, it.values)\n // })\n\n const createEnums = diff.addedEnums.map(it => {\n return prepareCreateEnumJson(it.name, it.values)\n })\n\n //todo: block enum rename, enum value rename and enun deletion for now\n const jsonAlterEnumsWithAddedValues = diff.alteredEnums.map(it => {\n return prepareAddValuesToEnumJson(it.name, it.addedValues)\n }).flat()\n\n jsonStatements.push(...createEnums)\n jsonStatements.push(...jsonAlterEnumsWithAddedValues)\n jsonStatements.push(...jsonCreateTables)\n jsonStatements.push(...jsonCreateIndexesForCreatedTables)\n jsonStatements.push(...jsonDropTables)\n jsonStatements.push(...jsonRenameTables)\n jsonStatements.push(...jsonAlterTables)\n jsonStatements.push(...jsonCreateIndexesForAllAlteredTables)\n jsonStatements.push(...jsonDropIndexesForAllAlteredTables)\n\n // console.log(JSON.stringify(jsonStatements, null, 2))\n // console.log(jsonStatements)\n\n const sqlStatements = fromJson(jsonStatements)\n console.log(sqlStatements.join('\\n'))\n\n // todo: save results to a new migration folder\n const date = new Date()\n // const folderName = `${date.getFullYear()}-${two(date.getMonth())}-${two(date.getDate())} ${two(date.getHours())}:${two(date.getMinutes())}:${two(date.getSeconds())}`\n const folderName = date.toISOString()\n const migrationFolderPath = `./${migrationRootFolder}/${folderName}`\n fs.mkdirSync(migrationFolderPath)\n fs.writeFileSync(`${migrationFolderPath}/snapshot.json`, JSON.stringify(cur, null, 2))\n fs.writeFileSync(`${migrationFolderPath}/migration.sql`, sqlStatements.join('\\n'))\n\n};\n\nexport default migrate;\n","import React from 'react';\nimport { useSnapshot } from 'valtio';\n\ninterface Props {\n componentsList: React.ReactElement<any, any>[];\n}\n\nconst ComponentsList: React.FC<Props> = ({\n componentsList,\n}) => {\n useSnapshot(componentsList);\n\n return (\n <>\n {componentsList.map((component, i) => ({ ...component, key: i }))}\n </>\n );\n};\n\nexport default ComponentsList;\n","import { render } from 'ink';\nimport React from 'react';\n\nimport ComponentsList from 'cli/components-api/ComponentsList';\n\nconst createApp = (componentsList: React.ReactElement<any, any>[]) => {\n const inkApp = render(<ComponentsList componentsList={componentsList} />);\n\n return {\n remove() {\n inkApp.rerender(null);\n inkApp.unmount();\n inkApp.clear();\n inkApp.cleanup();\n },\n };\n};\n\nexport default createApp;\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport SelectInput from 'ink-select-input';\nimport Table, { Header } from 'ink-table';\nimport { useMachine } from '@xstate/react';\nimport { Item } from 'ink-select-input/build/SelectInput';\n\nimport { ColumnsResultData, Named } from 'cli/commands/migration/migrate';\nimport formatDataForTable from 'cli/utils/formatDataForTable';\nimport {\n Action,\n Confirmation,\n actions,\n confirmations,\n} from 'cli/utils/valuesForPrompts';\nimport createResolveColumnsMachine, { TableWithColumn } from 'cli/machines/resolveColumnsMachine';\n\ninterface Props {\n onDone: (value: ColumnsResultData<Named>) => void\n tableWithColumns: TableWithColumn,\n}\n\nconst PromptColumnsConflicts: React.FC<Props> = ({\n onDone,\n tableWithColumns: props,\n}) => {\n const [current, send] = useMachine(\n createResolveColumnsMachine({ tableWithColumns: props }),\n );\n\n const {\n tableName,\n addedColumns,\n deletedColumns,\n missingItemIndex,\n created,\n renamed,\n deleted,\n } = current.context;\n\n const selectItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_ITEM', itemIndex: item.value });\n };\n\n const selectNewItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_NEW_ITEM', itemIndex: item.value });\n };\n\n const selectAction = (action: Item<Action>) => {\n send({ type: action.value });\n };\n\n const confirm = (confirmationItem: Item<Confirmation>) => {\n send({ type: confirmationItem.value });\n };\n\n const renderDOM = () => {\n if (current.matches('table')) {\n return (\n <>\n <Box display=\"flex\" flexDirection=\"column\">\n <Box display=\"flex\">\n <Box flexDirection=\"column\">\n <Header>{`Table \"${tableName}\" missing columns:`}</Header>\n <SelectInput\n items={deletedColumns!.map((column, i: number) => ({\n key: String(i),\n label: column.name,\n value: i,\n }))}\n onSelect={selectItemIndex}\n />\n </Box>\n {!!addedColumns?.length && (\n <Box flexDirection=\"column\" paddingLeft={5}>\n <Header>New tables:</Header>\n <Box display=\"flex\" flexDirection=\"column\">\n {addedColumns.map(({ name }, i) => <Text key={name + i}>{name}</Text>)}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </>\n );\n }\n\n if (current.matches('action.actionChoice')) {\n const tempActions = !addedColumns!.length\n ? actions.filter(({ value }) => value !== Action.RENAME)\n : actions;\n\n return (\n <>\n <Header>{`${deletedColumns![missingItemIndex]?.name} is:`}</Header>\n <SelectInput items={tempActions} onSelect={selectAction} />\n </>\n );\n }\n\n if (current.matches('confirmationDelete')) {\n return (\n <>\n <Header>!!! Data in table will be lost !!!</Header>\n <Text>Are you sure?</Text>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('confirmationRename')) {\n return (\n <>\n <Header>Are you sure?</Header>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('action.rename')) {\n return (\n <>\n <Header>{`${deletedColumns![missingItemIndex]?.name} was renamed to:`}</Header>\n <SelectInput\n items={addedColumns!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectNewItemIndex}\n />\n </>\n );\n }\n\n if (current.matches('done')) {\n onDone({ created, renamed, deleted });\n }\n\n return (<></>);\n };\n\n return (!!deleted.length\n || !!renamed.length\n || !!created.length) ? (\n <Box flexDirection=\"column\" margin={1}>\n <Box flexDirection=\"column\" marginBottom={0}>\n <Header>{`${tableName} columns:`}</Header>\n <Table\n data={formatDataForTable([\n {\n title: 'Deleted',\n values: deleted,\n },\n {\n title: 'Renamed',\n values: renamed,\n },\n {\n title: 'Created',\n values: created,\n },\n ])}\n />\n </Box>\n {renderDOM()}\n </Box>\n ) : renderDOM();\n};\n\nexport default PromptColumnsConflicts;\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport SelectInput from 'ink-select-input';\nimport Table, { Header } from 'ink-table';\nimport { useMachine } from '@xstate/react';\nimport { Item } from 'ink-select-input/build/SelectInput';\n\nimport { Named, TablesResultData } from 'cli/commands/migration/migrate';\nimport createResolveTablesMachine from 'cli/machines/resolveTablesMachine';\nimport formatDataForTable from 'cli/utils/formatDataForTable';\nimport {\n Action,\n Confirmation,\n actions,\n confirmations,\n} from 'cli/utils/valuesForPrompts';\n\nexport interface RenderTablesSelectProps<T extends Named> {\n missingTables: T[],\n newTables: T[],\n}\n\ninterface Props<T extends Named> extends RenderTablesSelectProps<T> {\n onDone: (value: TablesResultData<T>) => void;\n}\n\nconst PromptTablesConflicts: React.FC<Props<any>> = ({\n onDone,\n newTables: newProps,\n missingTables: missingProps,\n}) => {\n const [current, send] = useMachine(createResolveTablesMachine({\n missingTables: missingProps,\n newTables: newProps,\n }));\n\n const {\n missingItemIndex,\n newTables,\n missingTables,\n createdTables,\n renamedTables,\n deletedTables,\n } = current.context;\n\n const selectItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_ITEM', itemIndex: item.value });\n };\n\n const selectNewItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_NEW_ITEM', itemIndex: item.value });\n };\n\n const selectAction = (action: Item<Action>) => {\n send({ type: action.value });\n };\n\n const confirm = (confirmationItem: Item<Confirmation>) => {\n send({ type: confirmationItem.value });\n };\n\n const renderDOM = () => {\n if (current.matches('table')) {\n return (\n <>\n <Box display=\"flex\" flexDirection=\"column\">\n <Box display=\"flex\">\n <Box flexDirection=\"column\">\n <Header>Missing tables:</Header>\n <SelectInput\n items={missingTables!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectItemIndex}\n />\n </Box>\n {!!newTables?.length && (\n <Box flexDirection=\"column\" paddingLeft={5}>\n <Header>New tables:</Header>\n <Box display=\"flex\" flexDirection=\"column\">\n {newTables.map(({ name }, i) => <Text key={name + i}>{name}</Text>)}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </>\n );\n }\n\n if (current.matches('action.actionChoice')) {\n const tempActions = !newTables!.length\n ? actions.filter(({ value }) => value !== Action.RENAME)\n : actions;\n\n return (\n <>\n <Header>{`${missingTables![missingItemIndex]?.name} is:`}</Header>\n <SelectInput items={tempActions} onSelect={selectAction} />\n </>\n );\n }\n\n if (current.matches('confirmationDelete')) {\n return (\n <>\n <Header>!!! Data in table will be lost !!!</Header>\n <Text>Are you sure?</Text>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('confirmationRename')) {\n return (\n <>\n <Header>Are you sure?</Header>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('action.rename')) {\n return (\n <>\n <Header>{`${missingTables![missingItemIndex]?.name} was renamed to:`}</Header>\n <SelectInput\n items={newTables!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectNewItemIndex}\n />\n </>\n );\n }\n\n if (current.matches('done')) {\n onDone({\n created: createdTables,\n renamed: renamedTables,\n deleted: deletedTables,\n });\n }\n\n return (<></>);\n };\n\n return (!!deletedTables.length\n || !!renamedTables.length\n || !!createdTables.length) ? (\n <Box flexDirection=\"column\" margin={1}>\n <Box flexDirection=\"column\" marginBottom={0}>\n <Header>Tables: </Header>\n <Table\n data={formatDataForTable([\n {\n title: 'Deleted',\n values: deletedTables,\n },\n {\n title: 'Renamed',\n values: renamedTables,\n },\n {\n title: 'Created',\n values: createdTables,\n },\n ])}\n />\n </Box>\n {renderDOM()}\n </Box>\n ) : renderDOM();\n};\n\nexport default PromptTablesConflicts;\n","import React, { useEffect, useState } from 'react';\nimport { Box, Newline, Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { CreateTaskParams } from 'cli/components-api/index';\n\nenum StepState {\n IN_PROGRESS,\n SUCCESS,\n FAIL\n}\n\nexport interface CallbackProps {\n setTitle: React.Dispatch<React.SetStateAction<string>>\n setError: React.Dispatch<React.SetStateAction<any>>\n}\n\ninterface Props<T> {\n func: (props: CallbackProps) => T;\n onDone: (result: T) => T;\n titleStr: string;\n}\n\nconst Task: React.FC<Props<any>> = <T extends unknown>(props: Props<T>) => {\n const {\n func,\n onDone,\n titleStr,\n } = props;\n const [title, setTitle] = useState<string>(titleStr);\n const [state, setState] = useState<StepState>(StepState.IN_PROGRESS);\n const [error, setError] = useState<any>(null);\n\n useEffect(() => {\n (async () => {\n try {\n const result = await func({ setTitle, setError });\n setState(StepState.SUCCESS);\n onDone(result);\n } catch (e) {\n setError(e);\n setState(StepState.FAIL);\n }\n })();\n }, []);\n\n return (\n <Box flexDirection=\"row\">\n <Box marginRight={1}>\n {state === StepState.IN_PROGRESS ? (\n <Text>\n [\n <Spinner type=\"dots\" />\n ]\n </Text>\n ) : state === StepState.SUCCESS ? (\n <Text>\n [\n <Text color=\"green\">✓</Text>\n ]\n </Text>\n ) : (\n <Text>\n [\n <Text color=\"red\">×</Text>\n ]\n </Text>\n )}\n\n {state === StepState.FAIL ? (\n <Text>\n {title}\n <Newline />\n <Text color=\"red\">{error!.message}</Text>\n </Text>\n ) : (\n <>\n <Text>{title}</Text>\n </>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default Task;\n","import React from 'react';\nimport { proxy } from 'valtio';\n\nimport {\n ColumnsResultData,\n Named,\n TablesResultData,\n} from 'cli/commands/migration/migrate';\nimport Task, { CallbackProps } from 'cli/components-api/components/Task';\nimport createApp from 'cli/components-api/CreateApp';\nimport { TableWithColumn } from 'cli/machines/resolveColumnsMachine';\nimport PromptTablesConflicts, { RenderTablesSelectProps } from 'cli/components-api/components/PromptTablesConflicts';\nimport PromptColumnsConflicts from 'cli/components-api/components/PromptColumnsConflicts';\n\nconst componentsList = proxy<React.ReactElement<any, any>[]>([]);\nlet app: ReturnType<typeof createApp>;\n\nexport interface CreateTaskParams<In, Cbs> {\n input: In,\n run: (cbs: Cbs) => void\n}\n\nconst prepareApp = () => {\n if (!app) {\n app = createApp(componentsList);\n componentsList.length = 0;\n }\n};\n\nexport const task = <T extends unknown>(\n titleStr: string,\n func: (props: CallbackProps) => T,\n) => new Promise<T>((\n resolve,\n ) => {\n prepareApp();\n\n componentsList.push(\n <Task\n titleStr={titleStr}\n func={func}\n onDone={(val: T) => resolve(val)}\n />,\n );\n });\n\nexport const promptTablesConflicts = <T extends Named>(\n { missingTables, newTables }: RenderTablesSelectProps<T>,\n) => new Promise<TablesResultData<T>>((\n resolve,\n) => {\n prepareApp();\n\n componentsList.push(\n <PromptTablesConflicts\n onDone={(val) => resolve(val)}\n missingTables={missingTables}\n newTables={newTables}\n />,\n );\n});\n\nexport const promptColumnsConflicts = (\n tableWithColumns: TableWithColumn,\n) => new Promise<ColumnsResultData<Named>>((\n resolve,\n) => {\n prepareApp();\n\n componentsList.push(\n <PromptColumnsConflicts\n onDone={(val) => resolve(val)}\n tableWithColumns={tableWithColumns}\n />,\n );\n});\n","import { assign, createMachine, send } from 'xstate';\nimport { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ntype Event =\n | { type: 'CHOICE_ITEM', itemIndex: number }\n | { type: 'DELETE' }\n | { type: 'RENAME' }\n | { type: 'CANCEL' }\n | { type: 'CONFIRM' }\n | { type: 'NEXT' }\n | { type: 'CHOICE_NEW_ITEM'; itemIndex: number };\n\nexport interface TableWithColumn {\n name: string;\n added: Named[],\n deleted: Named[],\n}\n\ninterface Props {\n tableWithColumns: TableWithColumn,\n}\n\ninterface Context {\n tableName: string,\n addedColumns: Named[],\n deletedColumns: Named[],\n missingItemIndex: number,\n newItemIndex: number,\n created: Named[];\n renamed: RenamedObject<Named>[];\n deleted: Named[];\n}\n\nconst createResolveColumnsMachine = (props: Props) => (\n createMachine<Context, Event>({\n id: 'resolveColumns',\n initial: 'table',\n context: {\n tableName: props.tableWithColumns.name,\n addedColumns: props.tableWithColumns.added,\n deletedColumns: props.tableWithColumns.deleted,\n missingItemIndex: 0,\n newItemIndex: 0,\n created: [],\n renamed: [],\n deleted: [],\n },\n states: {\n table: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingColumnsResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'done',\n cond: 'isNewColumnsResolved',\n actions: ['resolveMissing'],\n },\n ],\n CHOICE_ITEM: { target: 'action', actions: ['choseItem'] },\n },\n },\n action: {\n initial: 'actionChoice',\n states: {\n actionChoice: {\n on: { DELETE: '#resolveColumns.confirmationDelete', RENAME: 'rename' },\n },\n rename: {\n on: {\n CHOICE_NEW_ITEM: { target: '#resolveColumns.confirmationRename', actions: ['choseNewItem'] },\n },\n },\n },\n },\n confirmationDelete: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['delete'] },\n ],\n },\n },\n confirmationRename: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['rename'] },\n ],\n },\n },\n final: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingColumnsResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'table',\n },\n ],\n },\n },\n done: {},\n },\n },\n {\n guards: {\n isMissingColumnsResolved: ({ deletedColumns }) => !deletedColumns.length,\n isNewColumnsResolved: ({ addedColumns }) => !addedColumns.length,\n },\n actions: {\n choseItem: assign({\n missingItemIndex: (context, event) => (event.type === 'CHOICE_ITEM' ? event.itemIndex : 0),\n }),\n\n choseNewItem: assign({\n newItemIndex: (context, event) => (event.type === 'CHOICE_NEW_ITEM' ? event.itemIndex : 0),\n }),\n\n delete: assign({\n deleted: ({\n missingItemIndex,\n deleted,\n deletedColumns,\n }) => [...deleted, deletedColumns[missingItemIndex]],\n deletedColumns: ({\n missingItemIndex,\n deletedColumns,\n }) => deletedColumns.filter((_, index) => index !== missingItemIndex),\n }),\n\n rename: assign({\n renamed: ({\n missingItemIndex,\n newItemIndex,\n renamed,\n addedColumns,\n deletedColumns,\n }) => [\n ...renamed,\n { old: deletedColumns[missingItemIndex], new: addedColumns[newItemIndex] },\n ],\n deletedColumns: ({\n missingItemIndex,\n deletedColumns,\n }) => deletedColumns.filter((_, index) => index !== missingItemIndex),\n addedColumns: ({\n newItemIndex,\n addedColumns,\n }) => addedColumns.filter((_, index) => index !== newItemIndex),\n }),\n\n resolveRemaining: assign({\n created: ({\n addedColumns,\n created,\n }) => [...created, ...addedColumns],\n addedColumns: (context) => [],\n }),\n\n resolveMissing: assign({\n deleted: ({\n deletedColumns,\n deleted,\n }) => [...deleted, ...deletedColumns],\n deletedColumns: (context) => [],\n }),\n },\n }));\n\nexport default createResolveColumnsMachine;\n","import { assign, createMachine, send } from 'xstate';\nimport { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ntype Event =\n | { type: 'CHOICE_ITEM', itemIndex: number }\n | { type: 'DELETE' }\n | { type: 'RENAME' }\n | { type: 'CANCEL' }\n | { type: 'CONFIRM' }\n | { type: 'NEXT' }\n | { type: 'CHOICE_NEW_ITEM'; itemIndex: number };\n\ninterface Context extends Props {\n missingItemIndex: number,\n newItemIndex: number,\n createdTables: Named[];\n renamedTables: RenamedObject<Named>[];\n deletedTables: Named[];\n}\n\ninterface Props {\n missingTables: Named[],\n newTables: Named[],\n}\n\nconst createResolveTablesMachine = (props: Props) => (\n createMachine<Context, Event>({\n id: 'resolveTables',\n initial: 'table',\n context: {\n ...props,\n missingItemIndex: 0,\n newItemIndex: 0,\n createdTables: [],\n renamedTables: [],\n deletedTables: [],\n },\n states: {\n table: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingTablesResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'done',\n cond: 'isNewTablesResolved',\n actions: ['resolveMissing'],\n },\n ],\n CHOICE_ITEM: { target: 'action', actions: ['choseItem'] },\n },\n },\n action: {\n initial: 'actionChoice',\n states: {\n actionChoice: {\n on: { DELETE: '#resolveTables.confirmationDelete', RENAME: 'rename' },\n },\n rename: {\n on: {\n CHOICE_NEW_ITEM: { target: '#resolveTables.confirmationRename', actions: ['choseNewItem'] },\n },\n },\n },\n },\n confirmationDelete: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['delete'] },\n ],\n },\n },\n confirmationRename: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['rename'] },\n ],\n },\n },\n final: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingTablesResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'table',\n },\n ],\n },\n },\n done: {},\n },\n },\n {\n guards: {\n isMissingTablesResolved: ({ missingTables }) => !missingTables.length,\n isNewTablesResolved: ({ newTables }) => !newTables.length,\n },\n actions: {\n choseItem: assign({\n missingItemIndex: (context, event) => (event.type === 'CHOICE_ITEM' ? event.itemIndex : 0),\n }),\n\n choseNewItem: assign({\n newItemIndex: (context, event) => (event.type === 'CHOICE_NEW_ITEM' ? event.itemIndex : 0),\n }),\n\n delete: assign({\n deletedTables: ({\n missingItemIndex,\n deletedTables,\n missingTables,\n }) => [...deletedTables, missingTables[missingItemIndex]],\n missingTables: ({\n missingItemIndex,\n missingTables,\n }) => missingTables.filter((_, index) => index !== missingItemIndex),\n }),\n\n rename: assign({\n renamedTables: ({\n missingItemIndex,\n newItemIndex,\n renamedTables,\n newTables,\n missingTables,\n }) => [\n ...renamedTables,\n { old: missingTables[missingItemIndex], new: newTables[newItemIndex] },\n ],\n missingTables: ({\n missingItemIndex,\n missingTables,\n }) => missingTables.filter((_, index) => index !== missingItemIndex),\n newTables: ({\n newItemIndex,\n newTables,\n }) => newTables.filter((_, index) => index !== newItemIndex),\n }),\n\n resolveRemaining: assign({\n createdTables: ({\n newTables,\n createdTables,\n }) => [...createdTables, ...newTables],\n newTables: (context) => [],\n }),\n\n resolveMissing: assign({\n deletedTables: ({\n missingTables,\n deletedTables,\n }) => [...deletedTables, ...missingTables],\n missingTables: (context) => [],\n }),\n },\n }));\n\nexport default createResolveTablesMachine;\n","import { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ninterface ScalarDict {\n [key: string]: string\n}\n\nexport default (\n data: {\n title: string;\n values: Named[] | RenamedObject<Named>[]\n }[],\n): ScalarDict[] => {\n const array: ScalarDict[] = [];\n\n array.length = data.reduce((acc: number, { values }) => {\n if (acc < values.length) {\n return values.length;\n }\n return acc;\n },\n 0);\n\n array.fill({ '': '' });\n\n return array.map((_, i) => {\n const temp = {} as ScalarDict;\n\n data.forEach((item: any, ind: number) => {\n temp[data[ind].title] = item.values[i]?.old?.name\n ? `${item.values[i]?.old?.name} -> ${item.values[i]?.new?.name}`\n : item.values[i]?.name || '';\n });\n\n return temp as ScalarDict;\n });\n};\n","export enum Action {\n RENAME = 'RENAME',\n DELETE = 'DELETE'\n}\n\nexport enum Confirmation {\n CANCEL = 'CANCEL',\n CONFIRM = 'CONFIRM'\n}\n\nexport const actions = [\n {\n key: Action.RENAME,\n label: 'Renamed',\n value: Action.RENAME,\n },\n {\n key: Action.DELETE,\n label: 'Deleted',\n value: Action.DELETE,\n },\n];\n\nexport const confirmations = [\n {\n key: Confirmation.CONFIRM,\n label: 'Yes',\n value: Confirmation.CONFIRM,\n },\n {\n key: Confirmation.CANCEL,\n label: 'No',\n value: Confirmation.CANCEL,\n },\n];\n","import fs from 'fs'\nimport serialize from 'serializer'\n\n// TODO: export as a function w\n\nconst dry = {\n version: \"1\",\n tables: {},\n enums: {}\n}\n\nconst prepareMigration = (\n migrationRootFolderName: string = 'drizzle',\n dataFolderPath: string\n): { prev: any, cur: any } => {\n const root = migrationRootFolderName\n const files = fs.readdirSync('./')\n const drizzleFolder = files.find((it) => {\n return it === root\n })\n\n if (!drizzleFolder) {\n fs.mkdirSync(root)\n }\n\n const migrationFolders = fs.readdirSync(`./${root}`)\n\n let prevSnapshot;\n\n if (migrationFolders.length === 0) {\n prevSnapshot = dry\n } else {\n migrationFolders.sort()\n const lastSnapshotFolder = migrationFolders[migrationFolders.length - 1]\n console.log(lastSnapshotFolder)\n prevSnapshot = JSON.parse(fs.readFileSync(`./${root}/${lastSnapshotFolder}/snapshot.json`).toString())\n }\n\n const tbls = `${dataFolderPath}/tables/`\n const tps = `${dataFolderPath}/types/`\n\n const result = serialize(tbls, tps)\n\n return { prev: prevSnapshot, cur: result }\n}\n\nexport default prepareMigration;","import ts from \"typescript\";\nimport fs from \"fs\";\nconst printer: ts.Printer = ts.createPrinter();\n\nconst prepareFabricFile = (tablesFolder: string, typesFolder: string) => {\n const staticImports = [\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamedImports([\n ts.createImportSpecifier(\n undefined,\n ts.createIdentifier(\"AbstractTable\"),\n ),\n ts.createImportSpecifier(undefined, ts.createIdentifier(\"DB\")),\n ]),\n ),\n ts.createStringLiteral(\"drizzle-orm\"),\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(ts.createIdentifier(\"Enum\"), undefined),\n ts.createStringLiteral(\"drizzle-orm/types/type\"),\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamedImports([\n ts.createImportSpecifier(undefined, ts.createIdentifier(\"Pool\")),\n ]),\n ),\n ts.createStringLiteral(\"pg\"),\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(ts.createIdentifier(\"Serializer\"), undefined),\n ts.createStringLiteral(\"./src/serializer/serializer\"),\n ),\n ];\n\n const dynamicImports = [];\n const tablesFilenames = fs.readdirSync(tablesFolder);\n for (let i = 0; i < tablesFilenames.length; i++) {\n const filename = tablesFilenames[i];\n const importPath = `${tablesFolder}${filename.split(\".\")[0]}`;\n dynamicImports.push(ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier(`i${i}`)),\n ),\n ts.createStringLiteral(importPath),\n ));\n }\n const typesFilenames = fs.readdirSync(typesFolder);\n for (let i = 0; i < typesFilenames.length; i++) {\n const filename = typesFilenames[i];\n const importPath = `${typesFolder}${filename.split(\".\")[0]}`;\n dynamicImports.push(ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier(`t${i}`)),\n ),\n ts.createStringLiteral(importPath),\n ));\n }\n\n const variablesStatements = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"db\"),\n undefined,\n ts.createNew(ts.createIdentifier(\"DB\"), undefined, [\n ts.createNew(ts.createIdentifier(\"Pool\"), undefined, []),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"serializer\"),\n undefined,\n ts.createNew(ts.createIdentifier(\"Serializer\"), undefined, []),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ];\n\n const blockStatements = [];\n\n // const tables = []\n blockStatements.push(ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"tables\"),\n undefined,\n ts.createArrayLiteral([], false),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ));\n\n for (let i = 0; i < tablesFilenames.length; i++) {\n // const t1 = (new i1.default(db) as unknown as AbstractTable<any>);\n // tables.push(t1)\n const blockStatement = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"table\" + i),\n undefined,\n ts.createParen(\n ts.createAsExpression(\n ts.createAsExpression(\n ts.createNew(\n ts.createPropertyAccess(\n ts.createIdentifier(\"i\" + i),\n ts.createIdentifier(\"default\"),\n ),\n undefined,\n [ts.createIdentifier(\"db\")],\n ),\n ts.createKeywordTypeNode(\n ts.SyntaxKind.UnknownKeyword,\n ),\n ),\n ts.createTypeReferenceNode(\n ts.createIdentifier(\"AbstractTable\"),\n [\n ts.createKeywordTypeNode(\n ts.SyntaxKind.AnyKeyword,\n ),\n ],\n ),\n ),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"tables\"),\n ts.createIdentifier(\"push\"),\n ),\n undefined,\n [ts.createIdentifier(\"table\" + i)],\n ),\n ),\n ];\n\n blockStatements.push(...blockStatement);\n }\n\n // const enums = []\n blockStatements.push(ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"enums\"),\n undefined,\n ts.createArrayLiteral([], false),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ));\n\n // Object.values(t0).forEach((t) => {\n // enums.push(t as Enum<any>);\n // });\n if (typesFilenames.length > 0) {\n blockStatements.push(\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"Object\"),\n ts.createIdentifier(\"values\"),\n ),\n undefined,\n [ts.createIdentifier(\"t0\")],\n ),\n ts.createIdentifier(\"forEach\"),\n ),\n undefined,\n [\n ts.createArrowFunction(\n undefined,\n undefined,\n [\n ts.createParameter(\n undefined,\n undefined,\n undefined,\n ts.createIdentifier(\"t\"),\n undefined,\n undefined,\n undefined,\n ),\n ],\n undefined,\n ts.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n ts.createBlock(\n [\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"enums\"),\n ts.createIdentifier(\"push\"),\n ),\n undefined,\n [\n ts.createAsExpression(\n ts.createAsExpression(\n ts.createIdentifier(\"t\"),\n ts.createKeywordTypeNode(\n ts.SyntaxKind.UnknownKeyword,\n ),\n ),\n ts.createTypeReferenceNode(\n ts.createIdentifier(\"Enum\"),\n [\n ts.createKeywordTypeNode(\n ts.SyntaxKind.AnyKeyword,\n ),\n ],\n ),\n ),\n ],\n ),\n ),\n ],\n true,\n ),\n ),\n ],\n ),\n ),\n );\n }\n\n // return serializer.generate(tables, enums)\n blockStatements.push(\n ts.createReturn(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"serializer\"),\n ts.createIdentifier(\"generate\"),\n ),\n undefined,\n [\n ts.createIdentifier(\"tables\"),\n ts.createIdentifier(\"enums\"),\n ],\n ),\n ),\n );\n\n const funcStatement = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"testFun\"),\n undefined,\n ts.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n ts.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n // function body\n ts.createBlock(\n blockStatements,\n true,\n ),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ];\n const invocationStatement = [\n ts.createExpressionStatement(\n ts.createCall(ts.createIdentifier(\"testFun\"), undefined, []),\n ),\n ];\n\n const outFile: ts.SourceFile = ts.createSourceFile(\n \"outfile.ts\",\n \"\",\n ts.ScriptTarget.ES2015,\n true,\n ts.ScriptKind.TS,\n );\n\n const source = [];\n source.push(...staticImports);\n source.push(...dynamicImports);\n source.push(...variablesStatements);\n source.push(...funcStatement);\n source.push(...invocationStatement);\n\n const newFile = ts.factory.updateSourceFile(outFile, source);\n \n return printer.printFile(newFile);\n};\n\nexport default prepareFabricFile;\n","import fs from \"fs\";\nimport { StringDecoder } from \"string_decoder\";\nimport prepareFabricFile from \"./factory\";\nconst esbuild = require(\"esbuild\");\n\nconst serialize = (pathToTables: string, pathToTypes: string): string => {\n const decoder = new StringDecoder();\n // const preparedFarbic = prepareFabricFile(\"./examples/tables/\", './examples/types/')\n const preparedFarbic = prepareFabricFile(pathToTables, pathToTypes)\n \n fs.writeFileSync(\"__out.ts\", preparedFarbic, \"utf-8\");\n const result = esbuild.buildSync({\n entryPoints: [\"__out.ts\"],\n bundle: true,\n platform: \"node\",\n write: false,\n external: [\"pg-native\"],\n });\n\n fs.rmSync(\"__out.ts\");\n return eval(decoder.write(result.outputFiles[0].contents));\n};\n\nexport default serialize;\n","module.exports = require(\"@xstate/react\");","module.exports = require(\"commander\");","module.exports = require(\"esbuild\");","module.exports = require(\"ink\");","module.exports = require(\"ink-select-input\");","module.exports = require(\"ink-spinner\");","module.exports = require(\"ink-table\");","module.exports = require(\"js-yaml\");","module.exports = require(\"pretty-error/start\");","module.exports = require(\"react\");","module.exports = require(\"source-map-support/register\");","module.exports = require(\"string_decoder\");","module.exports = require(\"typescript\");","module.exports = require(\"valtio\");","module.exports = require(\"xstate\");","module.exports = require(\"fs\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { program } from 'commander';\nimport 'source-map-support/register';\nimport 'pretty-error/start';\n\nimport './commands/migration';\n\nprogram.parse();\n"],"names":["require","diffForRenamed","pairs","map","it","from","old","to","new","name","pair","diffed","diff","findAlternationsInTable","differ","json1","json2","difference","tables","enums","tableEntries","Object","entries","addedTables","filter","includes","indexes","indexEntry","idx","columns","values","deletedTables","enumsEntries","addedEnums","ve","deletedEnums","alteredEnums","vals","addedValues","val","deletedValues","alteredTablesWithColumns","keys","table","added","deleted","altered","deletedIndexes","indexes__deleted","concat","addedIndexes","indexes__added","Types","static","prepareCreateTableJson","mappedColumns","type","createTable","tableName","prepareDropTableJson","dropTable","prepareRenameTableJson","tableFrom","tableTo","renameTable","prepareCreateEnumJson","createTypeEnum","enumName","prepareAddValuesToEnumJson","alterTypeAddValue","enumValue","prepareAlterTableColumnsJson","statements","dropColumns","_prepareDropColumns","addColumns","_prepareAddColumns","created","alterColumns","_prepareAlterColumns","push","taleName","alterTableDropColumn","columnName","alterTableAddColumn","column","__new","alterTableAlterColumnSetType","newDataType","newDefaultValue","defaultValue","defaultValue__added","alterTableAlterColumnSetDefault","newDefault","alterTableAlterColumnDropDefault","alterTableAlterColumnSetNotNull","alterTableAlterColumnDropNotNull","prepareCreateIndexesJson","index","createIndex","indexName","indexValue","join","prepareDropIndexesJson","dropIndex","Convertor","constructor","this","can","convert","_","Error","convertors","super","jsonStatement","statement","primaryKeyStatement","primaryKey","notNullStatement","notNull","defaultStatement","replace","trim","valuesStatement","fromJson","filtered","convertor","length","undefined","console","log","prepareDeleteColumns","prepareCreateColumns","prepareAlterColumns","prepareCreateTable","prepareCreateIndex","prepareDropIndex","prepareRenameTable","prepareDropTable","prepareCreateEnum","prepareAddValuesToEnum","program","command","alias","description","action","async","drizzleConfig","load","readFileSync","encoding","migrationRootFolder","dataFolder","prev","cur","task","setTitle","renamed","promptTablesConflicts","newTables","missingTables","jsonStatements","jsonCreateTables","jsonCreateIndexesForCreatedTables","flat","jsonDropTables","jsonRenameTables","renamedWithAlternations","allAltered","allAlteredResolved","result","promptColumnsConflicts","ini","jsonAlterTables","jsonCreateIndexesForAllAlteredTables","jsonDropIndexesForAllAlteredTables","createEnums","jsonAlterEnumsWithAddedValues","sqlStatements","folderName","Date","toISOString","migrationFolderPath","mkdirSync","writeFileSync","JSON","stringify","componentsList","useSnapshot","component","i","key","inkApp","render","remove","rerender","unmount","clear","cleanup","onDone","tableWithColumns","props","current","send","useMachine","addedColumns","deletedColumns","missingItemIndex","context","selectItemIndex","item","itemIndex","value","selectNewItemIndex","selectAction","confirm","confirmationItem","renderDOM","matches","Box","display","flexDirection","Header","items","String","label","onSelect","paddingLeft","Text","tempActions","actions","Action","RENAME","confirmations","margin","marginBottom","data","title","newProps","missingProps","createdTables","renamedTables","StepState","func","titleStr","useState","state","setState","IN_PROGRESS","error","setError","useEffect","SUCCESS","e","FAIL","marginRight","color","Newline","message","proxy","app","prepareApp","Promise","resolve","createMachine","id","initial","newItemIndex","states","entry","on","NEXT","target","cond","CHOICE_ITEM","actionChoice","DELETE","rename","CHOICE_NEW_ITEM","confirmationDelete","CANCEL","CONFIRM","confirmationRename","final","done","guards","isMissingColumnsResolved","isNewColumnsResolved","choseItem","assign","event","choseNewItem","delete","resolveRemaining","resolveMissing","isMissingTablesResolved","isNewTablesResolved","array","reduce","acc","fill","temp","forEach","ind","Confirmation","dry","version","migrationRootFolderName","dataFolderPath","root","readdirSync","find","migrationFolders","prevSnapshot","sort","lastSnapshotFolder","parse","toString","tbls","tps","printer","createPrinter","tablesFolder","typesFolder","staticImports","createImportDeclaration","createImportClause","createNamedImports","createImportSpecifier","createIdentifier","createStringLiteral","dynamicImports","tablesFilenames","importPath","split","createNamespaceImport","typesFilenames","variablesStatements","createVariableStatement","createVariableDeclarationList","createVariableDeclaration","createNew","NodeFlags","Const","blockStatements","createArrayLiteral","blockStatement","createParen","createAsExpression","createPropertyAccess","createKeywordTypeNode","SyntaxKind","UnknownKeyword","createTypeReferenceNode","AnyKeyword","createExpressionStatement","createCall","createArrowFunction","createParameter","createToken","EqualsGreaterThanToken","createBlock","createReturn","funcStatement","invocationStatement","outFile","createSourceFile","ScriptTarget","ES2015","ScriptKind","TS","source","newFile","factory","updateSourceFile","printFile","esbuild","serialize","pathToTables","pathToTypes","decoder","StringDecoder","preparedFarbic","buildSync","entryPoints","bundle","platform","write","external","rmSync","eval","outputFiles","contents","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"drizzle.js","mappings":"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","sources":["webpack://drizzle-kit/external commonjs \"json-diff\"","webpack://drizzle-kit/./src/differ.js","webpack://drizzle-kit/./src/jsonStatements.js","webpack://drizzle-kit/./src/sqlgenerator.js","webpack://drizzle-kit/./src/cli/commands/migration/index.tsx","webpack://drizzle-kit/./src/cli/commands/migration/migrate/index.tsx","webpack://drizzle-kit/./src/cli/components-api/ComponentsList.tsx","webpack://drizzle-kit/./src/cli/components-api/CreateApp.tsx","webpack://drizzle-kit/./src/cli/components-api/components/PromptColumnsConflicts.tsx","webpack://drizzle-kit/./src/cli/components-api/components/PromptTablesConflicts.tsx","webpack://drizzle-kit/./src/cli/components-api/components/Task.tsx","webpack://drizzle-kit/./src/cli/components-api/index.tsx","webpack://drizzle-kit/./src/cli/machines/resolveColumnsMachine.ts","webpack://drizzle-kit/./src/cli/machines/resolveTablesMachine.ts","webpack://drizzle-kit/./src/cli/utils/formatDataForTable.ts","webpack://drizzle-kit/./src/cli/utils/valuesForPrompts.ts","webpack://drizzle-kit/./src/migrationPreparator.ts","webpack://drizzle-kit/./src/serializer/factory.ts","webpack://drizzle-kit/./src/serializer/index.ts","webpack://drizzle-kit/external commonjs \"@xstate/react\"","webpack://drizzle-kit/external commonjs \"commander\"","webpack://drizzle-kit/external commonjs \"esbuild\"","webpack://drizzle-kit/external commonjs \"ink\"","webpack://drizzle-kit/external commonjs \"ink-select-input\"","webpack://drizzle-kit/external commonjs \"ink-spinner\"","webpack://drizzle-kit/external commonjs \"ink-table\"","webpack://drizzle-kit/external commonjs \"js-yaml\"","webpack://drizzle-kit/external commonjs \"pretty-error/start\"","webpack://drizzle-kit/external commonjs \"react\"","webpack://drizzle-kit/external commonjs \"source-map-support/register\"","webpack://drizzle-kit/external commonjs \"string_decoder\"","webpack://drizzle-kit/external commonjs \"typescript\"","webpack://drizzle-kit/external commonjs \"valtio\"","webpack://drizzle-kit/external commonjs \"xstate\"","webpack://drizzle-kit/external node-commonjs \"fs\"","webpack://drizzle-kit/webpack/bootstrap","webpack://drizzle-kit/webpack/runtime/define property getters","webpack://drizzle-kit/webpack/runtime/hasOwnProperty shorthand","webpack://drizzle-kit/webpack/runtime/make namespace object","webpack://drizzle-kit/./src/cli/index.tsx"],"sourcesContent":["const __WEBPACK_NAMESPACE_OBJECT__ = require(\"json-diff\");","'use-strict';\n\nimport { diff } from 'json-diff'\n\n\nexport function diffForRenamed(pairs) {\n // raname table1 to name of table2, so we can apply diffs\n const renamed = pairs.map(it => {\n const from = it.from || it.old\n const to = it.to || it.new\n const newFrom = { ...from, name: to.name }\n return [newFrom, to]\n })\n\n // find any alternations made to a renamed table\n const altered = renamed.map(pair => {\n const diffed = diff(pair[0], pair[1]);\n diffed.name = pair[0].name\n\n return findAlternationsInTable(diffed)\n })\n\n return altered\n}\nexport function differ(json1, json2) {\n const difference = diff(json1, json2);\n\n difference.tables = difference.tables ? difference.tables : {}\n difference.enums = difference.enums ? difference.enums : {}\n\n const tableEntries = Object.entries(difference.tables)\n const addedTables = tableEntries.filter(it => it[0].includes('__added'))\n .map(it => it[1])\n .map(it => {\n // console.log(it)\n return {\n ...it, indexes: Object.entries(it.indexes).map(indexEntry => {\n const idx = indexEntry[1]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n }\n })\n const deletedTables = tableEntries.filter(it => it[0].includes('__deleted')).map(it => it[1])\n\n const enumsEntries = Object.entries(difference.enums)\n\n const addedEnums = enumsEntries.filter(it => it[0].includes('__added'))\n .map(it => it[1])\n .map(it => {\n // values: { val1: 'val1', val2: 'val2' } => values: ['val1', 'val2']\n const values = Object.entries(it.values).map(ve => ve[1])\n return { name: it.name, values: values }\n })\n const deletedEnums = enumsEntries.filter(it => it[0].includes('__deleted'))\n .map(it => it[1])\n .map(it => {\n\n // values: { val1: 'val1', val2: 'val2' } => values: ['val1', 'val2']\n const values = Object.entries(it.values).map(ve => ve[1])\n return { name: it.name, values: values }\n })\n const alteredEnums = enumsEntries.filter(it => !(it[0].includes('__added') || it[0].includes('__deleted')))\n .map(it => {\n const vals = it[1].values\n const addedValues = Object.entries(vals).filter(val => val[0].includes('__added')).map(val => val[1])\n const deletedValues = Object.entries(vals).filter(val => val[0].includes('__deleted')).map(val => val[1])\n // console.log('values: ', it[1].values)\n return { name: it[0], addedValues, deletedValues, }\n })\n\n const alteredTables = Object.keys(difference.tables)\n .filter(it => !(it.includes('__added') || it.includes('__deleted')))\n .map(it => {\n return { name: it, ...difference.tables[it] }\n })\n\n const alteredTablesWithColumns = alteredTables.map(table => findAlternationsInTable(table))\n\n return {\n addedTables,\n deletedTables,\n alteredTablesWithColumns,\n addedEnums,\n deletedEnums,\n alteredEnums,\n }\n}\n\nconst findAlternationsInTable = (table) => {\n // map each table to have altered, deleted or renamed columns\n const columns = table.columns; //in case no columns were altered, but indexes were\n\n const added = Object.keys(columns).filter(it => it.includes('__added')).map(it => {\n return { ...columns[it] }\n })\n const deleted = Object.keys(columns).filter(it => it.includes('__deleted')).map(it => {\n return { ...columns[it] }\n })\n const altered = Object.keys(columns)\n .filter(it => !(it.includes('__deleted') || it.includes('__added')))\n .map(it => {\n return { name: it, ...columns[it] }\n })\n\n const deletedIndexes = Object.values(table.indexes__deleted || {}).map(it => {\n const name = it['name']\n const columns = Object.values(it['columns']).map(it => it['name'])\n return { name, columns }\n }).concat(\n Object.keys(table.indexes || {}).filter(it => it.includes('__deleted'))\n .map(it => {\n const idx = table.indexes[it]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n );\n\n const addedIndexes = Object.values(table.indexes__added || {}).map(it => {\n const name = it['name']\n const columns = Object.values(it['columns']).map(it => it['name'])\n return { name, columns }\n }).concat(\n Object.keys(table.indexes || {}).filter(it => it.includes('__added'))\n .map(it => {\n const idx = table.indexes[it]\n const name = idx['name']\n const columns = Object.values(idx['columns']).map(it => it['name'])\n return { name, columns }\n })\n );\n return { name: table.name, deleted, added, altered, addedIndexes, deletedIndexes }\n}","export class Types {\n static createTable = 'create_table'\n static dropTable = 'drop_table'\n static renameTable = 'rename_table'\n static alterTableDropColumn = 'alter_table_drop_column'\n static alterTableAddColumn = 'alter_table_add_column'\n static alterTableAlterColumnSetType = 'alter_table_alter_column_set_type'\n static alterTableAlterColumnSetDefault = 'alter_table_alter_column_set_default'\n static alterTableAlterColumnDropDefault = 'alter_table_alter_column_drop_default'\n static alterTableAlterColumnSetNotNull = 'alter_table_alter_column_set_notnull'\n static alterTableAlterColumnDropNotNull = 'alter_table_alter_column_drop_notnull'\n static createIndex = 'create_index'\n static dropIndex = 'drop_index'\n static createTypeEnum = 'create_type_enum'\n static alterTypeAddValue = 'alter_type_add_value'\n}\n\nexport const prepareCreateTableJson = (table) => {\n const { name, columns } = table\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n return {\n type: Types.createTable,\n tableName: name,\n columns: mappedColumns\n };\n}\n\nexport const prepareDropTableJson = (table) => {\n return {\n type: Types.dropTable,\n tableName: table.name\n }\n}\n\nexport const prepareRenameTableJson = (tableFrom, tableTo) => {\n return {\n type: Types.renameTable,\n from: tableFrom.name,\n to: tableTo.name\n }\n}\n\nexport const prepareCreateEnumJson = (name, values) => {\n return {\n type: Types.createTypeEnum,\n enumName: name,\n values\n }\n}\n\n// https://blog.yo1.dog/updating-enum-values-in-postgresql-the-safe-and-easy-way/\nexport const prepareAddValuesToEnumJson = (name, values) => {\n return values.map(it => {\n return {\n type: Types.alterTypeAddValue,\n enumName: name,\n enumValue: it\n }\n })\n}\n\nexport const prepareAlterTableColumnsJson = (table) => {\n const tableName = table['name'];\n const statements = []\n\n const dropColumns = _prepareDropColumns(tableName, table.deleted)\n const addColumns = _prepareAddColumns(tableName, table.created)\n const alterColumns = _prepareAlterColumns(tableName, table.altered)\n\n\n statements.push(...dropColumns)\n statements.push(...addColumns)\n statements.push(...alterColumns)\n\n return statements;\n}\n\nconst _prepareDropColumns = (taleName, columns) => {\n return columns.map(it => {\n return {\n type: Types.alterTableDropColumn,\n tableName: taleName,\n columnName: it.name\n }\n })\n}\n\nconst _prepareAddColumns = (tableName, columns) => {\n \n return columns.map(it => {\n return {\n type: Types.alterTableAddColumn,\n tableName,\n column: it\n }\n })\n}\n\nconst _prepareAlterColumns = (tableName, columns) => {\n let statements = []\n\n for (const column of columns) {\n const columnName = column.name;\n\n if (column['type']) {\n const { __new } = column.type\n\n statements.push({\n type: Types.alterTableAlterColumnSetType,\n tableName,\n columnName,\n newDataType: __new\n })\n }\n\n if (column['defaultValue'] || column['defaultValue__added']) {\n const newDefaultValue = column.defaultValue.__new | column.defaultValue__added\n statements.push({\n type: Types.alterTableAlterColumnSetDefault,\n tableName,\n columnName,\n newDefault: newDefaultValue\n })\n }\n\n if (column['defaultValue__deleted']) {\n statements.push({\n type: Types.alterTableAlterColumnDropDefault,\n tableName,\n columnName,\n })\n }\n\n if (column['notNull__added'] || (column['notNull'] && column['notNull']['__new'])) {\n statements.push({\n type: Types.alterTableAlterColumnSetNotNull,\n tableName,\n columnName\n })\n }\n\n if (column['notNull__deleted'] || (column['notNull'] && !column['notNull']['__new'])) {\n statements.push({\n type: Types.alterTableAlterColumnDropNotNull,\n tableName,\n columnName\n })\n }\n }\n\n return statements\n}\n\nexport const prepareCreateIndexesJson = (tableName, indexes) => {\n return indexes.map(index => {\n return {\n type: Types.createIndex,\n tableName,\n indexName: index.name,\n indexValue: index.columns.join(', ')\n }\n })\n}\nexport const prepareDropIndexesJson = (tableName, indexes) => {\n return indexes.map(index => {\n return {\n type: Types.dropIndex,\n tableName,\n indexName: index.name,\n }\n })\n}\n","import { Types } from \"./jsonStatements\";\n\nclass Convertor {\n constructor(type) {\n this.type = type\n }\n\n can(type) {\n return this.type === type;\n }\n\n convert(_) {\n throw Error('override the convert mothod')\n }\n}\n\nclass CreateTableConvertor extends Convertor {\n constructor() {\n super(Types.createTable)\n }\n\n convert(jsonStatement) {\n const { tableName, columns } = jsonStatement\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n let statement = ''\n\n statement += `CREATE TABLE ${tableName} (\\n`\n for (const column of mappedColumns) {\n // console.log(column);\n const primaryKeyStatement = column.primaryKey ? \"PRIMARY KEY\" : ''\n const notNullStatement = column.notNull ? \"NOT NULL\" : \"\";\n const defaultStatement = column.defaultValue ? `DEFAULT '${column.defaultValue}'` : \"\";\n statement += '\\t' + `${column.name} ${column.type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim() + ',\\n'\n }\n statement += `);`\n return statement;\n }\n}\n\nclass CreateTypeEnumConvertor extends Convertor {\n constructor() {\n super(Types.createTypeEnum)\n }\n\n convert(jsonStatement) {\n const { enumName, values } = jsonStatement\n let valuesStatement = '('\n valuesStatement += values.map(it => `'${it}'`).join(', ')\n valuesStatement += ')'\n\n return `CREATE TYPE ${enumName} AS ENUM${valuesStatement};`\n }\n}\n\nclass AlterTypeAddValueConvertor extends Convertor {\n constructor() {\n super(Types.alterTypeAddValue)\n }\n\n convert(jsonStatement) {\n const { enumName, enumValue } = jsonStatement\n return `ALTER TYPE ${enumName} ADD VALUE ${enumValue};`\n }\n}\n\nclass DropTableConvertor extends Convertor {\n constructor() {\n super(Types.dropTable)\n }\n\n convert(jsonStatement) {\n const { tableName } = jsonStatement\n return `DROP TABLE ${tableName}`\n }\n}\n\nclass RenameTableConvertor extends Convertor {\n constructor() {\n super(Types.renameTable)\n }\n\n convert(jsonStatement) {\n const { from, to } = jsonStatement\n return `ALTER TABLE ${from} RENAME TO ${to}`\n }\n}\n\nclass AlterTableDropColumnConvertor extends Convertor {\n constructor() {\n super(Types.alterTableDropColumn)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} DROP COLUMN IF EXISTS ${columnName};`\n }\n}\n\nclass AlterTableAddColumnConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAddColumn)\n }\n\n convert(jsonStatement) {\n const { tableName, column } = jsonStatement\n const { name, type, defaultValue, notNull } = column;\n\n const defaultStatement = `${defaultValue ? ` DEFAULT ${defaultValue}` : ''}`\n const notNullStatement = `${notNull ? ' NOT NULL' : ''}`\n return `ALTER TABLE ${tableName} ADD COLUMN ${name} ${type}${defaultStatement}${notNullStatement}`.trim() + ';'\n }\n}\n\nclass AlterTableAlterColumnSetTypeConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnSetType)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName, newDataType } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET DATA TYPE ${newDataType};`\n }\n}\n\nclass AlterTableAlterColumnSetNotNullConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnSetNotNull)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} SET NOT NULL;`\n }\n}\n\nclass AlterTableAlterColumnDropNotNullConvertor extends Convertor {\n constructor() {\n super(Types.alterTableAlterColumnDropNotNull)\n }\n\n convert(jsonStatement) {\n const { tableName, columnName } = jsonStatement\n return `ALTER TABLE ${tableName} ALTER COLUMN ${columnName} DROP NOT NULL;`\n }\n}\n\nclass CreateIndexConvertor extends Convertor {\n constructor() {\n super(Types.createIndex)\n }\n\n convert(jsonStatement) {\n const { tableName, indexName, indexValue } = jsonStatement\n return `CREATE INDEX ${indexName} ON ${tableName} (${indexValue});`\n }\n}\n\nclass DropIndexConvertor extends Convertor {\n constructor() {\n super(Types.dropIndex)\n }\n\n convert(jsonStatement) {\n const { indexName } = jsonStatement\n return `DROP INDEX IF EXISTS ${indexName};`\n }\n}\n\nconst convertors = []\nconvertors.push(new CreateTableConvertor())\nconvertors.push(new CreateTypeEnumConvertor())\nconvertors.push(new DropTableConvertor())\nconvertors.push(new RenameTableConvertor())\nconvertors.push(new AlterTableDropColumnConvertor())\nconvertors.push(new AlterTableAddColumnConvertor())\nconvertors.push(new AlterTableAlterColumnSetTypeConvertor())\nconvertors.push(new CreateIndexConvertor())\nconvertors.push(new DropIndexConvertor())\nconvertors.push(new AlterTypeAddValueConvertor())\nconvertors.push(new AlterTableAlterColumnSetNotNullConvertor())\nconvertors.push(new AlterTableAlterColumnDropNotNullConvertor())\n\nexport const fromJson = (statements) => {\n return statements.map(statement => {\n const filtered = convertors.filter(it => {\n return it.can(statement.type)\n })\n const convertor = filtered.length === 1 ? filtered[0] : undefined\n\n if (!convertor) {\n console.log('no convertor:', statement.type)\n return 'dry run'\n }\n\n return convertor.convert(statement)\n })\n}\n\nexport const prepareDeleteColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n statement += `ALTER TABLE ${tableName} DROP COLUMN IF EXISTS ${column.name};`\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareCreateColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n const { name, type, defaultValue, notNull } = column;\n\n const defaultStatement = `${defaultValue ? `DEFAULT ${defaultValue}` : ''}`\n const notNullStatement = `${notNull ? 'NOT NULL' : ''}`\n statement += `ALTER TABLE ${tableName} ADD COLUMN ${name} ${type} ${defaultStatement} ${notNullStatement}`.trim() + ';'\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareAlterColumns = (tableName, columns) => {\n let statement = ''\n for (const column of columns) {\n const { name } = column;\n\n if (column['type']) {\n const { __new } = column.type\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DATA TYPE ${__new};`\n statement += '\\n'\n }\n\n if (column['defaultValue']) {\n const { __new } = column.defaultValue\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DEFAULT ${__new};`\n statement += '\\n'\n }\n\n if (column['defaultValue__added']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET DEFAULT ${column.defaultValue__added};`\n statement += '\\n'\n }\n\n if (column['defaultValue__deleted']) {\n // console.log(`default value deleted`)\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} DROP DEFAULT;`\n statement += '\\n'\n }\n\n if (column['notNull']) {\n const { __new } = column.notNull\n const dropStatement = __new ? 'SET NOT NULL' : 'DROP NOT NULL'\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} ${dropStatement};`\n statement += '\\n'\n }\n\n if (column['notNull__added']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} SET NOT NULL;`\n statement += '\\n'\n }\n\n if (column['notNull__deleted']) {\n statement += `ALTER TABLE ${tableName} ALTER COLUMN ${name} DROP NOT NULL;`\n statement += '\\n'\n }\n }\n return statement.trim()\n}\n\nexport const prepareCreateTable = (table) => {\n const { name, columns } = table\n const mappedColumns = Object.keys(columns)\n .map(it => {\n return { ...columns[it] }\n })\n\n let statement = ''\n\n statement += `CREATE TABLE ${name} (\\n`\n for (const column of mappedColumns) {\n // console.log(column);\n const primaryKeyStatement = column.primaryKey ? \"PRIMARY KEY\" : ''\n const notNullStatement = column.notNull ? \"NOT NULL\" : \"\";\n const defaultStatement = column.defaultValue ? `DEFAULT '${column.defaultValue}'` : \"\";\n statement += '\\t' + `${column.name} ${column.type} ${primaryKeyStatement} ${defaultStatement} ${notNullStatement}`.replace(/ +/g, ' ').trim() + ',\\n'\n }\n statement += `);`\n return statement;\n}\n\nexport const prepareCreateIndex = (table, indexes) => {\n let statement = ''\n for (const index of indexes) {\n const { name, columns } = index\n statement += `CREATE INDEX ${name} ON ${table} (${columns.join(', ')});`\n statement += '\\n'\n }\n\n return statement.trim()\n}\n\nexport const prepareDropIndex = (table, indexes) => {\n let statement = ''\n for (const index of indexes) {\n const { name } = index\n statement += `DROP INDEX IF EXISTS ${name};`\n statement += '\\n'\n }\n return statement.trim()\n}\n\nexport const prepareRenameTable = (tableFrom, tableTo) => {\n const namefrom = tableFrom.name\n const nameTo = tableTo.name\n const statement = `ALTER TABLE ${namefrom} RENAME TO ${nameTo}`\n return statement\n}\n\nexport const prepareDropTable = (table) => {\n const { name } = table;\n return `DROP TABLE ${name}`\n}\n\nexport const prepareCreateEnum = (name, values) => {\n // console.log(name, values)\n let valuesStatement = '('\n valuesStatement += Object.values(values).map(it => `'${it}'`).join(', ')\n valuesStatement += ')'\n\n const statement = `CREATE TYPE ${name} AS ENUM${valuesStatement};`\n return statement;\n}\n\n// https://blog.yo1.dog/updating-enum-values-in-postgresql-the-safe-and-easy-way/\nexport const prepareAddValuesToEnum = (name, values) => {\n let statement = ''\n for (const idx in values) {\n statement += `ALTER TYPE ${name} ADD VALUE ${values[idx]};`\n statement += '\\n'\n }\n return statement.trim();\n}\n\n\n\n\n// test case for enum altering\n`\ncreate table users (\n\tid int,\n name character varying(128)\n);\n\ncreate type venum as enum('one', 'two', 'three');\nalter table users add column typed venum;\n\ninsert into users(id, name, typed) values (1, 'name1', 'one');\ninsert into users(id, name, typed) values (2, 'name2', 'two');\ninsert into users(id, name, typed) values (3, 'name3', 'three');\n\nalter type venum rename to __venum;\ncreate type venum as enum ('one', 'two', 'three', 'four', 'five');\n\nALTER TABLE users ALTER COLUMN typed TYPE venum USING typed::text::venum;\n\ninsert into users(id, name, typed) values (4, 'name4', 'four');\ninsert into users(id, name, typed) values (5, 'name5', 'five');\n\ndrop type __venum;\n`","import { program } from 'commander';\n\nimport migrate from './migrate';\n\nconst cmd = program\n .command('migrate')\n .alias('mg')\n .description('Migration')\n .action(migrate);\ncmd.command('start').description('Start migration').action(migrate);\n","import { task, promptTablesConflicts, promptColumnsConflicts } from 'cli/components-api';\nimport fs from 'fs';\nimport yaml from 'js-yaml'\nimport * as differ from '../../../../differ';\nimport prepareMigration from 'migrationPreparator';\n\nimport { prepareAddValuesToEnumJson, prepareAlterTableColumnsJson, prepareCreateEnumJson, prepareCreateIndexesJson, prepareCreateTableJson, prepareDropIndexesJson, prepareDropTableJson, prepareRenameTableJson } from '../../../../jsonStatements';\nimport { fromJson } from '../../../../sqlgenerator';\n\ninterface Config {\n dataFolder: string;\n migrationRootFolder?: string;\n}\n\nexport interface TablesResultData<T> {\n created: T[],\n renamed: RenamedObject<T>[],\n deleted: T[],\n}\n\nexport interface ColumnsResultData<T extends Named> {\n created: T[],\n renamed: RenamedObject<T>[],\n deleted: T[],\n}\n\nexport interface Named {\n name: string\n}\n\nexport interface RenamedObject<T> {\n old: T,\n new: T\n}\n\nconst two = (num: number) => {\n return num.toString().padStart(2, '0')\n}\n\nconst migrate = async () => {\n const timeoutE = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)).then(() => {\n throw new Error('Checking error handling');\n });\n\n const timeout = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\n const drizzleConfig: Config = yaml.load(fs.readFileSync('drizzle.config.yml', { encoding: 'utf-8' })) as Config;\n const migrationRootFolder = drizzleConfig.migrationRootFolder || 'drizzle' // or from config/params\n const dataFolder = drizzleConfig.dataFolder\n\n const { prev, cur } = await task('preparing data schema json snapshot', async ({ setTitle }) => {\n return prepareMigration(migrationRootFolder, dataFolder)\n });\n\n // const j1 = JSON.parse(fs.readFileSync('./out/v1_1634546745488.json', 'utf8'));\n // const j2 = JSON.parse(fs.readFileSync('./out/v2_1634549601361.json', 'utf8'));\n\n const diff = await task('preparing schemas diff', async ({ setTitle }) => {\n return differ.differ(prev, cur);\n });\n\n const { created, renamed, deleted } = await promptTablesConflicts({\n newTables: diff.addedTables,\n missingTables: diff.deletedTables,\n });\n\n const jsonStatements: any[] = []\n\n const jsonCreateTables = created.map(it => {\n return prepareCreateTableJson(it)\n })\n\n const jsonCreateIndexesForCreatedTables = created.map(it => {\n return prepareCreateIndexesJson(it.name, it.indexes)\n }).flat()\n\n const jsonDropTables = deleted.map(it => {\n return prepareDropTableJson(it)\n })\n\n const jsonRenameTables = renamed.map(it => {\n return prepareRenameTableJson(it.old, it.new)\n })\n\n // const createNewTables = created.map(it => {\n // return prepareCreateTable(it)\n // })\n // console.log(createNewTables.join('\\n').trim())\n\n // const deleteTables = deleted.map(it => {\n // return prepareDropTable(it)\n // })\n // console.log(deleteTables.join('\\n').trim())\n\n const renamedWithAlternations = differ.diffForRenamed(renamed)\n const allAltered = diff.alteredTablesWithColumns.concat(renamedWithAlternations)\n\n const allAlteredResolved = []\n for (const table of allAltered) {\n const result = await promptColumnsConflicts(table);\n\n const { deleted, added, ...ini } = table\n\n allAlteredResolved.push({ ...ini, ...result })\n }\n\n // console.log(JSON.stringify(allAlteredResolved, null, 2))\n\n // const renameTables = renamed.map(it => {\n // return prepareRenameTable(it.from, it.to)\n // })\n // console.log(renameTables.join('\\n').trim())\n\n const jsonAlterTables = allAlteredResolved.map(it => {\n return prepareAlterTableColumnsJson(it)\n }).flat()\n\n const jsonCreateIndexesForAllAlteredTables = allAlteredResolved.map(it => {\n return prepareCreateIndexesJson(it.name, it.addedIndexes || {})\n }).flat()\n\n const jsonDropIndexesForAllAlteredTables = allAlteredResolved.map(it => {\n return prepareDropIndexesJson(it.name, it.deletedIndexes || {})\n }).flat()\n\n // // Enums:\n // // - создание енама ✅\n // // - переименование енама (пока не делаю)⏳\n // // - добавление вэлью к енаму ✅\n // // - ренейм вейлью у енама (пока не делаю, это надо запрашивать опять же через слай)⏳\n // // - удаление енама -> чекать не используется ли где-то енам и сначала ранить миграции и в самом конце удаление енама⏳\n // // - удаление вэлью из енама -> блок ❌\n // const enums = result.addedEnums.map(it => {\n // return prepareCreateEnum(it.name, it.values)\n // })\n\n const createEnums = diff.addedEnums.map(it => {\n return prepareCreateEnumJson(it.name, it.values)\n })\n\n //todo: block enum rename, enum value rename and enun deletion for now\n const jsonAlterEnumsWithAddedValues = diff.alteredEnums.map(it => {\n return prepareAddValuesToEnumJson(it.name, it.addedValues)\n }).flat()\n\n jsonStatements.push(...createEnums)\n jsonStatements.push(...jsonAlterEnumsWithAddedValues)\n jsonStatements.push(...jsonCreateTables)\n jsonStatements.push(...jsonCreateIndexesForCreatedTables)\n jsonStatements.push(...jsonDropTables)\n jsonStatements.push(...jsonRenameTables)\n jsonStatements.push(...jsonAlterTables)\n jsonStatements.push(...jsonCreateIndexesForAllAlteredTables)\n jsonStatements.push(...jsonDropIndexesForAllAlteredTables)\n\n // console.log(JSON.stringify(jsonStatements, null, 2))\n // console.log(jsonStatements)\n\n const sqlStatements = fromJson(jsonStatements)\n console.log(sqlStatements.join('\\n'))\n\n // todo: save results to a new migration folder\n const date = new Date()\n // const folderName = `${date.getFullYear()}-${two(date.getMonth())}-${two(date.getDate())} ${two(date.getHours())}:${two(date.getMinutes())}:${two(date.getSeconds())}`\n const folderName = date.toISOString()\n const migrationFolderPath = `./${migrationRootFolder}/${folderName}`\n fs.mkdirSync(migrationFolderPath)\n fs.writeFileSync(`${migrationFolderPath}/snapshot.json`, JSON.stringify(cur, null, 2))\n fs.writeFileSync(`${migrationFolderPath}/migration.sql`, sqlStatements.join('\\n'))\n\n};\n\nexport default migrate;\n","import React from 'react';\nimport { useSnapshot } from 'valtio';\n\ninterface Props {\n componentsList: React.ReactElement<any, any>[];\n}\n\nconst ComponentsList: React.FC<Props> = ({\n componentsList,\n}) => {\n useSnapshot(componentsList);\n\n return (\n <>\n {componentsList.map((component, i) => ({ ...component, key: i }))}\n </>\n );\n};\n\nexport default ComponentsList;\n","import { render } from 'ink';\nimport React from 'react';\n\nimport ComponentsList from 'cli/components-api/ComponentsList';\n\nconst createApp = (componentsList: React.ReactElement<any, any>[]) => {\n const inkApp = render(<ComponentsList componentsList={componentsList} />);\n\n return {\n remove() {\n inkApp.rerender(null);\n inkApp.unmount();\n inkApp.clear();\n inkApp.cleanup();\n },\n };\n};\n\nexport default createApp;\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport SelectInput from 'ink-select-input';\nimport Table, { Header } from 'ink-table';\nimport { useMachine } from '@xstate/react';\nimport { Item } from 'ink-select-input/build/SelectInput';\n\nimport { ColumnsResultData, Named } from 'cli/commands/migration/migrate';\nimport formatDataForTable from 'cli/utils/formatDataForTable';\nimport {\n Action,\n Confirmation,\n actions,\n confirmations,\n} from 'cli/utils/valuesForPrompts';\nimport createResolveColumnsMachine, { TableWithColumn } from 'cli/machines/resolveColumnsMachine';\n\ninterface Props {\n onDone: (value: ColumnsResultData<Named>) => void\n tableWithColumns: TableWithColumn,\n}\n\nconst PromptColumnsConflicts: React.FC<Props> = ({\n onDone,\n tableWithColumns: props,\n}) => {\n const [current, send] = useMachine(\n createResolveColumnsMachine({ tableWithColumns: props }),\n );\n\n const {\n tableName,\n addedColumns,\n deletedColumns,\n missingItemIndex,\n created,\n renamed,\n deleted,\n } = current.context;\n\n const selectItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_ITEM', itemIndex: item.value });\n };\n\n const selectNewItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_NEW_ITEM', itemIndex: item.value });\n };\n\n const selectAction = (action: Item<Action>) => {\n send({ type: action.value });\n };\n\n const confirm = (confirmationItem: Item<Confirmation>) => {\n send({ type: confirmationItem.value });\n };\n\n const renderDOM = () => {\n if (current.matches('table')) {\n return (\n <>\n <Box display=\"flex\" flexDirection=\"column\">\n <Box display=\"flex\">\n <Box flexDirection=\"column\">\n <Header>{`Table \"${tableName}\" missing columns:`}</Header>\n <SelectInput\n items={deletedColumns!.map((column, i: number) => ({\n key: String(i),\n label: column.name,\n value: i,\n }))}\n onSelect={selectItemIndex}\n />\n </Box>\n {!!addedColumns?.length && (\n <Box flexDirection=\"column\" paddingLeft={5}>\n <Header>New tables:</Header>\n <Box display=\"flex\" flexDirection=\"column\">\n {addedColumns.map(({ name }, i) => <Text key={name + i}>{name}</Text>)}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </>\n );\n }\n\n if (current.matches('action.actionChoice')) {\n const tempActions = !addedColumns!.length\n ? actions.filter(({ value }) => value !== Action.RENAME)\n : actions;\n\n return (\n <>\n <Header>{`${deletedColumns![missingItemIndex]?.name} is:`}</Header>\n <SelectInput items={tempActions} onSelect={selectAction} />\n </>\n );\n }\n\n if (current.matches('confirmationDelete')) {\n return (\n <>\n <Header>!!! Data in table will be lost !!!</Header>\n <Text>Are you sure?</Text>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('confirmationRename')) {\n return (\n <>\n <Header>Are you sure?</Header>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('action.rename')) {\n return (\n <>\n <Header>{`${deletedColumns![missingItemIndex]?.name} was renamed to:`}</Header>\n <SelectInput\n items={addedColumns!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectNewItemIndex}\n />\n </>\n );\n }\n\n if (current.matches('done')) {\n onDone({ created, renamed, deleted });\n }\n\n return (<></>);\n };\n\n return (!!deleted.length\n || !!renamed.length\n || !!created.length) ? (\n <Box flexDirection=\"column\" margin={1}>\n <Box flexDirection=\"column\" marginBottom={0}>\n <Header>{`${tableName} columns:`}</Header>\n <Table\n data={formatDataForTable([\n {\n title: 'Deleted',\n values: deleted,\n },\n {\n title: 'Renamed',\n values: renamed,\n },\n {\n title: 'Created',\n values: created,\n },\n ])}\n />\n </Box>\n {renderDOM()}\n </Box>\n ) : renderDOM();\n};\n\nexport default PromptColumnsConflicts;\n","import React from 'react';\nimport { Box, Text } from 'ink';\nimport SelectInput from 'ink-select-input';\nimport Table, { Header } from 'ink-table';\nimport { useMachine } from '@xstate/react';\nimport { Item } from 'ink-select-input/build/SelectInput';\n\nimport { Named, TablesResultData } from 'cli/commands/migration/migrate';\nimport createResolveTablesMachine from 'cli/machines/resolveTablesMachine';\nimport formatDataForTable from 'cli/utils/formatDataForTable';\nimport {\n Action,\n Confirmation,\n actions,\n confirmations,\n} from 'cli/utils/valuesForPrompts';\n\nexport interface RenderTablesSelectProps<T extends Named> {\n missingTables: T[],\n newTables: T[],\n}\n\ninterface Props<T extends Named> extends RenderTablesSelectProps<T> {\n onDone: (value: TablesResultData<T>) => void;\n}\n\nconst PromptTablesConflicts: React.FC<Props<any>> = ({\n onDone,\n newTables: newProps,\n missingTables: missingProps,\n}) => {\n const [current, send] = useMachine(createResolveTablesMachine({\n missingTables: missingProps,\n newTables: newProps,\n }));\n\n const {\n missingItemIndex,\n newTables,\n missingTables,\n createdTables,\n renamedTables,\n deletedTables,\n } = current.context;\n\n const selectItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_ITEM', itemIndex: item.value });\n };\n\n const selectNewItemIndex = (item: Item<number>) => {\n send({ type: 'CHOICE_NEW_ITEM', itemIndex: item.value });\n };\n\n const selectAction = (action: Item<Action>) => {\n send({ type: action.value });\n };\n\n const confirm = (confirmationItem: Item<Confirmation>) => {\n send({ type: confirmationItem.value });\n };\n\n const renderDOM = () => {\n if (current.matches('table')) {\n return (\n <>\n <Box display=\"flex\" flexDirection=\"column\">\n <Box display=\"flex\">\n <Box flexDirection=\"column\">\n <Header>Missing tables:</Header>\n <SelectInput\n items={missingTables!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectItemIndex}\n />\n </Box>\n {!!newTables?.length && (\n <Box flexDirection=\"column\" paddingLeft={5}>\n <Header>New tables:</Header>\n <Box display=\"flex\" flexDirection=\"column\">\n {newTables.map(({ name }, i) => <Text key={name + i}>{name}</Text>)}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n </>\n );\n }\n\n if (current.matches('action.actionChoice')) {\n const tempActions = !newTables!.length\n ? actions.filter(({ value }) => value !== Action.RENAME)\n : actions;\n\n return (\n <>\n <Header>{`${missingTables![missingItemIndex]?.name} is:`}</Header>\n <SelectInput items={tempActions} onSelect={selectAction} />\n </>\n );\n }\n\n if (current.matches('confirmationDelete')) {\n return (\n <>\n <Header>!!! Data in table will be lost !!!</Header>\n <Text>Are you sure?</Text>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('confirmationRename')) {\n return (\n <>\n <Header>Are you sure?</Header>\n <SelectInput items={confirmations} onSelect={confirm} />\n </>\n );\n }\n\n if (current.matches('action.rename')) {\n return (\n <>\n <Header>{`${missingTables![missingItemIndex]?.name} was renamed to:`}</Header>\n <SelectInput\n items={newTables!.map((table, i: number) => ({\n key: String(i),\n label: table.name,\n value: i,\n }))}\n onSelect={selectNewItemIndex}\n />\n </>\n );\n }\n\n if (current.matches('done')) {\n onDone({\n created: createdTables,\n renamed: renamedTables,\n deleted: deletedTables,\n });\n }\n\n return (<></>);\n };\n\n return (!!deletedTables.length\n || !!renamedTables.length\n || !!createdTables.length) ? (\n <Box flexDirection=\"column\" margin={1}>\n <Box flexDirection=\"column\" marginBottom={0}>\n <Header>Tables: </Header>\n <Table\n data={formatDataForTable([\n {\n title: 'Deleted',\n values: deletedTables,\n },\n {\n title: 'Renamed',\n values: renamedTables,\n },\n {\n title: 'Created',\n values: createdTables,\n },\n ])}\n />\n </Box>\n {renderDOM()}\n </Box>\n ) : renderDOM();\n};\n\nexport default PromptTablesConflicts;\n","import React, { useEffect, useState } from 'react';\nimport { Box, Newline, Text } from 'ink';\nimport Spinner from 'ink-spinner';\nimport { CreateTaskParams } from 'cli/components-api/index';\n\nenum StepState {\n IN_PROGRESS,\n SUCCESS,\n FAIL\n}\n\nexport interface CallbackProps {\n setTitle: React.Dispatch<React.SetStateAction<string>>\n setError: React.Dispatch<React.SetStateAction<any>>\n}\n\ninterface Props<T> {\n func: (props: CallbackProps) => T;\n onDone: (result: T) => T;\n titleStr: string;\n}\n\nconst Task: React.FC<Props<any>> = <T extends unknown>(props: Props<T>) => {\n const {\n func,\n onDone,\n titleStr,\n } = props;\n const [title, setTitle] = useState<string>(titleStr);\n const [state, setState] = useState<StepState>(StepState.IN_PROGRESS);\n const [error, setError] = useState<any>(null);\n\n useEffect(() => {\n (async () => {\n try {\n const result = await func({ setTitle, setError });\n setState(StepState.SUCCESS);\n onDone(result);\n } catch (e) {\n setError(e);\n setState(StepState.FAIL);\n }\n })();\n }, []);\n\n return (\n <Box flexDirection=\"row\">\n <Box marginRight={1}>\n {state === StepState.IN_PROGRESS ? (\n <Text>\n [\n <Spinner type=\"dots\" />\n ]\n </Text>\n ) : state === StepState.SUCCESS ? (\n <Text>\n [\n <Text color=\"green\">✓</Text>\n ]\n </Text>\n ) : (\n <Text>\n [\n <Text color=\"red\">×</Text>\n ]\n </Text>\n )}\n\n {state === StepState.FAIL ? (\n <Text>\n {title}\n <Newline />\n <Text color=\"red\">{error!.message}</Text>\n </Text>\n ) : (\n <>\n <Text>{title}</Text>\n </>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default Task;\n","import React from 'react';\nimport { proxy } from 'valtio';\n\nimport {\n ColumnsResultData,\n Named,\n TablesResultData,\n} from 'cli/commands/migration/migrate';\nimport Task, { CallbackProps } from 'cli/components-api/components/Task';\nimport createApp from 'cli/components-api/CreateApp';\nimport { TableWithColumn } from 'cli/machines/resolveColumnsMachine';\nimport PromptTablesConflicts, { RenderTablesSelectProps } from 'cli/components-api/components/PromptTablesConflicts';\nimport PromptColumnsConflicts from 'cli/components-api/components/PromptColumnsConflicts';\n\nconst componentsList = proxy<React.ReactElement<any, any>[]>([]);\nlet app: ReturnType<typeof createApp>;\n\nexport interface CreateTaskParams<In, Cbs> {\n input: In,\n run: (cbs: Cbs) => void\n}\n\nconst prepareApp = () => {\n if (!app) {\n app = createApp(componentsList);\n componentsList.length = 0;\n }\n};\n\nexport const task = <T extends unknown>(\n titleStr: string,\n func: (props: CallbackProps) => T,\n) => new Promise<T>((\n resolve,\n ) => {\n prepareApp();\n\n componentsList.push(\n <Task\n titleStr={titleStr}\n func={func}\n onDone={(val: T) => resolve(val)}\n />,\n );\n });\n\nexport const promptTablesConflicts = <T extends Named>(\n { missingTables, newTables }: RenderTablesSelectProps<T>,\n) => new Promise<TablesResultData<T>>((\n resolve,\n) => {\n prepareApp();\n\n componentsList.push(\n <PromptTablesConflicts\n onDone={(val) => resolve(val)}\n missingTables={missingTables}\n newTables={newTables}\n />,\n );\n});\n\nexport const promptColumnsConflicts = (\n tableWithColumns: TableWithColumn,\n) => new Promise<ColumnsResultData<Named>>((\n resolve,\n) => {\n prepareApp();\n\n componentsList.push(\n <PromptColumnsConflicts\n onDone={(val) => resolve(val)}\n tableWithColumns={tableWithColumns}\n />,\n );\n});\n","import { assign, createMachine, send } from 'xstate';\nimport { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ntype Event =\n | { type: 'CHOICE_ITEM', itemIndex: number }\n | { type: 'DELETE' }\n | { type: 'RENAME' }\n | { type: 'CANCEL' }\n | { type: 'CONFIRM' }\n | { type: 'NEXT' }\n | { type: 'CHOICE_NEW_ITEM'; itemIndex: number };\n\nexport interface TableWithColumn {\n name: string;\n added: Named[],\n deleted: Named[],\n}\n\ninterface Props {\n tableWithColumns: TableWithColumn,\n}\n\ninterface Context {\n tableName: string,\n addedColumns: Named[],\n deletedColumns: Named[],\n missingItemIndex: number,\n newItemIndex: number,\n created: Named[];\n renamed: RenamedObject<Named>[];\n deleted: Named[];\n}\n\nconst createResolveColumnsMachine = (props: Props) => (\n createMachine<Context, Event>({\n id: 'resolveColumns',\n initial: 'table',\n context: {\n tableName: props.tableWithColumns.name,\n addedColumns: props.tableWithColumns.added,\n deletedColumns: props.tableWithColumns.deleted,\n missingItemIndex: 0,\n newItemIndex: 0,\n created: [],\n renamed: [],\n deleted: [],\n },\n states: {\n table: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingColumnsResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'done',\n cond: 'isNewColumnsResolved',\n actions: ['resolveMissing'],\n },\n ],\n CHOICE_ITEM: { target: 'action', actions: ['choseItem'] },\n },\n },\n action: {\n initial: 'actionChoice',\n states: {\n actionChoice: {\n on: { DELETE: '#resolveColumns.confirmationDelete', RENAME: 'rename' },\n },\n rename: {\n on: {\n CHOICE_NEW_ITEM: { target: '#resolveColumns.confirmationRename', actions: ['choseNewItem'] },\n },\n },\n },\n },\n confirmationDelete: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['delete'] },\n ],\n },\n },\n confirmationRename: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['rename'] },\n ],\n },\n },\n final: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingColumnsResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'table',\n },\n ],\n },\n },\n done: {},\n },\n },\n {\n guards: {\n isMissingColumnsResolved: ({ deletedColumns }) => !deletedColumns.length,\n isNewColumnsResolved: ({ addedColumns }) => !addedColumns.length,\n },\n actions: {\n choseItem: assign({\n missingItemIndex: (context, event) => (event.type === 'CHOICE_ITEM' ? event.itemIndex : 0),\n }),\n\n choseNewItem: assign({\n newItemIndex: (context, event) => (event.type === 'CHOICE_NEW_ITEM' ? event.itemIndex : 0),\n }),\n\n delete: assign({\n deleted: ({\n missingItemIndex,\n deleted,\n deletedColumns,\n }) => [...deleted, deletedColumns[missingItemIndex]],\n deletedColumns: ({\n missingItemIndex,\n deletedColumns,\n }) => deletedColumns.filter((_, index) => index !== missingItemIndex),\n }),\n\n rename: assign({\n renamed: ({\n missingItemIndex,\n newItemIndex,\n renamed,\n addedColumns,\n deletedColumns,\n }) => [\n ...renamed,\n { old: deletedColumns[missingItemIndex], new: addedColumns[newItemIndex] },\n ],\n deletedColumns: ({\n missingItemIndex,\n deletedColumns,\n }) => deletedColumns.filter((_, index) => index !== missingItemIndex),\n addedColumns: ({\n newItemIndex,\n addedColumns,\n }) => addedColumns.filter((_, index) => index !== newItemIndex),\n }),\n\n resolveRemaining: assign({\n created: ({\n addedColumns,\n created,\n }) => [...created, ...addedColumns],\n addedColumns: (context) => [],\n }),\n\n resolveMissing: assign({\n deleted: ({\n deletedColumns,\n deleted,\n }) => [...deleted, ...deletedColumns],\n deletedColumns: (context) => [],\n }),\n },\n }));\n\nexport default createResolveColumnsMachine;\n","import { assign, createMachine, send } from 'xstate';\nimport { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ntype Event =\n | { type: 'CHOICE_ITEM', itemIndex: number }\n | { type: 'DELETE' }\n | { type: 'RENAME' }\n | { type: 'CANCEL' }\n | { type: 'CONFIRM' }\n | { type: 'NEXT' }\n | { type: 'CHOICE_NEW_ITEM'; itemIndex: number };\n\ninterface Context extends Props {\n missingItemIndex: number,\n newItemIndex: number,\n createdTables: Named[];\n renamedTables: RenamedObject<Named>[];\n deletedTables: Named[];\n}\n\ninterface Props {\n missingTables: Named[],\n newTables: Named[],\n}\n\nconst createResolveTablesMachine = (props: Props) => (\n createMachine<Context, Event>({\n id: 'resolveTables',\n initial: 'table',\n context: {\n ...props,\n missingItemIndex: 0,\n newItemIndex: 0,\n createdTables: [],\n renamedTables: [],\n deletedTables: [],\n },\n states: {\n table: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingTablesResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'done',\n cond: 'isNewTablesResolved',\n actions: ['resolveMissing'],\n },\n ],\n CHOICE_ITEM: { target: 'action', actions: ['choseItem'] },\n },\n },\n action: {\n initial: 'actionChoice',\n states: {\n actionChoice: {\n on: { DELETE: '#resolveTables.confirmationDelete', RENAME: 'rename' },\n },\n rename: {\n on: {\n CHOICE_NEW_ITEM: { target: '#resolveTables.confirmationRename', actions: ['choseNewItem'] },\n },\n },\n },\n },\n confirmationDelete: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['delete'] },\n ],\n },\n },\n confirmationRename: {\n on: {\n CANCEL: 'action.actionChoice',\n CONFIRM: [\n { target: 'final', actions: ['rename'] },\n ],\n },\n },\n final: {\n entry: send({ type: 'NEXT' }),\n on: {\n NEXT: [\n {\n target: 'done',\n cond: 'isMissingTablesResolved',\n actions: ['resolveRemaining'],\n },\n {\n target: 'table',\n },\n ],\n },\n },\n done: {},\n },\n },\n {\n guards: {\n isMissingTablesResolved: ({ missingTables }) => !missingTables.length,\n isNewTablesResolved: ({ newTables }) => !newTables.length,\n },\n actions: {\n choseItem: assign({\n missingItemIndex: (context, event) => (event.type === 'CHOICE_ITEM' ? event.itemIndex : 0),\n }),\n\n choseNewItem: assign({\n newItemIndex: (context, event) => (event.type === 'CHOICE_NEW_ITEM' ? event.itemIndex : 0),\n }),\n\n delete: assign({\n deletedTables: ({\n missingItemIndex,\n deletedTables,\n missingTables,\n }) => [...deletedTables, missingTables[missingItemIndex]],\n missingTables: ({\n missingItemIndex,\n missingTables,\n }) => missingTables.filter((_, index) => index !== missingItemIndex),\n }),\n\n rename: assign({\n renamedTables: ({\n missingItemIndex,\n newItemIndex,\n renamedTables,\n newTables,\n missingTables,\n }) => [\n ...renamedTables,\n { old: missingTables[missingItemIndex], new: newTables[newItemIndex] },\n ],\n missingTables: ({\n missingItemIndex,\n missingTables,\n }) => missingTables.filter((_, index) => index !== missingItemIndex),\n newTables: ({\n newItemIndex,\n newTables,\n }) => newTables.filter((_, index) => index !== newItemIndex),\n }),\n\n resolveRemaining: assign({\n createdTables: ({\n newTables,\n createdTables,\n }) => [...createdTables, ...newTables],\n newTables: (context) => [],\n }),\n\n resolveMissing: assign({\n deletedTables: ({\n missingTables,\n deletedTables,\n }) => [...deletedTables, ...missingTables],\n missingTables: (context) => [],\n }),\n },\n }));\n\nexport default createResolveTablesMachine;\n","import { Named, RenamedObject } from 'cli/commands/migration/migrate';\n\ninterface ScalarDict {\n [key: string]: string\n}\n\nexport default (\n data: {\n title: string;\n values: Named[] | RenamedObject<Named>[]\n }[],\n): ScalarDict[] => {\n const array: ScalarDict[] = [];\n\n array.length = data.reduce((acc: number, { values }) => {\n if (acc < values.length) {\n return values.length;\n }\n return acc;\n },\n 0);\n\n array.fill({ '': '' });\n\n return array.map((_, i) => {\n const temp = {} as ScalarDict;\n\n data.forEach((item: any, ind: number) => {\n temp[data[ind].title] = item.values[i]?.old?.name\n ? `${item.values[i]?.old?.name} -> ${item.values[i]?.new?.name}`\n : item.values[i]?.name || '';\n });\n\n return temp as ScalarDict;\n });\n};\n","export enum Action {\n RENAME = 'RENAME',\n DELETE = 'DELETE'\n}\n\nexport enum Confirmation {\n CANCEL = 'CANCEL',\n CONFIRM = 'CONFIRM'\n}\n\nexport const actions = [\n {\n key: Action.RENAME,\n label: 'Renamed',\n value: Action.RENAME,\n },\n {\n key: Action.DELETE,\n label: 'Deleted',\n value: Action.DELETE,\n },\n];\n\nexport const confirmations = [\n {\n key: Confirmation.CONFIRM,\n label: 'Yes',\n value: Confirmation.CONFIRM,\n },\n {\n key: Confirmation.CANCEL,\n label: 'No',\n value: Confirmation.CANCEL,\n },\n];\n","import fs from 'fs'\nimport serialize from 'serializer'\n\n// TODO: export as a function w\n\nconst dry = {\n version: \"1\",\n tables: {},\n enums: {}\n}\n\nconst prepareMigration = (\n migrationRootFolderName: string = 'drizzle',\n dataFolderPath: string\n): { prev: any, cur: any } => {\n const root = migrationRootFolderName\n const files = fs.readdirSync('./')\n const drizzleFolder = files.find((it) => {\n return it === root\n })\n\n if (!drizzleFolder) {\n fs.mkdirSync(root)\n }\n\n const migrationFolders = fs.readdirSync(`./${root}`)\n\n let prevSnapshot;\n\n if (migrationFolders.length === 0) {\n prevSnapshot = dry\n } else {\n migrationFolders.sort()\n const lastSnapshotFolder = migrationFolders[migrationFolders.length - 1]\n console.log(lastSnapshotFolder)\n prevSnapshot = JSON.parse(fs.readFileSync(`./${root}/${lastSnapshotFolder}/snapshot.json`).toString())\n }\n\n const tbls = `${dataFolderPath}/tables/`\n const tps = `${dataFolderPath}/types/`\n\n const result = serialize(tbls, tps)\n\n return { prev: prevSnapshot, cur: result }\n}\n\nexport default prepareMigration;","import ts from \"typescript\";\nimport fs from \"fs\";\nconst printer: ts.Printer = ts.createPrinter();\n\nconst prepareFabricFile = (tablesFolder: string, typesFolder: string) => {\n const staticImports = [\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier('drizzle'))\n ),\n ts.createStringLiteral('drizzle-orm')\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n ts.createIdentifier('MigrationSerializer'),\n undefined\n ),\n ts.createStringLiteral('drizzle-orm/serializer/serializer')\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(ts.createIdentifier(\"Enum\"), undefined),\n ts.createStringLiteral(\"drizzle-orm/types/type\"),\n ),\n ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier('pg'))\n ),\n ts.createStringLiteral('pg')\n ),\n ];\n\n const dynamicImports = [];\n const tablesFilenames = fs.readdirSync(tablesFolder);\n for (let i = 0; i < tablesFilenames.length; i++) {\n const filename = tablesFilenames[i];\n const importPath = `${tablesFolder}${filename.split(\".\")[0]}`;\n dynamicImports.push(ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier(`i${i}`)),\n ),\n ts.createStringLiteral(importPath),\n ));\n }\n const typesFilenames = fs.readdirSync(typesFolder);\n for (let i = 0; i < typesFilenames.length; i++) {\n const filename = typesFilenames[i];\n const importPath = `${typesFolder}${filename.split(\".\")[0]}`;\n dynamicImports.push(ts.createImportDeclaration(\n undefined,\n undefined,\n ts.createImportClause(\n undefined,\n ts.createNamespaceImport(ts.createIdentifier(`t${i}`)),\n ),\n ts.createStringLiteral(importPath),\n ));\n }\n\n const variablesStatements = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"db\"),\n undefined,\n ts.createNew(ts.createIdentifier(\"drizzle.DB\"), undefined, [\n ts.createNew(ts.createPropertyAccess(\n ts.createIdentifier('pg'),\n ts.createIdentifier('Pool')\n ), undefined, []),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"serializer\"),\n undefined,\n ts.createNew(ts.createIdentifier(\"MigrationSerializer\"), undefined, []),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ];\n\n const blockStatements = [];\n\n // const tables = []\n blockStatements.push(ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier('tables'),\n ts.createArrayTypeNode(\n ts.createTypeReferenceNode(\n ts.createQualifiedName(\n ts.createIdentifier('drizzle'),\n ts.createIdentifier('AbstractTable')\n ),\n [ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)]\n )\n ),\n ts.createArrayLiteral([], false)\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ));\n\n for (let i = 0; i < tablesFilenames.length; i++) {\n // const t1 = (new i1.default(db) as unknown as AbstractTable<any>);\n // tables.push(t1)\n const blockStatement = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"table\" + i),\n undefined,\n ts.createParen(\n ts.createAsExpression(\n ts.createAsExpression(\n ts.createNew(\n ts.createPropertyAccess(\n ts.createIdentifier(\"i\" + i),\n ts.createIdentifier(\"default\"),\n ),\n undefined,\n [ts.createIdentifier(\"db\")],\n ),\n ts.createKeywordTypeNode(\n ts.SyntaxKind.UnknownKeyword,\n ),\n ),\n ts.createTypeReferenceNode(\n ts.createQualifiedName(\n ts.createIdentifier('drizzle'),\n ts.createIdentifier('AbstractTable')\n ),\n [\n ts.createKeywordTypeNode(\n ts.SyntaxKind.AnyKeyword\n )\n ]\n ),\n ),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"tables\"),\n ts.createIdentifier(\"push\"),\n ),\n undefined,\n [ts.createIdentifier(\"table\" + i)],\n ),\n ),\n ];\n\n blockStatements.push(...blockStatement);\n }\n\n // const enums = []\n blockStatements.push(ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier('enums'),\n ts.createArrayTypeNode(\n ts.createTypeReferenceNode(\n ts.createIdentifier('Enum'),\n [ts.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)]\n )\n ),\n ts.createArrayLiteral([], false)\n )\n ],\n ts.NodeFlags.Const\n ),\n ));\n\n // Object.values(t0).forEach((t) => {\n // enums.push(t as Enum<any>);\n // });\n if (typesFilenames.length > 0) {\n blockStatements.push(\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"Object\"),\n ts.createIdentifier(\"values\"),\n ),\n undefined,\n [ts.createIdentifier(\"t0\")],\n ),\n ts.createIdentifier(\"forEach\"),\n ),\n undefined,\n [\n ts.createArrowFunction(\n undefined,\n undefined,\n [\n ts.createParameter(\n undefined,\n undefined,\n undefined,\n ts.createIdentifier(\"t\"),\n undefined,\n undefined,\n undefined,\n ),\n ],\n undefined,\n ts.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n ts.createBlock(\n [\n ts.createExpressionStatement(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"enums\"),\n ts.createIdentifier(\"push\"),\n ),\n undefined,\n [\n ts.createAsExpression(\n ts.createAsExpression(\n ts.createIdentifier(\"t\"),\n ts.createKeywordTypeNode(\n ts.SyntaxKind.UnknownKeyword,\n ),\n ),\n ts.createTypeReferenceNode(\n ts.createIdentifier(\"Enum\"),\n [\n ts.createKeywordTypeNode(\n ts.SyntaxKind.AnyKeyword,\n ),\n ],\n ),\n ),\n ],\n ),\n ),\n ],\n true,\n ),\n ),\n ],\n ),\n ),\n );\n }\n\n // return serializer.generate(tables, enums)\n blockStatements.push(\n ts.createReturn(\n ts.createCall(\n ts.createPropertyAccess(\n ts.createIdentifier(\"serializer\"),\n ts.createIdentifier(\"generate\"),\n ),\n undefined,\n [\n ts.createIdentifier(\"tables\"),\n ts.createIdentifier(\"enums\"),\n ],\n ),\n ),\n );\n\n const funcStatement = [\n ts.createVariableStatement(\n undefined,\n ts.createVariableDeclarationList(\n [\n ts.createVariableDeclaration(\n ts.createIdentifier(\"testFun\"),\n undefined,\n ts.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n ts.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n // function body\n ts.createBlock(\n blockStatements,\n true,\n ),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n ];\n const invocationStatement = [\n ts.createExpressionStatement(\n ts.createCall(ts.createIdentifier(\"testFun\"), undefined, []),\n ),\n ];\n\n const outFile: ts.SourceFile = ts.createSourceFile(\n \"outfile.ts\",\n \"\",\n ts.ScriptTarget.ES2015,\n true,\n ts.ScriptKind.TS,\n );\n\n const source = [];\n source.push(...staticImports);\n source.push(...dynamicImports);\n source.push(...variablesStatements);\n source.push(...funcStatement);\n source.push(...invocationStatement);\n\n const newFile = ts.factory.updateSourceFile(outFile, source);\n\n return printer.printFile(newFile);\n};\n\nexport default prepareFabricFile;\n","import fs from \"fs\";\nimport { StringDecoder } from \"string_decoder\";\nimport prepareFabricFile from \"./factory\";\nconst esbuild = require(\"esbuild\");\n\nconst serialize = (pathToTables: string, pathToTypes: string): string => {\n const decoder = new StringDecoder();\n // const preparedFarbic = prepareFabricFile(\"./examples/tables/\", './examples/types/')\n const preparedFarbic = prepareFabricFile(pathToTables, pathToTypes)\n \n fs.writeFileSync(\"__out.ts\", preparedFarbic, \"utf-8\");\n const result = esbuild.buildSync({\n entryPoints: [\"__out.ts\"],\n bundle: true,\n platform: \"node\",\n write: false,\n external: [\"pg-native\"],\n });\n\n fs.rmSync(\"__out.ts\");\n return eval(decoder.write(result.outputFiles[0].contents));\n};\n\nexport default serialize;\n","module.exports = require(\"@xstate/react\");","module.exports = require(\"commander\");","module.exports = require(\"esbuild\");","module.exports = require(\"ink\");","module.exports = require(\"ink-select-input\");","module.exports = require(\"ink-spinner\");","module.exports = require(\"ink-table\");","module.exports = require(\"js-yaml\");","module.exports = require(\"pretty-error/start\");","module.exports = require(\"react\");","module.exports = require(\"source-map-support/register\");","module.exports = require(\"string_decoder\");","module.exports = require(\"typescript\");","module.exports = require(\"valtio\");","module.exports = require(\"xstate\");","module.exports = require(\"fs\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { program } from 'commander';\nimport 'source-map-support/register';\nimport 'pretty-error/start';\n\nimport './commands/migration';\n\nprogram.parse();\n"],"names":["require","diffForRenamed","pairs","map","it","from","old","to","new","name","pair","diffed","diff","findAlternationsInTable","differ","json1","json2","difference","tables","enums","tableEntries","Object","entries","addedTables","filter","includes","indexes","indexEntry","idx","columns","values","deletedTables","enumsEntries","addedEnums","ve","deletedEnums","alteredEnums","vals","addedValues","val","deletedValues","alteredTablesWithColumns","keys","table","added","deleted","altered","deletedIndexes","indexes__deleted","concat","addedIndexes","indexes__added","Types","static","prepareCreateTableJson","mappedColumns","type","createTable","tableName","prepareDropTableJson","dropTable","prepareRenameTableJson","tableFrom","tableTo","renameTable","prepareCreateEnumJson","createTypeEnum","enumName","prepareAddValuesToEnumJson","alterTypeAddValue","enumValue","prepareAlterTableColumnsJson","statements","dropColumns","_prepareDropColumns","addColumns","_prepareAddColumns","created","alterColumns","_prepareAlterColumns","push","taleName","alterTableDropColumn","columnName","alterTableAddColumn","column","__new","alterTableAlterColumnSetType","newDataType","newDefaultValue","defaultValue","defaultValue__added","alterTableAlterColumnSetDefault","newDefault","alterTableAlterColumnDropDefault","alterTableAlterColumnSetNotNull","alterTableAlterColumnDropNotNull","prepareCreateIndexesJson","index","createIndex","indexName","indexValue","join","prepareDropIndexesJson","dropIndex","Convertor","constructor","this","can","convert","_","Error","convertors","super","jsonStatement","statement","primaryKeyStatement","primaryKey","notNullStatement","notNull","defaultStatement","replace","trim","valuesStatement","fromJson","filtered","convertor","length","undefined","console","log","prepareDeleteColumns","prepareCreateColumns","prepareAlterColumns","prepareCreateTable","prepareCreateIndex","prepareDropIndex","prepareRenameTable","prepareDropTable","prepareCreateEnum","prepareAddValuesToEnum","program","command","alias","description","action","async","drizzleConfig","load","readFileSync","encoding","migrationRootFolder","dataFolder","prev","cur","task","setTitle","renamed","promptTablesConflicts","newTables","missingTables","jsonStatements","jsonCreateTables","jsonCreateIndexesForCreatedTables","flat","jsonDropTables","jsonRenameTables","renamedWithAlternations","allAltered","allAlteredResolved","result","promptColumnsConflicts","ini","jsonAlterTables","jsonCreateIndexesForAllAlteredTables","jsonDropIndexesForAllAlteredTables","createEnums","jsonAlterEnumsWithAddedValues","sqlStatements","folderName","Date","toISOString","migrationFolderPath","mkdirSync","writeFileSync","JSON","stringify","componentsList","useSnapshot","component","i","key","inkApp","render","remove","rerender","unmount","clear","cleanup","onDone","tableWithColumns","props","current","send","useMachine","addedColumns","deletedColumns","missingItemIndex","context","selectItemIndex","item","itemIndex","value","selectNewItemIndex","selectAction","confirm","confirmationItem","renderDOM","matches","Box","display","flexDirection","Header","items","String","label","onSelect","paddingLeft","Text","tempActions","actions","Action","RENAME","confirmations","margin","marginBottom","data","title","newProps","missingProps","createdTables","renamedTables","StepState","func","titleStr","useState","state","setState","IN_PROGRESS","error","setError","useEffect","SUCCESS","e","FAIL","marginRight","color","Newline","message","proxy","app","prepareApp","Promise","resolve","createMachine","id","initial","newItemIndex","states","entry","on","NEXT","target","cond","CHOICE_ITEM","actionChoice","DELETE","rename","CHOICE_NEW_ITEM","confirmationDelete","CANCEL","CONFIRM","confirmationRename","final","done","guards","isMissingColumnsResolved","isNewColumnsResolved","choseItem","assign","event","choseNewItem","delete","resolveRemaining","resolveMissing","isMissingTablesResolved","isNewTablesResolved","array","reduce","acc","fill","temp","forEach","ind","Confirmation","dry","version","migrationRootFolderName","dataFolderPath","root","readdirSync","find","migrationFolders","prevSnapshot","sort","lastSnapshotFolder","parse","toString","tbls","tps","printer","createPrinter","tablesFolder","typesFolder","staticImports","createImportDeclaration","createImportClause","createNamespaceImport","createIdentifier","createStringLiteral","dynamicImports","tablesFilenames","importPath","split","typesFilenames","variablesStatements","createVariableStatement","createVariableDeclarationList","createVariableDeclaration","createNew","createPropertyAccess","NodeFlags","Const","blockStatements","createArrayTypeNode","createTypeReferenceNode","createQualifiedName","createKeywordTypeNode","SyntaxKind","AnyKeyword","createArrayLiteral","blockStatement","createParen","createAsExpression","UnknownKeyword","createExpressionStatement","createCall","createArrowFunction","createParameter","createToken","EqualsGreaterThanToken","createBlock","createReturn","funcStatement","invocationStatement","outFile","createSourceFile","ScriptTarget","ES2015","ScriptKind","TS","source","newFile","factory","updateSourceFile","printFile","esbuild","serialize","pathToTables","pathToTypes","decoder","StringDecoder","preparedFarbic","buildSync","entryPoints","bundle","platform","write","external","rmSync","eval","outputFiles","contents","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","r","Symbol","toStringTag"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drizzle-kit",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.12",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"repository": "https://github.com/lambda-direct/drizzle-kit",
|
|
6
6
|
"author": "Alex Blokh <aleksandrblokh@gmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"bin":
|
|
8
|
+
"bin": {
|
|
9
|
+
"dkit": "./dist/drizzle.js",
|
|
10
|
+
"drizzle-kit": "./drizzle.js"
|
|
11
|
+
},
|
|
9
12
|
"scripts": {
|
|
10
13
|
"start": "ts-node ./src/index.ts",
|
|
11
14
|
"watch": "webpack --watch",
|
|
@@ -17,17 +20,11 @@
|
|
|
17
20
|
"mograte": "drizzle-kit migrate"
|
|
18
21
|
},
|
|
19
22
|
"dependencies": {
|
|
20
|
-
"@iarna/toml": "^2.2.5",
|
|
21
|
-
"@lambda-team/ltdl": "^1.4.1",
|
|
22
23
|
"@types/uuid": "^8.3.1",
|
|
23
24
|
"@xstate/react": "^1.6.1",
|
|
24
25
|
"commander": "^8.0.0",
|
|
25
|
-
"csv-parse": "^4.16.0",
|
|
26
|
-
"csv-stringify": "^5.6.2",
|
|
27
|
-
"drizzle-orm": "^0.9.1",
|
|
28
26
|
"enquirer": "^2.3.6",
|
|
29
27
|
"esbuild": "^0.12.28",
|
|
30
|
-
"gitdiff-parser": "^0.2.2",
|
|
31
28
|
"immer": "^9.0.6",
|
|
32
29
|
"immer-reducer": "^0.7.13",
|
|
33
30
|
"ink": "3.0.9",
|
|
@@ -37,22 +34,11 @@
|
|
|
37
34
|
"ink-spinner": "^4.0.3",
|
|
38
35
|
"ink-table": "3.0.0",
|
|
39
36
|
"ink-text-input": "^4.0.1",
|
|
40
|
-
"install": "^0.13.0",
|
|
41
37
|
"js-yaml": "^4.1.0",
|
|
42
38
|
"json-diff": "^0.5.4",
|
|
43
|
-
"lodash.flatten": "^4.4.0",
|
|
44
|
-
"moment": "^2.29.1",
|
|
45
|
-
"npm": "^7.23.0",
|
|
46
|
-
"object-hash": "2.2.0",
|
|
47
|
-
"pg": "^8.7.1",
|
|
48
39
|
"pretty-error": "^3.0.4",
|
|
49
40
|
"react": "^16.14.0",
|
|
50
|
-
"simple-git": "^2.40.0",
|
|
51
41
|
"source-map-support": "^0.5.19",
|
|
52
|
-
"tasuku": "^1.0.2",
|
|
53
|
-
"toml": "^3.0.0",
|
|
54
|
-
"ts-creator": "^1.1.10",
|
|
55
|
-
"ts-node": "^10.2.1",
|
|
56
42
|
"use-immer": "^0.6.0",
|
|
57
43
|
"uuid": "^8.3.2",
|
|
58
44
|
"valtio": "^1.2.4",
|
|
@@ -63,10 +49,12 @@
|
|
|
63
49
|
"@types/js-yaml": "^4.0.3",
|
|
64
50
|
"@types/lodash.flatten": "^4.4.6",
|
|
65
51
|
"@types/object-hash": "2.1.1",
|
|
52
|
+
"@types/pg": "^8.6.1",
|
|
66
53
|
"@types/react": "^17.0.13",
|
|
67
54
|
"@types/vorpal": "^1.12.1",
|
|
68
55
|
"@types/webpack": "^5.28.0",
|
|
69
56
|
"@typescript-eslint/eslint-plugin": "4.4.1",
|
|
57
|
+
"drizzle-orm": "^0.9.2",
|
|
70
58
|
"eslint": "^7.2.0",
|
|
71
59
|
"eslint-config-airbnb": "18.2.1",
|
|
72
60
|
"eslint-config-airbnb-typescript": "11.0.0",
|