Merge remote-tracking branch 'refs/remotes/origin/master'
This commit is contained in:
7
document/ソフトウェア管理マスタ.csv
Normal file
7
document/ソフトウェア管理マスタ.csv
Normal file
@@ -0,0 +1,7 @@
|
||||
管理コード,ソフト名,ライセンス数
|
||||
S000001,動画編集ソフトA,10
|
||||
S000002,画像解析ソフトB,5
|
||||
S000003,会計ソフト,4
|
||||
S000004,開発用ソフト,10
|
||||
S000005,SQLServer2019,3
|
||||
S000006,Window11,12
|
||||
|
4
document/社員マスタ.csv
Normal file
4
document/社員マスタ.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
社員番号,氏名,メールアドレス,部署コード,部署名
|
||||
0001,佐藤 太郎,sato@example.com,A001,制作部
|
||||
0002,鈴木 花子,suzuki@example.com,A001,制作部
|
||||
0003,田中 三郎,tanaka@example.com,A002,管理部
|
||||
|
5
document/資産管理マスタ.csv
Normal file
5
document/資産管理マスタ.csv
Normal file
@@ -0,0 +1,5 @@
|
||||
資産管理番号,資産名,管理責任者,設置場所
|
||||
S001,タブレットA,○○ ○○,制作室
|
||||
S002,プロジェクターB,○○ ○○,会議室
|
||||
S003,PC1,○○ ○○,制作室
|
||||
S004,PC2,○○ ○○,制作室
|
||||
|
@@ -17,5 +17,8 @@ declare module 'vue' {
|
||||
PluginTableArea: typeof import('./src/components/basic/PluginTableArea.vue')['default']
|
||||
PluginTableConditionRow: typeof import('./src/components/basic/PluginTableConditionRow.vue')['default']
|
||||
PluginTableConnectRow: typeof import('./src/components/basic/PluginTableConnectRow.vue')['default']
|
||||
TableCombobox: typeof import('./src/components/basic/TableCombobox.vue')['default']
|
||||
TableCondition: typeof import('./src/components/basic/conditions/TableCondition.vue')['default']
|
||||
TableConditionValue: typeof import('./src/components/basic/conditions/TableConditionValue.vue')['default']
|
||||
}
|
||||
}
|
||||
|
||||
8
vue-project/my-kintone-plugin/env.d.ts
vendored
8
vue-project/my-kintone-plugin/env.d.ts
vendored
@@ -1,2 +1,8 @@
|
||||
/// <reference types="vite/client" />
|
||||
/// <reference types="kintone" />
|
||||
/// <reference types="kintone" />
|
||||
|
||||
declare module '*.vue' {
|
||||
import { DefineComponent } from 'vue';
|
||||
const component: DefineComponent<{}, {}, any>;
|
||||
export default component;
|
||||
}
|
||||
|
||||
@@ -9,8 +9,10 @@
|
||||
"build": "vite build && npm run pkg",
|
||||
"vite:build": "vite build",
|
||||
"build-upload": "npm run build && npm run upload",
|
||||
"build-up2":"npm run build && npm run upload2",
|
||||
"pkg": "kintone-plugin-packer --ppk private.ppk --out dist/plugin.zip dist/src",
|
||||
"upload": "kintone-plugin-uploader --base-url https://mfu07rkgnb7c.cybozu.com --username MXZ --password maxz1205 dist/plugin.zip "
|
||||
"upload": "kintone-plugin-uploader --base-url https://mfu07rkgnb7c.cybozu.com --username MXZ --password maxz1205 dist/plugin.zip ",
|
||||
"upload2": "kintone-plugin-uploader --base-url https://alicorn.cybozu.com --username maxz --password 7ld7i8vd dist/plugin.zip "
|
||||
},
|
||||
"dependencies": {
|
||||
"@kintone/rest-api-client": "^5.7.0",
|
||||
|
||||
2377
vue-project/my-kintone-plugin/src/assets/kuc.min.js
vendored
Normal file
2377
vue-project/my-kintone-plugin/src/assets/kuc.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -3,57 +3,116 @@
|
||||
<p class="kintoneplugin-desc">{{ $t('config.desc') }}</p>
|
||||
|
||||
<plugin-row class="header-row border">
|
||||
<plugin-input v-model="data.buttonName" label="集約ボタン名" />
|
||||
<plugin-input v-model="data.buttonName" placeholder="集約" label="集約ボタン名" />
|
||||
</plugin-row>
|
||||
|
||||
<div v-if="!loading">
|
||||
<plugin-table-area :table="mainTable" :key="mainTable.id" />
|
||||
<plugin-table-area v-for="joinTable in otherTables" :table="joinTable" :key="joinTable.id" />
|
||||
<div id="main-area" ref="mainArea">
|
||||
<plugin-table-area v-for="joinTable in data.joinTables" :table="joinTable" :key="joinTable.id" />
|
||||
</div>
|
||||
|
||||
<plugin-row class="footer-row border">
|
||||
<kuc-button text="キャンセル" type="normal" @click="cancel" />
|
||||
<kuc-button text="保存する" class="save-btn" type="submit" @click="save" />
|
||||
</plugin-row>
|
||||
|
||||
<kuc-spinner :container="mainArea" ref="spinner"></kuc-spinner>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { createEmptyJoinTable } from '@/js/helper';
|
||||
import type { JoinTable, SavedData } from '@/types/model';
|
||||
import { createEmptyJoinTable, loadApps, loadAppFieldsAndLayout, EMPTY_OPTION, getEmptyOnCondition } from '@/js/helper';
|
||||
import { isType, type OneOf } from '@/js/kintone-rest-api-client';
|
||||
import type { CachedData, FieldsInfo, JoinTable, SavedData } from '@/types/model';
|
||||
import type { Spinner } from 'kintone-ui-component';
|
||||
|
||||
import { computed, onMounted, watch, provide, reactive, ref } from 'vue';
|
||||
import { onMounted, watch, provide, reactive, ref, shallowRef, nextTick } from 'vue';
|
||||
|
||||
const props = defineProps<{ pluginId: string }>();
|
||||
const loading = ref(true);
|
||||
const loading = ref(false);
|
||||
const data: SavedData = reactive({
|
||||
buttonName: '',
|
||||
joinTables: [] as JoinTable[],
|
||||
joinTables: [createEmptyJoinTable()],
|
||||
});
|
||||
|
||||
const cachedData: CachedData = reactive({
|
||||
apps: [EMPTY_OPTION],
|
||||
currentAppFields: { fields: {}, layout: [] } as FieldsInfo,
|
||||
});
|
||||
|
||||
provide('savedData', data);
|
||||
provide('cachedData', cachedData);
|
||||
|
||||
const mainArea = shallowRef<HTMLElement | null>(null);
|
||||
const spinner = shallowRef<Spinner | null>(null);
|
||||
|
||||
onMounted(async () => {
|
||||
const savedData = kintone.plugin.app.getConfig(props.pluginId);
|
||||
data.buttonName = savedData?.buttonName || '集約';
|
||||
data.joinTables = savedData ? JSON.parse(savedData.joinTables) : [createEmptyJoinTable(), createEmptyJoinTable(1)];
|
||||
loading.value = false;
|
||||
nextTick(async () => {
|
||||
spinner.value?.close(); // fix bug: kuc-spinner will not auto amount to target HTML element when init loading
|
||||
const savedData = kintone.plugin.app.getConfig(props.pluginId);
|
||||
loading.value = true;
|
||||
cachedData.apps = await loadApps();
|
||||
cachedData.currentAppFields = await loadAppFieldsAndLayout();
|
||||
if (savedData?.joinTablesForConfig) {
|
||||
data.joinTables = JSON.parse(savedData.joinTablesForConfig);
|
||||
}
|
||||
data.buttonName = savedData?.buttonName || '集約';
|
||||
loading.value = false;
|
||||
});
|
||||
});
|
||||
|
||||
const mainTable = computed(() => data.joinTables[0]);
|
||||
const otherTables = computed(() => data.joinTables.slice(1));
|
||||
watch(loading, (load) => {
|
||||
load ? spinner.value?.open() : spinner.value?.close();
|
||||
});
|
||||
|
||||
watch(
|
||||
() => data.joinTables.length,
|
||||
(newLength) => {
|
||||
if (newLength === 1) {
|
||||
data.joinTables[0].onConditions = [];
|
||||
data.joinTables[0].onConditions = [getEmptyOnCondition()];
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
function save() {
|
||||
const currentAppMeta = cachedData.currentAppFields.fields;
|
||||
const convertJoinTables = JSON.parse(JSON.stringify(data.joinTables)) as JoinTable<OneOf | string>[];
|
||||
convertJoinTables.forEach((item) => {
|
||||
let meta = item.meta;
|
||||
if (!meta) {
|
||||
return;
|
||||
}
|
||||
if (item.table) {
|
||||
const table = meta[item.table];
|
||||
if (isType.SUBTABLE(table)) {
|
||||
meta = table.fields;
|
||||
}
|
||||
}
|
||||
|
||||
// Process onConditions
|
||||
item.onConditions.forEach((condition) => {
|
||||
condition.leftField = meta[condition.leftField as string] || condition.leftField;
|
||||
condition.rightField = currentAppMeta[condition.rightField as string] || condition.rightField;
|
||||
});
|
||||
|
||||
// Process fieldsMapping
|
||||
item.fieldsMapping.forEach((mapping) => {
|
||||
mapping.leftField = meta[mapping.leftField as string] || mapping.leftField;
|
||||
mapping.rightField = currentAppMeta[mapping.rightField as string] || mapping.rightField;
|
||||
});
|
||||
|
||||
// Process whereConditions
|
||||
item.whereConditions.forEach((condition) => {
|
||||
condition.field = meta[condition.field as string] || condition.field;
|
||||
});
|
||||
delete item.meta;
|
||||
});
|
||||
|
||||
data.joinTables.forEach((item) => {
|
||||
delete item.meta;
|
||||
});
|
||||
|
||||
kintone.plugin.app.setConfig({
|
||||
buttonName: data.buttonName,
|
||||
joinTables: JSON.stringify(data.joinTables || []),
|
||||
joinTables: JSON.stringify(convertJoinTables),
|
||||
joinTablesForConfig: JSON.stringify(data.joinTables || []),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
<template>
|
||||
<div class="kintoneplugin-input-container flex-row">
|
||||
<plugin-label v-if="label" :label="label" />
|
||||
<kuc-dropdown className="kuc-text-input" :items="items" :value="modelValue" @change="updateValue" />
|
||||
<kuc-combobox className="kuc-text-input" :items="items" :value="modelValue" @change="updateValue" :disabled="disabled"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { KucEvent } from '@/types/my-kintone';
|
||||
import type { ComboboxChangeEventDetail, DropdownItem } from 'kintone-ui-component';
|
||||
import { defineProps, defineEmits } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
label: string;
|
||||
items: kintone.fieldTypes.DropDown['Item'][];
|
||||
disabled: boolean;
|
||||
items: DropdownItem[];
|
||||
modelValue: string;
|
||||
}>();
|
||||
|
||||
@@ -18,7 +21,7 @@ const emit = defineEmits<{
|
||||
(e: 'update:modelValue', value: string): void;
|
||||
}>();
|
||||
|
||||
const updateValue = (event: kintone.Event) => {
|
||||
emit('update:modelValue', event.detail.value);
|
||||
const updateValue = ({ detail }: KucEvent<ComboboxChangeEventDetail>) => {
|
||||
emit('update:modelValue', detail.value || '');
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
<template>
|
||||
<div class="kintoneplugin-input-container flex-row">
|
||||
<plugin-label v-if="label" :label="label" />
|
||||
<kuc-text className="kuc-text-input" :value="modelValue" @change="updateValue" />
|
||||
<kuc-text :placeholder="placeholder" className="kuc-text-input" :value="modelValue" @change="updateValue" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { KucEvent } from '@/types/my-kintone';
|
||||
import type { TextInputEventDetail } from 'kintone-ui-component';
|
||||
import { defineProps, defineEmits } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
label: string;
|
||||
modelValue: string;
|
||||
placeholder: string;
|
||||
}>();
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', value: string): void;
|
||||
}>();
|
||||
|
||||
const updateValue = (event: kintone.Event) => {
|
||||
emit('update:modelValue', event.detail.value);
|
||||
const updateValue = ({ detail }: KucEvent<TextInputEventDetail>) => {
|
||||
emit('update:modelValue', detail.value || '');
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -14,7 +14,7 @@ const props = withDefaults(
|
||||
defineProps<{
|
||||
canAdd?: boolean;
|
||||
canDelete?: boolean;
|
||||
tableId: number;
|
||||
tableId: string;
|
||||
}>(),
|
||||
{
|
||||
canAdd: true,
|
||||
@@ -25,7 +25,12 @@ const props = withDefaults(
|
||||
const savedData = inject<SavedData>('savedData') as SavedData;
|
||||
const onClick = (type: 'add' | 'remove') => {
|
||||
if (type === 'add') {
|
||||
savedData.joinTables.push(createEmptyJoinTable());
|
||||
const currentIndex = savedData.joinTables.findIndex((t) => t.id === props.tableId);
|
||||
if (currentIndex !== -1) {
|
||||
savedData.joinTables.splice(currentIndex + 1, 0, createEmptyJoinTable());
|
||||
} else {
|
||||
savedData.joinTables.push(createEmptyJoinTable());
|
||||
}
|
||||
} else if (savedData.joinTables.length > 1) {
|
||||
savedData.joinTables = savedData.joinTables.filter((t) => t.id !== props.tableId);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,30 @@
|
||||
<template>
|
||||
<plugin-row class="table-area flex-row border">
|
||||
<div class="table-main-area ">
|
||||
<div class="table-main-area">
|
||||
<plugin-row>
|
||||
<plugin-dropdown label="取得元アプリ" :items="apps" v-model="table.app" />
|
||||
<plugin-dropdown :disabled="false" label="取得元アプリ" :items="apps" v-model="table.app" />
|
||||
</plugin-row>
|
||||
<plugin-row>
|
||||
<plugin-dropdown label="テーブル" :items="tables" v-model="table.table" />
|
||||
<plugin-dropdown
|
||||
:disabled="selectedAppData.loading"
|
||||
label="テーブル"
|
||||
:items="tableOptions"
|
||||
v-model="table.table"
|
||||
@change="selectTable"
|
||||
:key="componentKey"
|
||||
/>
|
||||
</plugin-row>
|
||||
<plugin-row class="flex-row" v-if="isJoinConditionShown(table)">
|
||||
<plugin-label label="連結条件" />
|
||||
<plugin-table-connect-row connector="=" v-model="table.onConditions" />
|
||||
<plugin-table-connect-row connector="=" :modelValue="table.onConditions" />
|
||||
</plugin-row>
|
||||
<plugin-row class="flex-row">
|
||||
<plugin-label label="取得フィールド" />
|
||||
<plugin-table-connect-row connector="→" v-model="table.fieldsMapping" />
|
||||
<plugin-table-connect-row connector="→" :modelValue="table.fieldsMapping" />
|
||||
</plugin-row>
|
||||
<plugin-row class="flex-row">
|
||||
<plugin-label label="絞込条件" />
|
||||
<plugin-table-condition-row v-model="table.whereConditions" />
|
||||
<plugin-table-condition-row :modelValue="table.whereConditions"/>
|
||||
</plugin-row>
|
||||
</div>
|
||||
<div class="table-action-area">
|
||||
@@ -27,40 +34,74 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { JoinTable, SavedData } from '@/types/model';
|
||||
import { inject } from 'vue';
|
||||
import {
|
||||
EMPTY_OPTION,
|
||||
getTableFieldsDropdownItems,
|
||||
loadAppFieldsAndLayout,
|
||||
resetConditions,
|
||||
resetTable,
|
||||
} from '@/js/helper';
|
||||
import { types } from '@/js/kintone-rest-api-client';
|
||||
import type { CachedData, CachedSelectedAppData, FieldsInfo, JoinTable, SavedData } from '@/types/model';
|
||||
import { computed, inject, provide, reactive, ref, watch } from 'vue';
|
||||
|
||||
const savedData = inject<SavedData>('savedData') as SavedData;
|
||||
const cachedData = inject<CachedData>('cachedData') as CachedData;
|
||||
|
||||
const props = defineProps<{ table: JoinTable }>();
|
||||
const apps = [
|
||||
{
|
||||
label: '-------',
|
||||
value: '',
|
||||
const props = defineProps<{
|
||||
table: JoinTable;
|
||||
}>();
|
||||
const apps = computed(() => cachedData.apps);
|
||||
const tableOptions = ref([EMPTY_OPTION]);
|
||||
const loading = ref(false);
|
||||
|
||||
const selectedAppData: CachedSelectedAppData = reactive({
|
||||
appFields: { fields: {}, layout: [] } as FieldsInfo,
|
||||
table: props.table,
|
||||
loading: false,
|
||||
});
|
||||
provide('selectedAppData', selectedAppData);
|
||||
|
||||
const componentKey = ref(0);
|
||||
// fix-bug: force select saved data when load config
|
||||
watch(
|
||||
() => tableOptions.value,
|
||||
() => {
|
||||
if (!props.table.table) return;
|
||||
componentKey.value += 1;
|
||||
},
|
||||
{
|
||||
label: 'lable 1',
|
||||
value: 'value 1',
|
||||
once: true,
|
||||
},
|
||||
{
|
||||
label: 'lable 2',
|
||||
value: 'value 2',
|
||||
);
|
||||
|
||||
watch(
|
||||
() => props.table.app,
|
||||
async (newVal, oldVal) => {
|
||||
if (!newVal) {
|
||||
return;
|
||||
}
|
||||
loading.value = true;
|
||||
const fields = await loadAppFieldsAndLayout(newVal);
|
||||
tableOptions.value = getTableFieldsDropdownItems(fields, types.SUBTABLE);
|
||||
selectedAppData.appFields = fields;
|
||||
props.table.meta = fields.fields;
|
||||
!!oldVal && resetTable(props.table);
|
||||
loading.value = false;
|
||||
},
|
||||
];
|
||||
const tables = [
|
||||
{
|
||||
label: '-------',
|
||||
value: '-------',
|
||||
{ immediate: true },
|
||||
);
|
||||
|
||||
const selectTable = () => {
|
||||
resetConditions(props.table);
|
||||
};
|
||||
|
||||
watch(
|
||||
() => !props.table.app || loading.value,
|
||||
(val) => {
|
||||
selectedAppData.loading = val;
|
||||
},
|
||||
{
|
||||
label: 'tables 1',
|
||||
value: 'tables 1',
|
||||
},
|
||||
{
|
||||
label: 'tables 2',
|
||||
value: 'tables 2',
|
||||
},
|
||||
];
|
||||
);
|
||||
|
||||
const isJoinConditionShown = (table: JoinTable) => {
|
||||
return savedData.joinTables[0].id !== table.id;
|
||||
|
||||
@@ -1,79 +1,96 @@
|
||||
<template>
|
||||
<kuc-table :class-name.camel="['plugin-kuc-table']" :columns="columns" :data="modelValue" @change="changeRow"/>
|
||||
<kuc-table :class-name.camel="['plugin-kuc-table']" :columns="columns" :data="modelValue" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { WhereCondition } from '@/types/model';
|
||||
import { defineProps, defineEmits } from 'vue';
|
||||
import { Dropdown } from 'kintone-ui-component/lib/dropdown';
|
||||
import type { CachedData, CachedSelectedAppData, SavedData, WhereCondition } from '@/types/model';
|
||||
import { defineProps, inject, computed, render, h, reactive } from 'vue';
|
||||
import TableCombobox from './TableCombobox.vue';
|
||||
import { generateId, getFieldsDropdownItems, search } from '@/js/helper';
|
||||
import TableCondition from './conditions/TableCondition.vue';
|
||||
import TableConditionValue from './conditions/TableConditionValue.vue';
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: WhereCondition[];
|
||||
}>();
|
||||
|
||||
const renderDropdown = (cellData: string) => {
|
||||
const dropdown = new Dropdown({
|
||||
items: [
|
||||
{ label: 'John Brown', value: 'john' },
|
||||
{ label: 'Steven Gerard', value: 'steven' },
|
||||
],
|
||||
value: cellData,
|
||||
});
|
||||
return dropdown;
|
||||
};
|
||||
const savedData = inject<SavedData>('savedData') as SavedData;
|
||||
const cachedData = inject<CachedData>('cachedData') as CachedData;
|
||||
const selectedAppData = inject<CachedSelectedAppData>('selectedAppData') as CachedSelectedAppData;
|
||||
const table = computed(() => selectedAppData.table.table);
|
||||
|
||||
const renderCondition = (cellData: string) => {
|
||||
const dropdown = new Dropdown({
|
||||
items: [
|
||||
{ label: 'John Brown', value: 'john' },
|
||||
{ label: 'Steven Gerard', value: 'steven' },
|
||||
],
|
||||
value: cellData,
|
||||
});
|
||||
return dropdown;
|
||||
};
|
||||
|
||||
const renderDynamicData = (cellData: string) => {
|
||||
const dropdown = new Dropdown({
|
||||
items: [
|
||||
{ label: 'John Brown', value: 'john' },
|
||||
{ label: 'Steven Gerard', value: 'steven' },
|
||||
],
|
||||
value: cellData,
|
||||
});
|
||||
return dropdown;
|
||||
};
|
||||
|
||||
const columns = [
|
||||
const columns = reactive([
|
||||
{
|
||||
title: '取得元アプリのフィールド',
|
||||
field: 'field',
|
||||
render: renderDropdown,
|
||||
render: (cellData: string, rowData: WhereCondition) => {
|
||||
if (!rowData.id) {
|
||||
rowData.id = generateId();
|
||||
}
|
||||
const container = document.createElement('div');
|
||||
const vnode = h(TableCombobox, {
|
||||
items: computed(() =>
|
||||
getFieldsDropdownItems(selectedAppData.appFields, {
|
||||
subTableCode: table.value,
|
||||
defaultLabel: 'すべてのレコード',
|
||||
}),
|
||||
),
|
||||
modelValue: (search(props.modelValue, rowData.id) as WhereCondition)?.field || '',
|
||||
selectedAppData,
|
||||
dataList: props.modelValue,
|
||||
id: rowData.id,
|
||||
'onUpdate:modelValue': (data) => {
|
||||
const obj = (data.obj as WhereCondition);
|
||||
if (obj) {
|
||||
obj.field = data.value;
|
||||
obj.condition = '',
|
||||
obj.data = '';
|
||||
}
|
||||
},
|
||||
});
|
||||
render(vnode, container);
|
||||
return container;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '',
|
||||
field: 'condition',
|
||||
render: renderCondition,
|
||||
render: (cellData: string, rowData: WhereCondition) => {
|
||||
const container = document.createElement('div');
|
||||
const vnode = h(TableCondition, {
|
||||
modelValue: (search(props.modelValue, rowData.id) as WhereCondition)?.condition || '',
|
||||
selectedAppData,
|
||||
id: rowData.id,
|
||||
whereConditions: props.modelValue,
|
||||
'onUpdate:modelValue': ({obj, value}) => {
|
||||
if (obj) {
|
||||
obj.condition = value;
|
||||
obj.data = '';
|
||||
}
|
||||
},
|
||||
});
|
||||
render(vnode, container);
|
||||
return container;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '',
|
||||
field: 'data',
|
||||
render: renderDynamicData,
|
||||
render: (cellData: string, rowData: WhereCondition) => {
|
||||
const container = document.createElement('div');
|
||||
const vnode = h(TableConditionValue, {
|
||||
modelValue: (search(props.modelValue, rowData.id) as WhereCondition)?.data || '',
|
||||
selectedAppData,
|
||||
id: rowData.id,
|
||||
whereConditions: props.modelValue,
|
||||
'onUpdate:modelValue': ({obj, value}) => {
|
||||
obj && (obj.data = value);
|
||||
},
|
||||
});
|
||||
render(vnode, container);
|
||||
return container;
|
||||
},
|
||||
},
|
||||
];
|
||||
]);
|
||||
|
||||
const leftFields = [] as kintone.fieldTypes.DropDown['Item'][];
|
||||
const rightFields = [] as kintone.fieldTypes.DropDown['Item'][];
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', value: FieldsJoinMapping[]): void;
|
||||
}>();
|
||||
|
||||
const changeRow = (item: FieldsJoinMapping, key: keyof FieldsJoinMapping, value: string) => {
|
||||
};
|
||||
|
||||
const changeField = (item: FieldsJoinMapping, key: keyof FieldsJoinMapping, value: string) => {
|
||||
item[key] = value;
|
||||
emit('update:modelValue', props.modelValue);
|
||||
};
|
||||
</script>
|
||||
|
||||
@@ -1,61 +1,79 @@
|
||||
<template>
|
||||
<kuc-table :class-name.camel="['plugin-kuc-table']" :columns="columns" :data="modelValue" @change="changeRow"/>
|
||||
<kuc-table :class-name.camel="['plugin-kuc-table']" :columns="columns" :data="modelValue" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import type { FieldsJoinMapping } from '@/types/model';
|
||||
import { defineProps, defineEmits } from 'vue';
|
||||
import { Dropdown } from 'kintone-ui-component/lib/dropdown';
|
||||
import type { CachedData, CachedSelectedAppData, FieldsJoinMapping, WhereCondition } from '@/types/model';
|
||||
import { defineProps, inject, computed, reactive, render, h, watch } from 'vue';
|
||||
import { generateId, getFieldsDropdownItems, search } from '@/js/helper';
|
||||
import TableCombobox from './TableCombobox.vue';
|
||||
|
||||
const props = defineProps<{
|
||||
connector: string;
|
||||
modelValue: FieldsJoinMapping[];
|
||||
}>();
|
||||
|
||||
const renderDropdown = (cellData: string) => {
|
||||
const dropdown = new Dropdown({
|
||||
items: [
|
||||
{ label: 'John Brown', value: 'john' },
|
||||
{ label: 'Steven Gerard', value: 'steven' },
|
||||
],
|
||||
value: cellData,
|
||||
});
|
||||
return dropdown;
|
||||
};
|
||||
const renderConnector = () => {
|
||||
return props.connector;
|
||||
};
|
||||
const cachedData = inject<CachedData>('cachedData') as CachedData;
|
||||
const selectedAppData = inject<CachedSelectedAppData>('selectedAppData') as CachedSelectedAppData;
|
||||
const table = computed(() => selectedAppData.table.table);
|
||||
|
||||
const columns = [
|
||||
const columns = reactive([
|
||||
{
|
||||
title: '取得元アプリのフィールド',
|
||||
field: 'leftField',
|
||||
render: renderDropdown,
|
||||
render: (cellData: string, rowData: WhereCondition) => {
|
||||
if (!rowData.id) {
|
||||
rowData.id = generateId();
|
||||
}
|
||||
const container = document.createElement('div');
|
||||
const vnode = h(TableCombobox, {
|
||||
items: computed(() =>
|
||||
getFieldsDropdownItems(selectedAppData.appFields, { subTableCode: table.value, filterType: undefined }),
|
||||
),
|
||||
modelValue: (search(props.modelValue, rowData.id) as FieldsJoinMapping)?.leftField || '',
|
||||
selectedAppData,
|
||||
dataList: props.modelValue,
|
||||
id: rowData.id,
|
||||
'onUpdate:modelValue': (data) => {
|
||||
if (data.obj) {
|
||||
(data.obj as FieldsJoinMapping).leftField = data.value;
|
||||
}
|
||||
},
|
||||
});
|
||||
render(vnode, container);
|
||||
return container;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '',
|
||||
field: 'connector',
|
||||
render: renderConnector,
|
||||
render: () => {
|
||||
return props.connector;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'このアプリのフィールド',
|
||||
field: 'rightField',
|
||||
render: renderDropdown,
|
||||
render: (cellData: string, rowData: WhereCondition) => {
|
||||
if (!rowData.id) {
|
||||
rowData.id = generateId();
|
||||
}
|
||||
const container = document.createElement('div');
|
||||
const vnode = h(TableCombobox, {
|
||||
items: computed(() => getFieldsDropdownItems(cachedData.currentAppFields, { filterType: undefined })),
|
||||
modelValue: (search(props.modelValue, rowData.id) as FieldsJoinMapping)?.rightField || '',
|
||||
selectedAppData,
|
||||
dataList: props.modelValue,
|
||||
id: rowData.id,
|
||||
'onUpdate:modelValue': (data) => {
|
||||
if (data.obj) {
|
||||
(data.obj as FieldsJoinMapping).rightField = data.value;
|
||||
}
|
||||
},
|
||||
});
|
||||
render(vnode, container);
|
||||
return container;
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
const leftFields = [] as kintone.fieldTypes.DropDown['Item'][];
|
||||
const rightFields = [] as kintone.fieldTypes.DropDown['Item'][];
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', value: FieldsJoinMapping[]): void;
|
||||
}>();
|
||||
|
||||
const changeRow = (item: FieldsJoinMapping, key: keyof FieldsJoinMapping, value: string) => {
|
||||
};
|
||||
|
||||
const changeField = (item: FieldsJoinMapping, key: keyof FieldsJoinMapping, value: string) => {
|
||||
item[key] = value;
|
||||
emit('update:modelValue', props.modelValue);
|
||||
};
|
||||
]);
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<template>
|
||||
<kuc-combobox
|
||||
:items="items.value"
|
||||
:value="modelValue"
|
||||
@change="updateValue"
|
||||
:key="componentKey"
|
||||
:disabled="selectedAppData.loading == undefined ? false : selectedAppData.loading"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { search } from '@/js/helper';
|
||||
import type { CachedSelectedAppData } from '@/types/model';
|
||||
import type { KucEvent } from '@/types/my-kintone';
|
||||
import type { ComboboxChangeEventDetail, DropdownItem } from 'kintone-ui-component';
|
||||
import { defineProps, defineEmits, type Ref, watch, ref } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
items: Ref<DropdownItem[]>;
|
||||
modelValue: string;
|
||||
dataList: any[];
|
||||
id: string;
|
||||
selectedAppData: CachedSelectedAppData;
|
||||
}>();
|
||||
|
||||
const componentKey = ref(0);
|
||||
// fix-bug: force select saved data when load config
|
||||
watch(
|
||||
() => props.items.value,
|
||||
() => {
|
||||
if (!props.modelValue) return;
|
||||
componentKey.value += 1;
|
||||
},
|
||||
{
|
||||
once: true,
|
||||
},
|
||||
);
|
||||
|
||||
type EmitData = {
|
||||
obj?: any;
|
||||
value: string;
|
||||
};
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', data: EmitData): void;
|
||||
}>();
|
||||
|
||||
const updateValue = ({ detail }: KucEvent<ComboboxChangeEventDetail>) => {
|
||||
emit('update:modelValue', { obj: search(props.dataList, props.id), value: detail.value || '' });
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<kuc-combobox
|
||||
v-if="items?.length"
|
||||
:items="items"
|
||||
:value="modelValue"
|
||||
@change="updateValue"
|
||||
:disabled="selectedAppData.loading == undefined ? false : selectedAppData.loading"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getAvailableCondition, type ConditionValue } from '@/js/conditions';
|
||||
import { search } from '@/js/helper';
|
||||
import type { CachedSelectedAppData, WhereCondition } from '@/types/model';
|
||||
import type { KucEvent } from '@/types/my-kintone';
|
||||
import type { ComboboxChangeEventDetail } from 'kintone-ui-component';
|
||||
import { defineProps, defineEmits, computed } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: string;
|
||||
selectedAppData: CachedSelectedAppData;
|
||||
whereConditions: WhereCondition[];
|
||||
id: string;
|
||||
}>();
|
||||
|
||||
const whereCondition = computed(() => search(props.whereConditions, props.id) as WhereCondition | undefined);
|
||||
|
||||
const items = computed(() => getAvailableCondition(whereCondition.value?.field || '', props.selectedAppData.appFields));
|
||||
|
||||
type EmitData = {
|
||||
obj?: WhereCondition;
|
||||
value: ConditionValue;
|
||||
};
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', data: EmitData): void;
|
||||
}>();
|
||||
|
||||
const updateValue = ({ detail }: KucEvent<ComboboxChangeEventDetail>) => {
|
||||
emit('update:modelValue', { obj: whereCondition.value, value: detail.value as ConditionValue });
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<kuc-text
|
||||
v-if="type == 'kuc-text'"
|
||||
:value="modelValue"
|
||||
@change="updateValue"
|
||||
:disabled="selectedAppData.loading == undefined ? false : selectedAppData.loading"
|
||||
/>
|
||||
<kuc-combobox
|
||||
v-if="type == 'kuc-combobox'"
|
||||
:value="modelValue"
|
||||
@change="updateValue"
|
||||
:disabled="selectedAppData.loading == undefined ? false : selectedAppData.loading"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getComponent } from '@/js/conditions';
|
||||
import { search } from '@/js/helper';
|
||||
import type { CachedSelectedAppData, WhereCondition } from '@/types/model';
|
||||
import type { KucEvent } from '@/types/my-kintone';
|
||||
import type { ComboboxChangeEventDetail, TextInputEventDetail } from 'kintone-ui-component';
|
||||
import { defineProps, defineEmits, computed } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: string;
|
||||
selectedAppData: CachedSelectedAppData;
|
||||
whereConditions: WhereCondition[];
|
||||
id: string;
|
||||
}>();
|
||||
|
||||
const whereCondition = computed(() => search(props.whereConditions, props.id) as WhereCondition | undefined);
|
||||
|
||||
const type = computed(() => getComponent(whereCondition.value?.condition || ''));
|
||||
|
||||
type EmitData = {
|
||||
obj?: WhereCondition;
|
||||
value: string;
|
||||
};
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'update:modelValue', data: EmitData): void;
|
||||
}>();
|
||||
|
||||
const updateValue = (event: KucEvent<ComboboxChangeEventDetail | TextInputEventDetail>) => {
|
||||
emit('update:modelValue', { obj: whereCondition.value, value: event.detail.value || '' });
|
||||
};
|
||||
</script>
|
||||
@@ -24,12 +24,27 @@
|
||||
padding-left: 20px;
|
||||
line-height: 40px;
|
||||
}
|
||||
/* laebl input 单号的情况 */
|
||||
/* laebl input 单行的情况 */
|
||||
.flex-row .kintoneplugin-label {
|
||||
margin: 0;
|
||||
width: 10em;
|
||||
}
|
||||
|
||||
/* 遮罩 */
|
||||
#main-area {
|
||||
position: relative;
|
||||
}
|
||||
#main-area .kuc-spinner-1-18-0__mask {
|
||||
position: absolute;
|
||||
background-color: white;
|
||||
}
|
||||
#main-area .kuc-spinner-1-18-0__spinner {
|
||||
position: absolute;
|
||||
}
|
||||
#main-area .kuc-spinner-1-18-0__spinner__loader {
|
||||
fill: #3498db;
|
||||
}
|
||||
|
||||
/* 表格内容垂直居中 */
|
||||
.table-area {
|
||||
margin: 0;
|
||||
@@ -64,6 +79,7 @@
|
||||
.kuc-text-input {
|
||||
--kuc-text-input-width: max(15vw, 200px);
|
||||
--kuc-dropdown-toggle-width: max(15vw, 200px);
|
||||
--kuc-combobox-toggle-width: max(15vw, 200px);
|
||||
}
|
||||
|
||||
/* 统一 kintone +/- 按钮样式 */
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
import type { SavedData } from "@/types/model";
|
||||
import type { Button } from "kintone-ui-component";
|
||||
|
||||
export class KintoneIndexEventHandler {
|
||||
private config: SavedData;
|
||||
|
||||
constructor(config: SavedData) {
|
||||
this.config = config;
|
||||
}
|
||||
|
||||
public init(): void {
|
||||
this.addButtonToView();
|
||||
}
|
||||
|
||||
// ボタン追加
|
||||
private addButtonToView(): void {
|
||||
const headerSpace = kintone.app.getHeaderMenuSpaceElement();
|
||||
if (!headerSpace){
|
||||
throw new Error('このページではヘッダー要素が利用できません。');
|
||||
};
|
||||
|
||||
// ボタン追加
|
||||
if (document.getElementById('btn-data-fetch')) return;
|
||||
const kuc = Kucs['1.18.0'];
|
||||
const button = new kuc.Button({
|
||||
text: this.config.buttonName,
|
||||
type:"submit",
|
||||
id:'btn-data-fetch',
|
||||
});
|
||||
|
||||
// const button = document.createElement('button');
|
||||
// button.id = 'btn-data-fetch';
|
||||
// button.textContent = this.config.buttonName;
|
||||
// button.style.margin = '0 8px';
|
||||
button.addEventListener('click', () => this.handleButtonClick());
|
||||
|
||||
headerSpace.appendChild(button);
|
||||
}
|
||||
|
||||
// ボタンクリック
|
||||
private async handleButtonClick(): Promise<void> {
|
||||
try {
|
||||
console.log('Button clicked! Starting data processing...');
|
||||
alert('データ取得開始');
|
||||
} catch (error) {
|
||||
console.error('Error during data processing:', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
57
vue-project/my-kintone-plugin/src/js/conditions.ts
Normal file
57
vue-project/my-kintone-plugin/src/js/conditions.ts
Normal file
@@ -0,0 +1,57 @@
|
||||
import type { FieldsInfo } from '@/types/model';
|
||||
import type { FieldType } from './kintone-rest-api-client';
|
||||
|
||||
// conditionValue = '' | 'eq' | 'ne'
|
||||
// conditionItem = { value: 'eq', label: '=(等しい)', type: 'input', func: (a: string, b: string) => a === b }
|
||||
// = conditionMap[conditionValue]
|
||||
export type ConditionValue = '' | 'eq' | 'ne' | 'test';
|
||||
|
||||
type ConditionItem = {
|
||||
value: ConditionValue;
|
||||
label: string;
|
||||
type: ComponentType;
|
||||
func: (a: string, b: string) => boolean;
|
||||
};
|
||||
|
||||
export const conditionList: ConditionItem[] = [
|
||||
{ value: '', label: '--------', type: '', func: (a: string, b: string) => true },
|
||||
{ value: 'eq', label: '=(等しい)', type: 'input', func: (a: string, b: string) => a === b },
|
||||
{ value: 'ne', label: '≠ (等しくない)', type: 'input', func: (a: string, b: string) => a !== b },
|
||||
{ value: 'test', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b },
|
||||
];
|
||||
|
||||
// search from conditionList
|
||||
// conditionItem = conditionMap[conditionValue]
|
||||
export const conditionMap: Record<ConditionValue, ConditionItem> = conditionList.reduce(
|
||||
(map, item) => {
|
||||
map[item.value] = item;
|
||||
return map;
|
||||
},
|
||||
{} as Record<ConditionValue, ConditionItem>,
|
||||
);
|
||||
|
||||
type FieldConditions = Partial<Record<FieldType, ConditionValue[]>>;
|
||||
|
||||
// FieldType -> ConditionValue[]
|
||||
const fieldConditions: FieldConditions = {
|
||||
SINGLE_LINE_TEXT: ['eq', 'ne'],
|
||||
NUMBER: ['ne', 'test'],
|
||||
} as const;
|
||||
|
||||
// fieldCode -> conditionList: ConditionItem[]
|
||||
export const getAvailableCondition = (fieldCode: string, { fields }: FieldsInfo) => {
|
||||
if (!fieldCode || !fields) return;
|
||||
const conditions = fieldConditions[fields[fieldCode]?.type] || [];
|
||||
return conditions.map((condition) => conditionMap[condition]);
|
||||
};
|
||||
|
||||
const component = {
|
||||
'': undefined,
|
||||
input: 'kuc-text',
|
||||
select: 'kuc-combobox',
|
||||
};
|
||||
export type ComponentType = keyof typeof component;
|
||||
export const getComponent = (value: ConditionValue) => {
|
||||
if (!value) return;
|
||||
return component[conditionMap[value].type];
|
||||
};
|
||||
@@ -1,22 +1,28 @@
|
||||
import { KintoneIndexEventHandler } from "./KintoneIndexEventHandler";
|
||||
|
||||
(function (PLUGIN_ID) {
|
||||
kintone.events.on('app.record.index.show', () => {
|
||||
const spaceEl = kintone.app.getHeaderSpaceElement();
|
||||
if (spaceEl === null) {
|
||||
throw new Error('The header element is unavailable on this page.');
|
||||
}
|
||||
|
||||
const fragment = document.createDocumentFragment();
|
||||
const headingEl = document.createElement('h3');
|
||||
const messageEl = document.createElement('p');
|
||||
|
||||
kintone.events.on('app.record.index.show', (event) => {
|
||||
const config = kintone.plugin.app.getConfig(PLUGIN_ID);
|
||||
messageEl.textContent = config.message;
|
||||
messageEl.classList.add('plugin-space-message');
|
||||
headingEl.textContent = 'Hello kintone plugin!';
|
||||
headingEl.classList.add('plugin-space-heading');
|
||||
const handler = new KintoneIndexEventHandler(config);
|
||||
handler.init();
|
||||
// const spaceEl = kintone.app.getHeaderSpaceElement();
|
||||
// if (spaceEl === null) {
|
||||
// throw new Error('The header element is unavailable on this page.');
|
||||
// }
|
||||
|
||||
fragment.appendChild(headingEl);
|
||||
fragment.appendChild(messageEl);
|
||||
spaceEl.appendChild(fragment);
|
||||
// const fragment = document.createDocumentFragment();
|
||||
// const headingEl = document.createElement('h3');
|
||||
// const messageEl = document.createElement('p');
|
||||
|
||||
// const config = kintone.plugin.app.getConfig(PLUGIN_ID);
|
||||
// messageEl.textContent = config.message;
|
||||
// messageEl.classList.add('plugin-space-message');
|
||||
// headingEl.textContent = 'Hello kintone plugin!';
|
||||
// headingEl.classList.add('plugin-space-heading');
|
||||
|
||||
// fragment.appendChild(headingEl);
|
||||
// fragment.appendChild(messageEl);
|
||||
// spaceEl.appendChild(fragment);
|
||||
return event;
|
||||
});
|
||||
})(kintone.$PLUGIN_ID);
|
||||
|
||||
11
vue-project/my-kintone-plugin/src/js/fields.ts
Normal file
11
vue-project/my-kintone-plugin/src/js/fields.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import type { FieldType } from "./kintone-rest-api-client";
|
||||
|
||||
const availableJoinType: FieldType[] = [
|
||||
'SINGLE_LINE_TEXT',
|
||||
'NUMBER',
|
||||
'CALC',
|
||||
'DATE',
|
||||
'TIME',
|
||||
'DATETIME',
|
||||
'LINK'
|
||||
] as const
|
||||
@@ -1,16 +1,127 @@
|
||||
import type { JoinTable } from '@/types/model';
|
||||
import type { FieldsInfo, FieldsJoinMapping, JoinTable, WhereCondition } from '@/types/model';
|
||||
import { client, isType, type FieldType, type App, type Layout } from './kintone-rest-api-client';
|
||||
import type { DropdownItem } from 'kintone-ui-component';
|
||||
|
||||
export const condition = {
|
||||
unset: '',
|
||||
eq: '=',
|
||||
};
|
||||
export function createEmptyJoinTable(id = Number(new Date())) {
|
||||
return {
|
||||
id,
|
||||
app: '',
|
||||
table: '',
|
||||
onConditions: [{ leftField: '', rightField: '' }],
|
||||
fieldsMapping: [{ leftField: '', rightField: '' }],
|
||||
whereConditions: [{ field: '', condition: condition.unset, data: '' }],
|
||||
} as JoinTable;
|
||||
export const EMPTY_OPTION = {
|
||||
value: '',
|
||||
label: '--------',
|
||||
} as DropdownItem;
|
||||
|
||||
export function generateId(): string {
|
||||
const timestamp = new Date().getTime().toString(36);
|
||||
const randomNum = Math.random().toString(36).substring(2, 11);
|
||||
return `${timestamp}-${randomNum}`;
|
||||
}
|
||||
|
||||
export function search(list: Array<WhereCondition|FieldsJoinMapping>, id: string) {
|
||||
return list.find(item => item.id === id);
|
||||
}
|
||||
|
||||
export const getEmptyWhereCondition = () => ({ field: '', condition: '', data: '', id: generateId()} as WhereCondition);
|
||||
export const getEmptyOnCondition = () => ({ leftField: '', rightField: '', id: generateId() } as FieldsJoinMapping);
|
||||
export const getEmptyFieldsMapping = () => ({ leftField: '', rightField: '', id: generateId() } as FieldsJoinMapping);
|
||||
|
||||
export function createEmptyJoinTable(id = generateId()) {
|
||||
return resetTable({ id, app: '' } as JoinTable);
|
||||
}
|
||||
|
||||
export function resetTable(table: JoinTable) {
|
||||
table.table = '';
|
||||
return resetConditions(table);
|
||||
}
|
||||
|
||||
export function resetConditions(table: JoinTable) {
|
||||
table.onConditions = [getEmptyOnCondition()];
|
||||
table.fieldsMapping = [getEmptyFieldsMapping()];
|
||||
table.whereConditions = [getEmptyWhereCondition()];
|
||||
return table;
|
||||
}
|
||||
|
||||
const LIMIT = 100; // 每次请求的最大应用数量
|
||||
export const loadApps = async (offset = 0, _apps: DropdownItem[] = []): Promise<DropdownItem[]> => {
|
||||
const { apps } = await client.app.getApps({ limit: LIMIT, offset });
|
||||
const allApps: DropdownItem[] = [
|
||||
..._apps,
|
||||
...apps.map((app: App) => ({ value: app.appId, label: app.name + '(ID: ' + app.appId + ')' })),
|
||||
];
|
||||
if (apps.length === LIMIT) {
|
||||
return loadApps(offset + LIMIT, allApps);
|
||||
}
|
||||
allApps.sort((a, b) => Number(b.value) - Number(a.value));
|
||||
allApps.unshift(EMPTY_OPTION);
|
||||
return allApps;
|
||||
};
|
||||
|
||||
export const loadAppFieldsAndLayout = async (appId: string | number = kintone.app.getId() as number) => {
|
||||
return {
|
||||
fields: (await client.app.getFormFields({ app: appId })).properties,
|
||||
layout: (await client.app.getFormLayout({ app: appId })).layout,
|
||||
} as FieldsInfo;
|
||||
};
|
||||
|
||||
type Param = { subTableCode?: string; filterType?: FieldType; defaultLabel?: string };
|
||||
export const getFieldsDropdownItems = (
|
||||
{ fields, layout }: FieldsInfo,
|
||||
{ subTableCode, filterType, defaultLabel }: Param = {},
|
||||
) => {
|
||||
// get used field codes
|
||||
let fieldOrder: string[];
|
||||
let fieldMap = fields;
|
||||
if (subTableCode) {
|
||||
const subTableFields = layout.find((each) => each.type === 'SUBTABLE' && each.code === subTableCode) as any;
|
||||
fieldOrder = subTableFields?.fields.map((field: { code: string }) => field.code) || [];
|
||||
const subTableFieldMap = fieldMap[subTableCode] as { fields: Record<string, any> } | undefined;
|
||||
fieldMap = subTableFieldMap?.fields || {};
|
||||
} else {
|
||||
fieldOrder = extractNoSubTableFields(layout);
|
||||
}
|
||||
|
||||
// create labels
|
||||
const labels = [
|
||||
{
|
||||
value: EMPTY_OPTION.value,
|
||||
label: defaultLabel || EMPTY_OPTION.label,
|
||||
},
|
||||
];
|
||||
return fieldOrder.reduce((acc, fieldCode) => {
|
||||
const field = fieldMap[fieldCode];
|
||||
if (!fieldCode || (filterType && !isType[filterType](field))) return acc;
|
||||
acc.push({
|
||||
value: fieldCode,
|
||||
label: field.label + '(FC: ' + fieldCode + ')',
|
||||
});
|
||||
return acc;
|
||||
}, labels);
|
||||
};
|
||||
|
||||
export const getTableFieldsDropdownItems = ({ fields }: FieldsInfo, filterType?: FieldType) => {
|
||||
return Object.keys(fields).reduce(
|
||||
(acc, fieldCode) => {
|
||||
const field = fields[fieldCode];
|
||||
if (filterType && !isType[filterType](field)) return acc;
|
||||
acc.push({
|
||||
value: fieldCode,
|
||||
label: field.label + '(FC: ' + fieldCode + ')',
|
||||
});
|
||||
return acc;
|
||||
},
|
||||
[EMPTY_OPTION],
|
||||
);
|
||||
};
|
||||
|
||||
const extractNoSubTableFields = (layout: Layout) => {
|
||||
return layout.reduce((acc, each) => {
|
||||
if (each.type === 'SUBTABLE') {
|
||||
return acc;
|
||||
} else if (each.type === 'ROW') {
|
||||
acc.push(...each.fields.map((field: any) => field.code));
|
||||
} else if (each.type === 'GROUP') {
|
||||
acc.push(...extractNoSubTableFields(each.layout));
|
||||
}
|
||||
return acc;
|
||||
}, [] as string[]);
|
||||
};
|
||||
|
||||
// if (isType.SUBTABLE(field)) {
|
||||
// console.log(field.fields);
|
||||
// }
|
||||
|
||||
@@ -1,209 +0,0 @@
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
||||
typeof define === 'function' && define.amd ? define(['exports'], factory) :
|
||||
(factory((global.KintoneConfigHelper = {})));
|
||||
}(this, (function (exports) { 'use strict';
|
||||
|
||||
var ALL_FIELD_TYPES = [
|
||||
"SINGLE_LINE_TEXT",
|
||||
"MULTI_LINE_TEXT",
|
||||
"RICH_TEXT",
|
||||
"NUMBER",
|
||||
"CALC",
|
||||
"RADIO_BUTTON",
|
||||
"CHECK_BOX",
|
||||
"MULTI_SELECT",
|
||||
"DROP_DOWN",
|
||||
"DATE",
|
||||
"TIME",
|
||||
"DATETIME",
|
||||
"FILE",
|
||||
"LINK",
|
||||
"USER_SELECT",
|
||||
"ORGANIZATION_SELECT",
|
||||
"GROUP_SELECT",
|
||||
"REFERENCE_TABLE",
|
||||
"SPACER",
|
||||
"GROUP",
|
||||
"SUBTABLE",
|
||||
"RECORD_NUMBER",
|
||||
"CREATOR",
|
||||
"CREATED_TIME",
|
||||
"MODIFIER",
|
||||
"UPDATED_TIME"
|
||||
];
|
||||
function createKintoneClient(kintone) {
|
||||
function fetchFormInfoByFields() {
|
||||
var url = kintone.api.url("/k/v1/preview/app/form/fields", true);
|
||||
var body = {
|
||||
app: kintone.app.getId()
|
||||
};
|
||||
return kintone.api(url, "GET", body).then(function (resp) {
|
||||
return resp.properties;
|
||||
});
|
||||
}
|
||||
function fetchFormInfoByLayout() {
|
||||
var url = kintone.api.url("/k/v1/preview/app/form/layout", true);
|
||||
var body = {
|
||||
app: kintone.app.getId()
|
||||
};
|
||||
return kintone.api(url, "GET", body).then(function (resp) {
|
||||
return resp.layout;
|
||||
});
|
||||
}
|
||||
return {
|
||||
fetchFormInfoByFields: fetchFormInfoByFields,
|
||||
fetchFormInfoByLayout: fetchFormInfoByLayout
|
||||
};
|
||||
}
|
||||
|
||||
/*! *****************************************************************************
|
||||
Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
|
||||
this file except in compliance with the License. You may obtain a copy of the
|
||||
License at http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
|
||||
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
|
||||
MERCHANTABLITY OR NON-INFRINGEMENT.
|
||||
|
||||
See the Apache Version 2.0 License for specific language governing permissions
|
||||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
var __assign = function() {
|
||||
__assign = Object.assign || function __assign(t) {
|
||||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||||
s = arguments[i];
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
||||
}
|
||||
return t;
|
||||
};
|
||||
return __assign.apply(this, arguments);
|
||||
};
|
||||
|
||||
function __rest(s, e) {
|
||||
var t = {};
|
||||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
||||
t[p] = s[p];
|
||||
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
||||
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
|
||||
t[p[i]] = s[p[i]];
|
||||
return t;
|
||||
}
|
||||
|
||||
var NOT_EXIST_MESSAGE = "Either the specified field type does not exist, or this method cannot respond the specified field type.";
|
||||
var NOT_MATCH_MESSAGE = "Specify either characters or an array of characters for the getAllFields parameter.";
|
||||
|
||||
function createGetFields(kintoneClient, Promise_) {
|
||||
var Promise = Promise_;
|
||||
var fetchFormInfoByFields = kintoneClient.fetchFormInfoByFields, fetchFormInfoByLayout = kintoneClient.fetchFormInfoByLayout;
|
||||
function removeUnnecessaryProperties(field) {
|
||||
var _ = field.size, rest = __rest(field, ["size"]);
|
||||
return rest;
|
||||
}
|
||||
function getFieldInfo(layoutFields) {
|
||||
return layoutFields
|
||||
.filter(function (layout) { return layout.type !== "LABEL" && layout.type !== "HR"; })
|
||||
.map(function (field) { return removeUnnecessaryProperties(field); });
|
||||
}
|
||||
function modifiedLayoutResp(layoutList) {
|
||||
return layoutList.reduce(function (acc, layout) {
|
||||
switch (layout.type) {
|
||||
case "ROW":
|
||||
return acc.concat(getFieldInfo(layout.fields));
|
||||
case "GROUP":
|
||||
return acc.concat([
|
||||
{ type: layout.type, code: layout.code }
|
||||
], layout.layout
|
||||
.map(function (childLayout) { return getFieldInfo(childLayout.fields); })
|
||||
.reduce(function (acc, cur) { return acc.concat(cur); }, []));
|
||||
case "SUBTABLE":
|
||||
var layoutFieldsIncludeSubtableCode = layout.fields.map(function (layoutField) { return (__assign({}, layoutField, { subtableCode: layout.code })); });
|
||||
return acc.concat([
|
||||
{ type: layout.type, code: layout.code }
|
||||
], getFieldInfo(layoutFieldsIncludeSubtableCode));
|
||||
}
|
||||
}, []);
|
||||
}
|
||||
function getLabeledFields(fieldsResp) {
|
||||
return Object.keys(fieldsResp).reduce(function (acc, key) {
|
||||
var _a;
|
||||
var field = fieldsResp[key];
|
||||
if (field.type === "SUBTABLE") {
|
||||
return __assign({}, acc, getLabeledFields(field.fields));
|
||||
}
|
||||
return field.label ? __assign({}, acc, (_a = {}, _a[field.code] = field.label, _a)) : acc;
|
||||
}, {});
|
||||
}
|
||||
function addLabel(layoutFieldList, fieldsResp) {
|
||||
var labeledFields = getLabeledFields(fieldsResp);
|
||||
return layoutFieldList.map(function (layoutField) {
|
||||
return labeledFields[layoutField.code]
|
||||
? __assign({}, layoutField, { label: labeledFields[layoutField.code] }) : layoutField;
|
||||
});
|
||||
}
|
||||
function getLookupFieldKeys(fieldsResp) {
|
||||
return Object.keys(fieldsResp).filter(function (key) { return typeof fieldsResp[key].lookup !== "undefined"; });
|
||||
}
|
||||
function filterLookupField(layoutFieldList, fieldsResp) {
|
||||
var lookupFieldKeys = getLookupFieldKeys(fieldsResp);
|
||||
if (lookupFieldKeys.length === 0)
|
||||
;
|
||||
return layoutFieldList.filter(function (layoutField) {
|
||||
return !lookupFieldKeys.some(function (key) { return fieldsResp[key].code === layoutField.code; });
|
||||
});
|
||||
}
|
||||
function flattenFieldsForSubtable(fieldsResp) {
|
||||
return Object.keys(fieldsResp).reduce(function (fields, key) {
|
||||
var _a, _b;
|
||||
if (fieldsResp[key].type === "SUBTABLE") {
|
||||
return __assign({}, fields, (_a = {}, _a[key] = fieldsResp[key], _a), fieldsResp[key].fields);
|
||||
}
|
||||
return __assign({}, fields, (_b = {}, _b[key] = fieldsResp[key], _b));
|
||||
}, {});
|
||||
}
|
||||
function fetchAllFields(selectFieldTypes) {
|
||||
return Promise.all([fetchFormInfoByFields(), fetchFormInfoByLayout()]).then(function (_a) {
|
||||
var fieldsResp = _a[0], layoutResp = _a[1];
|
||||
var fieldList = addLabel(filterLookupField(modifiedLayoutResp(layoutResp), flattenFieldsForSubtable(fieldsResp)), fieldsResp);
|
||||
return selectFieldTypes
|
||||
? fieldList.filter(function (field) { return selectFieldTypes.indexOf(field.type) !== -1; })
|
||||
: fieldList;
|
||||
});
|
||||
}
|
||||
function validateFieldType(fieldType) {
|
||||
return ALL_FIELD_TYPES.some(function (type) { return type === fieldType; });
|
||||
}
|
||||
function validateGetAllFieldsArgument(fieldType) {
|
||||
if (typeof fieldType === "string") {
|
||||
return validateFieldType(fieldType) ? null : NOT_EXIST_MESSAGE;
|
||||
}
|
||||
if (Array.isArray(fieldType)) {
|
||||
return fieldType.every(validateFieldType) ? null : NOT_EXIST_MESSAGE;
|
||||
}
|
||||
return NOT_MATCH_MESSAGE;
|
||||
}
|
||||
function getFields(selectFieldType) {
|
||||
if (typeof selectFieldType === "undefined") {
|
||||
return fetchAllFields();
|
||||
}
|
||||
var error = validateGetAllFieldsArgument(selectFieldType);
|
||||
if (error) {
|
||||
return Promise.reject(new Error(error));
|
||||
}
|
||||
return fetchAllFields(Array.isArray(selectFieldType) ? selectFieldType : [selectFieldType]);
|
||||
}
|
||||
return getFields;
|
||||
}
|
||||
|
||||
var kintone = window.kintone;
|
||||
var kintoneClient = createKintoneClient(kintone);
|
||||
var getFields = createGetFields(kintoneClient, kintone.Promise);
|
||||
|
||||
exports.getFields = getFields;
|
||||
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
})));
|
||||
@@ -0,0 +1,62 @@
|
||||
import { KintoneRestAPIClient } from '@kintone/rest-api-client';
|
||||
|
||||
export const client = new KintoneRestAPIClient();
|
||||
|
||||
export type App = {
|
||||
appId: string;
|
||||
name: string;
|
||||
};
|
||||
|
||||
export type Properties = Awaited<ReturnType<typeof client.app.getFormFields>>['properties'];
|
||||
export type Layout = Awaited<ReturnType<typeof client.app.getFormLayout>>['layout'];
|
||||
|
||||
export type OneOf = Properties[string];
|
||||
export type FieldType = OneOf['type'];
|
||||
|
||||
const typeNames = [
|
||||
'RECORD_NUMBER',
|
||||
'CREATOR',
|
||||
'CREATED_TIME',
|
||||
'MODIFIER',
|
||||
'UPDATED_TIME',
|
||||
'CATEGORY',
|
||||
'STATUS',
|
||||
'STATUS_ASSIGNEE',
|
||||
'SINGLE_LINE_TEXT',
|
||||
'NUMBER',
|
||||
'CALC',
|
||||
'MULTI_LINE_TEXT',
|
||||
'RICH_TEXT',
|
||||
'LINK',
|
||||
'CHECK_BOX',
|
||||
'RADIO_BUTTON',
|
||||
'DROP_DOWN',
|
||||
'MULTI_SELECT',
|
||||
'FILE',
|
||||
'DATE',
|
||||
'TIME',
|
||||
'DATETIME',
|
||||
'USER_SELECT',
|
||||
'ORGANIZATION_SELECT',
|
||||
'GROUP_SELECT',
|
||||
'GROUP',
|
||||
'REFERENCE_TABLE',
|
||||
'SUBTABLE',
|
||||
] as const satisfies readonly FieldType[];
|
||||
|
||||
export const types = typeNames.reduce(
|
||||
(acc, name) => {
|
||||
acc[name] = name;
|
||||
return acc;
|
||||
},
|
||||
{} as Record<(typeof typeNames)[number], (typeof typeNames)[number]>,
|
||||
);
|
||||
|
||||
type ExtractOneOf<T extends FieldType> = Extract<OneOf, { type: T }>;
|
||||
function createTypeGuard<T extends FieldType>(type: T) {
|
||||
return (value: OneOf): value is ExtractOneOf<T> => value.type === type;
|
||||
}
|
||||
|
||||
export const isType = Object.fromEntries(
|
||||
typeNames.map((typeName) => [typeName, createTypeGuard(typeName as FieldType)]),
|
||||
) as { [K in (typeof typeNames)[number]]: (value: OneOf) => value is ExtractOneOf<K> };
|
||||
@@ -5,6 +5,7 @@
|
||||
"type": "APP",
|
||||
"desktop": {
|
||||
"js": [
|
||||
"js/kuc.min.js",
|
||||
"js/desktop.js"
|
||||
],
|
||||
"css": [
|
||||
@@ -16,14 +17,14 @@
|
||||
"config": {
|
||||
"html": "html/config.html",
|
||||
"js": [
|
||||
"js/config.js"
|
||||
"js/config.js"
|
||||
],
|
||||
"css": [
|
||||
"css/51-modern-default.css",
|
||||
"css/config.css"
|
||||
],
|
||||
"required_params": [
|
||||
"message"
|
||||
"buttonName"
|
||||
]
|
||||
},
|
||||
"name": {
|
||||
@@ -36,6 +37,7 @@
|
||||
},
|
||||
"mobile": {
|
||||
"js": [
|
||||
"js/kuc.min.js",
|
||||
"js/mobile.js"
|
||||
],
|
||||
"css": [
|
||||
|
||||
6
vue-project/my-kintone-plugin/src/types/index.d.ts
vendored
Normal file
6
vue-project/my-kintone-plugin/src/types/index.d.ts
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
declare global {
|
||||
const Kucs: {
|
||||
[version: string]: any;
|
||||
};
|
||||
}
|
||||
export {};
|
||||
@@ -1,45 +0,0 @@
|
||||
// https://cybozu.dev/ja/kintone/docs/overview/field-types/
|
||||
// https://cybozudev.kf5.com/hc/kb/article/201593/
|
||||
declare namespace kintone.fieldTypes {
|
||||
interface Table {
|
||||
type: 'SUBTABLE';
|
||||
value: any;
|
||||
}
|
||||
|
||||
interface DropDown {
|
||||
Item: {
|
||||
label: string,
|
||||
value: string,
|
||||
disabled?: boolean
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
declare namespace kintone {
|
||||
interface Event {
|
||||
detail: {
|
||||
value: string;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// lookup https://cybozudev.kf5.com/hc/kb/article/1611088/
|
||||
// import { KintoneRestAPIClient } from '@kintone/rest-api-client';
|
||||
// // 定义了一个Lookup类型,其中给lookup设置的是对象类型
|
||||
// // 下面还有展开,到具体用的时候还会定义的更详细,这里够用了
|
||||
// export type Lookup = {
|
||||
// label: string;
|
||||
// code: string;
|
||||
// lookup: object;
|
||||
// };
|
||||
// // 创建sdk客户端
|
||||
// const client = new KintoneRestAPIClient({
|
||||
// baseUrl: 'https://yourdomain.cybozu.cn',
|
||||
// });
|
||||
// // 获取一个应用中所有类型是Lookup的字段
|
||||
// export const getFormSetting = async () => {
|
||||
// const prop = (await client.app.getFormFields({ app: kintone.app.getId() as number })).properties;
|
||||
// const lookUpFields = Object.values(prop).filter((f) => 'lookup' in f) as Lookup[];
|
||||
// return lookUpFields;
|
||||
// };
|
||||
@@ -1,27 +1,48 @@
|
||||
import { condition } from './helper';
|
||||
import type { ConditionValue } from '@/js/conditions';
|
||||
import type { Layout, Properties } from '@/js/kintone-rest-api-client';
|
||||
import type { DropdownItem } from 'kintone-ui-component';
|
||||
|
||||
export interface FieldsJoinMapping {
|
||||
leftField: string;
|
||||
rightField: string;
|
||||
export interface FieldsJoinMapping<FieldType = string> {
|
||||
id: string;
|
||||
leftField: FieldType;
|
||||
rightField: FieldType;
|
||||
}
|
||||
|
||||
export interface WhereCondition {
|
||||
field: string;
|
||||
condition: (typeof condition)[keyof typeof condition];
|
||||
export interface WhereCondition<FieldType = string> {
|
||||
id: string;
|
||||
field: FieldType;
|
||||
condition: ConditionValue;
|
||||
data: string;
|
||||
}
|
||||
|
||||
export interface JoinTable {
|
||||
id: number; // 用于唯一区分
|
||||
export interface JoinTable<FieldType = string> {
|
||||
id: string;
|
||||
app: string; // 取得元アプリ
|
||||
table: string; // テーブル
|
||||
onConditions: FieldsJoinMapping[]; // 連結条件
|
||||
fieldsMapping: FieldsJoinMapping[]; // 取得フィールド
|
||||
whereConditions: WhereCondition[]; // 絞込条件
|
||||
onConditions: FieldsJoinMapping<FieldType>[]; // 連結条件
|
||||
fieldsMapping: FieldsJoinMapping<FieldType>[]; // 取得フィールド
|
||||
whereConditions: WhereCondition<FieldType>[]; // 絞込条件
|
||||
meta?: Properties;
|
||||
}
|
||||
|
||||
// 存储的数据格式
|
||||
export interface SavedData {
|
||||
buttonName: string;
|
||||
joinTables: JoinTable[];
|
||||
}
|
||||
}
|
||||
|
||||
export interface FieldsInfo {
|
||||
fields: Properties;
|
||||
layout: Layout;
|
||||
}
|
||||
|
||||
export interface CachedData {
|
||||
apps: DropdownItem[],
|
||||
currentAppFields: FieldsInfo,
|
||||
}
|
||||
|
||||
export interface CachedSelectedAppData {
|
||||
appFields: FieldsInfo,
|
||||
loading: boolean,
|
||||
table: JoinTable,
|
||||
}
|
||||
|
||||
3
vue-project/my-kintone-plugin/src/types/my-kintone.d.ts
vendored
Normal file
3
vue-project/my-kintone-plugin/src/types/my-kintone.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export interface KucEvent<T> {
|
||||
detail: T;
|
||||
}
|
||||
@@ -53,7 +53,8 @@ export default defineConfig({
|
||||
targets: [
|
||||
{ src: 'dist/index.html', dest: 'dist/src/html', rename: 'config.html' },
|
||||
{ src: 'src/manifest.json', dest: 'dist/src' },
|
||||
{ src: 'src/assets/*', dest: 'dist/src/image' },
|
||||
{ src: 'src/assets/*.js', dest: 'dist/src/js' },
|
||||
{ src: 'src/assets/*.png', dest: 'dist/src/image' },
|
||||
{ src: 'src/css/*', dest: 'dist/src/css' },
|
||||
],
|
||||
hook: 'writeBundle' // 指定在何时复制文件
|
||||
@@ -74,11 +75,11 @@ export default defineConfig({
|
||||
},
|
||||
output: {
|
||||
entryFileNames: (chunkInfo) => {
|
||||
// console.log(chunkInfo);
|
||||
return 'src/js/[name].js'; // 默认处理为 JS 文件
|
||||
return 'src/js/[name].js'; // 默认处理为 JS 文件
|
||||
},
|
||||
assetFileNames: 'src/[ext]/[name].[ext]',
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
sourcemap:'inline',
|
||||
}
|
||||
})
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
|
||||
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
|
||||
|
||||
"@babel/parser@^7.15.8", "@babel/parser@^7.25.3":
|
||||
"@babel/parser@^7.25.3":
|
||||
version "7.26.3"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz"
|
||||
integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==
|
||||
@@ -74,6 +74,121 @@
|
||||
globals "^15.13.0"
|
||||
typescript-eslint "^8.17.0"
|
||||
|
||||
"@esbuild/aix-ppc64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c"
|
||||
integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==
|
||||
|
||||
"@esbuild/android-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0"
|
||||
integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==
|
||||
|
||||
"@esbuild/android-arm@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810"
|
||||
integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==
|
||||
|
||||
"@esbuild/android-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705"
|
||||
integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==
|
||||
|
||||
"@esbuild/darwin-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd"
|
||||
integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==
|
||||
|
||||
"@esbuild/darwin-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107"
|
||||
integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==
|
||||
|
||||
"@esbuild/freebsd-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7"
|
||||
integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==
|
||||
|
||||
"@esbuild/freebsd-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93"
|
||||
integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==
|
||||
|
||||
"@esbuild/linux-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75"
|
||||
integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==
|
||||
|
||||
"@esbuild/linux-arm@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d"
|
||||
integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==
|
||||
|
||||
"@esbuild/linux-ia32@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb"
|
||||
integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==
|
||||
|
||||
"@esbuild/linux-loong64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c"
|
||||
integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==
|
||||
|
||||
"@esbuild/linux-mips64el@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3"
|
||||
integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==
|
||||
|
||||
"@esbuild/linux-ppc64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e"
|
||||
integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==
|
||||
|
||||
"@esbuild/linux-riscv64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25"
|
||||
integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==
|
||||
|
||||
"@esbuild/linux-s390x@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319"
|
||||
integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==
|
||||
|
||||
"@esbuild/linux-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef"
|
||||
integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==
|
||||
|
||||
"@esbuild/netbsd-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c"
|
||||
integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==
|
||||
|
||||
"@esbuild/openbsd-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2"
|
||||
integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==
|
||||
|
||||
"@esbuild/openbsd-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf"
|
||||
integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==
|
||||
|
||||
"@esbuild/sunos-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4"
|
||||
integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==
|
||||
|
||||
"@esbuild/win32-arm64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b"
|
||||
integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==
|
||||
|
||||
"@esbuild/win32-ia32@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103"
|
||||
integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==
|
||||
|
||||
"@esbuild/win32-x64@0.24.0":
|
||||
version "0.24.0"
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz"
|
||||
@@ -454,7 +569,7 @@
|
||||
"@nodelib/fs.stat" "2.0.5"
|
||||
run-parallel "^1.1.9"
|
||||
|
||||
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
|
||||
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
|
||||
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
||||
@@ -486,7 +601,7 @@
|
||||
unbzip2-stream "^1.4.3"
|
||||
yargs "^17.7.2"
|
||||
|
||||
"@rollup/pluginutils@^5.1.4", "@rollup/pluginutils@5":
|
||||
"@rollup/pluginutils@5", "@rollup/pluginutils@^5.1.4":
|
||||
version "5.1.4"
|
||||
resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz"
|
||||
integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==
|
||||
@@ -495,6 +610,96 @@
|
||||
estree-walker "^2.0.2"
|
||||
picomatch "^4.0.2"
|
||||
|
||||
"@rollup/rollup-android-arm-eabi@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz#7f4c4d8cd5ccab6e95d6750dbe00321c1f30791e"
|
||||
integrity sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==
|
||||
|
||||
"@rollup/rollup-android-arm64@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz#17ea71695fb1518c2c324badbe431a0bd1879f2d"
|
||||
integrity sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==
|
||||
|
||||
"@rollup/rollup-darwin-arm64@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz#dac0f0d0cfa73e7d5225ae6d303c13c8979e7999"
|
||||
integrity sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==
|
||||
|
||||
"@rollup/rollup-darwin-x64@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz#8f63baa1d31784904a380d2e293fa1ddf53dd4a2"
|
||||
integrity sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==
|
||||
|
||||
"@rollup/rollup-freebsd-arm64@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz#30ed247e0df6e8858cdc6ae4090e12dbeb8ce946"
|
||||
integrity sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==
|
||||
|
||||
"@rollup/rollup-freebsd-x64@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz#57846f382fddbb508412ae07855b8a04c8f56282"
|
||||
integrity sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz#378ca666c9dae5e6f94d1d351e7497c176e9b6df"
|
||||
integrity sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz#a692eff3bab330d5c33a5d5813a090c15374cddb"
|
||||
integrity sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz#6b1719b76088da5ac1ae1feccf48c5926b9e3db9"
|
||||
integrity sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz#865baf5b6f5ff67acb32e5a359508828e8dc5788"
|
||||
integrity sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==
|
||||
|
||||
"@rollup/rollup-linux-loongarch64-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz#23c6609ba0f7fa7a7f2038b6b6a08555a5055a87"
|
||||
integrity sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz#652ef0d9334a9f25b9daf85731242801cb0fc41c"
|
||||
integrity sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz#1eb6651839ee6ebca64d6cc64febbd299e95e6bd"
|
||||
integrity sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz#015c52293afb3ff2a293cf0936b1d43975c1e9cd"
|
||||
integrity sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz#b83001b5abed2bcb5e2dbeec6a7e69b194235c1e"
|
||||
integrity sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==
|
||||
|
||||
"@rollup/rollup-linux-x64-musl@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz#6cc7c84cd4563737f8593e66f33b57d8e228805b"
|
||||
integrity sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz#631ffeee094d71279fcd1fe8072bdcf25311bc11"
|
||||
integrity sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz#06d1d60d5b9f718e8a6c4a43f82e3f9e3254587f"
|
||||
integrity sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc@4.28.1":
|
||||
version "4.28.1"
|
||||
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz"
|
||||
@@ -524,7 +729,7 @@
|
||||
resolved "https://registry.npmmirror.com/@types/doctrine/-/doctrine-0.0.9.tgz"
|
||||
integrity sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==
|
||||
|
||||
"@types/estree@^1.0.0", "@types/estree@^1.0.6", "@types/estree@1.0.6":
|
||||
"@types/estree@1.0.6", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
|
||||
version "1.0.6"
|
||||
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
|
||||
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
||||
@@ -571,7 +776,7 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/node@*", "@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^22.5.5":
|
||||
"@types/node@*", "@types/node@^22.5.5":
|
||||
version "22.10.2"
|
||||
resolved "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz"
|
||||
integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==
|
||||
@@ -600,6 +805,21 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@8.20.0", "@typescript-eslint/eslint-plugin@^8.17.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz"
|
||||
integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==
|
||||
dependencies:
|
||||
"@eslint-community/regexpp" "^4.10.0"
|
||||
"@typescript-eslint/scope-manager" "8.20.0"
|
||||
"@typescript-eslint/type-utils" "8.20.0"
|
||||
"@typescript-eslint/utils" "8.20.0"
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
graphemer "^1.4.0"
|
||||
ignore "^5.3.1"
|
||||
natural-compare "^1.4.0"
|
||||
ts-api-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^7.4.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz"
|
||||
@@ -615,48 +835,7 @@
|
||||
natural-compare "^1.4.0"
|
||||
ts-api-utils "^1.3.0"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^8.17.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz"
|
||||
integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==
|
||||
dependencies:
|
||||
"@eslint-community/regexpp" "^4.10.0"
|
||||
"@typescript-eslint/scope-manager" "8.20.0"
|
||||
"@typescript-eslint/type-utils" "8.20.0"
|
||||
"@typescript-eslint/utils" "8.20.0"
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
graphemer "^1.4.0"
|
||||
ignore "^5.3.1"
|
||||
natural-compare "^1.4.0"
|
||||
ts-api-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/eslint-plugin@8.20.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.20.0.tgz"
|
||||
integrity sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==
|
||||
dependencies:
|
||||
"@eslint-community/regexpp" "^4.10.0"
|
||||
"@typescript-eslint/scope-manager" "8.20.0"
|
||||
"@typescript-eslint/type-utils" "8.20.0"
|
||||
"@typescript-eslint/utils" "8.20.0"
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
graphemer "^1.4.0"
|
||||
ignore "^5.3.1"
|
||||
natural-compare "^1.4.0"
|
||||
ts-api-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@^7.4.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.18.0.tgz"
|
||||
integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager" "7.18.0"
|
||||
"@typescript-eslint/types" "7.18.0"
|
||||
"@typescript-eslint/typescript-estree" "7.18.0"
|
||||
"@typescript-eslint/visitor-keys" "7.18.0"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.17.0", "@typescript-eslint/parser@8.20.0":
|
||||
"@typescript-eslint/parser@8.20.0", "@typescript-eslint/parser@^8.17.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.20.0.tgz"
|
||||
integrity sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==
|
||||
@@ -667,13 +846,16 @@
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/scope-manager@^8.1.0", "@typescript-eslint/scope-manager@8.20.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz"
|
||||
integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==
|
||||
"@typescript-eslint/parser@^7.4.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-7.18.0.tgz"
|
||||
integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "8.20.0"
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
"@typescript-eslint/scope-manager" "7.18.0"
|
||||
"@typescript-eslint/types" "7.18.0"
|
||||
"@typescript-eslint/typescript-estree" "7.18.0"
|
||||
"@typescript-eslint/visitor-keys" "7.18.0"
|
||||
debug "^4.3.4"
|
||||
|
||||
"@typescript-eslint/scope-manager@7.18.0":
|
||||
version "7.18.0"
|
||||
@@ -683,6 +865,14 @@
|
||||
"@typescript-eslint/types" "7.18.0"
|
||||
"@typescript-eslint/visitor-keys" "7.18.0"
|
||||
|
||||
"@typescript-eslint/scope-manager@8.20.0", "@typescript-eslint/scope-manager@^8.1.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-8.20.0.tgz"
|
||||
integrity sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==
|
||||
dependencies:
|
||||
"@typescript-eslint/types" "8.20.0"
|
||||
"@typescript-eslint/visitor-keys" "8.20.0"
|
||||
|
||||
"@typescript-eslint/type-utils@7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz"
|
||||
@@ -741,26 +931,6 @@
|
||||
semver "^7.6.0"
|
||||
ts-api-utils "^2.0.0"
|
||||
|
||||
"@typescript-eslint/utils@^8.1.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.20.0.tgz"
|
||||
integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
"@typescript-eslint/scope-manager" "8.20.0"
|
||||
"@typescript-eslint/types" "8.20.0"
|
||||
"@typescript-eslint/typescript-estree" "8.20.0"
|
||||
|
||||
"@typescript-eslint/utils@^8.13.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.20.0.tgz"
|
||||
integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils" "^4.4.0"
|
||||
"@typescript-eslint/scope-manager" "8.20.0"
|
||||
"@typescript-eslint/types" "8.20.0"
|
||||
"@typescript-eslint/typescript-estree" "8.20.0"
|
||||
|
||||
"@typescript-eslint/utils@7.18.0":
|
||||
version "7.18.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-7.18.0.tgz"
|
||||
@@ -771,7 +941,7 @@
|
||||
"@typescript-eslint/types" "7.18.0"
|
||||
"@typescript-eslint/typescript-estree" "7.18.0"
|
||||
|
||||
"@typescript-eslint/utils@8.20.0":
|
||||
"@typescript-eslint/utils@8.20.0", "@typescript-eslint/utils@^8.1.0", "@typescript-eslint/utils@^8.13.0":
|
||||
version "8.20.0"
|
||||
resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-8.20.0.tgz"
|
||||
integrity sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==
|
||||
@@ -807,7 +977,7 @@
|
||||
resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz"
|
||||
integrity sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==
|
||||
|
||||
"@volar/language-core@~2.4.11", "@volar/language-core@2.4.11":
|
||||
"@volar/language-core@2.4.11", "@volar/language-core@~2.4.11":
|
||||
version "2.4.11"
|
||||
resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.11.tgz"
|
||||
integrity sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==
|
||||
@@ -839,7 +1009,7 @@
|
||||
estree-walker "^2.0.2"
|
||||
source-map-js "^1.2.0"
|
||||
|
||||
"@vue/compiler-dom@^3.5.0", "@vue/compiler-dom@3.5.13":
|
||||
"@vue/compiler-dom@3.5.13", "@vue/compiler-dom@^3.5.0":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz"
|
||||
integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==
|
||||
@@ -930,7 +1100,7 @@
|
||||
"@vue/compiler-ssr" "3.5.13"
|
||||
"@vue/shared" "3.5.13"
|
||||
|
||||
"@vue/shared@^3.5.0", "@vue/shared@3.5.13":
|
||||
"@vue/shared@3.5.13", "@vue/shared@^3.5.0":
|
||||
version "3.5.13"
|
||||
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz"
|
||||
integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
|
||||
@@ -950,7 +1120,7 @@ acorn-jsx@^5.3.2:
|
||||
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0, acorn@^8.9.0:
|
||||
acorn@^8.14.0, acorn@^8.9.0:
|
||||
version "8.14.0"
|
||||
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz"
|
||||
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
|
||||
@@ -1187,7 +1357,7 @@ balanced-match@^1.0.0:
|
||||
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
bare-events@*, bare-events@^2.0.0, bare-events@^2.2.0:
|
||||
bare-events@^2.0.0, bare-events@^2.2.0:
|
||||
version "2.5.4"
|
||||
resolved "https://registry.npmmirror.com/bare-events/-/bare-events-2.5.4.tgz"
|
||||
integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==
|
||||
@@ -1480,6 +1650,13 @@ de-indent@^1.0.2:
|
||||
resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz"
|
||||
integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
|
||||
|
||||
debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz"
|
||||
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
||||
dependencies:
|
||||
ms "^2.1.3"
|
||||
|
||||
debug@^3.2.7:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz"
|
||||
@@ -1487,13 +1664,6 @@ debug@^3.2.7:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@4:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz"
|
||||
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
||||
dependencies:
|
||||
ms "^2.1.3"
|
||||
|
||||
decamelize-keys@^1.1.0:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmmirror.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz"
|
||||
@@ -1549,7 +1719,7 @@ denodeify@^1.2.1:
|
||||
resolved "https://registry.npmmirror.com/denodeify/-/denodeify-1.2.1.tgz"
|
||||
integrity sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==
|
||||
|
||||
devtools-protocol@*, devtools-protocol@0.0.1367902:
|
||||
devtools-protocol@0.0.1367902:
|
||||
version "0.0.1367902"
|
||||
resolved "https://registry.npmmirror.com/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz"
|
||||
integrity sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==
|
||||
@@ -1806,7 +1976,7 @@ eslint-compat-utils@^0.5.1:
|
||||
dependencies:
|
||||
semver "^7.5.4"
|
||||
|
||||
eslint-config-prettier@*, eslint-config-prettier@^9.1.0:
|
||||
eslint-config-prettier@^9.1.0:
|
||||
version "9.1.0"
|
||||
resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz"
|
||||
integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
|
||||
@@ -2015,7 +2185,7 @@ eslint-visitor-keys@^4.2.0:
|
||||
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
|
||||
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
|
||||
|
||||
"eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^8.56.0, eslint@^8.57.0, "eslint@^8.57.0 || ^9.0.0", eslint@>=4.19.1, eslint@>=5.16.0, eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=8, eslint@>=8.0.0, eslint@>=8.23.0, eslint@>=8.40.0, eslint@>=8.56.0:
|
||||
eslint@^8.57.0:
|
||||
version "8.57.1"
|
||||
resolved "https://registry.npmmirror.com/eslint/-/eslint-8.57.1.tgz"
|
||||
integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
|
||||
@@ -2059,7 +2229,7 @@ eslint-visitor-keys@^4.2.0:
|
||||
strip-ansi "^6.0.1"
|
||||
text-table "^0.2.0"
|
||||
|
||||
"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^8.56.0 || ^9.0.0-0", eslint@^9.13.0:
|
||||
eslint@^9.13.0:
|
||||
version "9.18.0"
|
||||
resolved "https://registry.npmmirror.com/eslint/-/eslint-9.18.0.tgz"
|
||||
integrity sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==
|
||||
@@ -2335,6 +2505,11 @@ fs.realpath@^1.0.0:
|
||||
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||
|
||||
fsevents@~2.3.2, fsevents@~2.3.3:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
|
||||
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz"
|
||||
@@ -2456,12 +2631,7 @@ globals@^14.0.0:
|
||||
resolved "https://registry.npmmirror.com/globals/-/globals-14.0.0.tgz"
|
||||
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
|
||||
|
||||
globals@^15.11.0:
|
||||
version "15.14.0"
|
||||
resolved "https://registry.npmmirror.com/globals/-/globals-15.14.0.tgz"
|
||||
integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==
|
||||
|
||||
globals@^15.13.0:
|
||||
globals@^15.11.0, globals@^15.13.0:
|
||||
version "15.14.0"
|
||||
resolved "https://registry.npmmirror.com/globals/-/globals-15.14.0.tgz"
|
||||
integrity sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==
|
||||
@@ -2474,18 +2644,6 @@ globalthis@^1.0.4:
|
||||
define-properties "^1.2.1"
|
||||
gopd "^1.0.1"
|
||||
|
||||
globby@^11.1.0:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz"
|
||||
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||
dependencies:
|
||||
array-union "^2.1.0"
|
||||
dir-glob "^3.0.1"
|
||||
fast-glob "^3.2.9"
|
||||
ignore "^5.2.0"
|
||||
merge2 "^1.4.1"
|
||||
slash "^3.0.0"
|
||||
|
||||
globby@10.0.1:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz"
|
||||
@@ -2500,6 +2658,18 @@ globby@10.0.1:
|
||||
merge2 "^1.2.3"
|
||||
slash "^3.0.0"
|
||||
|
||||
globby@^11.1.0:
|
||||
version "11.1.0"
|
||||
resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz"
|
||||
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||
dependencies:
|
||||
array-union "^2.1.0"
|
||||
dir-glob "^3.0.1"
|
||||
fast-glob "^3.2.9"
|
||||
ignore "^5.2.0"
|
||||
merge2 "^1.4.1"
|
||||
slash "^3.0.0"
|
||||
|
||||
gopd@^1.0.1, gopd@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz"
|
||||
@@ -3216,14 +3386,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
minimatch@^9.0.3, minimatch@^9.0.4:
|
||||
version "9.0.5"
|
||||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz"
|
||||
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^9.0.5:
|
||||
minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
|
||||
version "9.0.5"
|
||||
resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz"
|
||||
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
|
||||
@@ -3574,17 +3737,7 @@ picocolors@^1.0.0, picocolors@^1.1.1:
|
||||
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
|
||||
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
||||
|
||||
picomatch@^2.0.4:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
picomatch@^2.2.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
picomatch@^2.3.1:
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
@@ -3629,7 +3782,7 @@ prettier-linter-helpers@^1.0.0:
|
||||
dependencies:
|
||||
fast-diff "^1.1.2"
|
||||
|
||||
prettier@^3.3.3, prettier@>=3.0.0:
|
||||
prettier@^3.3.3:
|
||||
version "3.4.2"
|
||||
resolved "https://registry.npmmirror.com/prettier/-/prettier-3.4.2.tgz"
|
||||
integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==
|
||||
@@ -3869,7 +4022,7 @@ rollup-plugin-css-only@^4.5.2:
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "5"
|
||||
|
||||
rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^4.23.0, rollup@<5:
|
||||
rollup@^4.23.0:
|
||||
version "4.28.1"
|
||||
resolved "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz"
|
||||
integrity sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==
|
||||
@@ -3937,12 +4090,12 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
|
||||
resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
semver@^6.1.0:
|
||||
version "6.3.1"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
"semver@2 || 3 || 4 || 5":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
|
||||
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
|
||||
|
||||
semver@^6.3.1:
|
||||
semver@^6.1.0, semver@^6.3.1:
|
||||
version "6.3.1"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
@@ -3952,11 +4105,6 @@ semver@^7.3.4, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3:
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz"
|
||||
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
|
||||
|
||||
"semver@2 || 3 || 4 || 5":
|
||||
version "5.7.2"
|
||||
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz"
|
||||
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
|
||||
|
||||
set-function-length@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz"
|
||||
@@ -4442,7 +4590,7 @@ typescript-eslint@^8.17.0:
|
||||
"@typescript-eslint/parser" "8.20.0"
|
||||
"@typescript-eslint/utils" "8.20.0"
|
||||
|
||||
typescript@*, typescript@^5.7.3, typescript@>=4.2.0, "typescript@>=4.7.5 || ^5.0.0", typescript@>=4.8.4, "typescript@>=4.8.4 <5.8.0", typescript@>=4.9.5, typescript@>=5.0.0, typescript@5.x:
|
||||
typescript@^5.7.3:
|
||||
version "5.7.3"
|
||||
resolved "https://registry.npmmirror.com/typescript/-/typescript-5.7.3.tgz"
|
||||
integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
|
||||
@@ -4524,7 +4672,7 @@ validate-npm-package-license@^3.0.1:
|
||||
spdx-correct "^3.0.0"
|
||||
spdx-expression-parse "^3.0.0"
|
||||
|
||||
"vite@^5.0.0 || ^6.0.0", vite@^6.0.1:
|
||||
vite@^6.0.1:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.npmjs.org/vite/-/vite-6.0.3.tgz"
|
||||
integrity sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==
|
||||
@@ -4557,7 +4705,7 @@ vue-tsc@^2.1.10:
|
||||
"@volar/typescript" "~2.4.11"
|
||||
"@vue/language-core" "2.2.0"
|
||||
|
||||
vue@^3.0.0, vue@^3.2.25, vue@^3.4.0, vue@^3.5.13, "vue@2 || 3", vue@3.5.13:
|
||||
vue@^3.5.13:
|
||||
version "3.5.13"
|
||||
resolved "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz"
|
||||
integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==
|
||||
|
||||
Reference in New Issue
Block a user