@reveldigital/gadgetizer 1.0.0 → 1.0.2

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.
@@ -0,0 +1,2 @@
1
+ import{promisify as r}from"node:util";import e from"node:process";import{readFile as t,exists as n}from"fs";import{resolve as i}from"path";function o(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var f=globalThis.parcelRequire4422,a=f.register;a("8eBbk",function(t,n){var i;o(t.exports,"default",()=>c);let a=r((i=f("1kSkg"))&&i.__esModule?i.default:i);async function c({cwd:r=e.cwd(),remoteName:t="origin"}={}){let n=await a(r),i=n.remote&&n.remote[t]&&n.remote[t].url;if(!i)throw Error(`Couldn't find ${t} url`);return i}}),a("1kSkg",function(r,e){var o=f("k7mMk");r.exports=function(r,e,f){"function"==typeof e&&(f=e,e={}),function r(e,t,o){var f=i(e,t.gitDir||process.env.GIT_DIR||".git","config");n(f,function(n){return n?o(f):e===i(e,"..")?o(!1):void r(i(e,".."),t,o)})}(r,e,function(e){if(!e)return f(Error("no gitconfig to be found at "+r));t(e,function(r,e){if(r)return f(r);try{var t,n,i=(t=o.parse(e.toString()),n={},Object.keys(t).forEach(function(r){if(r.indexOf('"')>-1){var e=r.split('"'),i=e.shift().trim(),o=e.shift().trim();n[i]||(n[i]={}),n[i][o]=t[r]}else n[r]=function(){for(var r={},e=arguments.length;e>=0;--e)Object.keys(arguments[e]||{}).forEach(t=>{r[t]=arguments[e][t]});return r}(n[r],t[r])}),n)}catch(r){return f(r)}f(!1,i)})})}}),a("k7mMk",function(r,e){o(r.exports,"parse",()=>t,r=>t=r);var t=function(r){var e={},t=e,n=null,o=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i;return r.split(/[\r\n]+/g).forEach(function(r,f,a){if(!(!r||r.match(/^\s*[;#]/))){var c=r.match(o);if(c){if(void 0!==c[1]){if("__proto__"===(n=i(c[1]))){t={};return}t=e[n]=e[n]||{};return}var s=i(c[2]);if("__proto__"!==s){var u=!c[3]||i(c[4]);switch(u){case"true":case"false":case"null":u=JSON.parse(u)}if(s.length>2&&"[]"===s.slice(-2)){if("__proto__"===(s=s.substring(0,s.length-2)))return;t[s]?Array.isArray(t[s])||(t[s]=[t[s]]):t[s]=[]}Array.isArray(t[s])?t[s].push(u):t[s]=u}}}}),Object.keys(e).filter(function(r,t,n){if(!e[r]||"object"!=typeof e[r]||Array.isArray(e[r]))return!1;var i=function(r){return r.replace(/\1/g,"\x02LITERAL\\1LITERAL\x02").replace(/\\\./g,"\x01").split(/\./).map(function(r){return r.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"\x01")})}(r),o=e,f=i.pop(),a=f.replace(/\\\./g,".");return i.forEach(function(r,e,t){"__proto__"!==r&&(o[r]&&"object"==typeof o[r]||(o[r]={}),o=o[r])}),(o!==e||a!==f)&&(o[a]=e[r],!0)}).forEach(function(r,t,n){delete e[r]}),e};"undefined"!=typeof process&&process.platform;function n(r){return'"'===r.charAt(0)&&'"'===r.slice(-1)||"'"===r.charAt(0)&&"'"===r.slice(-1)}function i(r,e){if(n(r=(r||"").trim())){"'"===r.charAt(0)&&(r=r.substr(1,r.length-2));try{r=JSON.parse(r)}catch(r){}}else{for(var t=!1,i="",o=0,f=r.length;o<f;o++){var a=r.charAt(o);if(t)-1!=="\\;#".indexOf(a)?i+=a:i+="\\"+a,t=!1;else if(-1!==";#".indexOf(a))break;else"\\"===a?t=!0:i+=a}return t&&(i+="\\"),i.trim()}return r}});
2
+ //# sourceMappingURL=git-remote-origin-url.c059ef0e.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["<anon>","node_modules/git-remote-origin-url/index.js","node_modules/gitconfiglocal/index.js","node_modules/ini/ini.js"],"sourcesContent":["import {promisify as $bmFgh$promisify} from \"node:util\";\nimport $bmFgh$nodeprocess from \"node:process\";\nimport {readFile as $bmFgh$readFile, exists as $bmFgh$exists} from \"fs\";\nimport {resolve as $bmFgh$resolve} from \"path\";\n\n\nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n var parcelRequire = $parcel$global[\"parcelRequire4422\"];\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"8eBbk\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $5fec790b671e93f3$export$2e2bcd8739ae039);\n\n\n\nvar $1kSkg = parcelRequire(\"1kSkg\");\nconst $5fec790b671e93f3$var$pGitconfig = (0, $bmFgh$promisify)((0, (/*@__PURE__*/$parcel$interopDefault($1kSkg))));\nasync function $5fec790b671e93f3$export$2e2bcd8739ae039({ cwd: cwd = (0, $bmFgh$nodeprocess).cwd(), remoteName: remoteName = 'origin' } = {}) {\n const config = await $5fec790b671e93f3$var$pGitconfig(cwd);\n const url = config.remote && config.remote[remoteName] && config.remote[remoteName].url;\n if (!url) throw new Error(`Couldn't find ${remoteName} url`);\n return url;\n}\n\n});\nparcelRegister(\"1kSkg\", function(module, exports) {\n//@ts-check\n\n\nvar $k7mMk = parcelRequire(\"k7mMk\");\n\nmodule.exports = function(dir, options, cb) {\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n $0f91ccac427fd10e$var$findGit(dir, options, function(config) {\n if (!config) return cb(new Error('no gitconfig to be found at ' + dir));\n $bmFgh$readFile(config, function(err, data) {\n if (err) return cb(err);\n try {\n var formatted = $0f91ccac427fd10e$var$format($k7mMk.parse(data.toString()));\n } catch (e) {\n return cb(e);\n }\n cb(false, formatted);\n });\n });\n};\nfunction $0f91ccac427fd10e$var$format(data) {\n var out = {};\n Object.keys(data).forEach(function(k) {\n if (k.indexOf('\"') > -1) {\n var parts = k.split('\"');\n var parentKey = parts.shift().trim();\n var childKey = parts.shift().trim();\n if (!out[parentKey]) out[parentKey] = {};\n out[parentKey][childKey] = data[k];\n } else out[k] = $0f91ccac427fd10e$var$merge(out[k], data[k]);\n });\n return out;\n}\nfunction $0f91ccac427fd10e$var$findGit(dir, options, cb) {\n var folder = $bmFgh$resolve(dir, options.gitDir || process.env.GIT_DIR || '.git', 'config');\n $bmFgh$exists(folder, function(exists) {\n if (exists) return cb(folder);\n if (dir === $bmFgh$resolve(dir, '..')) return cb(false);\n $0f91ccac427fd10e$var$findGit($bmFgh$resolve(dir, '..'), options, cb);\n });\n}\nfunction $0f91ccac427fd10e$var$merge() {\n var a = {};\n for(var i = arguments.length; i >= 0; --i)Object.keys(arguments[i] || {}).forEach((k)=>{\n a[k] = arguments[i][k];\n });\n return a;\n}\n\n});\nparcelRegister(\"k7mMk\", function(module, exports) {\n\n$parcel$export(module.exports, \"parse\", () => $ea5621708f245b35$export$98e6a39c04603d36, (v) => $ea5621708f245b35$export$98e6a39c04603d36 = v);\nvar $ea5621708f245b35$export$98e6a39c04603d36;\nvar $ea5621708f245b35$export$2f872c0f2117be69;\nvar $ea5621708f245b35$export$fac44ee5b035f737;\nvar $ea5621708f245b35$export$c564cdbbe6da493;\nvar $ea5621708f245b35$export$170b8c323eee7bec;\nvar $ea5621708f245b35$export$aa1c11b655786597;\n$ea5621708f245b35$export$98e6a39c04603d36 = $ea5621708f245b35$export$2f872c0f2117be69 = $ea5621708f245b35$var$decode;\n$ea5621708f245b35$export$fac44ee5b035f737 = $ea5621708f245b35$export$c564cdbbe6da493 = $ea5621708f245b35$var$encode;\n$ea5621708f245b35$export$170b8c323eee7bec = $ea5621708f245b35$var$safe;\n$ea5621708f245b35$export$aa1c11b655786597 = $ea5621708f245b35$var$unsafe;\nvar $ea5621708f245b35$var$eol = typeof process !== 'undefined' && process.platform === 'win32' ? '\\r\\n' : '\\n';\nfunction $ea5621708f245b35$var$encode(obj, opt) {\n var children = [];\n var out = '';\n if (typeof opt === 'string') opt = {\n section: opt,\n whitespace: false\n };\n else {\n opt = opt || {};\n opt.whitespace = opt.whitespace === true;\n }\n var separator = opt.whitespace ? ' = ' : '=';\n Object.keys(obj).forEach(function(k, _, __) {\n var val = obj[k];\n if (val && Array.isArray(val)) val.forEach(function(item) {\n out += $ea5621708f245b35$var$safe(k + '[]') + separator + $ea5621708f245b35$var$safe(item) + '\\n';\n });\n else if (val && typeof val === 'object') children.push(k);\n else out += $ea5621708f245b35$var$safe(k) + separator + $ea5621708f245b35$var$safe(val) + $ea5621708f245b35$var$eol;\n });\n if (opt.section && out.length) out = '[' + $ea5621708f245b35$var$safe(opt.section) + ']' + $ea5621708f245b35$var$eol + out;\n children.forEach(function(k, _, __) {\n var nk = $ea5621708f245b35$var$dotSplit(k).join('\\\\.');\n var section = (opt.section ? opt.section + '.' : '') + nk;\n var child = $ea5621708f245b35$var$encode(obj[k], {\n section: section,\n whitespace: opt.whitespace\n });\n if (out.length && child.length) out += $ea5621708f245b35$var$eol;\n out += child;\n });\n return out;\n}\nfunction $ea5621708f245b35$var$dotSplit(str) {\n return str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002').replace(/\\\\\\./g, '\\u0001').split(/\\./).map(function(part) {\n return part.replace(/\\1/g, '\\\\.').replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001');\n });\n}\nfunction $ea5621708f245b35$var$decode(str) {\n var out = {};\n var p = out;\n var section = null;\n // section |key = value\n var re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i;\n var lines = str.split(/[\\r\\n]+/g);\n lines.forEach(function(line, _, __) {\n if (!line || line.match(/^\\s*[;#]/)) return;\n var match = line.match(re);\n if (!match) return;\n if (match[1] !== undefined) {\n section = $ea5621708f245b35$var$unsafe(match[1]);\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = {};\n return;\n }\n p = out[section] = out[section] || {};\n return;\n }\n var key = $ea5621708f245b35$var$unsafe(match[2]);\n if (key === '__proto__') return;\n var value = match[3] ? $ea5621708f245b35$var$unsafe(match[4]) : true;\n switch(value){\n case 'true':\n case 'false':\n case 'null':\n value = JSON.parse(value);\n }\n // Convert keys with '[]' suffix to an array\n if (key.length > 2 && key.slice(-2) === '[]') {\n key = key.substring(0, key.length - 2);\n if (key === '__proto__') return;\n if (!p[key]) p[key] = [];\n else if (!Array.isArray(p[key])) p[key] = [\n p[key]\n ];\n }\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key])) p[key].push(value);\n else p[key] = value;\n });\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n Object.keys(out).filter(function(k, _, __) {\n if (!out[k] || typeof out[k] !== 'object' || Array.isArray(out[k])) return false;\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n var parts = $ea5621708f245b35$var$dotSplit(k);\n var p = out;\n var l = parts.pop();\n var nl = l.replace(/\\\\\\./g, '.');\n parts.forEach(function(part, _, __) {\n if (part === '__proto__') return;\n if (!p[part] || typeof p[part] !== 'object') p[part] = {};\n p = p[part];\n });\n if (p === out && nl === l) return false;\n p[nl] = out[k];\n return true;\n }).forEach(function(del, _, __) {\n delete out[del];\n });\n return out;\n}\nfunction $ea5621708f245b35$var$isQuoted(val) {\n return val.charAt(0) === '\"' && val.slice(-1) === '\"' || val.charAt(0) === \"'\" && val.slice(-1) === \"'\";\n}\nfunction $ea5621708f245b35$var$safe(val) {\n return typeof val !== 'string' || val.match(/[=\\r\\n]/) || val.match(/^\\[/) || val.length > 1 && $ea5621708f245b35$var$isQuoted(val) || val !== val.trim() ? JSON.stringify(val) : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#');\n}\nfunction $ea5621708f245b35$var$unsafe(val, doUnesc) {\n val = (val || '').trim();\n if ($ea5621708f245b35$var$isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\") val = val.substr(1, val.length - 2);\n try {\n val = JSON.parse(val);\n } catch (_) {}\n } else {\n // walk the val to find the first not-escaped ; character\n var esc = false;\n var unesc = '';\n for(var i = 0, l = val.length; i < l; i++){\n var c = val.charAt(i);\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1) unesc += c;\n else unesc += '\\\\' + c;\n esc = false;\n } else if (';#'.indexOf(c) !== -1) break;\n else if (c === '\\\\') esc = true;\n else unesc += c;\n }\n if (esc) unesc += '\\\\';\n return unesc.trim();\n }\n return val;\n}\n\n});\n\n\n\n\n//# sourceMappingURL=git-remote-origin-url.c059ef0e.js.map\n","import {promisify} from 'node:util';\nimport process from 'node:process';\nimport gitconfig from 'gitconfiglocal';\n\nconst pGitconfig = promisify(gitconfig);\n\nexport default async function gitRemoteOriginUrl({cwd = process.cwd(), remoteName = 'origin'} = {}) {\n\tconst config = await pGitconfig(cwd);\n\tconst url = config.remote && config.remote[remoteName] && config.remote[remoteName].url;\n\n\tif (!url) {\n\t\tthrow new Error(`Couldn't find ${remoteName} url`);\n\t}\n\n\treturn url;\n}\n","//@ts-check\nvar fs = require('fs');\nvar ini = require('ini');\nvar path = require('path');\n\n\nmodule.exports = function(dir,options,cb){\n if (typeof options === 'function') {\n cb = options;\n options = {};\n }\n findGit(dir,options,function(config) {\n if(!config) return cb(new Error('no gitconfig to be found at '+dir))\n fs.readFile(config,function(err,data){\n if(err) return cb(err);\n try{\n var formatted = format(ini.parse(data.toString()));\n } catch (e){\n return cb(e);\n }\n cb(false,formatted);\n })\n })\n}\n\nfunction format(data){\n var out = {};\n Object.keys(data).forEach(function(k){\n if(k.indexOf('\"')> -1) {\n var parts = k.split('\"');\n var parentKey = parts.shift().trim();\n var childKey = parts.shift().trim();\n if(!out[parentKey]) out[parentKey] = {};\n out[parentKey][childKey] = data[k];\n } else {\n out[k] = merge(out[k],data[k])\n // cant start using these without bumping the major\n //out[k] = {...out[k], ...data[k]};\n }\n });\n return out;\n}\n\nfunction findGit(dir,options,cb){\n var folder = path.resolve(dir, options.gitDir || process.env.GIT_DIR || '.git', 'config');\n fs.exists(folder,function(exists) {\n if(exists) return cb(folder);\n if(dir === path.resolve(dir, '..')) return cb(false);\n findGit(path.resolve(dir, '..'), options, cb);\n });\n}\n\nfunction merge(){\n var a = {}\n for(var i=arguments.length;i>=0;--i){\n Object.keys(arguments[i]||{}).forEach((k)=>{\n a[k] = arguments[i][k]\n })\n }\n return a;\n}\n","exports.parse = exports.decode = decode\n\nexports.stringify = exports.encode = encode\n\nexports.safe = safe\nexports.unsafe = unsafe\n\nvar eol = typeof process !== 'undefined' &&\n process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nfunction encode (obj, opt) {\n var children = []\n var out = ''\n\n if (typeof opt === 'string') {\n opt = {\n section: opt,\n whitespace: false,\n }\n } else {\n opt = opt || {}\n opt.whitespace = opt.whitespace === true\n }\n\n var separator = opt.whitespace ? ' = ' : '='\n\n Object.keys(obj).forEach(function (k, _, __) {\n var val = obj[k]\n if (val && Array.isArray(val)) {\n val.forEach(function (item) {\n out += safe(k + '[]') + separator + safe(item) + '\\n'\n })\n } else if (val && typeof val === 'object')\n children.push(k)\n else\n out += safe(k) + separator + safe(val) + eol\n })\n\n if (opt.section && out.length)\n out = '[' + safe(opt.section) + ']' + eol + out\n\n children.forEach(function (k, _, __) {\n var nk = dotSplit(k).join('\\\\.')\n var section = (opt.section ? opt.section + '.' : '') + nk\n var child = encode(obj[k], {\n section: section,\n whitespace: opt.whitespace,\n })\n if (out.length && child.length)\n out += eol\n\n out += child\n })\n\n return out\n}\n\nfunction dotSplit (str) {\n return str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n .replace(/\\\\\\./g, '\\u0001')\n .split(/\\./).map(function (part) {\n return part.replace(/\\1/g, '\\\\.')\n .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001')\n })\n}\n\nfunction decode (str) {\n var out = {}\n var p = out\n var section = null\n // section |key = value\n var re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n var lines = str.split(/[\\r\\n]+/g)\n\n lines.forEach(function (line, _, __) {\n if (!line || line.match(/^\\s*[;#]/))\n return\n var match = line.match(re)\n if (!match)\n return\n if (match[1] !== undefined) {\n section = unsafe(match[1])\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = {}\n return\n }\n p = out[section] = out[section] || {}\n return\n }\n var key = unsafe(match[2])\n if (key === '__proto__')\n return\n var value = match[3] ? unsafe(match[4]) : true\n switch (value) {\n case 'true':\n case 'false':\n case 'null': value = JSON.parse(value)\n }\n\n // Convert keys with '[]' suffix to an array\n if (key.length > 2 && key.slice(-2) === '[]') {\n key = key.substring(0, key.length - 2)\n if (key === '__proto__')\n return\n if (!p[key])\n p[key] = []\n else if (!Array.isArray(p[key]))\n p[key] = [p[key]]\n }\n\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key]))\n p[key].push(value)\n else\n p[key] = value\n })\n\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n Object.keys(out).filter(function (k, _, __) {\n if (!out[k] ||\n typeof out[k] !== 'object' ||\n Array.isArray(out[k]))\n return false\n\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n var parts = dotSplit(k)\n var p = out\n var l = parts.pop()\n var nl = l.replace(/\\\\\\./g, '.')\n parts.forEach(function (part, _, __) {\n if (part === '__proto__')\n return\n if (!p[part] || typeof p[part] !== 'object')\n p[part] = {}\n p = p[part]\n })\n if (p === out && nl === l)\n return false\n\n p[nl] = out[k]\n return true\n }).forEach(function (del, _, __) {\n delete out[del]\n })\n\n return out\n}\n\nfunction isQuoted (val) {\n return (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n}\n\nfunction safe (val) {\n return (typeof val !== 'string' ||\n val.match(/[=\\r\\n]/) ||\n val.match(/^\\[/) ||\n (val.length > 1 &&\n isQuoted(val)) ||\n val !== val.trim())\n ? JSON.stringify(val)\n : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n}\n\nfunction unsafe (val, doUnesc) {\n val = (val || '').trim()\n if (isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\")\n val = val.substr(1, val.length - 2)\n\n try {\n val = JSON.parse(val)\n } catch (_) {}\n } else {\n // walk the val to find the first not-escaped ; character\n var esc = false\n var unesc = ''\n for (var i = 0, l = val.length; i < l; i++) {\n var c = val.charAt(i)\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1)\n unesc += c\n else\n unesc += '\\\\' + c\n\n esc = false\n } else if (';#'.indexOf(c) !== -1)\n break\n else if (c === '\\\\')\n esc = true\n else\n unesc += c\n }\n if (esc)\n unesc += '\\\\'\n\n return unesc.trim()\n }\n return val\n}\n"],"names":["promisify","$bmFgh$promisify","$bmFgh$nodeprocess","readFile","$bmFgh$readFile","exists","$bmFgh$exists","resolve","$bmFgh$resolve","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","parcelRequire","$parcel$global","globalThis","parcelRegister","register","module","exports","a","$5fec790b671e93f3$export$2e2bcd8739ae039","$5fec790b671e93f3$var$pGitconfig","__esModule","default","cwd","remoteName","config","url","remote","Error","$k7mMk","dir","options","cb","$0f91ccac427fd10e$var$findGit","folder","gitDir","process","env","GIT_DIR","err","data","out","formatted","parse","toString","keys","forEach","k","indexOf","parts","split","parentKey","shift","trim","childKey","$0f91ccac427fd10e$var$merge","i","arguments","length","$ea5621708f245b35$export$98e6a39c04603d36","str","p","section","re","lines","line","_","__","match","undefined","$ea5621708f245b35$var$unsafe","key","value","JSON","slice","substring","Array","isArray","push","filter","$ea5621708f245b35$var$dotSplit","replace","map","part","l","pop","nl","del","platform","$ea5621708f245b35$var$isQuoted","val","charAt","doUnesc","substr","esc","unesc","c"],"version":3,"file":"git-remote-origin-url.c059ef0e.js.map","sourceRoot":"../"}
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "@reveldigital/gadgetizer",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Add Revel Digital SDK bindings to your project and configure for deployment",
5
5
  "main": "cli.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "gadgetizer": "dist/cli.js"
8
+ "gadgetizer": "bin.js"
9
9
  },
10
10
  "files": [
11
- "/dist"
11
+ "/dist",
12
+ "/bin.js"
12
13
  ],
13
14
  "scripts": {
14
- "build": "parcel build cli.js --target node && shx cp -r assets dist/",
15
- "start": "node ./dist/main.js",
15
+ "build": "parcel build src/cli.js --target node && shx cp -r assets dist/",
16
+ "start": "node ./bin.js",
16
17
  "link": "npm link",
17
18
  "test": "echo \"Error: no test specified\" && exit 1"
18
19
  },
@@ -39,7 +40,8 @@
39
40
  },
40
41
  "devDependencies": {
41
42
  "typescript": "^5.9.2",
42
- "parcel": "^2.15.4"
43
+ "parcel": "^2.15.4",
44
+ "shx": "^0.3.4"
43
45
  },
44
46
  "release": {
45
47
  "branches": [
package/cli.js DELETED
@@ -1,255 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { confirm, intro, outro, select, text } from '@clack/prompts';
4
- import { execSync } from 'child_process';
5
- import fs from 'fs';
6
- import path from 'path';
7
- import pc from 'picocolors';
8
- import { getDeploymentUrl } from './utils/changeBasePath.js';
9
- import { convertYmlToXml } from './utils/yml2xml.js';
10
- import { dirname } from 'node:path';
11
- import { fileURLToPath } from 'node:url';
12
-
13
- //const __filename = fileURLToPath(import.meta.url);
14
- //const __filename = fileURLToPath(process.cwd());
15
- //const __dirname = path.dirname(__filename);
16
- const __dirname = dirname(process.argv[1]);
17
-
18
- // Parse command line arguments
19
- const args = process.argv.slice(2);
20
- const showHelp = args.includes('help') || args.includes('--help') || args.includes('-h');
21
- const buildOnly = args.includes('build-only') || args.includes('--build-only');
22
- const projectPath = process.cwd();
23
-
24
- intro(pc.cyan('🚀 Revel Digital SDK Integrator'));
25
-
26
- if (showHelp) {
27
- outro(pc.cyan(`
28
- Usage: gadgetizer [options]
29
-
30
- Options:
31
- --help, -h Show this help message
32
- --build-only Run only the Gadget XML build step
33
-
34
- Description:
35
- Integrates the Revel Digital SDK into your project and generates gadget XML.
36
- Supports React, Vue, Angular, and vanilla JavaScript projects.
37
- `));
38
- process.exit(0);
39
- }
40
-
41
- if (buildOnly) {
42
- build({ projectPath: process.cwd(), __dirname });
43
- process.exit(0);
44
- }
45
-
46
- const framework = await select({
47
- message: 'Select your project framework:',
48
- options: [
49
- { value: 'react', label: 'React' },
50
- { value: 'vue', label: 'Vue' },
51
- { value: 'angular', label: 'Angular' },
52
- { value: 'js', label: 'Vanilla JavaScript' }
53
- ]
54
- });
55
-
56
- let entryFile = '';
57
- switch (framework) {
58
- case 'react':
59
- entryFile = fs.existsSync(path.join(projectPath, 'src', 'App.js')) ? path.join('src', 'App.js') : '';
60
- break;
61
- case 'vue':
62
- entryFile = fs.existsSync(path.join(projectPath, 'src', 'App.vue')) ? path.join('src', 'App.vue') : '';
63
- break;
64
- case 'angular':
65
- entryFile = fs.existsSync(path.join(projectPath, 'src', 'main.ts')) ? path.join('src', 'main.ts') : '';
66
- break;
67
- case 'js':
68
- entryFile = fs.existsSync(path.join(projectPath, 'src', 'main.js')) ? path.join('src', 'main.js') : '';
69
- break;
70
- }
71
- if (!entryFile) {
72
- outro(pc.yellow(`⚠️ Could not automatically detect the main entry file for ${framework}. Please manually instrument your app with the Revel Digital SDK.`));
73
- }
74
-
75
- const pkgPath = path.join(projectPath, 'package.json');
76
- if (!fs.existsSync(pkgPath)) {
77
- outro(pc.red('❌ No package.json found in this directory. Please run this tool from your project root.'));
78
- process.exit(1);
79
- }
80
-
81
- if (framework === 'angular') { // Angular uses schematic for integration
82
- outro(pc.cyan('📦 Installing @reveldigital/player-client and running ng add schematic...'));
83
- try {
84
- execSync('npm install @reveldigital/player-client@latest', { stdio: 'inherit' });
85
- execSync('ng add @reveldigital/player-client@latest', { stdio: 'inherit' });
86
- outro(pc.green('✅ Angular project successfully instrumented with Revel Digital Player Client.'));
87
- process.exit(0);
88
- } catch (err) {
89
- outro(pc.red('❌ Error instrumenting Angular project. Please check your Angular CLI and npm setup.'));
90
- process.exit(1);
91
- }
92
- }
93
-
94
-
95
- // All other frameworks utilize SDK package installation
96
- // Copy gadget.yaml to project root
97
- const sourceYaml = path.join(__dirname, 'assets', 'gadget.yaml');
98
- const destYaml = path.join(projectPath, 'gadget.yaml');
99
- if (!fs.existsSync(destYaml)) {
100
- try {
101
- fs.copyFileSync(sourceYaml, destYaml);
102
- outro(pc.green('📄 gadget.yaml copied to project root.'));
103
- } catch (err) {
104
- outro(pc.red('❌ Failed to copy gadget.yaml to project root. Please copy it manually.'));
105
- }
106
- } else {
107
- outro(pc.yellow('⚠️ gadget.yaml already exists in project root. Skipping copy.'));
108
- }
109
-
110
-
111
- // Prompt for deployment URL
112
- let defaultDeploymentUrl = '';
113
- try {
114
- defaultDeploymentUrl = await getDeploymentUrl(pkgPath);
115
- outro(pc.cyan(`🌎 Configuring gadget deployment URL based on Git: ${defaultDeploymentUrl}`));
116
- } catch (e) {
117
- defaultDeploymentUrl = '';
118
- outro(pc.yellow(`⚠️ Warning: Could not get deployment URL automatically.`));
119
- }
120
- const deploymentUrl = await text({
121
- message: 'Enter the deployment URL:',
122
- initialValue: defaultDeploymentUrl
123
- });
124
-
125
- // Prompt for SDK version
126
- const sdkVersion = await select({
127
- message: 'Select Revel Digital SDK version to install:',
128
- options: [
129
- { value: 'latest', label: 'Latest' },
130
- { value: 'custom', label: 'Custom version' }
131
- ]
132
- });
133
-
134
- let customVersion = '';
135
- if (sdkVersion === 'custom') {
136
- customVersion = await text({
137
- message: 'Enter the custom SDK version:'
138
- });
139
- }
140
-
141
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
142
-
143
- const shouldInstall = await confirm({
144
- message: `Install Revel Digital SDK (${sdkVersion === 'custom' ? customVersion : sdkVersion})?`
145
- });
146
- if (shouldInstall) {
147
- // Add SDK to package.json dependencies
148
- pkg.dependencies = pkg.dependencies || {};
149
- const gadgetTypesPkgName = '@reveldigital/gadget-types';
150
- pkg.dependencies[gadgetTypesPkgName] = 'latest';
151
- const sdkPkgName = '@reveldigital/client-sdk';
152
- const versionToInstall = sdkVersion === 'custom' ? customVersion : sdkVersion;
153
- pkg.dependencies[sdkPkgName] = versionToInstall === 'latest' ? 'latest' : versionToInstall;
154
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
155
-
156
- outro(pc.cyan(`🎉 Revel Digital SDK (${versionToInstall}) added to dependencies.`));
157
-
158
- try {
159
- execSync('npm install', { stdio: 'inherit' });
160
- outro(pc.green('📦 npm install completed successfully.'));
161
- } catch (err) {
162
- outro(pc.red('❌ npm install failed. Please run it manually.'));
163
- }
164
- }
165
-
166
- // For Vue or Vite projects, set the base path in their respective configs
167
- const viteConfigJsPath = path.join(projectPath, 'vite.config.js');
168
- const viteConfigTsPath = path.join(projectPath, 'vite.config.ts');
169
- const vueConfigPath = path.join(projectPath, 'vue.config.js');
170
-
171
- let viteConfigPath = '';
172
- if (fs.existsSync(viteConfigJsPath)) {
173
- viteConfigPath = viteConfigJsPath;
174
- } else if (fs.existsSync(viteConfigTsPath)) {
175
- viteConfigPath = viteConfigTsPath;
176
- }
177
-
178
- if (viteConfigPath) {
179
- try {
180
- let content = fs.readFileSync(viteConfigPath, 'utf8');
181
- if (/\bbase\s*:/.test(content)) {
182
- content = content.replace(/(\bbase\s*:\s*['"])[^'"]*(['"])/, `$1${deploymentUrl}$2`);
183
- outro(pc.yellow(`🔧 Updated "base" in ${path.basename(viteConfigPath)}.`));
184
- } else if (content.includes('defineConfig({')) {
185
- content = content.replace(/(defineConfig\({)/, `$1\n base: '${deploymentUrl}',`);
186
- outro(pc.green(`🔧 Added "base" to ${path.basename(viteConfigPath)}.`));
187
- }
188
- fs.writeFileSync(viteConfigPath, content);
189
- } catch (err) {
190
- outro(pc.red(`❌ Failed to update ${path.basename(viteConfigPath)}. Please set the "base" property manually.`));
191
- }
192
- } else if (fs.existsSync(vueConfigPath)) {
193
- try {
194
- let content = fs.readFileSync(vueConfigPath, 'utf8');
195
- if (/\bpublicPath\s*:/.test(content)) {
196
- content = content.replace(/(\bpublicPath\s*:\s*['"])[^'"]*(['"])/, `$1${deploymentUrl}$2`);
197
- outro(pc.yellow('🔧 Updated "publicPath" in vue.config.js.'));
198
- } else if (content.includes('module.exports = {')) {
199
- content = content.replace(/(module.exports = {)/, `$1\n publicPath: '${deploymentUrl}',`);
200
- outro(pc.green('🔧 Added "publicPath" to vue.config.js.'));
201
- }
202
- fs.writeFileSync(vueConfigPath, content);
203
- } catch (err) {
204
- outro(pc.red('❌ Failed to update vue.config.js. Please set the "publicPath" property manually.'));
205
- }
206
- }
207
-
208
- // For plain JS projects, check if Parcel is used and configure publicUrl
209
- const isParcel = (pkg.dependencies && pkg.dependencies.parcel) || (pkg.devDependencies && pkg.devDependencies.parcel);
210
- if (isParcel) {
211
- pkg.targets = pkg.targets || {};
212
- pkg.targets.default = pkg.targets.default || {};
213
- pkg.targets.default.publicUrl = deploymentUrl;
214
- outro(pc.green('🔧 Set "targets.default.publicUrl" in package.json for Parcel.'));
215
- }
216
-
217
- pkg.scripts = pkg.scripts || {};
218
- pkg.scripts['build:gadget'] = 'npm run build && gadgetizer --build-only';
219
- fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
220
- outro(pc.green('🔧 Added "build:gadget" script to package.json.'));
221
-
222
-
223
- build({ projectPath, __dirname });
224
-
225
-
226
- function build({ projectPath, __dirname }) {
227
- const pkgPath = path.join(projectPath, 'package.json');
228
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
229
- const destYaml = path.join(projectPath, 'gadget.yaml');
230
- const htmlCandidates = [
231
- path.join(projectPath, 'dist', 'index.html'),
232
- path.join(projectPath, 'public', 'index.html'),
233
- ];
234
- let foundHtml = '';
235
- for (const candidate of htmlCandidates) {
236
- if (fs.existsSync(candidate)) {
237
- foundHtml = candidate;
238
- break;
239
- }
240
- }
241
- if (!foundHtml) {
242
- outro(pc.red('❌ index.html not found in public/, src/, or project root. Please add it and re-run the tool.'));
243
- process.exit(1);
244
- }
245
- const distDir = path.join(path.dirname(foundHtml));
246
- //const yml2xmlPath = path.join(__dirname, 'utils', 'yml2xml.js');
247
- try {
248
- const outputXmlName = `${pkg.name}.xml`;
249
- convertYmlToXml(destYaml, foundHtml, path.join(distDir, outputXmlName), pkg.version);
250
- //execSync(`node "${yml2xmlPath}" "${destYaml}" "${foundHtml}" "${path.join(distDir, outputXmlName)}" "${pkg.version}"`, { encoding: 'utf8' });
251
- outro(pc.green(`✅ Gadget XML file "${outputXmlName}" generated in dist folder.`));
252
- } catch (err) {
253
- outro(pc.red('❌ Failed to generate XML file. Please check yml2xml.js and your input files.'));
254
- }
255
- }