Merge branch 'feature/data-update' into dev
This commit is contained in:
@@ -26,15 +26,13 @@
|
||||
"sass": "^1.69.5",
|
||||
"typescript": "^5.0.2",
|
||||
"vite": "^4.4.5",
|
||||
"vite-plugin-checker": "^0.6.4",
|
||||
"vite-plugin-lib-inject-css": "^2.1.1"
|
||||
"vite-plugin-checker": "^0.6.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@kintone/rest-api-client": "^5.5.2",
|
||||
"@popperjs/core": "^2.11.8",
|
||||
"@types/bootstrap": "^5.2.10",
|
||||
"bootstrap": "^5.3.3",
|
||||
"jquery": "^3.7.1",
|
||||
"vite-plugin-css-injected-by-js": "^3.5.1"
|
||||
"jquery": "^3.7.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,166 +0,0 @@
|
||||
import {
|
||||
IAction,
|
||||
IActionResult,
|
||||
IActionNode,
|
||||
IActionProperty,
|
||||
IContext,
|
||||
} from "../types/ActionTypes";
|
||||
import { actionAddins } from ".";
|
||||
|
||||
interface Props {
|
||||
displayName: string;
|
||||
sources: Sources;
|
||||
dataMapping: DataMapping[];
|
||||
}
|
||||
|
||||
interface DataMapping {
|
||||
id: string;
|
||||
from: From;
|
||||
to: To;
|
||||
}
|
||||
|
||||
interface To {
|
||||
app: App;
|
||||
fields: Field[];
|
||||
isDialogVisible: boolean;
|
||||
}
|
||||
|
||||
interface Field {
|
||||
name: string;
|
||||
type: string;
|
||||
code: string;
|
||||
label: string;
|
||||
noLabel: boolean;
|
||||
required: boolean;
|
||||
minLength: string;
|
||||
maxLength: string;
|
||||
expression: string;
|
||||
hideExpression: boolean;
|
||||
unique: boolean;
|
||||
defaultValue: string;
|
||||
}
|
||||
|
||||
interface From {
|
||||
sharedText: string;
|
||||
_t: string;
|
||||
id: string;
|
||||
objectType: string;
|
||||
name: Name;
|
||||
actionName: string;
|
||||
displayName: string;
|
||||
}
|
||||
|
||||
interface Name {
|
||||
name: string;
|
||||
}
|
||||
|
||||
interface Sources {
|
||||
app: App;
|
||||
}
|
||||
|
||||
interface App {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
createdate: string;
|
||||
}
|
||||
|
||||
export class DataMappingAction implements IAction {
|
||||
name: string;
|
||||
actionProps: IActionProperty[];
|
||||
dataMappingProps: Props;
|
||||
constructor() {
|
||||
this.name = "データマッピング";
|
||||
this.actionProps = [];
|
||||
this.dataMappingProps = {} as Props;
|
||||
this.register();
|
||||
}
|
||||
|
||||
async process(
|
||||
prop: IActionNode,
|
||||
event: any,
|
||||
context: IContext
|
||||
): Promise<IActionResult> {
|
||||
this.actionProps = prop.actionProps;
|
||||
this.dataMappingProps = prop.ActionValue as Props;
|
||||
console.log(prop.ActionValue);
|
||||
|
||||
// this.initTypedActionProps();
|
||||
let result = {
|
||||
canNext: true,
|
||||
result: "",
|
||||
} as IActionResult;
|
||||
try {
|
||||
const record = this.dataMappingProps.dataMapping
|
||||
.filter(
|
||||
(item) =>
|
||||
item.from.objectType === "variable" &&
|
||||
item.from.name.name &&
|
||||
item.to.app &&
|
||||
item.to.fields &&
|
||||
item.to.fields.length > 0
|
||||
)
|
||||
.reduce((accumulator, item) => {
|
||||
return {...accumulator, [item.to.fields[0].code]: {
|
||||
value: getValueByPath(context.variables, item.from.name.name),
|
||||
}};
|
||||
}, {});
|
||||
if (record && Object.keys(record).length > 0) {
|
||||
await kintone.api(kintone.api.url("/k/v1/record.json", true), "POST", {
|
||||
app: this.dataMappingProps.sources.app.id,
|
||||
record: record,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("DataMappingAction error", error);
|
||||
result.canNext = false;
|
||||
}
|
||||
console.log("dataMappingProps", this.dataMappingProps);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
register(): void {
|
||||
actionAddins[this.name] = this;
|
||||
}
|
||||
}
|
||||
|
||||
new DataMappingAction();
|
||||
|
||||
const getValueByPath = (obj: any, path: string) => {
|
||||
return path.split(".").reduce((o, k) => (o || {})[k], obj);
|
||||
};
|
||||
|
||||
type Resp = { records: RespRecordType[] };
|
||||
|
||||
type RespRecordType = {
|
||||
[key: string]: {
|
||||
type: string;
|
||||
value: any;
|
||||
};
|
||||
};
|
||||
|
||||
type Result = {
|
||||
type: string;
|
||||
value: any[];
|
||||
};
|
||||
|
||||
const selectData = async (appid: string, field: string): Promise<Result> => {
|
||||
return kintone
|
||||
.api(kintone.api.url("/k/v1/records", true), "GET", {
|
||||
app: appid ?? kintone.app.getId(),
|
||||
fields: [field],
|
||||
})
|
||||
.then((resp: Resp) => {
|
||||
const result: Result = { type: "", value: [] };
|
||||
resp.records.forEach((element) => {
|
||||
for (const [key, value] of Object.entries(element)) {
|
||||
if (result.type === "") {
|
||||
result.type = value.type;
|
||||
}
|
||||
result.value.push(value.value);
|
||||
}
|
||||
});
|
||||
return result;
|
||||
});
|
||||
};
|
||||
293
plugin/kintone-addins/src/actions/data-update.ts
Normal file
293
plugin/kintone-addins/src/actions/data-update.ts
Normal file
@@ -0,0 +1,293 @@
|
||||
import {
|
||||
IAction,
|
||||
IActionResult,
|
||||
IActionNode,
|
||||
IActionProperty,
|
||||
IContext,
|
||||
} from "../types/ActionTypes";
|
||||
import { actionAddins } from ".";
|
||||
import { KintoneRestAPIClient } from "@kintone/rest-api-client";
|
||||
import { Lookup } from "@kintone/rest-api-client/lib/src/KintoneFields/types/property";
|
||||
|
||||
interface Props {
|
||||
displayName: string;
|
||||
sources: Sources;
|
||||
dataMapping: DataMapping;
|
||||
}
|
||||
|
||||
interface DataMapping {
|
||||
data: Mapping[];
|
||||
createWithNull: boolean;
|
||||
}
|
||||
|
||||
interface Mapping {
|
||||
id: string;
|
||||
from: From;
|
||||
to: To;
|
||||
isKey: boolean;
|
||||
}
|
||||
|
||||
interface To {
|
||||
app: App;
|
||||
fields: {
|
||||
name: string;
|
||||
type: string;
|
||||
code: string;
|
||||
label: string;
|
||||
noLabel: boolean;
|
||||
required: boolean;
|
||||
minLength: string;
|
||||
maxLength: string;
|
||||
expression: string;
|
||||
hideExpression: boolean;
|
||||
unique: boolean;
|
||||
defaultValue: string;
|
||||
}[];
|
||||
isDialogVisible: boolean;
|
||||
}
|
||||
|
||||
interface From {
|
||||
sharedText: string;
|
||||
_t: string;
|
||||
id: string;
|
||||
objectType: string;
|
||||
name: {
|
||||
name: string;
|
||||
};
|
||||
actionName: string;
|
||||
displayName: string;
|
||||
}
|
||||
|
||||
interface Sources {
|
||||
app: App;
|
||||
}
|
||||
|
||||
interface App {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
createdate: string;
|
||||
}
|
||||
|
||||
export class DataUpdateAction implements IAction {
|
||||
name: string;
|
||||
actionProps: IActionProperty[];
|
||||
dataMappingProps: Props;
|
||||
constructor() {
|
||||
this.name = "データ更新";
|
||||
this.actionProps = [];
|
||||
this.dataMappingProps = {} as Props;
|
||||
this.register();
|
||||
}
|
||||
|
||||
async process(
|
||||
prop: IActionNode,
|
||||
event: any,
|
||||
context: IContext
|
||||
): Promise<IActionResult> {
|
||||
this.actionProps = prop.actionProps;
|
||||
this.dataMappingProps = prop.ActionValue as Props;
|
||||
console.log(context);
|
||||
let result = {
|
||||
canNext: true,
|
||||
result: "",
|
||||
} as IActionResult;
|
||||
try {
|
||||
const lookupFixedFieldCodes = await getLookupFixedFieldCodes(
|
||||
this.dataMappingProps.sources.app.id
|
||||
);
|
||||
|
||||
// createWithNull が有効な場合は、4 番目のパラメーターを true にして doUpdate 関数ブランチを実行します。
|
||||
if (this.dataMappingProps.dataMapping.createWithNull === true) {
|
||||
await doUpdate(
|
||||
this.dataMappingProps.dataMapping.data,
|
||||
this.dataMappingProps.sources.app.id,
|
||||
context,
|
||||
true, // キーがない場合、またはキーでターゲットが見つからない場合に、マッピング条件によって新しいレコードを作成するかどうかを決定するために使用されます。
|
||||
lookupFixedFieldCodes
|
||||
);
|
||||
} else if (
|
||||
// キーがないと更新対象を取得できないため、この時点でのみ更新が行われます。 doUpdate 関数の 4 番目のパラメーターは false です。
|
||||
this.dataMappingProps.dataMapping.data
|
||||
.map((m) => m.isKey)
|
||||
.find((isKey) => isKey === true)
|
||||
) {
|
||||
await doUpdate(
|
||||
this.dataMappingProps.dataMapping.data,
|
||||
this.dataMappingProps.sources.app.id,
|
||||
context,
|
||||
false,
|
||||
lookupFixedFieldCodes
|
||||
);
|
||||
} else {
|
||||
await doCreate(
|
||||
this.dataMappingProps.dataMapping.data,
|
||||
this.dataMappingProps.sources.app.id,
|
||||
context,
|
||||
lookupFixedFieldCodes
|
||||
);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("DataMappingAction error", error);
|
||||
result.canNext = false;
|
||||
}
|
||||
console.log("dataMappingProps", this.dataMappingProps);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
register(): void {
|
||||
actionAddins[this.name] = this;
|
||||
}
|
||||
}
|
||||
|
||||
new DataUpdateAction();
|
||||
|
||||
const getContextVarByPath = (obj: any, path: string) => {
|
||||
return path.split(".").reduce((o, k) => (o || {})[k], obj);
|
||||
};
|
||||
|
||||
interface UpdateRecord {
|
||||
id: string;
|
||||
record: {
|
||||
[key: string]: {
|
||||
value: any;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
const client = new KintoneRestAPIClient();
|
||||
|
||||
const doUpdate = async (
|
||||
mappingData: Mapping[],
|
||||
appId: string,
|
||||
context: any,
|
||||
needCreate: boolean,
|
||||
lookupFixedFieldCodes: string[]
|
||||
) => {
|
||||
const targetField = await findUpdateField(mappingData, appId, context);
|
||||
console.log(targetField);
|
||||
if (targetField.records.length === 0 && needCreate) {
|
||||
await doCreate(mappingData, appId, context, lookupFixedFieldCodes);
|
||||
} else {
|
||||
// マッピングデータを単純なオブジェクトに処理し、ソース値が変数の場合は変数を置き換えます。
|
||||
const mappingRules = mappingData
|
||||
.filter(
|
||||
(m) =>
|
||||
Object.keys(m.from).length > 0 &&
|
||||
!lookupFixedFieldCodes.includes(m.to.fields[0].code)
|
||||
)
|
||||
.map((m) => {
|
||||
if (m.from.objectType === "variable") {
|
||||
return {
|
||||
value: getContextVarByPath(context.variables, m.from.name.name),
|
||||
code: m.to.fields[0].code,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
value: m.from.sharedText,
|
||||
code: m.to.fields[0].code,
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
const updateRecords: UpdateRecord[] = targetField.records.map(
|
||||
(targetRecord) => {
|
||||
const updateRecord: UpdateRecord["record"] = {};
|
||||
|
||||
// マッピング内のルールにヒットしたフィールドのみが更新されます。
|
||||
for (const mapping of mappingRules) {
|
||||
if (targetRecord[mapping.code]) {
|
||||
updateRecord[mapping.code] = {
|
||||
value: mapping.value,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
id: targetRecord.$id.value as string,
|
||||
record: updateRecord,
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
await client.record.updateRecords({
|
||||
app: appId,
|
||||
records: updateRecords,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const findUpdateField = async (
|
||||
mappingData: Mapping[],
|
||||
appId: string,
|
||||
context: any
|
||||
) => {
|
||||
const queryStr = mappingData
|
||||
.filter((m) => m.to.app && m.to.fields && m.to.fields.length > 0 && m.isKey)
|
||||
.map((m) => {
|
||||
if (m.from.objectType === "variable") {
|
||||
return `${m.to.fields[0].code} = "${getContextVarByPath(
|
||||
context.variables,
|
||||
m.from.name.name
|
||||
)}"`;
|
||||
} else {
|
||||
return `${m.to.fields[0].code}=${m.from.sharedText}`;
|
||||
}
|
||||
})
|
||||
.join("&");
|
||||
// 検索条件が空の場合は全レコードを返すため、検索対象が見つからない場合は検索は行われません。
|
||||
if (queryStr.length === 0) {
|
||||
return {
|
||||
records: [],
|
||||
};
|
||||
} else {
|
||||
return await client.record.getRecords({
|
||||
app: appId,
|
||||
// query: undefined
|
||||
query: queryStr,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const doCreate = async (
|
||||
mappingData: Mapping[],
|
||||
appId: string,
|
||||
context: any,
|
||||
lookupFixedFieldCodes: string[]
|
||||
) => {
|
||||
const record = mappingData
|
||||
.filter(
|
||||
(item) =>
|
||||
item.from.objectType === "variable" &&
|
||||
item.from.name.name &&
|
||||
item.to.app &&
|
||||
item.to.fields &&
|
||||
item.to.fields.length > 0
|
||||
)
|
||||
.filter((item) => !lookupFixedFieldCodes.includes(item.to.fields[0].code))
|
||||
.reduce((accumulator, item) => {
|
||||
return {
|
||||
...accumulator,
|
||||
[item.to.fields[0].code]: {
|
||||
value: getContextVarByPath(context.variables, item.from.name.name),
|
||||
},
|
||||
};
|
||||
}, {});
|
||||
if (record && Object.keys(record).length > 0) {
|
||||
await kintone.api(kintone.api.url("/k/v1/record.json", true), "POST", {
|
||||
app: appId,
|
||||
record: record,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const getLookupFixedFieldCodes = async (appId: string) => {
|
||||
return await client.app
|
||||
.getFormFields({ app: appId, lang: "ja" })
|
||||
.then((resp) =>
|
||||
Object.values(resp.properties)
|
||||
.filter((f) => (f as Lookup).lookup !== undefined)
|
||||
.flatMap((f) => (f as Lookup).lookup.fieldMappings.map((m) => m.field))
|
||||
);
|
||||
};
|
||||
@@ -7,7 +7,7 @@ import '../actions/error-show';
|
||||
import '../actions/button-add';
|
||||
import '../actions/condition-action';
|
||||
import '../actions/data-processing';
|
||||
import '../actions/data-mapping';
|
||||
import '../actions/data-update';
|
||||
import '../actions/current-field-get';
|
||||
import '../actions/regular-check';
|
||||
import '../actions/mail-check';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// vite.config.js
|
||||
import { defineConfig, loadEnv } from "vite";
|
||||
import checker from "vite-plugin-checker";
|
||||
import { libInjectCss } from 'vite-plugin-lib-inject-css';
|
||||
// import { libInjectCss } from 'vite-plugin-lib-inject-css';
|
||||
|
||||
export default ({ mode }) => {
|
||||
process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };
|
||||
@@ -12,7 +12,7 @@ export default ({ mode }) => {
|
||||
checker({
|
||||
typescript: true,
|
||||
}),
|
||||
libInjectCss(),
|
||||
// libInjectCss(),
|
||||
],
|
||||
build: {
|
||||
cssCodeSplit: false,
|
||||
|
||||
@@ -2,60 +2,6 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@ast-grep/napi-darwin-arm64@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-darwin-arm64/-/napi-darwin-arm64-0.22.6.tgz#34e9146234de6a7c965ed45335d67863ad96ca95"
|
||||
integrity sha512-L9rEGJ8fNi5LxbZj860wbXxjX7DLNV799zcTaPOSzYadvNyhMY3LWvDXd45Vtx6Dh8QRtCoEMQmw8KaRCEjm9A==
|
||||
|
||||
"@ast-grep/napi-darwin-x64@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-darwin-x64/-/napi-darwin-x64-0.22.6.tgz#521470adf988e1f64e5912ec41afad3f958fc9ff"
|
||||
integrity sha512-0iuM6iDJNhcPd6a/JJr64AallR7ttGW/MvUujfQdvJEZY5p9LK35xm23dULznW0tIMgwtMKPRaprgk8LPondKg==
|
||||
|
||||
"@ast-grep/napi-linux-arm64-gnu@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-linux-arm64-gnu/-/napi-linux-arm64-gnu-0.22.6.tgz#808008fd5952733e589558d5ac4a5746b84a1d55"
|
||||
integrity sha512-9PAqNJlAQfFm1RW0DVCM/S4gFHdppxUTWacB3qEeJZXgdLnoH0KGQa4z3Xo559SPYDKZy0VnY02mZ3XJ+v6/Vw==
|
||||
|
||||
"@ast-grep/napi-linux-x64-gnu@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-linux-x64-gnu/-/napi-linux-x64-gnu-0.22.6.tgz#3f087687560b33ad9a5b232ff4e6780cc8367339"
|
||||
integrity sha512-nZf+gxXVrZqvP1LN6HwzOMA4brF3umBXfMequQzv8S6HeJ4c34P23F0Tw8mHtQpVYP9PQWJUvt3LJQ8Xvd5Hiw==
|
||||
|
||||
"@ast-grep/napi-linux-x64-musl@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-linux-x64-musl/-/napi-linux-x64-musl-0.22.6.tgz#dfa09e6e947f266084b30080476e8a1e25aefc73"
|
||||
integrity sha512-gcJeBMgJQf2pZZo0lgH0Vg4ycyujM7Am8VlomXhavC/dPpkddA1tiHSIC4fCNneLU1EqHITy3ALSmM4GLdsjBw==
|
||||
|
||||
"@ast-grep/napi-win32-arm64-msvc@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-win32-arm64-msvc/-/napi-win32-arm64-msvc-0.22.6.tgz#ac0f092c0dad39a05b8cb10430cdc99eb87eebfc"
|
||||
integrity sha512-YDDzvPIyl4ti8xZfjvGSGVCX9JJjMQjyWPlXcwRpiLRnHThtHTDL8PyE2yq+gAPuZ28QbrygMkP9EKXIyYFVcQ==
|
||||
|
||||
"@ast-grep/napi-win32-ia32-msvc@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-win32-ia32-msvc/-/napi-win32-ia32-msvc-0.22.6.tgz#d4ca06d33a59760aa3870baffa296720ffb01b19"
|
||||
integrity sha512-w5P0MDcBD3bifC2K9nCDEFYacy8HQnXdf6fX6cIE/7xL8XEDs6D1lQjGewrZDcMAXVXUQfupj4P27ZsJRmuIoQ==
|
||||
|
||||
"@ast-grep/napi-win32-x64-msvc@0.22.6":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi-win32-x64-msvc/-/napi-win32-x64-msvc-0.22.6.tgz#82c3a7557336c0aa9809ac8ccd5ec573b907b727"
|
||||
integrity sha512-1aaHvgsCBwUP0tDf4HXPMpUV/nUwsOWgRCiBc2zIJjdEjT9TTk795EIX9Z1Nc0OMCrxVEceyiKcYTofXa0Fpxw==
|
||||
|
||||
"@ast-grep/napi@^0.22.3":
|
||||
version "0.22.6"
|
||||
resolved "https://registry.yarnpkg.com/@ast-grep/napi/-/napi-0.22.6.tgz#473c4398fbafb39277c99b298f08d342f507eabe"
|
||||
integrity sha512-kNF87HiI4omHC7VzyBZSvqOAXtMlSDRF2YX+O5ya0XKv/7/GYms1opLQ+BQ9twLLDj0WsSFX4MYg0TrinZTxTg==
|
||||
optionalDependencies:
|
||||
"@ast-grep/napi-darwin-arm64" "0.22.6"
|
||||
"@ast-grep/napi-darwin-x64" "0.22.6"
|
||||
"@ast-grep/napi-linux-arm64-gnu" "0.22.6"
|
||||
"@ast-grep/napi-linux-x64-gnu" "0.22.6"
|
||||
"@ast-grep/napi-linux-x64-musl" "0.22.6"
|
||||
"@ast-grep/napi-win32-arm64-msvc" "0.22.6"
|
||||
"@ast-grep/napi-win32-ia32-msvc" "0.22.6"
|
||||
"@ast-grep/napi-win32-x64-msvc" "0.22.6"
|
||||
|
||||
"@babel/code-frame@^7.12.13":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465"
|
||||
@@ -189,11 +135,6 @@
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz"
|
||||
integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.15":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@kintone/rest-api-client@^5.5.2":
|
||||
version "5.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@kintone/rest-api-client/-/rest-api-client-5.5.2.tgz#501cd72dcfe51cd84c1a65fb1e2fdd4a92933e5b"
|
||||
@@ -719,13 +660,6 @@ jsonfile@^6.0.1:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
magic-string@^0.30.10:
|
||||
version "0.30.10"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
|
||||
integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
memorystream@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
|
||||
@@ -1027,20 +961,6 @@ vite-plugin-checker@^0.6.4:
|
||||
vscode-languageserver-textdocument "^1.0.1"
|
||||
vscode-uri "^3.0.2"
|
||||
|
||||
vite-plugin-css-injected-by-js@^3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/vite-plugin-css-injected-by-js/-/vite-plugin-css-injected-by-js-3.5.1.tgz#b9c568c21b131d08e31aa6d368ee39c9d6c1b6c1"
|
||||
integrity sha512-9ioqwDuEBxW55gNoWFEDhfLTrVKXEEZgl5adhWmmqa88EQGKfTmexy4v1Rh0pAS6RhKQs2bUYQArprB32JpUZQ==
|
||||
|
||||
vite-plugin-lib-inject-css@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/vite-plugin-lib-inject-css/-/vite-plugin-lib-inject-css-2.1.1.tgz#39c5bb30dbb40c70e0d41a334097ce9b77e8e740"
|
||||
integrity sha512-RIMeVnqBK/8I0E9nnQWzws6pdj5ilRMPJSnXYb6nWxNR4EmDPnksnb/ACoR5Fy7QfzULqS4gtQMrjwnNCC9zoA==
|
||||
dependencies:
|
||||
"@ast-grep/napi" "^0.22.3"
|
||||
magic-string "^0.30.10"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
vite@^4.4.5:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz"
|
||||
|
||||
Reference in New Issue
Block a user