Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-09-03 18:28:26 +08:00
commit 78a7491173
14 changed files with 1492 additions and 94 deletions

View file

@ -5,7 +5,8 @@
"Properties": {
"id": "20230805232134-3d6mx2k",
"title": "Search asset content",
"updated": "20231026085302"
"type": "doc",
"updated": "20250903163017"
},
"Children": [
{
@ -46,7 +47,7 @@
"ListData": {},
"Properties": {
"id": "20230818102341-ny18orr",
"updated": "20230818102341"
"updated": "20250903163017"
},
"Children": [
{
@ -58,7 +59,7 @@
},
"Properties": {
"id": "20230818102341-eg8labw",
"updated": "20230818102341"
"updated": "20250903163017"
},
"Children": [
{
@ -66,12 +67,318 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102341-izc16tp",
"updated": "20230818102426"
"updated": "20250903163017"
},
"Children": [
{
"Type": "NodeText",
"Data": "Text files (.txt, .md, .json, .log, .sql, .html, .xml, .java, .h, .c, .cpp, .go, .rs, .swift, .kt, . py, .php, .js, .css, .ts, .sh, .bat, .cmd, .ini, .yaml, .rst, .adoc, .textile, .opml, .org, .wiki)"
"Data": "Text files ("
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".txt"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".md"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".markdown"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".json"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".log"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sql"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".html"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".java"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".h"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".c"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cpp"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".go"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rs"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".swift"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".kt"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".py"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".php"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".js"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".css"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ts"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sh"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".bat"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cmd"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ini"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".yaml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rst"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".adoc"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".textile"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".opml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".org"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".wiki"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".epub"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cs"
},
{
"Type": "NodeText",
"Data": ")"
}
]
}
@ -85,7 +392,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818102427-os9c4nm"
"id": "20230818102427-os9c4nm",
"updated": "20250903162955"
},
"Children": [
{
@ -93,12 +401,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102427-dyojs23",
"updated": "20230818102429"
"updated": "20250903162955"
},
"Children": [
{
"Type": "NodeText",
"Data": ".docx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".docx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -112,7 +429,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818102430-sw9p4uf"
"id": "20230818102430-sw9p4uf",
"updated": "20250903162956"
},
"Children": [
{
@ -120,12 +438,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102430-boci4wf",
"updated": "20230818102431"
"updated": "20250903162956"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pptx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pptx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -139,7 +466,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818102432-6uclx4n"
"id": "20230818102432-6uclx4n",
"updated": "20250903162957"
},
"Children": [
{
@ -147,12 +475,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102432-3n95b7k",
"updated": "20230818102433"
"updated": "20250903162957"
},
"Children": [
{
"Type": "NodeText",
"Data": ".xlsx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xlsx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -166,19 +503,30 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818102434-9xgwy7r"
"id": "20230818102434-9xgwy7r",
"updated": "20250903162959"
},
"Children": [
{
"ID": "20230818102434-1efdkw9",
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102434-1efdkw9"
"id": "20230818102434-1efdkw9",
"updated": "20250903162959"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pdf"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pdf"
},
{
"Type": "NodeText",
"Data": ""
}
]
}

View file

@ -5,7 +5,8 @@
"Properties": {
"id": "20230805230218-aea8icj",
"title": "搜索资源文件内容",
"updated": "20231026085139"
"type": "doc",
"updated": "20250903162923"
},
"Children": [
{
@ -46,7 +47,7 @@
"ListData": {},
"Properties": {
"id": "20230818101450-4a6lzdg",
"updated": "20230818101545"
"updated": "20250903162923"
},
"Children": [
{
@ -58,7 +59,7 @@
},
"Properties": {
"id": "20230818101510-rfacaaf",
"updated": "20230818101800"
"updated": "20250903162915"
},
"Children": [
{
@ -66,12 +67,318 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818101510-duzarcy",
"updated": "20230818101800"
"updated": "20250903162915"
},
"Children": [
{
"Type": "NodeText",
"Data": "文本文件(.txt、.md、.json、.log、.sql、.html、.xml、.java、.h、.c、.cpp、.go、.rs、.swift、.kt、.py、.php、.js、.css、.ts、.sh、.bat、.cmd、.ini、.yaml、.rst、.adoc、.textile、.opml、.org、.wiki"
"Data": "文本文件("
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".txt"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".md"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".markdown"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".json"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".log"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sql"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".html"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".java"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".h"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".c"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cpp"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".go"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rs"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".swift"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".kt"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".py"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".php"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".js"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".css"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ts"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sh"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".bat"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cmd"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ini"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".yaml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rst"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".adoc"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".textile"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".opml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".org"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".wiki"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".epub"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cs"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -85,7 +392,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818101513-x5baw16"
"id": "20230818101513-x5baw16",
"updated": "20250903162918"
},
"Children": [
{
@ -93,12 +401,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818101513-558ntbl",
"updated": "20230818101520"
"updated": "20250903162918"
},
"Children": [
{
"Type": "NodeText",
"Data": ".docx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".docx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -112,7 +429,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818101521-n1r8yqv"
"id": "20230818101521-n1r8yqv",
"updated": "20250903162920"
},
"Children": [
{
@ -120,12 +438,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818101521-mutuxqo",
"updated": "20230818101526"
"updated": "20250903162920"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pptx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pptx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -139,7 +466,8 @@
"Marker": "Kg=="
},
"Properties": {
"id": "20230818101526-oortrwo"
"id": "20230818101526-oortrwo",
"updated": "20250903162921"
},
"Children": [
{
@ -147,12 +475,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818101526-t4uvb3w",
"updated": "20230818101529"
"updated": "20250903162921"
},
"Children": [
{
"Type": "NodeText",
"Data": ".xlsx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xlsx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -167,7 +504,7 @@
},
"Properties": {
"id": "20230818101543-ejcoq3j",
"updated": "20230818101545"
"updated": "20250903162923"
},
"Children": [
{
@ -175,12 +512,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818101543-36waszk",
"updated": "20230818101545"
"updated": "20250903162923"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pdf"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pdf"
},
{
"Type": "NodeText",
"Data": ""
}
]
}

View file

@ -5,7 +5,8 @@
"Properties": {
"id": "20230805232920-5fdco36",
"title": "搜索資源文件內容",
"updated": "20231026085346"
"type": "doc",
"updated": "20250903162952"
},
"Children": [
{
@ -46,7 +47,7 @@
"ListData": {},
"Properties": {
"id": "20230818102501-gq9fesz",
"updated": "20230818102519"
"updated": "20250903162952"
},
"Children": [
{
@ -58,7 +59,7 @@
},
"Properties": {
"id": "20230818102501-2qu8flm",
"updated": "20230818102519"
"updated": "20250903162947"
},
"Children": [
{
@ -66,12 +67,318 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102501-p1l631d",
"updated": "20230818102519"
"updated": "20250903162947"
},
"Children": [
{
"Type": "NodeText",
"Data": "文本文件(.txt、.md、.json、.log、.sql、.html、.xml、.java、.h、.c、.cpp、.go、.rs、.swift、.kt、.py、.php、.js、.css、.ts、.sh、.bat、.cmd、.ini、.yaml、.rst、.adoc、.textile、.opml、.org、.wiki"
"Data": "文本文件("
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".txt"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".md"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".markdown"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".json"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".log"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sql"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".html"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".java"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".h"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".c"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cpp"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".go"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rs"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".swift"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".kt"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".py"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".php"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".js"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".css"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ts"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sh"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".bat"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cmd"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ini"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".yaml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rst"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".adoc"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".textile"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".opml"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".org"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".wiki"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".epub"
},
{
"Type": "NodeText",
"Data": "​、"
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cs"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -86,7 +393,7 @@
},
"Properties": {
"id": "20230818102501-8jue7y8",
"updated": "20230818102501"
"updated": "20250903162949"
},
"Children": [
{
@ -94,12 +401,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102501-fom9qf4",
"updated": "20230818102501"
"updated": "20250903162949"
},
"Children": [
{
"Type": "NodeText",
"Data": ".docx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".docx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -114,7 +430,7 @@
},
"Properties": {
"id": "20230818102501-609htp0",
"updated": "20230818102501"
"updated": "20250903162950"
},
"Children": [
{
@ -122,12 +438,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102501-fu9up7s",
"updated": "20230818102501"
"updated": "20250903162950"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pptx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pptx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -142,7 +467,7 @@
},
"Properties": {
"id": "20230818102501-cjozdv1",
"updated": "20230818102501"
"updated": "20250903162951"
},
"Children": [
{
@ -150,12 +475,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102501-ewonoc2",
"updated": "20230818102501"
"updated": "20250903162951"
},
"Children": [
{
"Type": "NodeText",
"Data": ".xlsx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xlsx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -170,7 +504,7 @@
},
"Properties": {
"id": "20230818102501-ljun2c0",
"updated": "20230818102501"
"updated": "20250903162952"
},
"Children": [
{
@ -178,12 +512,21 @@
"Type": "NodeParagraph",
"Properties": {
"id": "20230818102501-w0e68xh",
"updated": "20230818102501"
"updated": "20250903162952"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pdf"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pdf"
},
{
"Type": "NodeText",
"Data": ""
}
]
}

View file

@ -7,7 +7,7 @@
"id": "20240530101000-5k5d5i3",
"title": "アセットの内容検索",
"type": "doc",
"updated": "20240530101000"
"updated": "20250903163024"
},
"Children": [
{
@ -50,7 +50,7 @@
"Properties": {
"ID": "20240530101000-gui4fuq",
"id": "20240530101000-dy607mr",
"updated": "20240530101000"
"updated": "20250903163024"
},
"Children": [
{
@ -63,21 +63,326 @@
"Properties": {
"ID": "20240530101000-d6fzgev",
"id": "20240530101000-423ygdo",
"updated": "20240530101000"
"updated": "20250903163024"
},
"Children": [
{
"ID": "20240530101000-5htsgo0",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-lunnpt0",
"id": "20240530101000-5htsgo0",
"updated": "20240530101000"
"updated": "20250903163024"
},
"Children": [
{
"Type": "NodeText",
"Data": "テキストファイル (.txt, .md, .json, .log, .sql, .html, .xml, .java, .h, .c, .cpp, .go, .rs, .swift, .kt, . py, .php, .js, .css, .ts, .sh, .bat, .cmd, .ini, .yaml, .rst, .adoc, .textile, .opml, .org, .wiki)"
"Data": "テキストファイル ("
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".txt"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".md"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".markdown"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".json"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".log"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sql"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".html"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".java"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".h"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".c"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cpp"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".go"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rs"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".swift"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".kt"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".py"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".php"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".js"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".css"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ts"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".sh"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".bat"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cmd"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".ini"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".yaml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".rst"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".adoc"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".textile"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".opml"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".org"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".wiki"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".epub"
},
{
"Type": "NodeText",
"Data": ", "
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".cs"
},
{
"Type": "NodeText",
"Data": ")"
}
]
}
@ -92,21 +397,30 @@
},
"Properties": {
"ID": "20240530101000-jhc3a4i",
"id": "20240530101000-ddgjyye"
"id": "20240530101000-ddgjyye",
"updated": "20250903163001"
},
"Children": [
{
"ID": "20240530101000-alu1ygl",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-cznhpu3",
"id": "20240530101000-alu1ygl",
"updated": "20240530101000"
"updated": "20250903163001"
},
"Children": [
{
"Type": "NodeText",
"Data": ".docx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".docx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -121,21 +435,30 @@
},
"Properties": {
"ID": "20240530101000-0t3jtob",
"id": "20240530101000-t8ewu5o"
"id": "20240530101000-t8ewu5o",
"updated": "20250903163002"
},
"Children": [
{
"ID": "20240530101000-afub9kt",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-isl867u",
"id": "20240530101000-afub9kt",
"updated": "20240530101000"
"updated": "20250903163002"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pptx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pptx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -150,21 +473,30 @@
},
"Properties": {
"ID": "20240530101000-79w2hmi",
"id": "20240530101000-6c3or97"
"id": "20240530101000-6c3or97",
"updated": "20250903163003"
},
"Children": [
{
"ID": "20240530101000-p5qs8ir",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-zo7jhc4",
"id": "20240530101000-p5qs8ir",
"updated": "20240530101000"
"updated": "20250903163003"
},
"Children": [
{
"Type": "NodeText",
"Data": ".xlsx"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".xlsx"
},
{
"Type": "NodeText",
"Data": ""
}
]
}
@ -179,20 +511,30 @@
},
"Properties": {
"ID": "20240530101000-nm831gm",
"id": "20240530101000-napqxcr"
"id": "20240530101000-napqxcr",
"updated": "20250903163004"
},
"Children": [
{
"ID": "20240530101000-vknnawk",
"Type": "NodeParagraph",
"Properties": {
"ID": "20240530101000-l05rbi9",
"id": "20240530101000-vknnawk"
"id": "20240530101000-vknnawk",
"updated": "20250903163004"
},
"Children": [
{
"Type": "NodeText",
"Data": ".pdf"
"Data": ""
},
{
"Type": "NodeTextMark",
"TextMarkType": "code",
"TextMarkTextContent": ".pdf"
},
{
"Type": "NodeText",
"Data": ""
}
]
}

File diff suppressed because one or more lines are too long

View file

@ -154,7 +154,7 @@ func extensionCopy(c *gin.Context) {
fName += ext
}
fName = util.AssetName(fName)
fName = util.AssetName(fName, ast.NewNodeID())
writePath := filepath.Join(assets, fName)
if err = filelock.WriteFile(writePath, data); err != nil {
ret.Code = -1

View file

@ -8,7 +8,7 @@ require (
github.com/88250/epub v0.0.0-20230830085737-c19055cd1f48
github.com/88250/go-humanize v0.0.0-20240424102817-4f78fac47ea7
github.com/88250/gulu v1.2.3-0.20250227144607-7f4570b0d689
github.com/88250/lute v1.7.7-0.20250828030734-1d304fa491d3
github.com/88250/lute v1.7.7-0.20250903032105-b1737f9621fb
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1
github.com/ClarkThan/ahocorasick v0.0.0-20231011042242-30d1ef1347f4
github.com/ConradIrwin/font v0.2.1

View file

@ -14,8 +14,8 @@ github.com/88250/go-sqlite3 v1.14.13-0.20231214121541-e7f54c482950 h1:Pa5hMiBceT
github.com/88250/go-sqlite3 v1.14.13-0.20231214121541-e7f54c482950/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/88250/gulu v1.2.3-0.20250227144607-7f4570b0d689 h1:39y5g7vnFAIcXhTN3IXPk7h2xBhC4a9hBTykDhHJqRY=
github.com/88250/gulu v1.2.3-0.20250227144607-7f4570b0d689/go.mod h1:c8uVw25vW2W4dhJ/j4iYsX5H1hc19spim266jO5x2hU=
github.com/88250/lute v1.7.7-0.20250828030734-1d304fa491d3 h1:Y/ZKnwrgdICSxkXMGJZL7R18FlCrumP9VQQTdyTQZrM=
github.com/88250/lute v1.7.7-0.20250828030734-1d304fa491d3/go.mod h1:WYyUw//5yVw9BJnoVjx7rI/3szsISxNZCYGOqTIrV0o=
github.com/88250/lute v1.7.7-0.20250903032105-b1737f9621fb h1:ioONtSsO7UCA3CrJMu2wbDkdmYDXrYY51lj8PD8pLNI=
github.com/88250/lute v1.7.7-0.20250903032105-b1737f9621fb/go.mod h1:WYyUw//5yVw9BJnoVjx7rI/3szsISxNZCYGOqTIrV0o=
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46 h1:Bq1JsDfVbHKUxNL/B2JXd8cC/1h6aFjrlXpGycnh0Hk=
github.com/88250/pdfcpu v0.3.14-0.20250424122812-f10e8d9d8d46/go.mod h1:fVfOloBzs2+W2VJCCbq60XIxc3yJHAZ0Gahv1oO0gyI=
github.com/88250/vitess-sqlparser v0.0.0-20210205111146-56a2ded2aba1 h1:48T899JQDwyyRu9yXHePYlPdHtpJfrJEUGBMH3SMBWY=

View file

@ -26,6 +26,7 @@ import (
"time"
"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/siyuan-note/filelock"
"github.com/siyuan-note/httpclient"
"github.com/siyuan-note/logging"
@ -289,5 +290,5 @@ func FilterUploadFileName(name string) string {
}
func AssetName(name string) string {
return util.AssetName(name)
return util.AssetName(name, ast.NewNodeID())
}

View file

@ -201,7 +201,7 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err
name := filepath.Base(u)
name = util.FilterUploadFileName(name)
name = "network-asset-" + name
name = util.AssetName(name)
name = util.AssetName(name, ast.NewNodeID())
writePath := filepath.Join(assetsDirPath, name)
if err = filelock.Copy(u, writePath); err != nil {
logging.LogErrorf("copy [%s] to [%s] failed: %s", u, writePath, err)
@ -303,7 +303,7 @@ func NetAssets2LocalAssets(rootID string, onlyImg bool, originalURL string) (err
name += ext
}
}
name = util.AssetName(name)
name = util.AssetName(name, ast.NewNodeID())
name = "network-asset-" + name
writePath := filepath.Join(assetsDirPath, name)
if err = filelock.WriteFile(writePath, data); err != nil {
@ -737,7 +737,7 @@ func RenameAsset(oldPath, newName string) (newPath string, err error) {
return
}
newName = util.AssetName(newName + filepath.Ext(oldPath))
newName = util.AssetName(newName+filepath.Ext(oldPath), ast.NewNodeID())
parentDir := path.Dir(oldPath)
newPath = path.Join(parentDir, newName)
oldAbsPath, getErr := GetAssetAbsPath(oldPath)

View file

@ -28,6 +28,7 @@ import (
"sync"
"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/emersion/go-vcard"
"github.com/emersion/go-webdav/carddav"
"github.com/siyuan-note/logging"
@ -640,7 +641,7 @@ func (b *AddressBook) load() error {
addressesWaitGroup.Add(1)
go func() {
defer addressesWaitGroup.Done()
filename_ := util.AssetName(filename)
filename_ := util.AssetName(filename, ast.NewNodeID())
address := &AddressObject{
FilePath: path.Join(b.DirectoryPath, filename_),
BookPath: b.MetaData.Path,

View file

@ -981,7 +981,7 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) {
if "" == existName {
name = filepath.Base(absolutePath)
name = util.FilterUploadFileName(name)
name = util.AssetName(name)
name = util.AssetName(name, ast.NewNodeID())
assetTargetPath := filepath.Join(assetDirPath, name)
if err = filelock.Copy(absolutePath, assetTargetPath); err != nil {
logging.LogErrorf("copy asset from [%s] to [%s] failed: %s", absolutePath, assetTargetPath, err)
@ -1104,7 +1104,7 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) {
if "" == existName {
name = filepath.Base(absolutePath)
name = util.FilterUploadFileName(name)
name = util.AssetName(name)
name = util.AssetName(name, ast.NewNodeID())
assetTargetPath := filepath.Join(assetDirPath, name)
if err = filelock.Copy(absolutePath, assetTargetPath); err != nil {
logging.LogErrorf("copy asset from [%s] to [%s] failed: %s", absolutePath, assetTargetPath, err)
@ -1249,7 +1249,7 @@ func processBase64Img(n *ast.Node, dest string, assetDirPath string) {
name = alt.TokensStr() + ext
}
name = util.FilterUploadFileName(name)
name = util.AssetName(name)
name = util.AssetName(name, ast.NewNodeID())
tmp := filepath.Join(base64TmpDir, name)
tmpFile, openErr := os.OpenFile(tmp, os.O_RDWR|os.O_CREATE, 0644)

View file

@ -25,6 +25,7 @@ import (
"strings"
"github.com/88250/gulu"
"github.com/88250/lute/ast"
"github.com/gin-gonic/gin"
"github.com/siyuan-note/filelock"
"github.com/siyuan-note/logging"
@ -93,7 +94,7 @@ func InsertLocalAssets(id string, assetAbsPaths []string, isUpload bool) (succMa
// 已经存在同样数据的资源文件的话不重复保存
succMap[baseName] = existAsset.Path
} else {
fName = util.AssetName(fName)
fName = util.AssetName(fName, ast.NewNodeID())
writePath := filepath.Join(assetsDirPath, fName)
if _, err = f.Seek(0, io.SeekStart); err != nil {
f.Close()
@ -163,6 +164,10 @@ func Upload(c *gin.Context) {
for _, file := range files {
baseName := file.Filename
_, lastID := util.LastID(baseName)
if !ast.IsNodeIDPattern(lastID) {
lastID = ""
}
needUnzip2Dir := false
if gulu.OS.IsDarwin() {
@ -197,8 +202,17 @@ func Upload(c *gin.Context) {
succMap[baseName] = existAsset.Path
} else {
if skipIfDuplicated {
// https://github.com/siyuan-note/siyuan/issues/10666
matches, globErr := filepath.Glob(assetsDirPath + string(os.PathSeparator) + strings.TrimSuffix(fName, ext) + "*")
// 复制 PDF 矩形注解时不再重复插入图片 No longer upload image repeatedly when copying PDF rectangle annotation https://github.com/siyuan-note/siyuan/issues/10666
pattern := assetsDirPath + string(os.PathSeparator) + strings.TrimSuffix(fName, ext)
_, patternLastID := util.LastID(fName)
if lastID != "" && lastID != patternLastID {
// 文件名太长被截断了,通过之前的 lastID 来匹配 PDF files with too long file names cannot generate annotated images https://github.com/siyuan-note/siyuan/issues/15739
pattern = assetsDirPath + string(os.PathSeparator) + "*" + lastID + ext
} else {
pattern += "*" + ext
}
matches, globErr := filepath.Glob(pattern)
if nil != globErr {
logging.LogErrorf("glob failed: %s", globErr)
} else {
@ -211,7 +225,10 @@ func Upload(c *gin.Context) {
}
}
fName = util.AssetName(fName)
if "" == lastID {
lastID = ast.NewNodeID()
}
fName = util.AssetName(fName, lastID)
writePath := filepath.Join(assetsDirPath, fName)
tmpDir := filepath.Join(util.TempDir, "convert", "zip", gulu.Rand.String(7))
if needUnzip2Dir {
@ -248,7 +265,7 @@ func Upload(c *gin.Context) {
fName = strings.TrimSuffix(fName, ext)
ext = strings.ToLower(ext)
fName += ext
fName = util.AssetName(fName)
fName = util.AssetName(fName, ast.NewNodeID())
tmpDir2 := filepath.Join(util.TempDir, "convert", "zip", gulu.Rand.String(7))
if err = gulu.Zip.Unzip(writePath, tmpDir2); err != nil {
errFiles = append(errFiles, fName)

View file

@ -172,12 +172,12 @@ func Ext(name string) (ret string) {
return
}
func AssetName(name string) string {
func AssetName(name, newID string) string {
_, id := LastID(name)
ext := Ext(name)
name = name[0 : len(name)-len(ext)]
if !ast.IsNodeIDPattern(id) {
id = ast.NewNodeID()
id = newID
name = name + "-" + id + ext
} else {
if !ast.IsNodeIDPattern(name) {