@tocca-systems/twp-cli 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +12 -0
- package/README.md +81 -7
- package/dist/{ai-dispatch-MFVPYNZ5.js → ai-dispatch-LY6OVZC3.js} +1 -1
- package/dist/{api-command-W77HSRUC.js → api-command-YUZFGC2W.js} +3 -3
- package/dist/{app-IVIYIONG.js → app-NIJ3MAGU.js} +4 -4
- package/dist/{backlog-OQ5JJ6F6.js → backlog-2VHFVU5C.js} +1 -1
- package/dist/chunk-523KROGI.js +3 -0
- package/dist/{chunk-5Q2CH4E7.js → chunk-6NEQ6PZZ.js} +1 -1
- package/dist/{chunk-YVAN3H5W.js → chunk-BUZKNZ45.js} +3 -3
- package/dist/chunk-DBIDYOKW.js +94 -0
- package/dist/{chunk-226G6ONZ.js → chunk-DCGL7XJF.js} +1 -1
- package/dist/{chunk-OK4ITT5Y.js → chunk-HAIZHSNZ.js} +1 -1
- package/dist/chunk-IF2K4PM5.js +20 -0
- package/dist/chunk-MQ3WFH54.js +141 -0
- package/dist/{chunk-KRTG6HSA.js → chunk-PLBOUQE7.js} +1 -1
- package/dist/{chunk-M364RN3O.js → chunk-R5HF6LTR.js} +15 -15
- package/dist/{chunk-EVR3OFVS.js → chunk-VECUCVIY.js} +8 -8
- package/dist/{chunk-P3RQICAS.js → chunk-VQMR5UTD.js} +1 -1
- package/dist/chunk-XNW2UNWQ.js +6 -0
- package/dist/cli.js +94 -9
- package/dist/{commands-45VQS3LX.js → commands-M4B3MDUA.js} +3 -3
- package/dist/{commands-7ZRA2BHR.js → commands-OABOHHNC.js} +2 -2
- package/dist/company-6HMFGVPJ.js +161 -0
- package/dist/{completion-EFIZU6YO.js → completion-DGJH42YO.js} +1 -1
- package/dist/{department-G4H75GGM.js → department-DH5YABBF.js} +1 -1
- package/dist/{inquiry-4SUKNVMY.js → inquiry-67OW3HBZ.js} +1 -1
- package/dist/{job-title-T3P3625A.js → job-title-YEIANJNC.js} +1 -1
- package/dist/{leave-7MXKEOQ2.js → leave-XXDCHUGK.js} +1 -1
- package/dist/{media-TZWSBMCP.js → media-NZD6J7KE.js} +4 -5
- package/dist/{notification-CA2LOXPS.js → notification-BQ4ODX6U.js} +1 -1
- package/dist/{oneshot-Y7P6SMY2.js → oneshot-GCQYYNIH.js} +1 -1
- package/dist/{position-GDOY4TFK.js → position-WR5YODDU.js} +1 -1
- package/dist/prospect-YZUHE7PL.js +107 -0
- package/dist/{registry-JYFK6PU7.js → registry-3O2KBG5I.js} +1 -1
- package/dist/{render-K45EOLHX.js → render-W523YEYF.js} +1 -1
- package/dist/report-SGAVGU4G.js +73 -0
- package/dist/{run-MH6LOFQS.js → run-WXHHCFT7.js} +2 -2
- package/dist/{sales-W2DV7FWL.js → sales-OFEVE2PG.js} +1 -1
- package/dist/{task-75VRLRYO.js → task-IE7DNU34.js} +2 -2
- package/dist/{user-VRIXQF5Q.js → user-UJIB3SCU.js} +1 -1
- package/dist/{workflow-OFA6XJOV.js → workflow-QWVZH4NG.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-4OKUCLIC.js +0 -3
- package/dist/chunk-CKGB7CLM.js +0 -6
- package/dist/chunk-FTYJZFEK.js +0 -10
- package/dist/chunk-RM4ECBIO.js +0 -80
- package/dist/company-E3VKXS75.js +0 -107
package/dist/chunk-FTYJZFEK.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{httpFetch}from"./chunk-J7QYPKVK.js";function encodeScalar(key,value,inArray){if(typeof value==="boolean")return value?"true":"false";if(typeof value==="number"){if(!Number.isFinite(value)){throw new TypeError(`\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF ${key} \u306B\u6709\u9650\u3067\u306A\u3044\u6570\u5024\u306F\u6E21\u305B\u307E\u305B\u3093: ${String(value)}`)}return String(value)}if(inArray&&value.includes(",")){throw new TypeError(`\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF ${key} \u306E\u914D\u5217\u8981\u7D20\u306B\u30AB\u30F3\u30DE\u306F\u542B\u3081\u3089\u308C\u307E\u305B\u3093: ${value}`)}
|
|
4
|
-
return value}function buildQuery(params){if(!params)return"";const search=new URLSearchParams;for(const[key,value]of Object.entries(params)){if(value===null||value===void 0)continue;if(Array.isArray(value)){if(value.length===0)continue;search.append(key,value.map(v=>encodeScalar(key,v,true)).join(","));continue}search.append(key,encodeScalar(key,value,false))}return search.toString()}function appendQuery(path,params){const qs=buildQuery(params);if(qs==="")return path;if(path.endsWith("?")||path.
|
|
5
|
-
endsWith("&"))return`${path}${qs}`;return`${path}${path.includes("?")?"&":"?"}${qs}`}var ApiError=class extends Error{constructor(status,body,method,path){super(`${method} ${path} -> ${status}${reasonOf(body)}`);this.status=status;this.body=body}status;body};function reasonOf(body){const head=body?.error_description||body?.message||"";const detail=errorListMessages(body?.error_list).filter(text=>!text.endsWith(`: ${head}`)&&text!==head).join(" / ");if(head!==""&&detail!=="")return` (${head} ${detail})`;if(head!=="")return` (${head})`;return detail!==""?` (${detail})`:""}var TwpApiClient=class{constructor(apiUrl,session,fetchImpl=httpFetch,cliVersion="\
|
|
6
|
-
0.0.0-dev"){this.apiUrl=apiUrl;this.session=session;this.fetchImpl=fetchImpl;this.cliVersion=cliVersion}apiUrl;session;fetchImpl;cliVersion;async get(path,query){return this.request("GET",appendQuery(path,query))}async post(path,body,query){return this.request("POST",appendQuery(path,query),body)}async put(path,body,query){return this.request("PUT",appendQuery(path,query),body)}async patch(path,body,query){return this.request("PATCH",appendQuery(path,query),body)}async delete(path,query){return this.
|
|
7
|
-
request("DELETE",appendQuery(path,query))}async requestBinary(method,path){let token=await this.session.getAccessToken();let res=await this.send(method,path,token);if(res.status===401){token=await this.session.refresh(token);res=await this.send(method,path,token)}if(!res.ok){const errBody=await res.json().then(parsed=>parsed,()=>null);throw new ApiError(res.status,errBody,method,path)}return{bytes:new Uint8Array(await res.arrayBuffer()),contentType:res.headers.get("content-type")}}async request(method,path,body){
|
|
8
|
-
let token=await this.session.getAccessToken();let res=await this.send(method,path,token,body);if(res.status===401){token=await this.session.refresh(token);res=await this.send(method,path,token,body)}if(!res.ok){const errBody=await res.json().then(parsed=>parsed,()=>null);throw new ApiError(res.status,errBody,method,path)}if(res.status===204||res.headers.get("content-length")==="0"){return null}const raw=await res.text();if(raw.trim()==="")return null;try{return JSON.parse(raw)}catch{throw new ApiError(
|
|
9
|
-
res.status,null,method,path)}}send(method,path,token,body){return this.fetchImpl(`${this.apiUrl}${path}`,{method,headers:{Accept:"application/json",Authorization:`Bearer ${token}`,"User-Agent":`twp-cli/${this.cliVersion}`,...body!==void 0?{"Content-Type":"application/json"}:{}},...body!==void 0?{body:JSON.stringify(body)}:{}})}};function errorListMessages(list){if(Array.isArray(list)){return list.flatMap(item=>{if(typeof item!=="object"||item===null)return[];const{name,message}=item;if(typeof message!==
|
|
10
|
-
"string"||message==="")return[];return[typeof name==="string"&&name!==""?`${name}: ${message}`:message]})}if(typeof list==="object"&&list!==null){return Object.entries(list).flatMap(([name,messages])=>(Array.isArray(messages)?messages:[messages]).filter(message=>typeof message==="string"&&message!=="").map(message=>`${name}: ${message}`))}return[]}export{appendQuery,ApiError,TwpApiClient,errorListMessages};
|
package/dist/chunk-RM4ECBIO.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{ApiError}from"./chunk-FTYJZFEK.js";import{ResolveError,UUID_RE,isSafePathSegment,resolveProjectRef,safeProjectIdPolicy}from"./chunk-GMBJTG6A.js";import{loadProjectConfig,loadUserConfig}from"./chunk-4VZKNEVN.js";import{isTaskKey}from"./chunk-II5RVJQN.js";import{UsageError}from"./chunk-7WSNIXTQ.js";import{twpHomeDir}from"./chunk-RZVI6PMW.js";var BACKLOG_BASE_PATH="/api/v2/integrations/backlog";function assertBacklogPathSegment(value,label){if(!isSafePathSegment(value)){throw new ResolveError(`${label}\u3068\u3057\u3066 URL \u306B\u5165\u308C\u3089\u308C\u306A\u3044\u5024\u304C\u30B5\u30FC\u30D0\u304B\u3089\u8FD4\u308A\u307E\u3057\u305F: ${JSON.stringify(value)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return value}function backlogSpacePath(spaceId,suffix=""){assertBacklogPathSegment(spaceId,
|
|
4
|
-
"Backlog \u30B9\u30DA\u30FC\u30B9 ID");return`${BACKLOG_BASE_PATH}/${encodeURIComponent(spaceId)}${suffix}`}function idString(value){if(typeof value==="number"&&Number.isFinite(value))return String(value);if(typeof value==="string"&&value.trim()!=="")return value.trim();return null}function text(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function backlogSpaceAliases(spaceUrl){const aliases=[];const trimmed=spaceUrl.trim().replace(/\/+$/,"");if(trimmed==="")return aliases;
|
|
5
|
-
let host;try{host=new URL(trimmed).host}catch{host=trimmed.replace(/^\/+/,"").split("/")[0]??""}if(host==="")return aliases;aliases.push(host);const label=host.split(".")[0];if(label!==void 0&&label!==""&&label!==host)aliases.push(label);return aliases}function backlogSpaceRow(row){const url=text(row["space_url"]);return{id:idString(row["id"]),name:url,code:null,aliases:url!==null?backlogSpaceAliases(url):[]}}function backlogProjectRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:text(
|
|
6
|
-
row["projectKey"])}}function backlogStatusRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null}}function backlogUserRow(row){return{id:idString(row["id"]),name:text(row["name"]),code:null,aliases:[text(row["userId"]),text(row["mailAddress"])].filter(v=>v!==null)}}var DEFAULT_LOOKUP_SCOPE="\u3053\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";function fold(value){return value.trim().toLowerCase()}function keysOf(ref){return[ref.id,ref.code,ref.name,...ref.aliases??[]].filter(v=>typeof v==="string"&&v.trim()!=="").map(fold)}function describe(ref){return ref.code!==void 0&&ref.code!==null&&ref.code!==""&&ref.code!==ref.name?`${ref.name}\uFF08${ref.code}\uFF09`:ref.name}async function suggest(input,candidates){try{const{default:fuzzysort}=await import("./fuzzysort-DFVKV4B4.js");
|
|
7
|
-
const indexed=candidates.map(ref=>({hay:keysOf(ref).join(" "),ref}));const hits=fuzzysort.go(input.trim(),indexed,{key:"hay",limit:5,threshold:-1e4});return hits.map(hit=>hit.obj.ref)}catch{return[]}}function listCandidates(candidates,limit=10){const shown=candidates.slice(0,limit).map(describe).join(" / ");return candidates.length>limit?`${shown} \u2026\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:shown}async function resolveNamed(input,candidates,ctx){const needle=fold(input);if(needle===""){
|
|
8
|
-
throw new UsageError(`${ctx.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`)}if(candidates.length===0){throw new UsageError(`${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F${ctx.label}\u304C1\u4EF6\u3082\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF08${ctx.flag} ${input}\uFF09`)}const hits=candidates.filter(ref=>keysOf(ref).includes(needle));const distinct=[...new Map(hits.map(ref=>[ref.id,ref])).values()];if(distinct.length===1)return distinct[0];if(distinct.
|
|
9
|
-
length>1){throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u304C${ctx.label}${distinct.length}\u4EF6\u306B\u4E00\u81F4\u3057\u307E\u3059: ${listCandidates(distinct)}`,`\u3069\u308C\u304B1\u3064\u306B\u6C7A\u307E\u308B\u5024\uFF08ID \u304B\u30B3\u30FC\u30C9\uFF09\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const near=await suggest(input,candidates);throw new UsageError(`${ctx.flag} \u306E\u300C${input}\u300D\u306B\u4E00\u81F4\u3059\u308B${ctx.label}\u304C\u3042\u308A\u307E\u305B\u3093`,
|
|
10
|
-
near.length>0?`\u3082\u3057\u304B\u3057\u3066: ${listCandidates(near,5)}\uFF08\u5168 ${candidates.length} \u4EF6\uFF09`:`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${listCandidates(candidates)}`)}function usable(value){return typeof value==="string"&&value.trim()!==""?value.trim():null}function resolveDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const fromFlag=usable(explicit);if(fromFlag!==null)return{ref:fromFlag,source:"flag"};const fromEnv=usable(env.TWP_PROJECT);if(fromEnv!==null)return{ref:fromEnv,source:"env"};const fromProjectConfig=usable(loadProjectConfig(cwd).project);if(fromProjectConfig!==null)return{ref:fromProjectConfig,source:"project-config"};const user=loadUserConfig(
|
|
11
|
-
env);const fromProfile=usable(user.profiles?.[profileName]?.project);if(fromProfile!==null)return{ref:fromProfile,source:"user-config"};const fromUser=usable(user.project);if(fromUser!==null)return{ref:fromUser,source:"user-config"};return null}function requireDefaultProject(explicit,profileName,env=process.env,cwd=process.cwd()){const resolved=resolveDefaultProject(explicit,profileName,env,cwd);if(resolved!==null)return resolved;throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
12
|
-
'--project <\u30B3\u30FC\u30C9|ID> \u3092\u4ED8\u3051\u308B\u304B\u3001TWP_PROJECT / .twp/config.json / ~/.twp/config.json \u306E "project" \u306B\u65E2\u5B9A\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002')}import crypto from"crypto";import fs from"fs";import path from"path";var DEFAULT_TTL_MS=10*60*1e3;var CACHE_VERSION=3;function cacheDir(env=process.env){return path.join(twpHomeDir(env),"cache")}function cacheFilePath(key,env=process.env){const digest=crypto.createHash("sha256").update(JSON.stringify([key.profile,key.scope,key.project??""])).digest("hex").slice(0,12);const label=key.scope.replace(/[^A-Za-z0-9._-]/g,"_").slice(0,40);return path.join(cacheDir(env),`${label}-${digest}.json`)}function sameKey(a,b){return a.profile===b.profile&&a.scope===b.scope&&(a.project??
|
|
13
|
-
"")===(b.project??"")}function isOursAndPrivate(target,check){if(process.platform==="win32")return true;try{const st=fs.lstatSync(target);if(st.isSymbolicLink())return false;const uid=process.getuid?.();if(uid!==void 0&&st.uid!==uid)return false;const forbidden=check==="file"?54:18;return(st.mode&forbidden)===0}catch{return false}}function isCacheLocationTrusted(env){const home=twpHomeDir(env);const dir=cacheDir(env);for(const target of[home,dir]){if(fs.existsSync(target)&&!isOursAndPrivate(target,
|
|
14
|
-
"dir"))return false}return true}function readCache(key,options={}){if(options.refresh===true)return null;const env=options.env??process.env;const file=cacheFilePath(key,env);if(!isCacheLocationTrusted(env)||!isOursAndPrivate(file,"file"))return null;let parsed;try{parsed=JSON.parse(fs.readFileSync(file,"utf8"))}catch{return null}if(parsed?.version!==CACHE_VERSION||!parsed.key||!sameKey(parsed.key,key))return null;const fetchedAt=Date.parse(parsed.fetched_at);if(!Number.isFinite(fetchedAt))return null;
|
|
15
|
-
const ttl=options.ttlMs??DEFAULT_TTL_MS;const now=(options.now??Date.now)();if(Math.abs(now-fetchedAt)>ttl)return null;return parsed.value}function writeCache(key,value,options={}){const env=options.env??process.env;const dir=cacheDir(env);const file=cacheFilePath(key,env);const body={version:CACHE_VERSION,key:{profile:key.profile,scope:key.scope,...key.project!==void 0?{project:key.project}:{}},fetched_at:new Date((options.now??Date.now)()).toISOString(),value};if(!isCacheLocationTrusted(env))return;
|
|
16
|
-
const tmp=`${file}.${process.pid}.tmp`;try{fs.mkdirSync(dir,{recursive:true,mode:448});fs.writeFileSync(tmp,`${JSON.stringify(body)}
|
|
17
|
-
`,{mode:384});fs.renameSync(tmp,file)}catch{try{fs.rmSync(tmp,{force:true})}catch{}}}function removeCache(key,options={}){const env=options.env??process.env;if(!isCacheLocationTrusted(env))return;try{fs.rmSync(cacheFilePath(key,env),{force:true})}catch{}}var SELF_REF="me";var PRIVATE_TASKS_PATH="/api/v2/tasks/private";var PRIVATE_MASTERS_CACHE_KEY="__private__";var BACKLOG_SPACES_CACHE_KEY="__backlog__";var BACKLOG_SCOPE_LABEL="\u3053\u306E\u63A5\u7D9A\u5148";var BACKLOG_PROJECT_SCOPE_LABEL="\u3053\u306E Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8";var PRIVATE_SCOPE_LABEL="\u500B\u4EBA\u30BF\u30B9\u30AF";var TENANT_CACHE_KEY="__tenant__";var TENANT_SCOPE_LABEL="\u3053\u306E\u30C6\u30CA\u30F3\u30C8";var ADMIN_USERS_LIST_PATH="/api/v2/admin/users\
|
|
18
|
-
/list";var DEPARTMENTS_PATH="/api/v2/organization/departments";var POSITIONS_PATH="/api/v2/organization/positions";var JOB_TITLES_PATH="/api/v2/organization/job-titles";var INQUIRY_CATEGORIES_PATH="/api/v2/inquiries/categories";var NOTIFICATIONS_PATH="/api/v2/notifications";var NOTIFICATION_COUNT_MAX_PAGES=20;var NOTIFICATION_COUNT_PAGE_LIMIT=100;var WORKFLOWS_PATH="/api/v2/workflows";var SALES_ESTIMATES_PATH="/api/v2/sales/estimates";var SALES_INVOICES_PATH="/api/v2/sales/invoices";var SALES_COMPANIES_PATH="\
|
|
19
|
-
/api/v2/sales/companies";var CUSTOMERS_PATH="/api/v2/customers";var COMPANY_SEARCH_PAGE_LIMIT=100;var COMPANY_SEARCH_MAX_PAGES=10;var CUSTOMER_CHILDREN_PAGE_LIMIT=100;function isExactNumericId(value){return/^[0-9]+$/.test(value)&&String(Number(value))===value}function exactCompanyId(ref,label){if(!isExactNumericId(ref.id)){throw new ResolveError(`${label}\u4E00\u89A7\u306E id \u304C\u6574\u6570\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF08${ref.id}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
20
|
-
return ref}var ORG_MASTER_LIMIT=1e3;var USER_LIST_MAX_PAGES=100;function isRecord(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}function str(value){return typeof value==="string"&&value.trim()!==""?value:null}function truthyFlag(value){return value===true||value===1}function rawGetVia(client){return async path2=>{try{return{ok:true,status:200,json:await client.request("GET",path2),error:null}}catch(err){if(err instanceof ApiError){return{ok:false,status:err.status,json:err.
|
|
21
|
-
body,error:err.message}}throw err}}}var TASK_MASTERS={status:{path:"task-statuses",envelope:"data",scope:"task-statuses",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"},type:{path:"task-types",envelope:"data",scope:"task-types",label:"\u7A2E\u5225"},category:{path:"task-categories",envelope:"data",scope:"task-categories",label:"\u30AB\u30C6\u30B4\u30EA"},milestone:{path:"task-milestones",envelope:"data",scope:"task-milestones",label:"\u30DE\u30A4\u30EB\u30B9\u30C8\u30FC\u30F3"},label:{path:"task-labels",
|
|
22
|
-
envelope:"items",scope:"task-labels",label:"\u30E9\u30D9\u30EB"}};var Resolver=class{constructor(client,options){this.client=client;this.options=options;this.get=rawGetVia(client)}client;options;get;privateMastersInFlight=null;async project(ref){const trimmed=ref.trim();if(trimmed==="")throw new UsageError("\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30B3\u30FC\u30C9\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044");return resolveProjectRef(trimmed,this.get,safeProjectIdPolicy)}async taskByKey(key){
|
|
23
|
-
const trimmed=key.trim();if(!isTaskKey(trimmed)){throw new UsageError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u306E\u5F62\u5F0F\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${key}`,"\u30AD\u30FC\u306F\u300C\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u30B3\u30FC\u30C9-\u756A\u53F7\u300D\u306E\u5F62\u3067\u3059\uFF08\u4F8B: ABC-123\uFF09\u3002")}const res=await this.get(`/api/v2/tasks/resolve-by-key/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}\
|
|
24
|
-
\uFF08\u5B58\u5728\u3057\u306A\u3044\u304B\u3001\u95B2\u89A7\u3067\u304D\u308B\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308A\u307E\u305B\u3093\uFF09`,404)}if(!res.ok){throw new ResolveError(`\u30BF\u30B9\u30AF\u30AD\u30FC\u3092\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const body=isRecord(res.
|
|
25
|
-
json)?res.json:{};const projectId=str(body["project_id"]);const task=body["task"];if(projectId===null||!isRecord(task)){throw new ResolveError("\u30BF\u30B9\u30AF\u30AD\u30FC\u89E3\u6C7A\u306E\u5FDC\u7B54\u306B project_id / task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}safeProjectIdPolicy.assertId(projectId);return{projectId,task}}async currentUser(){const res=await this.get("/api/v2/user");if(!res.ok){throw new ResolveError(
|
|
26
|
-
`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002twp login \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user)||str(user["id"])===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
27
|
-
res.status)}return{id:user["id"],name:str(user["name"])??user["id"],email:str(user["email"])}}async status(projectId,input){return resolveNamed(this.applyAlias("status",input),await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async taskType(projectId,input){return resolveNamed(this.applyAlias("type",input),await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async assignee(projectId,input,flag="--assignee"){if(input.trim().toLowerCase()===SELF_REF)
|
|
28
|
-
return this.self();const value=this.applyAlias("assignee",input);if(value.trim().toLowerCase()===SELF_REF)return this.self();return resolveNamed(value,await this.members(projectId),{flag,label:"\u30E1\u30F3\u30D0\u30FC"})}async self(){const me=await this.currentUser();return{id:me.id,name:me.name,...me.email!==null?{aliases:[me.email]}:{}}}async defaultStatus(projectId){return requireDefault(await this.statuses(projectId),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9"})}async defaultTaskType(projectId){
|
|
29
|
-
return requireDefault(await this.taskTypes(projectId),{flag:"--type",label:"\u7A2E\u5225"})}async statuses(projectId){return namedFromRows(await this.taskMasterRows("status",projectId),"\u30B9\u30C6\u30FC\u30BF\u30B9",codedMasterRow)}async taskTypes(projectId){return namedFromRows(await this.taskMasterRows("type",projectId),"\u7A2E\u5225",codedMasterRow)}async taskMaster(kind,projectId,input,flag){const spec=TASK_MASTERS[kind];return resolveNamed(input,await this.taskMasterRefs(kind,projectId),{
|
|
30
|
-
flag,label:spec.label})}async taskMasterRefs(kind,projectId){const spec=TASK_MASTERS[kind];return namedFromRows(await this.taskMasterRows(kind,projectId),spec.label,codedMasterRow)}async privateTaskMaster(envelope,input,flag,label){return resolveNamed(input,await this.privateMasters(envelope,label),{flag,label,scope:PRIVATE_SCOPE_LABEL})}async taskMasterRows(kind,projectId){const spec=TASK_MASTERS[kind];return this.cached(spec.scope,projectId,async()=>rawListFrom(await this.get(`/api/v2/projects\
|
|
31
|
-
/${encodeURIComponent(projectId)}/${spec.path}`),spec.envelope,spec.label))}invalidateTaskMaster(kind,projectId){removeCache({profile:this.options.profile,scope:TASK_MASTERS[kind].scope,project:projectId},this.options.env!==void 0?{env:this.options.env}:{})}async privateStatuses(){return this.privateMasters("statuses","\u30B9\u30C6\u30FC\u30BF\u30B9")}async privateTaskTypes(){return this.privateMasters("types","\u7A2E\u5225")}async privateStatus(input){return resolveNamed(this.applyAlias("status",
|
|
32
|
-
input),await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateTaskType(input){return resolveNamed(this.applyAlias("type",input),await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultStatus(){return requireDefault(await this.privateStatuses(),{flag:"--status",label:"\u30B9\u30C6\u30FC\u30BF\u30B9",scope:PRIVATE_SCOPE_LABEL})}async privateDefaultTaskType(){return requireDefault(
|
|
33
|
-
await this.privateTaskTypes(),{flag:"--type",label:"\u7A2E\u5225",scope:PRIVATE_SCOPE_LABEL})}async privateTask(ref){const trimmed=ref.trim();const res=await this.get(`${PRIVATE_TASKS_PATH}/${encodeURIComponent(trimmed)}`);if(res.status===404){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${trimmed}`,404)}if(!res.ok){throw new ResolveError(`\u500B\u4EBA\u30BF\u30B9\u30AF\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${trimmed}\
|
|
34
|
-
\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const task=isRecord(res.json)?res.json["task"]:void 0;if(!isRecord(task)){throw new ResolveError("\u500B\u4EBA\u30BF\u30B9\u30AF\u306E\u5FDC\u7B54\u306B task \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return task}async primaryAssignment(userId){
|
|
35
|
-
if(!isSafePathSegment(userId)){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments/primary`);if(res.status===404)return null;if(!res.ok){throw new ResolveError(`\u73FE\u5728\u306E\u4E3B\u6240\u5C5E\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
|
|
36
|
-
status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const assignment=isRecord(res.json)?res.json["assignment"]:void 0;if(!isRecord(assignment)||typeof assignment["id"]!=="string"){throw new ResolveError("\u4E3B\u6240\u5C5E\u306E\u5FDC\u7B54\u306B assignment.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return assignment}async assignments(userId){if(!isSafePathSegment(userId)){throw new ResolveError(
|
|
37
|
-
`\u30E6\u30FC\u30B6\u30FC ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${userId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}const res=await this.get(`/api/v2/organization/users/${encodeURIComponent(userId)}/assignments`);if(!res.ok){throw new ResolveError(`\u6240\u5C5E\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}${res.error?`: ${res.error}`:""}\uFF09\u3002`,res.status)}const list=isRecord(
|
|
38
|
-
res.json)?res.json["list"]:void 0;if(!Array.isArray(list)||!list.every(isRecord)){throw new ResolveError("\u6240\u5C5E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return list}async privateMasters(envelope,label){return namedFromRows(await this.privateMasterRows(envelope,label),label,codedMasterRow)}async privateMasterRows(envelope,label){return this.cached(
|
|
39
|
-
`private-${envelope}`,PRIVATE_MASTERS_CACHE_KEY,async()=>rawListFrom(await this.privateMastersResponse(),envelope,label))}privateMastersResponse(){this.privateMastersInFlight??=this.get(`${PRIVATE_TASKS_PATH}/masters`);return this.privateMastersInFlight}async members(projectId){return this.cached("members",projectId,()=>this.namedList(`/api/v2/projects/${encodeURIComponent(projectId)}/members`,"list","\u30E1\u30F3\u30D0\u30FC",row=>({id:str(row["user_id"]),name:str(row["user_name"]),code:null,aliases:[
|
|
40
|
-
str(row["alias"]),str(row["user_email"])].filter(v=>v!==null)})))}async user(input,flag="<\u30E6\u30FC\u30B6\u30FC>"){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);if(trimmed.toLowerCase()===SELF_REF)return this.self();if(UUID_RE.test(trimmed))return{id:trimmed,name:trimmed};const searched=await this.searchUsers(trimmed);if(searched.refs!==null){const needle=trimmed.toLowerCase();const hits=searched.
|
|
41
|
-
refs.filter(ref=>[ref.id,ref.code,ref.name,...ref.aliases??[]].some(key=>typeof key==="string"&&key.trim().toLowerCase()===needle));if(hits.length>0)return resolveNamed(trimmed,hits,{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}try{return await resolveNamed(trimmed,await this.visibleUsers(),{flag,label:"\u30E6\u30FC\u30B6\u30FC",scope:TENANT_SCOPE_LABEL})}catch(err){if(err instanceof UsageError&&searched.failure!==null){throw new UsageError(`${err.message}\uFF08\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u304C ${searched.
|
|
42
|
-
failure} \u3067\u5931\u6557\u3057\u305F\u305F\u3081\u3001\u8868\u793A\u5BFE\u8C61\u306E\u30E6\u30FC\u30B6\u30FC\u3060\u3051\u3067\u7167\u5408\u3057\u307E\u3057\u305F\uFF09`,err.hint)}throw err}}async searchUsers(keyword){const query=new URLSearchParams({keyword,include_hidden:"true",limit:"100"});const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);if(!res.ok)return{refs:null,failure:`HTTP ${res.status}`};return{refs:namedFromRows(rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"),
|
|
43
|
-
"\u30E6\u30FC\u30B6\u30FC",userRow),failure:null}}async visibleUsers(){return this.cached("admin-users-visible",TENANT_CACHE_KEY,async()=>{const rows=[];let cursor=null;for(let page=0;;page++){if(page>=USER_LIST_MAX_PAGES){throw new ResolveError(`\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u304C ${USER_LIST_MAX_PAGES} \u30DA\u30FC\u30B8\u3092\u8D85\u3048\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u304B\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
44
|
-
const query=new URLSearchParams({limit:"100"});if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${ADMIN_USERS_LIST_PATH}?${query.toString()}`);rows.push(...rawListFrom(res,"items","\u30E6\u30FC\u30B6\u30FC"));const body=isRecord(res.json)?res.json:{};if(body["has_more"]===false)break;const next=str(body["next_cursor"]);if(body["has_more"]!==true||next===null){throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u306E\u5FDC\u7B54\u306B has_more / next_cursor \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
45
|
-
res.status)}cursor=next}return namedFromRows(rows,"\u30E6\u30FC\u30B6\u30FC",userRow)})}async department(input,flag="--department"){return resolveNamed(input,await this.departments(),{flag,label:"\u90E8\u7F72",scope:TENANT_SCOPE_LABEL})}async position(input,flag="--position"){return resolveNamed(input,await this.positions(),{flag,label:"\u5F79\u8077",scope:TENANT_SCOPE_LABEL})}async jobTitle(input,flag="--job-title"){return resolveNamed(input,await this.jobTitles(),{flag,label:"\u8077\u4F4D",scope:TENANT_SCOPE_LABEL})}async departments(){
|
|
46
|
-
return this.cached("departments",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${DEPARTMENTS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u90E8\u7F72"),"\u90E8\u7F72",codedMasterRow))}async positions(){return this.cached("positions",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(await this.get(`${POSITIONS_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u5F79\u8077"),"\u5F79\u8077",codedMasterRow))}async jobTitles(){return this.cached("job-titles",TENANT_CACHE_KEY,async()=>namedFromRows(masterList(
|
|
47
|
-
await this.get(`${JOB_TITLES_PATH}?limit=${ORG_MASTER_LIMIT}`),"\u8077\u4F4D"),"\u8077\u4F4D",codedMasterRow))}async workflow(input,flag="<\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC>",category){return resolveNamed(input,await this.applicableWorkflows(category),{flag,label:category===void 0?"\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC":`\u7533\u8ACB\u3067\u304D\u308B\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\uFF08${category}\uFF09`,scope:TENANT_SCOPE_LABEL})}async applicableWorkflows(category){
|
|
48
|
-
const path2=category===void 0?`${WORKFLOWS_PATH}/applicable`:`${WORKFLOWS_PATH}/applicable/${encodeURIComponent(category)}`;const scope=category===void 0?"workflows-applicable":`workflows-applicable-${category}`;return this.cached(scope,TENANT_CACHE_KEY,async()=>{const res=await this.get(path2);const rows=rawListFrom(res,"list","\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC");const sum=isRecord(res.json)?res.json["sum"]:void 0;if(typeof sum==="number"&&sum>rows.length){throw new ResolveError(`\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u4E00\u89A7\u304C ${sum}\
|
|
49
|
-
\u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return namedFromRows(rows,"\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC",row=>({id:str(row["id"]),name:str(row["name"]),code:null}))})}async company(input,options){const trimmed=input.trim();if(trimmed==="")throw new UsageError(`${options.flag} \u306B\u7A7A\u306E\u5024\u306F\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093`);
|
|
50
|
-
if(isExactNumericId(trimmed))return options.mustExist===true?this.companyById(trimmed,options):{id:trimmed,name:trimmed};if(/^[0-9]+$/.test(trimmed)){throw new UsageError(`${options.flag} \u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${trimmed}`)}const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const base=options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH;const rows=[];
|
|
51
|
-
let truncated=false;for(let page=1;;page+=1){const path2=`${base}?keyword=${encodeURIComponent(trimmed)}&sort_column=id&sort_direction=desc&page_limit=${COMPANY_SEARCH_PAGE_LIMIT}&page_no=${page}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}for(const row of rawListFrom(res,"list",label))rows.push(row);const pageSum=isRecord(res.json)?res.json["page_sum"]:void 0;if(!Number.isInteger(pageSum)){throw new ResolveError(
|
|
52
|
-
`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B page_sum \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}if(page>=pageSum)break;if(page>=COMPANY_SEARCH_MAX_PAGES){truncated=true;break}}const listCommand=options.source==="customer"?"twp customer list":"twp company list";if(rows.length===0){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u3042\u308A\u307E\u305B\u3093`,
|
|
53
|
-
`${label}\u306F ID \u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}const refs=namedFromRows(rows,label,row=>({id:str(row["id"]),name:str(row["company_name"]),code:null,aliases:[str(row["company_short_name"]),str(row["company_name_kana"])].filter(v=>v!==null)}));const needle=trimmed.toLowerCase();const hits=refs.filter(ref=>[ref.name,...ref.aliases??[]].some(key=>key.trim().toLowerCase()===needle));const ctx={flag:options.flag,
|
|
54
|
-
label,scope:TENANT_SCOPE_LABEL};if(truncated){throw new UsageError(`${options.flag} \u306E\u300C${trimmed}\u300D\u3092\u540D\u524D\u306B\u542B\u3080${label}\u304C\u591A\u3059\u304E\u308B\u305F\u3081\uFF08${COMPANY_SEARCH_MAX_PAGES*COMPANY_SEARCH_PAGE_LIMIT} \u4EF6\u3092\u8D85\u3048\u3066\uFF09\u4E00\u610F\u306B\u6C7A\u3081\u3089\u308C\u307E\u305B\u3093`,`ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${listCommand} --keyword <\u8A9E> \u306E id \u5217\uFF09\u3002`)}if(hits.length>
|
|
55
|
-
0)return exactCompanyId(await resolveNamed(trimmed,hits,ctx),label);return exactCompanyId(await resolveNamed(trimmed,refs,ctx),label)}async companyById(id,options){const label=options.source==="customer"?"\u9867\u5BA2":"\u53D6\u5F15\u5148";const path2=`${options.source==="customer"?CUSTOMERS_PATH:SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)throw new UsageError(
|
|
56
|
-
`${options.flag} \u306E ID ${id} \u306E${label}\u306F\u3042\u308A\u307E\u305B\u3093`);if(!res.ok)throw new ResolveError(`${label}\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;const name=isRecord(data)?str(data["company_name"]):null;if(!isRecord(data)||data["id"]!==id||name===null){throw new ResolveError(`${label}\u306E\u5FDC\u7B54\u306B data.id / company_name \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
57
|
-
res.status)}return{id,name}}async companyRecord(id){if(!isExactNumericId(id))throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`);const path2=`${SALES_COMPANIES_PATH}/${id}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}if(res.status===404)return null;if(!res.ok)throw new ResolveError(
|
|
58
|
-
`\u53D6\u5F15\u5148\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const data=isRecord(res.json)?res.json["data"]:void 0;if(!isRecord(res.json)||res.json["result"]!==true||!isRecord(data)||data["id"]!==id){throw new ResolveError("\u53D6\u5F15\u5148\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",res.status)}return data}async customerChildren(companyId,kind){
|
|
59
|
-
if(!isExactNumericId(companyId))throw new UsageError(`\u53D6\u5F15\u5148\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${companyId}`);const label=kind==="contacts"?"\u62C5\u5F53\u8005":"\u5BFE\u5FDC\u5C65\u6B74";const rows=[];let cursor=null;const seenCursors=new Set;for(;;){const query=`limit=${CUSTOMER_CHILDREN_PAGE_LIMIT}${cursor===null?"":`&cursor=${encodeURIComponent(cursor)}`}`;const path2=`${CUSTOMERS_PATH}\
|
|
60
|
-
/${companyId}/${kind}?${query}`;const res=await this.get(path2);if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.json)?res.json:null,"GET",path2)}rows.push(...rawListFrom(res,"items",label));const hasMore=isRecord(res.json)?res.json["has_more"]:void 0;const next=isRecord(res.json)?res.json["next_cursor"]:void 0;if(hasMore===false)return rows;if(hasMore!==true||typeof next!=="string"||next===""){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\
|
|
61
|
-
\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}if(seenCursors.has(next))throw new ResolveError(`${label}\u4E00\u89A7\u306E next_cursor \u304C\u9032\u307F\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status);seenCursors.add(next);cursor=next}}async featureLevel(feature){const res=await this.get("/api/v2/user");if(res.status===401||res.status===403){throw new ApiError(res.status,isRecord(res.
|
|
62
|
-
json)?res.json:null,"GET","/api/v2/user")}if(!res.ok)throw new ResolveError(`\u30ED\u30B0\u30A4\u30F3\u4E2D\u306E\u30E6\u30FC\u30B6\u30FC\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002`,res.status);const user=isRecord(res.json)?res.json["user"]:void 0;if(!isRecord(user))throw new ResolveError("\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306E\u5FDC\u7B54\u306B user \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
63
|
-
res.status);const permissions=user["feature_permissions"];const level=isRecord(permissions)?permissions[feature]:void 0;return{isAdmin:user["is_admin"]===true,level:typeof level==="string"?level:null}}async inquiryCategory(input,flag="<\u30AB\u30C6\u30B4\u30EA>"){const rows=await this.inquiryCategoryRows();return resolveNamed(input,namedFromRows(rows,"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",inquiryCategoryRow),{flag,label:"\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async inquiryCategoryRows(options={}){
|
|
64
|
-
const load=async()=>rawListFrom(await this.get(INQUIRY_CATEGORIES_PATH),"list","\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA");if(options.fresh!==true)return this.cached("inquiry-categories",TENANT_CACHE_KEY,load);const rows=await load();writeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},rows,{...this.options.env!==void 0?{env:this.options.env}:{},...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.
|
|
65
|
-
options.now}:{}});return rows}invalidateInquiryCategories(){removeCache({profile:this.options.profile,scope:"inquiry-categories",project:TENANT_CACHE_KEY},this.options.env!==void 0?{env:this.options.env}:{})}async notificationCategory(input,flag="--category"){const rows=await this.cached("notification-categories",TENANT_CACHE_KEY,async()=>rawListFrom(await this.get(`${NOTIFICATIONS_PATH}/categories`),"categories","\u901A\u77E5\u30AB\u30C6\u30B4\u30EA"));return resolveNamed(input,namedFromRows(rows,
|
|
66
|
-
"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",notificationCategoryRow),{flag,label:"\u901A\u77E5\u30AB\u30C6\u30B4\u30EA",scope:TENANT_SCOPE_LABEL})}async notificationUnreadCount(category){if(category===null){const res=await this.get(`${NOTIFICATIONS_PATH}/counts`);const count=res.ok&&isRecord(res.json)?res.json["unread_count"]:void 0;if(typeof count!=="number"||!Number.isSafeInteger(count)||count<0){throw new ResolveError(res.ok?"\u901A\u77E5\u4EF6\u6570\u306E\u5FDC\u7B54\u306B unread_count \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002":
|
|
67
|
-
`\u901A\u77E5\u306E\u672A\u8AAD\u4EF6\u6570\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return{count,complete:true}}let total=0;let cursor=null;for(let page=0;page<NOTIFICATION_COUNT_MAX_PAGES;page++){const query=new URLSearchParams({read_status:"unread",category,limit:String(NOTIFICATION_COUNT_PAGE_LIMIT)});
|
|
68
|
-
if(cursor!==null)query.set("cursor",cursor);const res=await this.get(`${NOTIFICATIONS_PATH}?${query.toString()}`);total+=rawListFrom(res,"list","\u901A\u77E5").length;const body=res.json;if(body["has_more"]===false)return{count:total,complete:true};if(body["has_more"]!==true||typeof body["next_cursor"]!=="string"||body["next_cursor"]===""){throw new ResolveError("\u901A\u77E5\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u3092\u89E3\u91C8\u3067\u304D\u307E\u305B\u3093\u3002\u672A\u8AAD\u4EF6\u6570\u3092\u6570\u3048\u3089\u308C\u306A\u3044\u305F\u3081\u4E2D\u65AD\u3057\u307E\u3057\u305F\u3002",
|
|
69
|
-
res.status)}cursor=body["next_cursor"]}return{count:total,complete:false}}async namedList(path2,envelope,label,map){return namedListFrom(await this.get(path2),envelope,label,map)}async cached(scope,projectId,load){const key={profile:this.options.profile,scope,project:projectId};const options={...this.options.env!==void 0?{env:this.options.env}:{},refresh:this.options.refresh,...this.options.ttlMs!==void 0?{ttlMs:this.options.ttlMs}:{},...this.options.now!==void 0?{now:this.options.now}:{}};const hit=readCache(
|
|
70
|
-
key,options);if(hit!==null&&Array.isArray(hit))return hit;const fresh=await load();writeCache(key,fresh,options);return fresh}applyAlias(kind,input){const table=this.options.aliases?.[kind];if(table===void 0)return input;const needle=input.trim().toLowerCase();for(const[from,to]of Object.entries(table)){if(from.trim().toLowerCase()===needle&&typeof to==="string"&&to.trim()!=="")return to}return input}async backlogSpaces(){return this.cached("backlog-spaces",BACKLOG_SPACES_CACHE_KEY,()=>this.namedList(
|
|
71
|
-
`${BACKLOG_BASE_PATH}/spaces`,"spaces","Backlog \u30B9\u30DA\u30FC\u30B9",backlogSpaceRow))}async backlogSpace(ref){return resolveNamed(ref,await this.backlogSpaces(),{flag:"--space",label:"Backlog \u30B9\u30DA\u30FC\u30B9",scope:BACKLOG_SCOPE_LABEL})}async backlogDefaultSpace(){const spaces=await this.backlogSpaces();if(spaces.length===1)return spaces[0];if(spaces.length===0){throw new UsageError("Backlog \u30B9\u30DA\u30FC\u30B9\u304C1\u4EF6\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u305B\u3093",
|
|
72
|
-
"TWP \u306E\u5916\u90E8\u9023\u643A\u8A2D\u5B9A\u3067 Backlog \u30B9\u30DA\u30FC\u30B9\u3092\u767B\u9332\u3057\u3066\u304F\u3060\u3055\u3044\uFF08twp backlog space list \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\uFF09\u3002")}throw new UsageError(`Backlog \u30B9\u30DA\u30FC\u30B9\u304C ${spaces.length} \u4EF6\u767B\u9332\u3055\u308C\u3066\u3044\u308B\u305F\u3081\u3001--space \u30671\u3064\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`twp backlog space list \u3067 ID \u3068\u30B9\u30DA\u30FC\u30B9URL\u3092\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002`)}async backlogProjects(spaceId){
|
|
73
|
-
return this.cached("backlog-projects",spaceId,()=>this.namedList(backlogSpacePath(spaceId,"/projects"),"projects","Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8",backlogProjectRow))}async backlogStatuses(spaceId,projectId){return this.cached("backlog-statuses",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/statuses`),"statuses","Backlog \u30B9\u30C6\u30FC\u30BF\u30B9",
|
|
74
|
-
backlogStatusRow))}async backlogUsers(spaceId,projectId){return this.cached("backlog-users",`${spaceId}/${projectId}`,()=>this.namedList(backlogSpacePath(spaceId,`/projects/${encodeURIComponent(assertBacklogPathSegment(projectId,"Backlog \u30D7\u30ED\u30B8\u30A7\u30AF\u30C8 ID"))}/users`),"users","Backlog \u30E6\u30FC\u30B6\u30FC",backlogUserRow))}get apiClient(){return this.client}};function rawListFrom(res,envelope,label){if(!res.ok){throw new ResolveError(`${label}\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08HTTP ${res.
|
|
75
|
-
status}\uFF09\u3002\u63A5\u7D9A\u5148\u3068\u30ED\u30B0\u30A4\u30F3\u72B6\u614B\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}const list=isRecord(res.json)?res.json[envelope]:void 0;if(!Array.isArray(list)){throw new ResolveError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B ${envelope} \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return list.map((row,index)=>{if(!isRecord(
|
|
76
|
-
row)){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\u304C\u60F3\u5B9A\u306E\u5F62\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,res.status)}return row})}function userRow(row){const email=str(row["email"]);const employeeCode=str(row["employee_code"]);return{id:str(row["user_id"]),name:str(row["user_name"]),code:employeeCode??email,aliases:[email,employeeCode].filter(v=>v!==null)}}function notificationCategoryRow(row){
|
|
77
|
-
return{id:str(row["key"]),name:str(row["name"]),code:str(row["key"])}}function inquiryCategoryRow(row){return{id:str(row["id"]),name:str(row["title"]),code:str(row["category_code"])}}function masterList(res,label){const rows=rawListFrom(res,"list",label);const count=isRecord(res.json)?res.json["count"]:void 0;if(typeof count==="number"&&count>rows.length){throw new ResolveError(`${label}\u4E00\u89A7\u304C ${count} \u4EF6\u4E2D ${rows.length} \u4EF6\u3067\u5207\u308A\u8A70\u3081\u3089\u308C\u305F\u305F\u3081\u3001\u540D\u524D\u3067\u89E3\u6C7A\u3067\u304D\u307E\u305B\u3093\u3002ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,
|
|
78
|
-
res.status)}return rows}function codedMasterRow(row){return{id:str(row["id"]),name:str(row["name"]),code:str(row["code"]),isDefault:truthyFlag(row["is_default"])}}function namedListFrom(res,envelope,label,map){return namedFromRows(rawListFrom(res,envelope,label),label,map,res.status??void 0)}function namedFromRows(rows,label,map,status=200){return rows.map((row,index)=>{const mapped=map(row);if(mapped.id===null||mapped.name===null){throw new ResolveError(`${label}\u4E00\u89A7\u306E ${index+1} \u4EF6\u76EE\
|
|
79
|
-
\u306B id / \u540D\u524D\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`,status)}return{id:mapped.id,name:mapped.name,...mapped.code!==void 0?{code:mapped.code}:{},...mapped.aliases!==void 0&&mapped.aliases.length>0?{aliases:mapped.aliases}:{},...mapped.isDefault!==void 0?{isDefault:mapped.isDefault}:{}}})}function requireDefault(candidates,ctx){const hit=candidates.find(ref=>ref.isDefault===true);if(hit!==void 0)return hit;
|
|
80
|
-
throw new UsageError(`${ctx.flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${ctx.scope??DEFAULT_LOOKUP_SCOPE}\u306B\u306F\u65E2\u5B9A\u306E${ctx.label}\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF09`,`\u6307\u5B9A\u3067\u304D\u308B${ctx.label}: ${candidates.map(ref=>ref.name).join(" / ")}\uFF08\u53E4\u3044\u30AD\u30E3\u30C3\u30B7\u30E5\u304C\u6B8B\u3063\u3066\u3044\u308B\u5834\u5408\u306F --refresh \u3067\u53D6\u308A\u76F4\u305B\u307E\u3059\uFF09`)}export{BACKLOG_BASE_PATH,backlogSpacePath,resolveNamed,requireDefaultProject,PRIVATE_TASKS_PATH,BACKLOG_SCOPE_LABEL,BACKLOG_PROJECT_SCOPE_LABEL,DEPARTMENTS_PATH,POSITIONS_PATH,JOB_TITLES_PATH,INQUIRY_CATEGORIES_PATH,NOTIFICATIONS_PATH,WORKFLOWS_PATH,SALES_ESTIMATES_PATH,SALES_INVOICES_PATH,SALES_COMPANIES_PATH,CUSTOMERS_PATH,isExactNumericId,ORG_MASTER_LIMIT,TASK_MASTERS,Resolver};
|
package/dist/company-E3VKXS75.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
-
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{readCsvFileText}from"./chunk-I6DWJXPC.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-KRTG6HSA.js";import"./chunk-IOGVQVGD.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-226G6ONZ.js";import"./chunk-UDPJ2IGK.js";import{CUSTOMERS_PATH,SALES_COMPANIES_PATH,isExactNumericId}from"./chunk-RM4ECBIO.js";import{ApiError,errorListMessages}from"./chunk-FTYJZFEK.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";
|
|
4
|
-
import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import{LIST_FLAGS,LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,envelopePaging,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes,positiveInteger}from"./chunk-R53CMVWR.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,
|
|
5
|
-
pick}from"./chunk-ZWVYVS2A.js";import{ApiRejectedError,ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";function levelForbidden(licenseGuidance,levelGuidance){return body=>body?.error==="permission_denied"?licenseGuidance:levelGuidance}var COMPANY_LICENSE="\u53D6\u5F15\u5148\u3092\u6271\u3046\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u304B\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u304C\u3001\u3069\u3061\u3089\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u3069\u3061\u3089\u3082\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u6A29\u9650\u304C\u3069\u3061\u3089\u3082\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002";
|
|
6
|
-
var CUSTOMER_LICENSE=featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406");var COMPANY_WRITE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u304B\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
7
|
-
var LEVEL_LABELS={admin:"\u7BA1\u7406\u8005",editor:"\u7DE8\u96C6\u8005",viewer:"\u95B2\u89A7\u8005",none:"\u306A\u3057"};var CHILD_DELETE_NEEDS="\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059";var CUSTOMER_DELETE_FORBIDDEN=levelForbidden(COMPANY_LICENSE,"\u9867\u5BA2\u306E\u524A\u9664\u306B\u306F\u3001\u4F01\u696D\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304B\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3001\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\
|
|
8
|
-
\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var CUSTOMER_UPDATE_FORBIDDEN=levelForbidden(CUSTOMER_LICENSE,"\u9867\u5BA2\u306E\u66F4\u65B0\u306B\u306F\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u304B\u3001\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u306E\u3069\u3061\u3089\u304B\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
9
|
-
function childForbidden(label,write){return levelForbidden(CUSTOMER_LICENSE,write==="edit"?`${label}\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`:`${label}\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\uFF08\u300C\u7DE8\u96C6\u8005\u300D\u3067\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
10
|
-
var NO_LIMIT=Number.POSITIVE_INFINITY;var COMPANY_FIELDS=[{kind:"text",flag:"--name",key:"company_name",label:"\u4F01\u696D\u540D",maxChars:255,summary:"\u4F01\u696D\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"text",flag:"--kana",key:"company_name_kana",label:"\u30D5\u30EA\u30AC\u30CA",maxChars:255,summary:"\u4F01\u696D\u540D\u306E\u30D5\u30EA\u30AC\u30CA"},{kind:"text",flag:"--short-name",key:"company_short_name",label:"\u7565\u79F0",maxChars:100,summary:"\u7565\u79F0"},{kind:"tex\
|
|
11
|
-
t",flag:"--company-no",key:"company_no",label:"\u6CD5\u4EBA\u756A\u53F7",maxChars:20,summary:"\u6CD5\u4EBA\u756A\u53F7"},{kind:"text",flag:"--post-code",key:"post_code",label:"\u90F5\u4FBF\u756A\u53F7",maxChars:10,summary:"\u90F5\u4FBF\u756A\u53F7"},{kind:"text",flag:"--address1",key:"address1",label:"\u4F4F\u62401",maxChars:255,summary:"\u4F4F\u62401\uFF08\u90FD\u9053\u5E9C\u770C\u30FB\u5E02\u533A\u753A\u6751\uFF09"},{kind:"text",flag:"--address2",key:"address2",label:"\u4F4F\u62402",maxChars:255,
|
|
12
|
-
summary:"\u4F4F\u62402\uFF08\u756A\u5730\uFF09"},{kind:"text",flag:"--address3",key:"address3",label:"\u4F4F\u62403",maxChars:255,summary:"\u4F4F\u62403\uFF08\u5EFA\u7269\u540D\uFF09"},{kind:"text",flag:"--tel",key:"tel",label:"\u96FB\u8A71\u756A\u53F7",maxChars:20,summary:"\u96FB\u8A71\u756A\u53F7"},{kind:"text",flag:"--fax",key:"fax",label:"FAX",maxChars:20,summary:"FAX \u756A\u53F7"},{kind:"text",flag:"--industry",key:"industry",label:"\u696D\u7A2E",maxChars:100,summary:"\u696D\u7A2E"},{kind:"\
|
|
13
|
-
text",flag:"--website",key:"website",label:"Web \u30B5\u30A4\u30C8",maxChars:255,summary:"Web \u30B5\u30A4\u30C8\u306E URL"},{kind:"text",flag:"--memo",key:"memo",label:"\u30E1\u30E2",maxChars:NO_LIMIT,summary:"\u30E1\u30E2"},{kind:"boolean",flag:"--supplier",key:"supplier_flg",summary:"\u4ED5\u5165\u5148\uFF08\u8ABF\u9054\u5148\uFF09\u3068\u3057\u3066\u3082\u767B\u9332\u3059\u308B\u304B\uFF08true / false\uFF09"}];var CONTACT_FIELDS=[{kind:"text",flag:"--name",key:"name",label:"\u6C0F\u540D",maxChars:255,
|
|
14
|
-
summary:"\u6C0F\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"text",flag:"--kana",key:"name_kana",label:"\u30D5\u30EA\u30AC\u30CA",maxChars:255,summary:"\u6C0F\u540D\u306E\u30D5\u30EA\u30AC\u30CA"},{kind:"text",flag:"--department",key:"department",label:"\u90E8\u7F72",maxChars:255,summary:"\u90E8\u7F72"},{kind:"text",flag:"--position",key:"position",label:"\u5F79\u8077",maxChars:255,summary:"\u5F79\u8077"},{kind:"text",flag:"--role",key:"role_label",label:"\u5F79\u5272",maxChars:255,
|
|
15
|
-
summary:"\u5F79\u5272\uFF08\u6C7A\u88C1\u8005\u30FB\u7A93\u53E3 \u306A\u3069\uFF09"},{kind:"text",flag:"--email",key:"email",label:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",maxChars:255,summary:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9"},{kind:"text",flag:"--phone",key:"phone",label:"\u96FB\u8A71\u756A\u53F7",maxChars:50,summary:"\u96FB\u8A71\u756A\u53F7"},{kind:"text",flag:"--mobile",key:"mobile",label:"\u643A\u5E2F\u96FB\u8A71",maxChars:50,summary:"\u643A\u5E2F\u96FB\u8A71\u306E\u756A\u53F7"},
|
|
16
|
-
{kind:"boolean",flag:"--primary",key:"is_primary",summary:"\u4E3B\u62C5\u5F53\u306B\u3059\u308B\u304B\uFF08true / false\uFF09"},{kind:"text",flag:"--notes",key:"notes",label:"\u30E1\u30E2",maxChars:1e4,summary:"\u30E1\u30E2"}];var INTERACTION_TYPES=["call","email","visit","web_meeting","other"];var INTERACTION_STATUSES=["appointment","meeting","meeting_completed","proposing","proposal_accepted","communication","thanks_mail_sent"];var INTERACTION_FIELDS=[{kind:"enum",flag:"--type",key:"interactio\
|
|
17
|
-
n_type",values:INTERACTION_TYPES,summary:`\u5BFE\u5FDC\u306E\u7A2E\u5225\uFF08${INTERACTION_TYPES.join(" / ")}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`},{kind:"text",flag:"--date",key:"interaction_date",label:"\u5BFE\u5FDC\u65E5",maxChars:NO_LIMIT,summary:"\u5BFE\u5FDC\u65E5\uFF08\u4F8B 2026-09-29\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--status",key:"status",values:INTERACTION_STATUSES,summary:`\u72B6\u6CC1\uFF08${INTERACTION_STATUSES.join(" / ")}\uFF09`},{kind:"text",
|
|
18
|
-
flag:"--subject",key:"subject",label:"\u4EF6\u540D",maxChars:255,summary:"\u4EF6\u540D"},{kind:"text",flag:"--content",key:"content",label:"\u5185\u5BB9",maxChars:5e4,summary:"\u5185\u5BB9"},{kind:"text",flag:"--contact",key:"contact_id",label:"\u62C5\u5F53\u8005 ID",maxChars:255,summary:"\u5BFE\u5FDC\u3057\u305F\u76F8\u624B\u306E\u62C5\u5F53\u8005 ID\uFF08twp customer contact list \u306E id \u5217\uFF09"},{kind:"text",flag:"--next-action",key:"next_action",label:"\u6B21\u306E\u30A2\u30AF\u30B7\u30E7\u30F3",
|
|
19
|
-
maxChars:1e3,summary:"\u6B21\u306E\u30A2\u30AF\u30B7\u30E7\u30F3"},{kind:"text",flag:"--next-action-date",key:"next_action_date",label:"\u6B21\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u65E5\u4ED8",maxChars:NO_LIMIT,summary:"\u6B21\u306E\u30A2\u30AF\u30B7\u30E7\u30F3\u306E\u65E5\u4ED8"}];function dataOf(body,what){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(body)||body["result"]!==true||!isRecord(data)||typeof data["id"]!=="string"&&typeof data["id"]!=="number"){throw new ApiResponseError(
|
|
20
|
-
`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}var COMPANY_COLUMNS=["id","company_name","company_name_kana","company_short_name","customer_flg","supplier_flg","tel","address1"];var CONTACT_COLUMNS=["id","company_id","name","department","position","email","phone","is_primary"];var INTERACTION_COLUMNS=["id","company_id","interaction_type","interaction_date","status","sub\
|
|
21
|
-
ject","contact_id"];async function resolveCustomer(ctx,raw,flag){return(await ctx.resolver.company(raw,{flag,source:"customer",mustExist:true})).id}function companyPath(input){const id=requireResolved(input,"companyId");if(!isExactNumericId(id))throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${id}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return`${SALES_COMPANIES_PATH}\
|
|
22
|
-
/${id}`}function childBase(companyId,kind){if(!isExactNumericId(companyId))throw new ApiResponseError(`\u53D6\u5F15\u5148 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${companyId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return`${CUSTOMERS_PATH}/${companyId}/${kind}`}var REF_HELP="<\u9867\u5BA2> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B ID\uFF08twp customer list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\n\u4ED5\u5165\u5148\u3060\u3051\u306E\u53D6\u5F15\u5148\u306F\u9867\u5BA2\u3068\u3057\u3066\u6271\u308F\u306A\u3044\u306E\u3067\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093\uFF08twp company list \u3067\u898B\u3048\u307E\u3059\uFF09\u3002";
|
|
23
|
-
var createOperation={name:"create",summary:"\u9867\u5BA2\uFF08\u53D6\u5F15\u5148\u4F01\u696D\uFF09\u3092\u767B\u9332\u3059\u308B",usage:"twp customer create --name <\u4F01\u696D\u540D> [\u9805\u76EE\u2026]",description:"\u53D6\u5F15\u5148\u4F01\u696D\u3092\u300C\u9867\u5BA2\u300D\u3068\u3057\u3066\u767B\u9332\u3057\u307E\u3059\uFF08customer_flg \u3092\u7ACB\u3066\u3066\u4F5C\u6210\u3057\u307E\u3059\uFF09\u3002--name \u304C\u5FC5\u9808\u3067\u3059\u3002\n--supplier true \u3092\u4ED8\u3051\u308B\u3068\u4ED5\u5165\u5148\uFF08\u8ABF\u9054\u5148\uFF09\u3068\u3057\u3066\u3082\u767B\u9332\u3057\u307E\u3059\u3002\n\n\u4F5C\u6210\u3057\u305F\u9867\u5BA2\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002\u62C5\u5F53\u8005\u306F twp customer contact create \u3067\u8DB3\u3057\u307E\u3059\u3002",
|
|
24
|
-
forbidden:COMPANY_WRITE_FORBIDDEN,flags:createFlags(COMPANY_FIELDS),plan(input){if(input.args.length>0)throw new UsageError(`create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,"twp customer create help");const body=fieldBody(input,COMPANY_FIELDS);if(body["company_name"]===void 0)throw new UsageError("--name \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp customer create help");return{method:"POST",path:SALES_COMPANIES_PATH,body:{...body,
|
|
25
|
-
customer_flg:true}}},summarize:body=>pick(dataOf(body,"\u9867\u5BA2\u306E\u767B\u9332"),COMPANY_COLUMNS),raw:body=>dataOf(body,"\u9867\u5BA2\u306E\u767B\u9332")};var updateOperation={name:"update",summary:"\u9867\u5BA2\uFF08\u53D6\u5F15\u5148\u4F01\u696D\uFF09\u306E\u9805\u76EE\u3092\u66F4\u65B0\u3059\u308B",usage:"twp customer update <\u9867\u5BA2> [\u9805\u76EE\u2026]",description:`\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u66F4\u3057\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
|
|
26
|
-
|
|
27
|
-
${REF_HELP}`,forbidden:CUSTOMER_UPDATE_FORBIDDEN,flags:updateFlags(COMPANY_FIELDS),async prepare(input,ctx){if(!hasAnyField(input,COMPANY_FIELDS))throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044","twp customer update help");fieldBody(input,COMPANY_FIELDS);const raw=singleRef(input,{flag:"<\u9867\u5BA2>",label:"\u9867\u5BA2",usage:"twp customer update help"});return withResolved(input,{companyId:await resolveCustomer(
|
|
28
|
-
ctx,raw,"<\u9867\u5BA2>")})},plan:input=>({method:"PUT",path:companyPath(input),body:fieldBody(input,COMPANY_FIELDS)}),summarize:body=>pick(dataOf(body,"\u9867\u5BA2\u306E\u66F4\u65B0"),COMPANY_COLUMNS),raw:body=>dataOf(body,"\u9867\u5BA2\u306E\u66F4\u65B0")};var DELETE_FILE_MAX_BYTES=1024*1024;var CHILD_PAGE_LIMIT=100;var FILE_FLAG={name:"--file",summary:"\u524A\u9664\u3059\u308B\u9867\u5BA2\u306E ID \u30921\u884C\u306B1\u3064\u66F8\u3044\u305F\u30D5\u30A1\u30A4\u30EB",takesValue:true,placeholder:"\
|
|
29
|
-
<\u30D5\u30A1\u30A4\u30EB>"};function parseDeleteIds(text){const ids=[];const errors=[];const seen=new Map;text.split(/\r?\n/).forEach((raw,index)=>{const line=index+1;const value=raw.trim();if(value===""||value.startsWith("#"))return;if(!isExactNumericId(value)){errors.push(`${line} \u884C\u76EE: \u9867\u5BA2\u306E ID\uFF08\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\uFF09\u3067\u306F\u3042\u308A\u307E\u305B\u3093: ${value}`);return}const first=seen.get(value);if(first!==void 0){
|
|
30
|
-
errors.push(`${line} \u884C\u76EE: ID ${value} \u306F ${first} \u884C\u76EE\u3068\u91CD\u8907\u3057\u3066\u3044\u307E\u3059`);return}seen.set(value,line);ids.push({line,id:value})});return{ids,errors}}function flagIsCustomer(value){return value===true||value===1}async function inspectTarget(ctx,id,line){const record=await ctx.resolver.companyRecord(id);if(record!==null&&!flagIsCustomer(record["customer_flg"])){throw new UsageError(`ID ${id}\uFF08${String(record["company_name"]??"")}\uFF09\u306F\u9867\u5BA2\u3067\u306F\u306A\u3044\uFF08\u4ED5\u5165\u5148\u3060\
|
|
31
|
-
\u3051\u306E\uFF09\u53D6\u5F15\u5148\u3067\u3059\u3002twp customer delete \u3067\u306F\u524A\u9664\u3057\u307E\u305B\u3093`)}const contacts=await ctx.resolver.customerChildren(id,"contacts");const interactions=await ctx.resolver.customerChildren(id,"interactions");return{line,id,exists:record!==null,name:record===null?null:String(record["company_name"]??""),supplier:record!==null&&flagIsCustomer(record["supplier_flg"]),contactIds:contacts.map(row=>String(row["id"])),interactionCount:interactions.
|
|
32
|
-
length}}async function prepareDelete(input,ctx){const usage="twp customer delete help";const file=input.flags.get(FILE_FLAG.name);if(file===void 0){const raw=singleRef(input,{flag:"<\u9867\u5BA2>",label:"\u9867\u5BA2",usage});const id=isExactNumericId(raw.trim())?raw.trim():await resolveCustomer(ctx,raw,"<\u9867\u5BA2>");const target=await inspectTarget(ctx,id,null);if(!target.exists&&target.contactIds.length===0&&target.interactionCount===0){throw new UsageError(`ID ${id} \u306E\u9867\u5BA2\u306F\u3042\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u6E08\u307F\u3067\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\
|
|
33
|
-
\u6B74\u3082\u6B8B\u3063\u3066\u3044\u306A\u3044\u304B\u3001\u5B58\u5728\u3057\u306A\u3044 ID \u3067\u3059\uFF09`,"twp customer list \u3067 ID \u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002")}return withTargets(input,ctx,[target])}if(input.args.length>0)throw new UsageError(`--file \u306E\u3068\u304D\u306F\u9867\u5BA2\u3092\u4F4D\u7F6E\u5F15\u6570\u3067\u53D7\u3051\u307E\u305B\u3093: ${input.args.join(" ")}`,usage);if(file.trim()==="")throw new UsageError("--file <\u30D5\u30A1\u30A4\u30EB> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
34
|
-
usage);const text=readCsvFileText(file,usage,DELETE_FILE_MAX_BYTES,size=>new UsageError(`--file \u306E\u30D5\u30A1\u30A4\u30EB\u304C\u5927\u304D\u3059\u304E\u307E\u3059\uFF08${size} \u30D0\u30A4\u30C8\u30FB\u4E0A\u9650 ${DELETE_FILE_MAX_BYTES} \u30D0\u30A4\u30C8\uFF09: ${file}`,"\u30D5\u30A1\u30A4\u30EB\u3092\u5206\u3051\u3066\u6253\u3063\u3066\u304F\u3060\u3055\u3044\u3002"));const parsed=parseDeleteIds(text);const errors=parsed.errors.map(text2=>({line:Number(text2.split(" ")[0]),text:text2}));
|
|
35
|
-
const targets=[];for(const{line,id}of parsed.ids){try{targets.push(await inspectTarget(ctx,id,line))}catch(err){if(!(err instanceof UsageError))throw err;errors.push({line,text:`${line} \u884C\u76EE: ${err.message}`})}}if(errors.length>0){errors.sort((a,b)=>a.line-b.line);throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u306B\u524A\u9664\u3067\u304D\u306A\u3044\u884C\u304C ${errors.length} \u884C\u3042\u308B\u305F\u3081\u30011\u4EF6\u3082\u524A\u9664\u3057\u3066\u3044\u307E\u305B\u3093:
|
|
36
|
-
${errors.map(e=>e.text).join("\n ")}`,`\u6B63\u3057\u3044\u884C\u306F ${targets.length} \u884C\u3067\u3059\u3002\u305D\u306E\u884C\u3092\u76F4\u3059\u304B\u524A\u9664\u3057\u3066\u304B\u3089\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}if(targets.length===0)throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u306B\u9867\u5BA2\u306E ID \u304C\u3042\u308A\u307E\u305B\u3093: ${file}`,usage);return withTargets(input,ctx,targets)}async function withTargets(input,ctx,targets){const children=targets.
|
|
37
|
-
reduce((n,t)=>n+t.contactIds.length+(t.exists?0:t.interactionCount),0);let blocked="";if(children>0){const{isAdmin,level}=await ctx.resolver.featureLevel("customer");if(!isAdmin&&level!=="admin"){blocked=`${CHILD_DELETE_NEEDS}\uFF08\u3042\u306A\u305F\u306E\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650: ${LEVEL_LABELS[level??""]??level??"\u4E0D\u660E"}\uFF09\u3002\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u304C ${children} \u4EF6\u3042\u308B\u305F\u3081\u3001\u59CB\u3081\u308B\u3068\u4F01\u696D\u3060\u3051\u304C\u6D88\u3048\u3066\u62C5\u5F53\u8005\u304C\u6B8B\u308A\u307E\u3059\u30021\u4EF6\u3082\u9001\u3063\u3066\u3044\u307E\u305B\u3093\u3002`}}
|
|
38
|
-
return withResolved(input,{targets:JSON.stringify(targets),childDeleteBlocked:blocked})}function deleteTargets(input){return JSON.parse(requireResolved(input,"targets"))}function contactPath(companyId,contactId){if(!isSafePathSegment(contactId))throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F\u62C5\u5F53\u8005 ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${contactId}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return`${childBase(
|
|
39
|
-
companyId,"contacts")}/${encodeURIComponent(contactId)}`}function firstDeletePlan(targets){for(const target of targets){if(target.exists)return{method:"DELETE",path:`${SALES_COMPANIES_PATH}/${target.id}`};const[contactId]=target.contactIds;if(contactId!==void 0)return{method:"DELETE",path:contactPath(target.id,contactId)}}return{method:"GET",path:`${SALES_COMPANIES_PATH}/${targets[0].id}`}}function targetLabel(target){const where=target.line===null?"":`${target.line} \u884C\u76EE `;return`${where}\
|
|
40
|
-
ID ${target.id}${target.name===null?"\uFF08\u4F01\u696D\u306F\u524A\u9664\u6E08\u307F\u30FB\u307E\u305F\u306F\u5B58\u5728\u3057\u306A\u3044 ID\uFF09":` ${target.name}`}`}function deletePlannedNotes(input){const targets=deleteTargets(input);const companies=targets.filter(t=>t.exists).length;const contacts=targets.reduce((n,t)=>n+t.contactIds.length,0);const interactions=targets.reduce((n,t)=>n+t.interactionCount,0);const lines=[`\u524A\u9664\u306E\u4E0B\u898B: \u4F01\u696D ${companies} \u793E\u30FB\u62C5\u5F53\u8005 ${contacts}\
|
|
41
|
-
\u4EF6\u30FB\u5BFE\u5FDC\u5C65\u6B74 ${interactions} \u4EF6\uFF08${targets.length} \u4EF6\u306E\u6307\u5B9A\uFF09`];for(const target of targets){const supplier=target.supplier?"\u30FB\u4ED5\u5165\u5148\u3068\u3057\u3066\u3082\u767B\u9332\u3055\u308C\u3066\u3044\u307E\u3059\uFF08\u524A\u9664\u3059\u308B\u3068\u4ED5\u5165\u5148\u3068\u3057\u3066\u3082\u6D88\u3048\u307E\u3059\uFF09":"";lines.push(` ${targetLabel(target)}: \u62C5\u5F53\u8005 ${target.contactIds.length} \u4EF6\u30FB\u5BFE\u5FDC\u5C65\u6B74 ${target.
|
|
42
|
-
interactionCount} \u4EF6${supplier}`)}const blocked=input.resolved?.["childDeleteBlocked"];if(blocked!==void 0&&blocked!=="")lines.push(`\u3053\u306E\u6A29\u9650\u3067\u306F\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093: ${blocked}`);if(companies+contacts+interactions===0){lines.push("\u524A\u9664\u3059\u308B\u3082\u306E\u306F\u6B8B\u3063\u3066\u3044\u307E\u305B\u3093\uFF08\u9001\u308B\u306E\u306F\u78BA\u8A8D\u306E GET \u3060\u3051\u3067\u3059\uFF09\u3002");return lines}lines.push("\u4F01\u696D\u3054\u3068\u306B\u300C\u4F01\u696D\u306E\u8AAD\u307F\u76F4\u3057\uFF08\u9867\u5BA2\u306E\
|
|
43
|
-
\u307E\u307E\u304B\uFF09\u2192 \u4F01\u696D\u306E\u524A\u9664 \u2192 \u62C5\u5F53\u8005\u306E\u524A\u9664 \u2192 \u5BFE\u5FDC\u5C65\u6B74\u304C\u6B8B\u3063\u3066\u3044\u306A\u3044\u304B\u306E\u78BA\u8A8D\u300D\u306E\u9806\u3067\u9001\u308A\u307E\u3059\uFF08\u5BFE\u5FDC\u5C65\u6B74\u306F\u4F01\u696D\u306E\u524A\u9664\u3067\u30B5\u30FC\u30D0\u304C\u9023\u9396\u3057\u3066\u6D88\u3057\u307E\u3059\uFF09\u3002","\u898B\u7A4D\u30FB\u8ACB\u6C42\u66F8\u30FB\u6848\u4EF6\u66F8\u985E\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7B49\u304B\u3089\u53C2\u7167\u3055\u308C\u3066\u3044\u308B\u4F01\u696D\u306F\u30B5\u30FC\u30D0\u304C\u524A\u9664\u3092\u65AD\u308A\u307E\u3059\u3002\u305D\u306E\u3068\u304D\u306F\u305D\u306E\u4F01\u696D\u3067\u306F\u4F55\u3082\u524A\u9664\u305B\u305A\u3001\u305D\u3053\u3067\u6B62\u3081\u307E\u3059\uFF08\u4F7F\u7528\u4E2D\u304B\u3069\u3046\u304B\u306F\u30B5\u30FC\u30D0\u304C\u5224\u5B9A\u3059\u308B\u306E\u3067\u3001\u3053\u306E\
|
|
44
|
-
\u4E0B\u898B\u306B\u306F\u51FA\u307E\u305B\u3093\uFF09\u3002","\u9014\u4E2D\u3067\u6B62\u307E\u3063\u305F\u3089\u3001\u6D88\u3048\u305F\u3082\u306E\u30FB\u6B8B\u3063\u305F\u3082\u306E\u3092\u51FA\u3057\u307E\u3059\u3002\u539F\u56E0\u3092\u53D6\u308A\u9664\u3044\u3066\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3059\u3068\u3001\u524A\u9664\u6E08\u307F\u306E\u4F01\u696D\u306F\u6B8B\u308A\u3060\u3051\u3092\u6D88\u3057\u307E\u3059\u3002");lines.push("--dry-run \u304C\u8868\u793A\u3059\u308B\u8981\u6C42\u306F\u3001\u6700\u521D\u306B\u72B6\u614B\u3092\u5909\u3048\u308B1\u4EF6\u3067\u3059\
|
|
45
|
-
\uFF08\u305D\u306E\u524D\u306B\u4F01\u696D\u3092\u8AAD\u307F\u76F4\u3059 GET \u3092\u9001\u308A\u307E\u3059\uFF09\u3002");return lines}function isDeleteBody(body){return isRecord(body)&&body["customerDelete"]===true&&Array.isArray(body["done"])}function rejectionReason(err){if(!(err instanceof ApiError))return err.message;const list=err.body?.error_list;const first=Array.isArray(list)?list[0]:void 0;const message=isRecord(first)?first["message"]:void 0;if(typeof message==="string"&&message!=="")
|
|
46
|
-
return message;return errorListMessages(list)[0]??err.body?.error_description??err.body?.message??err.message}var DeleteStopped=class extends Error{constructor(reason,companyDeleted,contactsDeleted,interactionsDeleted){super("stopped");this.reason=reason;this.companyDeleted=companyDeleted;this.contactsDeleted=contactsDeleted;this.interactionsDeleted=interactionsDeleted}reason;companyDeleted;contactsDeleted;interactionsDeleted};async function listAllChildren(ctx,companyId,kind){const label=kind===
|
|
47
|
-
"contacts"?"\u62C5\u5F53\u8005":"\u5BFE\u5FDC\u5C65\u6B74";const ids=[];const seenCursors=new Set;let cursor;for(;;){const body=await ctx.send({method:"GET",path:childBase(companyId,kind),query:{limit:CHILD_PAGE_LIMIT,cursor}});const items=isRecord(body)?body["items"]:void 0;if(!Array.isArray(items))throw new ApiResponseError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);
|
|
48
|
-
for(const row of items){const id=isRecord(row)?row["id"]:void 0;if(typeof id!=="string"||!isSafePathSegment(id)){throw new ApiResponseError(`\u30B5\u30FC\u30D0\u304C\u8FD4\u3057\u305F${label} ID \u3092\u30D1\u30B9\u306B\u4F7F\u3048\u307E\u305B\u3093: ${String(id)}\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}ids.push(id)}const hasMore=isRecord(body)?body["has_more"]:void 0;const next=isRecord(body)?body["next_cursor"]:void 0;if(hasMore===false)return ids;
|
|
49
|
-
if(hasMore!==true||typeof next!=="string"||next===""||seenCursors.has(next)){throw new ApiResponseError(`${label}\u4E00\u89A7\u306E\u5FDC\u7B54\u306E has_more / next_cursor \u304C\u8AAD\u3081\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}seenCursors.add(next);cursor=next}}async function drain(ctx,companyId,kind,onDeleted){const label=kind==="contacts"?"\u62C5\u5F53\u8005":"\u5BFE\u5FDC\u5C65\u6B74";const gone=new Set;for(;;){const listed=await listAllChildren(
|
|
50
|
-
ctx,companyId,kind);const fresh=listed.filter(id=>!gone.has(id));if(fresh.length===0){for(const id of listed){try{await ctx.send({method:"GET",path:`${childBase(companyId,kind)}/${encodeURIComponent(id)}`})}catch(err){if(err instanceof ApiError&&err.status===404)continue;throw err}throw new ApiResponseError(`\u524A\u9664\u3092\u53D7\u3051\u4ED8\u3051\u305F${label}\uFF08ID ${id}\uFF09\u304C\u307E\u3060\u6B8B\u3063\u3066\u3044\u307E\u3059\u3002\u6642\u9593\u3092\u7F6E\u3044\u3066\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
51
|
-
return}for(const id of fresh){try{await ctx.send({method:"DELETE",path:`${childBase(companyId,kind)}/${encodeURIComponent(id)}`});onDeleted()}catch(err){if(!(err instanceof ApiError)||err.status!==404)throw err}gone.add(id)}}}function rejectedBeforeWrite(err){return err instanceof ApiError&&[401,403,422].includes(err.status)}async function companyNow(ctx,id){try{const body=await ctx.send({method:"GET",path:`${SALES_COMPANIES_PATH}/${id}`});return dataOf(body,"\u53D6\u5F15\u5148")}catch(err){if(err instanceof
|
|
52
|
-
ApiError&&err.status===404)return null;throw err}}async function deleteOne(ctx,target){let company="already";let current;try{current=await companyNow(ctx,target.id)}catch(err){throw new DeleteStopped(err,"no",0,0)}if(current!==null&&!flagIsCustomer(current["customer_flg"])){throw new DeleteStopped(new UsageError(`\u4E0B\u898B\u306E\u5F8C\u306B\u9867\u5BA2\u3067\u306F\u306A\u3044\uFF08\u4ED5\u5165\u5148\u3060\u3051\u306E\uFF09\u53D6\u5F15\u5148\u306B\u5909\u308F\u3063\u305F\u305F\u3081\u3001\u524A\u9664\u3057\u307E\u305B\u3093`),
|
|
53
|
-
"no",0,0)}if(current!==null){try{await ctx.send({method:"DELETE",path:`${SALES_COMPANIES_PATH}/${target.id}`});company="deleted"}catch(err){if(rejectedBeforeWrite(err))throw new DeleteStopped(err,"no",0,0);if(!(err instanceof ApiError&&err.status===404)){let after;try{after=await companyNow(ctx,target.id)}catch{throw new DeleteStopped(err,"uncertain",0,0)}if(after!==null)throw new DeleteStopped(err,"no",0,0);company="deleted"}}}let contacts=0;let interactions=0;try{await drain(ctx,target.id,"con\
|
|
54
|
-
tacts",()=>contacts+=1);await drain(ctx,target.id,"interactions",()=>interactions+=1)}catch(err){throw new DeleteStopped(err,company,contacts,interactions)}if(contacts>target.contactIds.length){ctx.warn(`ID ${target.id}: \u4E0B\u898B\u306E\u5F8C\u306B\u5897\u3048\u305F\u62C5\u5F53\u8005 ${contacts-target.contactIds.length} \u4EF6\u3082\u524A\u9664\u3057\u307E\u3057\u305F\uFF08\u4F01\u696D\u306B\u7D10\u3065\u304F\u62C5\u5F53\u8005\u3092\u6B8B\u3055\u306A\u3044\u305F\u3081\uFF09\u3002`)}return{id:target.
|
|
55
|
-
id,line:target.line,company_name:target.name,company,contacts_deleted:contacts,interactions_deleted:interactions}}function doneLine(item){const where=item.line===null?"":`${item.line} \u884C\u76EE `;const company=item.company==="deleted"?"\u4F01\u696D\u3092\u524A\u9664":"\u4F01\u696D\u306F\u524A\u9664\u6E08\u307F";return`${where}ID ${item.id}${item.company_name===null?"":` ${item.company_name}`}\uFF08${company}\u30FB\u62C5\u5F53\u8005 ${item.contacts_deleted} \u4EF6\u30FB\u9023\u9396\u3067\u6D88\u3048\u306A\u304B\u3063\u305F\u5BFE\u5FDC\u5C65\u6B74 ${item.
|
|
56
|
-
interactions_deleted} \u4EF6\uFF09`}function stopReason(err){if(err instanceof ApiError&&err.status===422)return rejectionReason(err);if(err instanceof ApiError&&err.status===403)return`\u6A29\u9650\u304C\u8DB3\u308A\u307E\u305B\u3093\uFF08${CHILD_DELETE_NEEDS}\uFF09`;return err.message}async function runDelete(input,ctx){const targets=deleteTargets(input);const blocked=input.resolved?.["childDeleteBlocked"];if(blocked!==void 0&&blocked!=="")throw new ApiRejectedError(blocked);const done=[];for(const[
|
|
57
|
-
index,target]of targets.entries()){try{done.push(await deleteOne(ctx,target))}catch(caught){if(!(caught instanceof DeleteStopped))throw caught;const err=caught.reason;const unsent=targets.slice(index+1);const touched=caught.companyDeleted!=="no"||caught.contactsDeleted+caught.interactionsDeleted>0;if(targets.length===1&&!touched)throw err;const lines=[`\u9867\u5BA2\u306E\u524A\u9664\u306F ${targetLabel(target)} \u3067\u6B62\u307E\u308A\u307E\u3057\u305F\uFF08${targets.length} \u4EF6\u4E2D \u5B8C\u4E86 ${done.
|
|
58
|
-
length} \u4EF6\u30FB\u5931\u6557 1 \u4EF6\u30FB\u672A\u7740\u624B ${unsent.length} \u4EF6\uFF09\u3002`];if(caught.companyDeleted==="no"){lines.push(` \u5931\u6557: \u4F01\u696D\u3092\u524A\u9664\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F: ${stopReason(err)}`);lines.push(" \u3053\u306E\u4F01\u696D\u3067\u306F\u4F55\u3082\u524A\u9664\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u3082\u305D\u306E\u307E\u307E\u3067\u3059\uFF09\u3002")}else if(caught.
|
|
59
|
-
companyDeleted==="uncertain"){lines.push(` \u5931\u6557: \u4F01\u696D\u306E\u524A\u9664\u306E\u7D50\u679C\u304C\u5206\u304B\u308A\u307E\u305B\u3093\uFF08${err.message}\uFF09\u3002\u8AAD\u307F\u76F4\u3057\u3082\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002`);lines.push(" \u4F01\u696D\u304C\u6D88\u3048\u305F\u304B\u3069\u3046\u304B\u306F\u672A\u78BA\u8A8D\u3067\u3059\u3002\u62C5\u5F53\u8005\u306F\u307E\u3060\u6D88\u3057\u3066\u3044\u307E\u305B\u3093\u3002")}else{lines.push(` \u5931\u6557: ${caught.
|
|
60
|
-
companyDeleted==="deleted"?"\u4F01\u696D\u306F\u524A\u9664\u3057\u307E\u3057\u305F\u304C\u3001":"\u4F01\u696D\u306F\u524A\u9664\u6E08\u307F\u3067\u3059\u304C\u3001"}\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u3067\u6B62\u307E\u308A\u307E\u3057\u305F\uFF08${stopReason(err)}\uFF09\u3002`);lines.push(` \u6D88\u3057\u305F\u62C5\u5F53\u8005 ${caught.contactsDeleted} \u4EF6\u30FB\u5BFE\u5FDC\u5C65\u6B74 ${caught.interactionsDeleted} \u4EF6\u3002\u6B8B\u308A\u306F\u3053\u306E\u4F01\u696D ID \u306B\u6B8B\u3063\u3066\u3044\u307E\u3059\u3002`)}
|
|
61
|
-
lines.push(done.length===0?" \u5B8C\u4E86: \u306A\u3057":` \u5B8C\u4E86:
|
|
62
|
-
${done.map(item=>` ${doneLine(item)}`).join("\n")}`);lines.push(unsent.length===0?" \u672A\u7740\u624B: \u306A\u3057":` \u672A\u7740\u624B: ${unsent.map(t=>`ID ${t.id}`).join(" / ")}`);if(err instanceof ApiError&&err.status===422){lines.push("\u53C2\u7167\u3057\u3066\u3044\u308B\u30C7\u30FC\u30BF\u3092\u524A\u9664\u30FB\u4ED8\u3051\u66FF\u3048\u308B\u304B\u3001\u305D\u306E ID \u3092\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u9664\u3044\u3066\u304B\u3089\u3001\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u5B8C\u4E86\u3057\u305F\u4F01\u696D\u306F\u524A\u9664\u6E08\u307F\u3068\u3057\u3066\u98DB\u3070\u3057\u307E\u3059\uFF09\u3002")}else if(err instanceof
|
|
63
|
-
ApiError&&err.status===403){lines.push(`\u3053\u306E\u6A29\u9650\u3067\u306F\u6253\u3061\u76F4\u3057\u3066\u3082\u9032\u307F\u307E\u305B\u3093\u3002${CHILD_DELETE_NEEDS}\u3002\u6A29\u9650\u3092\u6301\u3064\u4EBA\u306B\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u306E\u5B9F\u884C\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u524A\u9664\u6E08\u307F\u306E\u4F01\u696D\u306F\u6B8B\u308A\u3060\u3051\u3092\u6D88\u3057\u307E\u3059\uFF09\u3002`)}else{lines.push("\u539F\u56E0\u3092\u53D6\u308A\u9664\u3044\u3066\u304B\u3089\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3059\u3068\u3001\u524A\u9664\u6E08\u307F\u306E\u4F01\u696D\u306F\u6B8B\u308A\u306E\u62C5\
|
|
64
|
-
\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u3060\u3051\u3092\u6D88\u3057\u307E\u3059\u3002")}ctx.warn(lines.join("\n"));if(done.length===0&&!touched)throw err;throw new ApiRejectedError(`\u9867\u5BA2\u306E\u524A\u9664\u306F\u5B8C\u4E86\u3057\u3066\u3044\u307E\u305B\u3093\uFF08\u5B8C\u4E86 ${done.length} \u4EF6\u30FB\u5931\u6557 1 \u4EF6\u30FB\u672A\u7740\u624B ${unsent.length} \u4EF6\uFF09\u3002`)}}return{customerDelete:true,done}}var deleteOperation={name:"delete",summary:"\u9867\u5BA2\u3092\u524A\u9664\u3059\u308B\uFF08\u4F01\u696D\u3068\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u3092\u307E\
|
|
65
|
-
\u3068\u3081\u3066\u3002--file \u3067\u4E00\u62EC\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp customer delete <\u9867\u5BA2> --yes | twp customer delete --file <\u30D5\u30A1\u30A4\u30EB> --yes",description:"\u9867\u5BA2\uFF08\u53D6\u5F15\u5148\u4F01\u696D\uFF09\u3068\u3001\u305D\u308C\u306B\u7D10\u3065\u304F\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u3092\u307E\u3068\u3081\u3066\u524A\u9664\u3057\u307E\u3059\u3002\n\u9001\u308B\u524D\u306B\u4F01\u696D\u30FB\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u4EF6\u6570\u3092\u6570\u3048\u3066 stderr \u306B\u51FA\u3057\u307E\u3059\u3002--dry-run \u3067\u9001\u3089\u305A\u306B\u4E0B\u898B\u3060\u3051\u3067\u304D\u307E\u3059\u3002\n\n\u9806\u5E8F\u306F\u4F01\u696D\u3054\u3068\u306B\u300C\u4F01\u696D\u306E\u8AAD\u307F\u76F4\u3057\uFF08\u9867\u5BA2\u306E\u307E\u307E\u304B\uFF09\u2192 \u4F01\u696D\u306E\u524A\u9664 \u2192 \u62C5\u5F53\u8005\u306E\u524A\u9664 \u2192 \u5BFE\u5FDC\u5C65\u6B74\u304C\u6B8B\u3063\u3066\u3044\u306A\u3044\u304B\u306E\u78BA\u8A8D\u300D\u3067\u3059\u3002\n\u4F01\u696D\u304C\u898B\u7A4D\u30FB\u8ACB\u6C42\u66F8\u30FB\u6848\u4EF6\u66F8\u985E\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u7B49\u304B\u3089\u53C2\u7167\u3055\u308C\u3066\u3044\u308B\u3068\u3001\u30B5\u30FC\u30D0\u304C\u524A\u9664\u3092\u65AD\u308A\u307E\u3059\uFF08\u7406\u7531\u306E\u6587\u9762\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09\u3002\n\u305D\u306E\u3068\u304D\u306F\u305D\u306E\u4F01\u696D\u3067\u306F\u4F55\u3082\u524A\u9664\u305B\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF08\u62C5\u5F53\u8005\u3092\u5148\u306B\u6D88\u3057\u3066\u4F01\u696D\u3060\u3051\u6B8B\u308B\u3001\u306F\u8D77\u304D\u307E\u305B\u3093\uFF09\u3002\n\n\u4E00\u62EC\uFF08--file\uFF09: 1\u884C\u306B\
|
|
66
|
-
1\u3064\u9867\u5BA2\u306E ID \u3092\u66F8\u304D\u307E\u3059\uFF08\u540D\u524D\u306F\u53D7\u3051\u307E\u305B\u3093\uFF09\u3002\u7A7A\u884C\u3068 # \u3067\u59CB\u307E\u308B\u884C\u306F\u8AAD\u307F\u98DB\u3070\u3057\u307E\u3059\u3002\n\u9001\u308B\u524D\u306B\u5168\u884C\u3092\u691C\u67FB\u3057\u3001\u9867\u5BA2\u3067\u306F\u306A\u3044\uFF08\u4ED5\u5165\u5148\u3060\u3051\u306E\uFF09\u53D6\u5F15\u5148\u30FBID \u306E\u5F62\u306E\u8AA4\u308A\u30FB\u91CD\u8907\u304C1\u3064\u3067\u3082\u3042\u308C\u3070\n1\u4EF6\u3082\u9001\u3089\u305A\u306B\u884C\u756A\u53F7\u3068\u7406\u7531\u3092\u3059\u3079\u3066\u51FA\u3057\u3066\u7D42\u4E86\u30B3\u30FC\u30C9 2 \u3067\u7D42\u308F\u308A\u307E\u3059\u3002\n\u9001\u4FE1\u4E2D\u306B\u5931\u6557\u3057\u305F\u3089\u305D\u3053\u3067\u6B62\u3081\u3001\u5B8C\u4E86\u3057\u305F\u4F01\u696D\u30FB\u5931\u6557\u3057\u305F\u4F01\u696D\uFF08\u3069\u3053\u307E\u3067\u6D88\u3048\u305F\u304B\uFF09\u30FB\u672A\u7740\u624B\u306E ID \u3092\u51FA\u3057\u307E\u3059\n\uFF08\u7D42\u4E86\u30B3\u30FC\u30C9 3\u3002\u4F55\u3082\u6D88\u3057\u3066\u3044\u306A\u3051\u308C\u3070\u5931\u6557\u3057\u305F\u8981\u6C42\u306E\u7D42\u4E86\u30B3\u30FC\u30C9\uFF09\u3002\u540C\u3058\u30B3\u30DE\u30F3\u30C9\u3092\u6253\u3061\u76F4\u3059\u3068\u3001\n\u524A\u9664\u6E08\u307F\u306E\u4F01\u696D\u306F\u6B8B\u308A\u306E\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u3060\u3051\u3092\u6D88\u3057\u3066\u9032\u307F\u307E\u3059\u3002\n\n\u9867\u5BA2\u304B\u3064\u4ED5\u5165\u5148\u306E\u4F01\u696D\u3082\u524A\u9664\u3057\u307E\u3059\uFF08\u4F01\u696D\u306F1\u4EF6\u306A\u306E\u3067\u3001\u4ED5\u5165\u5148\u3068\u3057\u3066\u3082\u6D88\u3048\u307E\u3059\u3002\u4E0B\u898B\u3067\u77E5\u3089\u305B\u307E\u3059\uFF09\u3002\n\u4F01\u696D\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304B\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3001\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u306E\u524A\u9664\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u304C\u8981\u308A\u307E\u3059\u3002\n\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u304C\u6B8B\u308B\u9867\u5BA2\u3092\u3001\u9867\u5BA2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u3067\u306A\u3044\u6A29\u9650\u3067\u6D88\u305D\u3046\u3068\u3059\u308B\u3068\u3001\u4F01\u696D\u3060\u3051\u6D88\u3048\u3066\u62C5\u5F53\u8005\u304C\u6B8B\u308B\u306E\u3092\u907F\u3051\u308B\u305F\u3081\n1\u4EF6\u3082\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\uFF08--dry-run \u3067\u306F\u4E0B\u898B\u3068\u7406\u7531\u3092\u51FA\u3057\u307E\u3059\uFF09\u3002\n\n"+
|
|
67
|
-
REF_HELP,destructive:true,forbidden:CUSTOMER_DELETE_FORBIDDEN,flags:[FILE_FLAG],prepare:prepareDelete,plan:input=>firstDeletePlan(deleteTargets(input)),plannedNotes:deletePlannedNotes,execute:runDelete,summarize:body=>isDeleteBody(body)?body.done:body,raw:body=>isDeleteBody(body)?body.done:body,notes(body){if(!isDeleteBody(body))return[];const companies=body.done.filter(d=>d.company==="deleted").length;const contacts=body.done.reduce((n,d)=>n+d.contacts_deleted,0);const interactions=body.done.reduce(
|
|
68
|
-
(n,d)=>n+d.interactions_deleted,0);return[`\u524A\u9664\u3057\u307E\u3057\u305F: \u4F01\u696D ${companies} \u793E\u30FB\u62C5\u5F53\u8005 ${contacts} \u4EF6\uFF08\u5BFE\u5FDC\u5C65\u6B74\u306F\u4F01\u696D\u306E\u524A\u9664\u3067\u9023\u9396\u3002\u9023\u9396\u3067\u6D88\u3048\u305A\u306B\u500B\u5225\u306B\u6D88\u3057\u305F\u3082\u306E ${interactions} \u4EF6\uFF09\u3002`,"\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\u304C\u4E00\u89A7\u304B\u3089\u6D88\u3048\u305F\u3053\u3068\u3092\u78BA\u304B\u3081\u3066\u304B\u3089\u7D42\u3048\u3066\u3044\u307E\u3059\u3002"]}};
|
|
69
|
-
var CUSTOMER_FLAG={name:"--customer",summary:"\u5BFE\u8C61\u306E\u9867\u5BA2\uFF08\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B ID\uFF09",takesValue:true,placeholder:"<\u9867\u5BA2>"};async function prepareCustomerFlag(input,ctx,usage){const raw=nonEmpty(input.flags,CUSTOMER_FLAG.name);if(raw===void 0)throw new UsageError("--customer <\u9867\u5BA2> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usage);return withResolved(input,{companyId:await resolveCustomer(
|
|
70
|
-
ctx,raw,CUSTOMER_FLAG.name)})}function childId(input,spec,usage){const[raw,...rest]=input.args;if(raw===void 0||raw.trim()==="")throw new UsageError(`${spec.label}\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(rest.length>0)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B${spec.label}\u306E ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,usage);const id=raw.trim();if(!isSafePathSegment(id))throw new UsageError(`${spec.label}\u306E ID \u3068\u3057\u3066\u4F7F\u3048\u306A\u3044\u6587\u5B57\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059: ${id}`,
|
|
71
|
-
`twp customer ${spec.name} list \u306E id \u5217\u306E\u5024\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`);return id}function childResource(spec){const base=input=>childBase(requireResolved(input,"companyId"),spec.kind);const item=(input,usage2)=>`${base(input)}/${encodeURIComponent(childId(input,spec,usage2))}`;const one=(body,what)=>dataOf(body,what);const paging=envelopePaging({label:`${spec.label}\u4E00\u89A7`});const usage=op=>`twp customer ${spec.name} ${op} help`;return{name:spec.
|
|
72
|
-
name,summary:`\u9867\u5BA2\u306E${spec.label}\u306E\u4E00\u89A7\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664`,operations:[{name:"list",summary:`\u9867\u5BA2\u306E${spec.label}\u3092\u4E00\u89A7\u3059\u308B`,usage:`twp customer ${spec.name} list --customer <\u9867\u5BA2> [--all] [--limit <\u4EF6\u6570>]`,description:`--customer \u304C\u5FC5\u9808\u3067\u3059\u3002
|
|
73
|
-
|
|
74
|
-
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
75
|
-
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${spec.columns.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
76
|
-
|
|
77
|
-
${LIST_PAGING_HELP}`,flags:[...LIST_FLAGS,CUSTOMER_FLAG],paging,forbidden:levelForbidden(CUSTOMER_LICENSE,`${spec.label}\u3092\u898B\u308B\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`),async prepare(input,ctx){if(input.args.length>0)throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,
|
|
78
|
-
usage("list"));return prepareCustomerFlag(input,ctx,usage("list"))},plan:input=>({method:"GET",path:base(input),query:{limit:positiveInteger(input.flags,"--limit"),cursor:nonEmpty(input.flags,"--cursor")}}),summarize:body=>paging.items(body).map(row=>pick(row,spec.columns)),raw:body=>paging.items(body)},{name:"create",summary:`\u9867\u5BA2\u306B${spec.label}\u3092\u767B\u9332\u3059\u308B`,usage:`twp customer ${spec.name} create --customer <\u9867\u5BA2> ${spec.required.map(f=>`${f} <\u5024>`).join(
|
|
79
|
-
" ")} [\u9805\u76EE\u2026]`,description:spec.createHelp,forbidden:childForbidden(spec.label,"edit"),flags:[...createFlags(spec.fields),CUSTOMER_FLAG],async prepare(input,ctx){if(input.args.length>0)throw new UsageError(`create \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usage("create"));fieldBody(input,spec.fields);for(const flag of spec.required){if(!input.flags.has(flag))throw new UsageError(`${flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,
|
|
80
|
-
usage("create"))}return prepareCustomerFlag(input,ctx,usage("create"))},plan:input=>({method:"POST",path:base(input),body:fieldBody(input,spec.fields)}),summarize:body=>pick(one(body,`${spec.label}\u306E\u767B\u9332`),spec.columns),raw:body=>one(body,`${spec.label}\u306E\u767B\u9332`)},{name:"update",summary:`\u9867\u5BA2\u306E${spec.label}\u3092\u66F4\u65B0\u3059\u308B`,usage:`twp customer ${spec.name} update <${spec.label}ID> --customer <\u9867\u5BA2> [\u9805\u76EE\u2026]`,description:"\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\
|
|
81
|
-
\u3051\u3092\u5909\u66F4\u3057\u307E\u3059\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002",forbidden:childForbidden(spec.label,"edit"),flags:[...updateFlags(spec.fields),CUSTOMER_FLAG],async prepare(input,ctx){if(!hasAnyField(input,spec.fields))throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
82
|
-
usage("update"));fieldBody(input,spec.fields);childId(input,spec,usage("update"));return prepareCustomerFlag(input,ctx,usage("update"))},plan:input=>({method:"PUT",path:item(input,usage("update")),body:fieldBody(input,spec.fields)}),summarize:body=>pick(one(body,`${spec.label}\u306E\u66F4\u65B0`),spec.columns),raw:body=>one(body,`${spec.label}\u306E\u66F4\u65B0`)},{name:"delete",summary:`\u9867\u5BA2\u306E${spec.label}\u3092\u524A\u9664\u3059\u308B\uFF08\u9867\u5BA2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09`,
|
|
83
|
-
usage:`twp customer ${spec.name} delete <${spec.label}ID> --customer <\u9867\u5BA2> --yes`,description:`${spec.label}1\u4EF6\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u9867\u5BA2\u3054\u3068\u307E\u3068\u3081\u3066\u6D88\u3059\u306A\u3089 twp customer delete \u3092\u4F7F\u3044\u307E\u3059\u3002`,destructive:true,forbidden:childForbidden(spec.label,"delete"),flags:[CUSTOMER_FLAG],async prepare(input,ctx){childId(input,spec,usage("delete"));return prepareCustomerFlag(input,ctx,usage("delete"))},plan:input=>({
|
|
84
|
-
method:"DELETE",path:item(input,usage("delete"))}),summarize:body=>acknowledgement(body,`${spec.label}\u524A\u9664`),raw:body=>acknowledgement(body,`${spec.label}\u524A\u9664`)}]}}var contactResource=childResource({name:"contact",kind:"contacts",label:"\u62C5\u5F53\u8005",fields:CONTACT_FIELDS,required:["--name"],columns:CONTACT_COLUMNS,createHelp:"--customer \u3068 --name \u304C\u5FC5\u9808\u3067\u3059\u3002\u4F5C\u6210\u3057\u305F\u62C5\u5F53\u8005\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002"});
|
|
85
|
-
var interactionResource=childResource({name:"interaction",kind:"interactions",label:"\u5BFE\u5FDC\u5C65\u6B74",fields:INTERACTION_FIELDS,required:["--type","--date"],columns:INTERACTION_COLUMNS,createHelp:`--customer\u30FB--type\uFF08${INTERACTION_TYPES.join(" / ")}\uFF09\u30FB--date \u304C\u5FC5\u9808\u3067\u3059\u3002\u4F5C\u6210\u3057\u305F\u5BFE\u5FDC\u5C65\u6B74\u306E ID \u304C\u8FD4\u308A\u307E\u3059\u3002`});var customerWriteOperations=[createOperation,updateOperation,deleteOperation];var customerSubresources=[
|
|
86
|
-
contactResource,interactionResource];var LIST_COLUMNS=["id","company_name","company_short_name","customer_flg","supplier_flg","tel"];var COMPANY_GET_COLUMNS=["id","company_name","company_name_kana","company_short_name","company_no","customer_flg","supplier_flg","post_code","address1","address2","address3","tel","website","start_date","end_date"];var COMPANY={name:"company",label:"\u53D6\u5F15\u5148",path:SALES_COMPANIES_PATH,source:"sales",forbidden:licenseForbidden("\u53D6\u5F15\u5148\u3092\u898B\u308B\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u304B\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u304C\u3001\u3069\u3061\u3089\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u30C6\u30CA\u30F3\u30C8\u304C\u3069\u3061\u3089\u3082\u5951\u7D04\u3057\u3066\u3044\u306A\u3044\u304B\u3001\u3042\u306A\u305F\u306E\u6A29\u9650\u304C\u3069\u3061\u3089\
|
|
87
|
-
\u3082\u300C\u306A\u3057\u300D\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002"),getColumns:COMPANY_GET_COLUMNS};var CUSTOMER={name:"customer",label:"\u9867\u5BA2",path:CUSTOMERS_PATH,source:"customer",forbidden:licenseForbidden(featureLicenseGuidance("\u9867\u5BA2\u7BA1\u7406")),getColumns:[...COMPANY_GET_COLUMNS,"industry","contact_count"]};function envelope(body,what){if(!isRecord(body)||body["\
|
|
88
|
-
result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function detail(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
89
|
-
return data}function listOperation(resource){const paging=pageNumberPaging({label:`${resource.label}\u4E00\u89A7`});const rows=body=>{envelope(body,`${resource.label}\u4E00\u89A7`);return paging.items(body)};const scope=resource.name==="customer"?"\u9867\u5BA2\uFF08\u53D6\u5F15\u5148\u306E\u3046\u3061\u9867\u5BA2\u3068\u3057\u3066\u767B\u9332\u3055\u308C\u305F\u3082\u306E\uFF09\u3092\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\u306B\u4E00\u89A7\u3057\u307E\u3059\u3002\u4ED5\u5165\u5148\u3060\u3051\u306E\u53D6\u5F15\u5148\u306F\u51FA\u307E\u305B\u3093\uFF08twp company list\uFF09\u3002\n":
|
|
90
|
-
"\u53D6\u5F15\u5148\u4F01\u696D\uFF08\u9867\u5BA2\u30FB\u4ED5\u5165\u5148\u306E\u4E21\u65B9\uFF09\u3092\u65B0\u3057\u304F\u767B\u9332\u3057\u305F\u9806\u306B\u4E00\u89A7\u3057\u307E\u3059\u3002\n";return{name:"list",summary:resource.name==="customer"?"\u9867\u5BA2\u3092\u4E00\u89A7\u3059\u308B\uFF08\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\uFF09":"\u53D6\u5F15\u5148\u4F01\u696D\u3092\u4E00\u89A7\u3059\u308B\uFF08\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\uFF09",usage:`twp ${resource.name} list \
|
|
91
|
-
[--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>]`,description:scope+`--keyword \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u90E8\u5206\u4E00\u81F4\u3067\u3059\u3002
|
|
92
|
-
\u7D5E\u308A\u8FBC\u307F\u5168\u4F53\u306E\u4EF6\u6570\u306F stderr \u306B\u51FA\u307E\u3059\u3002
|
|
93
|
-
|
|
94
|
-
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
95
|
-
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
96
|
-
|
|
97
|
-
`+LIST_PAGING_HELP+"\n"+PAGE_NUMBER_PAGING_HELP,flags:[...PAGE_NUMBER_LIST_FLAGS,{name:"--keyword",summary:"\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u90E8\u5206\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u8A9E>"}],paging,forbidden:resource.forbidden,plan(input){if(input.args.length>0){throw new UsageError(`list \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,`twp ${resource.name} lis\
|
|
98
|
-
t help`)}const{page_no,page_limit}=pageNumberQuery(input);return{method:"GET",path:resource.path,query:{keyword:nonEmpty(input.flags,"--keyword"),...STABLE_PAGE_ORDER,page_limit,page_no}}},summarize:body=>rows(body).map(row=>pick(row,LIST_COLUMNS)),raw:rows,notes:body=>[...pageRangeNotes(body),...isRecord(body)&&typeof body["sum"]==="number"?[`\u8A72\u5F53 ${body["sum"]} \u4EF6`]:[]]}}async function prepareGet(input,ctx,resource){const[raw,...rest]=input.args;const usage=`twp ${resource.name} ge\
|
|
99
|
-
t help`;if(raw===void 0||raw.trim()==="")throw new UsageError(`${resource.label}\u306E\u540D\u524D\u304B ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usage);if(rest.length>0){throw new UsageError(`get \u304C\u53D7\u3051\u53D6\u308C\u308B${resource.label}\u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,'\u7A7A\u767D\u3092\u542B\u3080\u540D\u524D\u306F\u5F15\u7528\u7B26\u3067\u56F2\u3093\u3067\u304F\u3060\u3055\u3044\uFF08\u4F8B: "\u682A\u5F0F\u4F1A\u793E \u30B5\u30F3\u30D7\u30EB"\uFF09\u3002')}
|
|
100
|
-
const ref=await ctx.resolver.company(raw,{flag:`<${resource.label}>`,source:resource.source});return withResolved(input,{companyId:ref.id})}function getOperation(resource){const what=resource.label;return{name:"get",summary:`${what}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B`,usage:`twp ${resource.name} get <${what}>`,description:`<${what}> \u306F\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B ID\uFF08twp ${resource.name} list \u306E id \u5217\u306E\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\
|
|
101
|
-
\u307E\u3059\u3002
|
|
102
|
-
\u540D\u524D\u306F\u30B5\u30FC\u30D0\u306E\u691C\u7D22\u3067\u5019\u88DC\u3092\u5F15\u3044\u3066\u7167\u5408\u3057\u307E\u3059\u3002\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u8FD1\u3044\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u3001\u540C\u540D\u304C\u8907\u6570\u3042\u308C\u3070 ID \u3067\u6307\u5B9A\u3059\u308B\u3088\u3046\u6C42\u3081\u307E\u3059\u3002
|
|
103
|
-
\u6570\u5B57\u3060\u3051\u306E\u5024\u306F ID \u3068\u3057\u3066\u6271\u3044\u307E\u3059\uFF08\u793E\u540D\u304C\u6570\u5B57\u3060\u3051\u306E\u4F01\u696D\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002
|
|
104
|
-
|
|
105
|
-
`+(resource.name==="customer"?"--output json \u306F\u9867\u5BA2\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u3001\u62C5\u5F53\u8005\u6570\uFF08contact_count\uFF09\u3068\u76F4\u8FD15\u4EF6\u306E\u5BFE\u5FDC\u5C65\u6B74\uFF08recent_interactions\uFF09\u3092\u8DB3\u3057\u3066\u51FA\u3057\u307E\u3059\u3002":"--output json \u306F\u53D6\u5F15\u5148\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002"),flags:[],forbidden:resource.forbidden,prepare:(input,ctx)=>prepareGet(input,
|
|
106
|
-
ctx,resource),plan:input=>({method:"GET",path:`${resource.path}/${encodeURIComponent(requireResolved(input,"companyId"))}`}),summarize:body=>pick(detail(body,what),resource.getColumns),raw:body=>detail(body,what)}}function buildDomain(resource,summary){return{name:resource.name,summary,operations:[listOperation(resource),getOperation(resource)]}}var companyDomain=buildDomain(COMPANY,"\u53D6\u5F15\u5148\u4F01\u696D\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\uFF09");var customerRead=buildDomain(CUSTOMER,
|
|
107
|
-
"");var customerDomain={name:CUSTOMER.name,summary:"\u9867\u5BA2\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u767B\u9332\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u3068\u4E00\u62EC\u524A\u9664\u30FB\u62C5\u5F53\u8005\u30FB\u5BFE\u5FDC\u5C65\u6B74\uFF09",operations:[...customerRead.operations,...customerWriteOperations],subresources:customerSubresources};export{companyDomain,customerDomain};
|