rtk-ready
Version:
Redux utilities package for a boilerplate setup with persisted state, authentication handling, API integration, and typed hooks, providing a structured and scalable state management solution for React applications.
1 lines • 9.54 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\r\n\r\n// import fs from \"fs\";\r\n// import path from \"path\";\r\n// import { execSync } from \"child_process\";\r\n\r\n// const mainProjectRoot = process.env.INIT_CWD || process.cwd();\r\n// const srcPath = path.join(mainProjectRoot, \"src\");\r\n// const srcPathWithRedux = path.join(srcPath, 'redux');\r\n// const reduxWithPath = path.join(mainProjectRoot, \"redux\");\r\n// const reduxPath = fs.existsSync(srcPath)\r\n// ? path.join(srcPath, \"redux\")\r\n// : path.join(mainProjectRoot, \"redux\");\r\n// const templatePath = path.join(\r\n// mainProjectRoot,\r\n// \"./node_modules/rtk-ready/src/redux\"\r\n// );\r\n// const markerFilePath = path.join(reduxPath, \".rtk-ready-installed\");\r\n\r\n// // Utility to copy folder content recursively\r\n// function copyFolderSync(from: string, to: string) {\r\n// if (!fs.existsSync(from)) {\r\n// console.log(`Source folder does not exist: ${from}`);\r\n// return;\r\n// }\r\n// fs.mkdirSync(to, { recursive: true });\r\n// fs.readdirSync(from).forEach((element) => {\r\n// const stat = fs.lstatSync(path.join(from, element));\r\n// if (stat.isFile()) {\r\n// fs.copyFileSync(path.join(from, element), path.join(to, element));\r\n// } else if (stat.isDirectory()) {\r\n// copyFolderSync(path.join(from, element), path.join(to, element));\r\n// }\r\n// });\r\n// }\r\n\r\n// // Create the Redux folder structure\r\n// function createReduxFolder() {\r\n// if (!fs.existsSync(templatePath)) {\r\n// console.error(\r\n// \"Template folder does not exist. Please ensure the src/redux-template folder exists.\"\r\n// );\r\n// return;\r\n// }\r\n// if (!fs.existsSync(reduxPath)) {\r\n// console.log(`Creating Redux folder at ${reduxPath}...`);\r\n// copyFolderSync(templatePath, reduxPath);\r\n// fs.writeFileSync(markerFilePath, \"true\");\r\n// console.log(\"Redux folder created.\");\r\n// } else if (!fs.existsSync(markerFilePath)) {\r\n// console.log(\"Redux folder already exists but marker file is missing. Skipping.\");\r\n// } else {\r\n// console.log(\"Redux folder and marker file already exist. Skipping.\");\r\n// }\r\n// }\r\n\r\n// // Install required dependencies\r\n// function installDependencies() {\r\n// const dependencies = [\r\n// \"@reduxjs/toolkit@latest\",\r\n// \"js-cookie@latest\",\r\n// \"react-redux@latest\",\r\n// \"redux-persist@latest\",\r\n// ];\r\n// const devDependencies = [\r\n// \"@types/js-cookie@latest\",\r\n// \"@types/react-redux@latest\",\r\n// ];\r\n\r\n// console.log(\"Installing dependencies in the main project...\");\r\n// try {\r\n// execSync(`npm install ${dependencies.join(\" \")}`, {\r\n// cwd: mainProjectRoot,\r\n// stdio: \"inherit\",\r\n// });\r\n\r\n// // Check for TypeScript support\r\n// const tsconfigPath = path.join(mainProjectRoot, \"tsconfig.json\");\r\n// if (fs.existsSync(tsconfigPath)) {\r\n// console.log(\"TypeScript detected. Installing dev dependencies...\");\r\n// execSync(`npm install --save-dev ${devDependencies.join(\" \")}`, {\r\n// cwd: mainProjectRoot,\r\n// stdio: \"inherit\",\r\n// });\r\n// }\r\n// console.log(\"Dependencies installed successfully.\");\r\n// } catch (error: any) {\r\n// console.error(\"Error installing dependencies:\", error.message);\r\n// // Exit process with a success code to prevent npm from failing.\r\n// process.exit(0);\r\n// }\r\n// }\r\n\r\n// // Main execution\r\n// createReduxFolder();\r\n// installDependencies();\r\n\r\nimport fs from 'fs';\r\nimport path from 'path';\r\nimport { execSync } from 'child_process';\r\n\r\nconst mainProjectRoot = process.env.INIT_CWD || process.cwd();\r\nconst srcPath = path.join(mainProjectRoot, 'src');\r\nconst reduxPath = fs.existsSync(srcPath)\r\n ? path.join(srcPath, 'redux')\r\n : path.join(mainProjectRoot, 'redux');\r\nconst templatePath = path.join(\r\n mainProjectRoot,\r\n './node_modules/rtk-ready/src/redux'\r\n);\r\nconst markerFilePath = path.join(reduxPath, '.rtk-ready-installed');\r\n\r\n// Utility to copy folder content recursively\r\nfunction copyFolderSync(from: string, to: string) {\r\n if (!fs.existsSync(from)) {\r\n console.log(`Source folder does not exist: ${from}`);\r\n return;\r\n }\r\n fs.mkdirSync(to, { recursive: true });\r\n fs.readdirSync(from).forEach((element) => {\r\n const stat = fs.lstatSync(path.join(from, element));\r\n if (stat.isFile()) {\r\n fs.copyFileSync(path.join(from, element), path.join(to, element));\r\n } else if (stat.isDirectory()) {\r\n copyFolderSync(path.join(from, element), path.join(to, element));\r\n }\r\n });\r\n}\r\n\r\n// Utility to find a unique folder name\r\nfunction getUniqueFolderName(basePath: string, folderName: string): string {\r\n let uniqueName = folderName;\r\n let counter = 0;\r\n\r\n while (fs.existsSync(path.join(basePath, uniqueName))) {\r\n counter++;\r\n uniqueName = `${folderName}(${counter})`;\r\n }\r\n\r\n return path.join(basePath, uniqueName);\r\n}\r\n\r\n// Create the Redux folder structure\r\nfunction createReduxFolder() {\r\n if (!fs.existsSync(templatePath)) {\r\n console.error(\r\n 'Template folder does not exist. Please ensure the src/redux-template folder exists.'\r\n );\r\n return;\r\n }\r\n\r\n let targetPath = reduxPath;\r\n if (fs.existsSync(reduxPath)) {\r\n // Find a unique folder name if redux already exists\r\n console.log(\r\n 'Redux folder already exists. Searching for a unique folder name...'\r\n );\r\n targetPath = getUniqueFolderName(\r\n fs.existsSync(srcPath) ? srcPath : mainProjectRoot,\r\n 'redux'\r\n );\r\n }\r\n\r\n console.log(`Creating Redux folder at ${targetPath}...`);\r\n copyFolderSync(templatePath, targetPath);\r\n fs.writeFileSync(path.join(targetPath, '.rtk-ready-installed'), 'true');\r\n console.log('Redux folder created.');\r\n}\r\n\r\n// Install required dependencies\r\nfunction installDependencies() {\r\n const dependencies = [\r\n '@reduxjs/toolkit@latest',\r\n 'js-cookie@latest',\r\n 'react-redux@latest',\r\n 'redux-persist@latest',\r\n ];\r\n const devDependencies = [\r\n '@types/js-cookie@latest',\r\n '@types/react-redux@latest',\r\n ];\r\n\r\n console.log('Installing dependencies in the main project...');\r\n try {\r\n execSync(`npm install ${dependencies.join(' ')}`, {\r\n cwd: mainProjectRoot,\r\n stdio: 'inherit',\r\n });\r\n\r\n // Check for TypeScript support\r\n const tsconfigPath = path.join(mainProjectRoot, 'tsconfig.json');\r\n if (fs.existsSync(tsconfigPath)) {\r\n console.log('TypeScript detected. Installing dev dependencies...');\r\n execSync(`npm install --save-dev ${devDependencies.join(' ')}`, {\r\n cwd: mainProjectRoot,\r\n stdio: 'inherit',\r\n });\r\n }\r\n console.log('Dependencies installed successfully.');\r\n } catch (error: any) {\r\n console.error('Error installing dependencies:', error.message);\r\n // Exit process with a success code to prevent npm from failing.\r\n process.exit(0);\r\n }\r\n}\r\n\r\n// Main execution\r\ncreateReduxFolder();\r\ninstallDependencies();\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiGA,gBAAe;AACf,kBAAiB;AACjB,2BAAyB;AAEzB,IAAM,kBAAkB,QAAQ,IAAI,YAAY,QAAQ,IAAI;AAC5D,IAAM,UAAU,YAAAA,QAAK,KAAK,iBAAiB,KAAK;AAChD,IAAM,YAAY,UAAAC,QAAG,WAAW,OAAO,IACnC,YAAAD,QAAK,KAAK,SAAS,OAAO,IAC1B,YAAAA,QAAK,KAAK,iBAAiB,OAAO;AACtC,IAAM,eAAe,YAAAA,QAAK;AAAA,EACxB;AAAA,EACA;AACF;AACA,IAAM,iBAAiB,YAAAA,QAAK,KAAK,WAAW,sBAAsB;AAGlE,SAAS,eAAe,MAAc,IAAY;AAChD,MAAI,CAAC,UAAAC,QAAG,WAAW,IAAI,GAAG;AACxB,YAAQ,IAAI,iCAAiC,IAAI,EAAE;AACnD;AAAA,EACF;AACA,YAAAA,QAAG,UAAU,IAAI,EAAE,WAAW,KAAK,CAAC;AACpC,YAAAA,QAAG,YAAY,IAAI,EAAE,QAAQ,CAAC,YAAY;AACxC,UAAM,OAAO,UAAAA,QAAG,UAAU,YAAAD,QAAK,KAAK,MAAM,OAAO,CAAC;AAClD,QAAI,KAAK,OAAO,GAAG;AACjB,gBAAAC,QAAG,aAAa,YAAAD,QAAK,KAAK,MAAM,OAAO,GAAG,YAAAA,QAAK,KAAK,IAAI,OAAO,CAAC;AAAA,IAClE,WAAW,KAAK,YAAY,GAAG;AAC7B,qBAAe,YAAAA,QAAK,KAAK,MAAM,OAAO,GAAG,YAAAA,QAAK,KAAK,IAAI,OAAO,CAAC;AAAA,IACjE;AAAA,EACF,CAAC;AACH;AAGA,SAAS,oBAAoB,UAAkB,YAA4B;AACzE,MAAI,aAAa;AACjB,MAAI,UAAU;AAEd,SAAO,UAAAC,QAAG,WAAW,YAAAD,QAAK,KAAK,UAAU,UAAU,CAAC,GAAG;AACrD;AACA,iBAAa,GAAG,UAAU,IAAI,OAAO;AAAA,EACvC;AAEA,SAAO,YAAAA,QAAK,KAAK,UAAU,UAAU;AACvC;AAGA,SAAS,oBAAoB;AAC3B,MAAI,CAAC,UAAAC,QAAG,WAAW,YAAY,GAAG;AAChC,YAAQ;AAAA,MACN;AAAA,IACF;AACA;AAAA,EACF;AAEA,MAAI,aAAa;AACjB,MAAI,UAAAA,QAAG,WAAW,SAAS,GAAG;AAE5B,YAAQ;AAAA,MACN;AAAA,IACF;AACA,iBAAa;AAAA,MACX,UAAAA,QAAG,WAAW,OAAO,IAAI,UAAU;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAEA,UAAQ,IAAI,4BAA4B,UAAU,KAAK;AACvD,iBAAe,cAAc,UAAU;AACvC,YAAAA,QAAG,cAAc,YAAAD,QAAK,KAAK,YAAY,sBAAsB,GAAG,MAAM;AACtE,UAAQ,IAAI,uBAAuB;AACrC;AAGA,SAAS,sBAAsB;AAC7B,QAAM,eAAe;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA;AAAA,EACF;AAEA,UAAQ,IAAI,gDAAgD;AAC5D,MAAI;AACF,uCAAS,eAAe,aAAa,KAAK,GAAG,CAAC,IAAI;AAAA,MAChD,KAAK;AAAA,MACL,OAAO;AAAA,IACT,CAAC;AAGD,UAAM,eAAe,YAAAA,QAAK,KAAK,iBAAiB,eAAe;AAC/D,QAAI,UAAAC,QAAG,WAAW,YAAY,GAAG;AAC/B,cAAQ,IAAI,qDAAqD;AACjE,yCAAS,0BAA0B,gBAAgB,KAAK,GAAG,CAAC,IAAI;AAAA,QAC9D,KAAK;AAAA,QACL,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,YAAQ,IAAI,sCAAsC;AAAA,EACpD,SAAS,OAAY;AACnB,YAAQ,MAAM,kCAAkC,MAAM,OAAO;AAE7D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAGA,kBAAkB;AAClB,oBAAoB;","names":["path","fs"]}