@jerryc05/hi-tools 0.1.15 → 0.1.18

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.
Files changed (2) hide show
  1. package/dist/index.js +2 -2
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
  typeof globalThis.CustomEvent>"u"&&(globalThis.CustomEvent=class extends Event{constructor(n,t={}){super(n,t),this.detail=t.detail}});import{readFile as he}from"node:fs/promises";import{join as be}from"node:path";import{log as ye}from"@clack/prompts";var S=[{cmd:{name:"bm <target>",desc:"[B]ranch [M]erge: merge current HEAD into target branch without switching"},action:async e=>{throw console.log(`\u{1F680} Starting silent merge: HEAD -> ${e}`),new Error("Not implemeted!")}}];import{networkInterfaces as Y}from"node:os";var x=[{cmd:{name:"ips",desc:"Show current machine's IP addrs"},options:[{name:"-4, --onlyIpv4",desc:"IPv4 only"},{name:"-6, --onlyIpv6",desc:"IPv6 only"}],action:({onlyIpv4:e,onlyIpv6:n})=>{let t=Y(),i={};for(let[o,r]of Object.entries(t))r=r?.filter(s=>e?s.family==="IPv4":n?s.family==="IPv6":!0),r?.length&&(i[o]=r.map(s=>s.address));console.log(i)}}];async function ee({repoID:e,hash:n,branch:t}){let i="SCM_USERNAME",o="SCM_PASSWORD",r=process.env[i],s=process.env[o];(!r||!s)&&(console.log(`Missing ${r?o:i} in env var.
3
3
  Go to https://luban.bytedance.net/npm/publish and get your personal SCM username + password.`),process.exit(1));let{execa:m}=await import("execa");try{let c=m`git log -1 --pretty=%s`,a,p;t?t===!0?p=(await m`git branch --show-current`).stdout.trim():p=t:n&&(n===!0?a=(await m`git rev-parse HEAD`).stdout.trim():a=n);let g={repos:e,create_user:r,pub_base:a?"commit_base":"branch_base",base_commit_hash:a??"",branch_name:p??"",desc:`[${l?.version}] ${(await c).stdout.trim()}`,has_version_stage:!1};console.log(`\u2139\uFE0F ${g.create_user} is publishing ${l?.name}@${l?.version} to repoID=${g.repos}
4
4
  ${a?`hash=${a}`:`brch=${p}`}
5
- desc=${g.desc}`);let f=await fetch("https://scm.byted.org/api/v2/npm_versions/",{method:"POST",headers:{Authorization:`Basic ${Buffer.from(`${r}:${s}`).toString("base64")}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(g)});if(!f.ok){let R=await f.text();console.log(`\u274C HTTP ${f.status} Error: ${R}`),process.exit(1)}let I=await f.json();console.log("\u{1F389} Successfully published:",I)}catch(c){console.error("\u274C Execution Failed:",c),process.exit(1)}}var C=[{cmd:{name:"tt-npm-pub <repoID>",desc:"[PUB]lish current hash of current repo to Luban"},options:[{name:"--hash [hash]",desc:"Publish pkg by hash (default)"},{name:"-b, --branch [branch]",desc:"Publish pkg by branch"}],action:ee}];import{hostname as te}from"node:os";var v=[{cmd:{name:"mdns",desc:"Show mdns hostname.local"},action:()=>{let e=te();console.log(e.toLowerCase().endsWith(".local")?e:`${e}.local`)}}];import{spinner as ne}from"@clack/prompts";async function _(){let{execa:e}=await import("execa");try{let{stdout:n}=await e`git rev-parse --abbrev-ref --symbolic-full-name @{u}`;return n.split("/")[0]||"origin"}catch{return"origin"}}async function k(e){let n=ne();n.start(`${e?"Updating":"Fetching"} master...`);let{execa:t}=await import("execa");await t({stdio:"inherit",env:{GIT_TRACE:"1"}})`git fetch ${await _()} master${e?":master":""}`,n.start("Merging ..."),await t({stdio:"inherit",env:{GIT_TRACE:"1"}})`git merge ${await _()}/master --no-verify --no-edit`,n.stop("Done")}var P=[{cmd:{name:"mm",desc:"[M]erge [M]aster: Update local master to remote's, then merge into current branch"},action:()=>k(!0)},{cmd:{name:"mmm",desc:"[M]erge [M]aster (don't [M]odify local master): Merge remote's master into current branch, without updating local master"},action:()=>k(!1)}];import{log as D,spinner as oe}from"@clack/prompts";var A=[{cmd:{name:"tschk",desc:"My ts-check rules"},action:async()=>{let e=oe();e.start("Running custom tsc type-check...");let n=["2322","2339","2551","6133","6192","18048"],{execa:t}=await import("execa");try{let{stdout:i}=await t({reject:!1,stderr:"ignore"})`npx tsc --noEmit --emitDeclarationOnly false`,o=i.split(`
6
- `).filter(r=>{if(r.includes("/node_modules/"))return!1;let s=r.match(/error TS(\d+):/);return!(!s?.[1]||n.includes(s[1]))});o.length>0?(e.stop("Type-check failed"),o.map(r=>console.log(r)),D.error("Type-check failed"),process.exit(1)):e.stop("Type-check passed")}catch(i){e.stop("Type-check failed"),console.error(i),D.error("Type-check failed"),process.exit(1)}}}];var T=[{cmd:{name:"tt-bam",desc:"Update BAM code-gen"},action:async()=>{let{execa:e}=await import("execa");await e({stdio:"inherit"})`pnpm dlx @byted-arch-fe/bam-code-generator update`}}];import{cancel as H,isCancel as j,log as h,note as L,select as G}from"@clack/prompts";import d from"picocolors";var E="https://bits.bytedance.net";async function $(e,n,t,i){let o={...e,pageNum:e.pageNum??1},r=`${E}/api/v1/pipelines/runs?${new URLSearchParams(o).toString()}`,s=await fetch(r,{method:"GET",headers:{"Content-Type":"application/json","X-jwt-token":n,Username:t.username},signal:i??null});return{response:s,getJson:async()=>await s.json()}}async function N(e,n,t){let i=`${E}/api/v1/pipelines/runs/${e}`,o=await fetch(i,{method:"GET",headers:{"Content-Type":"application/json","X-jwt-token":n,Username:t.username}});return{response:o,getJson:async()=>await o.json()}}var b={RUNNING:2,CANCELLED:7,SUCCESS:8,FAIL:9};import{cac as re}from"cac";var u=re("hi");function y(e){let n=new Date(e),t=new Intl.DateTimeFormat("en-US",{timeZoneName:"short"}).formatToParts(n).find(i=>i.type==="timeZoneName")?.value;return`${n.toLocaleDateString("zh-CN")} ${n.toTimeString().split(" ")[0]} ${t?`(${t})`:""}`}import{log as ie,spinner as se}from"@clack/prompts";import J from"picocolors";var w;async function U(){let e=se();if(e.start("Logging in..."),!w){let{AIPaaSAuth:i}=await import("@byted/aipaas-auth");w=new i("cn")}let n=await w.getJwt(),t=await w.getUserInfo();return e.stop(`Hi ${J.magenta(t.username)} from ${J.blue(`${t.scope} ${t.work_country}`)}`),ie.info(`Login will expire on ${y(t.exp*1e3)}`),{jwtStr:n,jwtObj:t}}async function ae({pipelineId:e,url:n,region:t}){let{jwtStr:i,jwtObj:o}=await U(),r=(()=>{if(e==null&&!n)throw new Error("pipelineId or url is required");return e??B(n??"")})(),s=await O(r,i,o,t);if(s.length<=0){h.error(`No Gecko info found${t?` matching region [${t}]`:""} in latest run`);return}let{default:m}=await import("qrcode");for(let c=0;c<s.length;c++){let a=s[c];try{let p=await m.toString(a?.qrCodeScheme??"",{type:"terminal",small:!0,errorCorrectionLevel:"L"});console.log(`
5
+ desc=${g.desc}`);let f=await fetch("https://scm.byted.org/api/v2/npm_versions/",{method:"POST",headers:{Authorization:`Basic ${Buffer.from(`${r}:${s}`).toString("base64")}`,Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(g)});if(!f.ok){let R=await f.text();console.log(`\u274C HTTP ${f.status} Error: ${R}`),process.exit(1)}let I=await f.json();console.log("\u{1F389} Successfully published:",I)}catch(c){console.error("\u274C Execution Failed:",c),process.exit(1)}}var C=[{cmd:{name:"tt-npm-pub <repoID>",desc:"[PUB]lish current hash of current repo to Luban"},options:[{name:"--hash [hash]",desc:"Publish pkg by hash (default)"},{name:"-b, --branch [branch]",desc:"Publish pkg by branch"}],action:ee}];import{hostname as te}from"node:os";var v=[{cmd:{name:"mdns",desc:"Show mdns hostname.local"},action:()=>{let e=te();console.log(e.toLowerCase().endsWith(".local")?e:`${e}.local`)}}];import{spinner as ne}from"@clack/prompts";async function _(){let{execa:e}=await import("execa");try{let{stdout:n}=await e`git rev-parse --abbrev-ref --symbolic-full-name @{u}`;return n.split("/")[0]||"origin"}catch{return"origin"}}async function k(e){let n=ne();n.start(`${e?"Updating":"Fetching"} master...`);let{execa:t}=await import("execa");await t({stdio:"inherit"})`git fetch ${await _()} master${e?":master":""}`,n.message("Merging ..."),await t({stdio:"inherit"})`git merge ${await _()}/master --no-verify --no-edit`,n.stop("Done")}var P=[{cmd:{name:"mm",desc:"[M]erge [M]aster: Update local master to remote's, then merge into current branch"},action:()=>k(!0)},{cmd:{name:"mmm",desc:"[M]erge [M]aster (don't [M]odify local master): Merge remote's master into current branch, without updating local master"},action:()=>k(!1)}];import{log as D,spinner as oe}from"@clack/prompts";var A=[{cmd:{name:"tschk",desc:"My ts-check rules"},action:async()=>{let e=oe();e.start("Running custom tsc type-check...");let n=["2322","2339","2551","6133","6192","18048"],{execa:t}=await import("execa");try{let{stdout:i}=await t({reject:!1,stderr:"ignore"})`npx tsc --noEmit --emitDeclarationOnly false`,o=i.split(`
6
+ `).filter(r=>{if(r.includes("/node_modules/"))return!1;let s=r.match(/error TS(\d+):/);return!(!s?.[1]||n.includes(s[1]))});o.length>0?(e.stop("Type-check failed"),o.map(r=>console.log(r)),D.error("Type-check failed"),process.exit(1)):e.stop("Type-check passed")}catch(i){e.stop("Type-check failed"),console.error(i),D.error("Type-check failed"),process.exit(1)}}}];var T=[{cmd:{name:"tt-bam",desc:"Update BAM code-gen"},action:async()=>{let{execa:e}=await import("execa");await e({stdio:"inherit"})`pnpm dlx @byted-arch-fe/bam-code-generator update`}}];import{cancel as H,isCancel as j,log as h,note as L,select as G}from"@clack/prompts";import d from"picocolors";var E="https://bits.bytedance.net";async function $(e,n,t,i){let o={...e,pageNum:e.pageNum??1},r=`${E}/api/v1/pipelines/runs?${new URLSearchParams(o).toString()}`,s=await fetch(r,{method:"GET",headers:{"Content-Type":"application/json","X-jwt-token":n,Username:t.username},signal:i??null});return{response:s,getJson:async()=>await s.json()}}async function N(e,n,t){let i=`${E}/api/v1/pipelines/runs/${e}`,o=await fetch(i,{method:"GET",headers:{"Content-Type":"application/json","X-jwt-token":n,Username:t.username}});return{response:o,getJson:async()=>await o.json()}}var b={RUNNING:2,CANCELLED:7,SUCCESS:8,FAIL:9};import{cac as re}from"cac";var u=re("hi");function y(e){let n=new Date(e),t=new Intl.DateTimeFormat("en-US",{timeZoneName:"longOffset"}).formatToParts(n).find(i=>i.type==="timeZoneName")?.value.replace("GMT","");return`${n.toLocaleDateString("zh-CN")} ${n.toTimeString().split(" ")[0]} ${t??""}`}import{log as ie,spinner as se}from"@clack/prompts";import J from"picocolors";var w;async function U(){let e=se();if(e.start("Logging in..."),!w){let{AIPaaSAuth:i}=await import("@byted/aipaas-auth");w=new i("cn")}let n=await w.getJwt(),t=await w.getUserInfo();return e.stop(`Hi ${J.magenta(t.username)} from ${J.blue(`${t.scope} ${t.work_country}`)}`),ie.info(`Login will expire on ${y(t.exp*1e3)}`),{jwtStr:n,jwtObj:t}}async function ae({pipelineId:e,url:n,region:t}){let{jwtStr:i,jwtObj:o}=await U(),r=(()=>{if(e==null&&!n)throw new Error("pipelineId or url is required");return e??B(n??"")})(),s=await O(r,i,o,t);if(s.length<=0){h.error(`No Gecko info found${t?` matching region [${t}]`:""} in latest run`);return}let{default:m}=await import("qrcode");for(let c=0;c<s.length;c++){let a=s[c];try{let p=await m.toString(a?.qrCodeScheme??"",{type:"terminal",small:!0,errorCorrectionLevel:"L"});console.log(`
7
7
 
8
8
  ${p}`),console.dir(a),c<s.length-1&&console.log(`
9
9
 
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@jerryc05/hi-tools",
3
- "version": "0.1.15",
3
+ "version": "0.1.18",
4
4
  "description": "A collection of my everyday SDE tools.",
5
5
  "scripts": {
6
- "pub": "npm run build && npm version patch && { npm whoami || npm login --registry https://registry.npmjs.org; } && npm publish --access public && git push",
6
+ "pub": "npm run build && npm version patch && export NPM_CONFIG_REGISTRY=https://registry.npmjs.org &&{ npm whoami || npm login; } && npm publish --access public && git push",
7
7
  "build": "node build.js",
8
8
  "prepare": "husky"
9
9
  },